children = ((Taxon) parentElement).getTaxonomicChildren();
+ observableList.addAll(children);
+ return children == null ? new Object[0] : children.toArray();
}
public Object getParent(Object element) {
- // TODO Auto-generated method stub
- return null;
+ return ((Taxon) element).getTaxonomicParent();
}
public boolean hasChildren(Object element) {
- // TODO Auto-generated method stub
- return false;
+ return ((Taxon) element).hasTaxonomicChildren();
}
private IObservableList observableList;
@@ -45,22 +49,19 @@ public class NameTreeContentProvider extends ObservableListContentProvider
ListDiffEntry[] differences = event.diff.getDifferences();
for (int i = 0; i < differences.length; i++) {
ListDiffEntry entry = differences[i];
+
if (entry.isAddition()) {
+
knownElements.add(entry.getElement());
- if (viewer instanceof AbstractListViewer) {
- ((AbstractListViewer) viewer).add(entry.getElement());
- } else {
- ((TableViewer) viewer).insert(entry.getElement(), entry
- .getPosition());
- }
+
+ ((TaxonomicTreeViewer) viewer).add(
+ ((Taxon) entry.getElement()).getTaxonomicParent(),
+ entry.getElement());
} else {
- if (viewer instanceof AbstractListViewer) {
- ((AbstractListViewer) viewer)
- .remove(entry.getElement());
- } else {
- ((TableViewer) viewer).remove(entry.getElement());
- }
+
knownElements.remove(entry.getElement());
+
+ ((TaxonomicTreeViewer) viewer).remove(entry.getElement());
}
}
}
@@ -72,6 +73,9 @@ public class NameTreeContentProvider extends ObservableListContentProvider
*
*/
public NameTreeContentProvider() {
+
+ Assert.isNotNull(Realm.getDefault());
+
observableList = new WritableList(SWTObservables.getRealm(Display.getDefault()));
knownElements = new WritableSet(SWTObservables.getRealm(Display.getDefault()));
}
@@ -87,24 +91,10 @@ public class NameTreeContentProvider extends ObservableListContentProvider
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.viewer = viewer;
-// if (!(viewer instanceof TableViewer || viewer instanceof AbstractListViewer)) {
-// // use reflection to avoid 3.3 dependency:
-// Class abstractTableViewerClass = null;
-// try {
-// abstractTableViewerClass = Class.forName("org.eclipse.jface.viewers.AbstractTableViewer"); //$NON-NLS-1$
-// } catch(Exception ex) {
-// // ignore, we might be running against 3.2
-// }
-// if (abstractTableViewerClass == null || !abstractTableViewerClass.isInstance(viewer)) {
-// throw new IllegalArgumentException(
-// "This content provider only works with (Abstract)TableViewer or AbstractListViewer"); //$NON-NLS-1$
-// }
-// }
-//
-// if (newInput != null && !(newInput instanceof IObservableList)) {
-// throw new IllegalArgumentException(
-// "This content provider only works with input of type IObservableList"); //$NON-NLS-1$
-// }
+ if (newInput != null && !(newInput instanceof IObservableList)) {
+ throw new IllegalArgumentException(
+ "This content provider only works with input of type IObservableList"); //$NON-NLS-1$
+ }
setInput((IObservableList) newInput);
}
@@ -113,7 +103,7 @@ public class NameTreeContentProvider extends ObservableListContentProvider
* @param list
*/
private void setInput(IObservableList list) {
-
+
if (list == null) {
list = new WritableList(SWTObservables.getRealm(Display.getDefault()));
}
@@ -127,6 +117,7 @@ public class NameTreeContentProvider extends ObservableListContentProvider
observableList = list;
knownElements.addAll(list);
+
observableList.addListChangeListener(listener);
}
@@ -139,5 +130,4 @@ public class NameTreeContentProvider extends ObservableListContentProvider
public IObservableSet getKnownElements() {
return knownElements;
}
-
-}
+}
\ No newline at end of file
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/ObservableListTreeContentProvider.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/ObservableListTreeContentProvider.java
deleted file mode 100644
index 70d553059..000000000
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/ObservableListTreeContentProvider.java
+++ /dev/null
@@ -1,276 +0,0 @@
-package eu.etaxonomy.taxeditor.prototype2.model;
-
-/************************************************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved. This program and the
- * accompanying materials are made available under the terms of the Eclipse Public License v1.0 which
- * accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors: IBM Corporation - initial API and implementation
- ***********************************************************************************************************/
-import java.util.*;
-
-import org.eclipse.core.databinding.observable.Observables;
-import org.eclipse.core.databinding.observable.list.*;
-import org.eclipse.core.databinding.observable.masterdetail.IObservableFactory;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * @since 1.1
- */
-public class ObservableListTreeContentProvider implements ITreeContentProvider {
- class TreeNode implements IListChangeListener {
- private Object element;
-
- private Object parent;
- private Set parents;
-
- private IObservableList children;
- private boolean observingChildren = false;
-
- TreeNode( Object element ) {
- Assert.isNotNull( element );
- this.element = element;
- this.children = (IObservableList) factory.createObservable( element );
- if ( children == null ) {
- children = Observables.emptyObservableList();
- observingChildren = true;
- }
- }
-
- Object getElement() {
- return element;
- }
-
- void addParent( Object parent ) {
- if ( this.parent == null ) {
- this.parent = parent;
- } else {
- if ( parent.equals( this.parent ) )
- return;
- if ( parents == null ) {
- parents = new HashSet();
- parents.add( this.parent );
- }
- parents.add( parent );
- }
- }
-
- void removeParent( Object parent ) {
- if ( this.parents != null )
- parents.remove( parent );
-
- if ( parent == this.parent ) {
- if ( parents == null || parents.isEmpty() )
- this.parent = null;
- else
- this.parent = parents.iterator().next();
- }
-
- if ( this.parents != null && this.parents.size() <= 1 )
- this.parents = null;
- }
-
- Object getParent() {
- return parent;
- }
-
- Set getParents() {
- if ( parents == null ) {
- if ( parent == null )
- return Collections.EMPTY_SET;
- return Collections.singleton( parent );
- }
- return parents;
- }
-
- boolean hasChildren() {
- if ( children == null )
- return true;
- return !children.isEmpty();
- }
-
- IObservableList getChildren() {
- observeChildren();
- return children;
- }
-
- /* Only called by ObservableListTreeContentProvider when the element and node are removed */
- void dispose() {
- disposeChildren();
- element = null;
- parent = null;
- parents = null;
- }
-
- private void observeChildren() {
- if ( !observingChildren ) {
- children.addListChangeListener( this );
- observingChildren = true;
- }
- }
-
- private void disposeChildren() {
- if ( children != null ) {
- for ( Iterator iterator = children.iterator(); iterator.hasNext(); )
- removeElementNode( iterator.next() );
- if ( observingChildren ) {
- children.removeListChangeListener( this );
- observingChildren = false;
- }
- children.dispose();
- children = null;
- }
- }
-
- public void handleListChange( ListChangeEvent event ) {
- if ( isViewerControlDisposed() ) {
- ObservableListTreeContentProvider.this.dispose();
- return;
- }
-
- if ( event.getSource() == children ) {
- ListDiffEntry[] diffs = event.diff.getDifferences();
- for ( int i = 0; i < diffs.length; i++ ) {
- ListDiffEntry diff = diffs[i];
- Object child = diff.getElement();
- if ( diff.isAddition() )
- add( element, child, diff.getPosition() );
- else
- remove( element, child );
- }
- }
- }
- }
-
- private IObservableFactory factory;
- private AbstractTreeViewer viewer;
-
- // Map < Object element, TreeNode node >
- private Map elementNodes;
-
- /**
- * A tree content provider which uses the passed in factory to obtain the elements of the tree.
- *
- *
- * @param factory factory that produces IObservableLists as children
- */
- public ObservableListTreeContentProvider( IObservableFactory factory ) {
- Assert.isNotNull( factory );
- this.factory = factory;
- this.elementNodes = new HashMap();
- }
-
- public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) {
- setViewer( viewer );
-
- if ( oldInput != null )
- removeElementNode( oldInput );
-
- if ( newInput != null )
- getOrCreateNode( newInput ).getChildren();
- }
-
- private void setViewer( Viewer viewer ) {
- if ( this.viewer == viewer )
- return;
- if ( viewer != null )
- if ( !( viewer instanceof AbstractTreeViewer ) )
- throw new IllegalArgumentException( "This content provider only works with AbstractTreeViewer" ); //$NON-NLS-1$
- this.viewer = (AbstractTreeViewer) viewer;
- }
-
- // implies viewer.refresh(inputElement)
- public Object[] getElements( Object inputElement ) {
- TreeNode rootNode = getOrCreateNode( inputElement );
-
- IObservableList elements = rootNode.getChildren();
- setParent( inputElement, elements );
-
- return elements.toArray();
- }
-
- public boolean hasChildren( Object element ) {
- return getOrCreateNode( element ).hasChildren();
- }
-
- // implies viewer.refresh(parentElement);
- public Object[] getChildren( Object parentElement ) {
- IObservableList children = getOrCreateNode( parentElement ).getChildren();
-
- setParent( parentElement, children );
-
- return children.toArray();
- }
-
- public Object getParent( Object element ) {
- return getOrCreateNode( element ).getParent();
- }
-
- TreeNode getOrCreateNode( Object element ) {
- TreeNode node = getExistingNode( element );
- if ( node == null )
- node = createNode( element );
- return node;
- }
-
- private TreeNode getExistingNode( Object element ) {
- TreeNode node = (TreeNode) elementNodes.get( element );
- return node;
- }
-
- private TreeNode createNode( Object element ) {
- TreeNode node = new TreeNode( element );
- elementNodes.put( element, node );
- return node;
- }
-
- private void setParent( Object parent, List children ) {
- for ( Iterator iterator = children.iterator(); iterator.hasNext(); ) {
- Object element = iterator.next();
- TreeNode node = getOrCreateNode( element );
- node.addParent( parent );
- }
- }
-
- void add( Object parent, Object element, int position ) {
- getOrCreateNode( element ).addParent( parent );
- viewer.insert( parent, element, position );
- }
-
- void remove( Object parent, Object element ) {
- viewer.remove( parent, new Object[] { element } );
- removeElementNode( element );
- }
-
- private void removeElementNode( Object element ) {
- TreeNode node = getExistingNode( element );
- if ( node != null )
- removeNode( node );
- }
-
- private void removeNode( TreeNode node ) {
- elementNodes.remove( node.getElement() );
- node.dispose();
- }
-
- private boolean isViewerControlDisposed() {
- if ( viewer == null )
- return false;
- Control control = viewer.getControl();
- if ( control == null )
- return false;
- return control.isDisposed();
- }
-
- public void dispose() {
- Object[] elements = elementNodes.keySet().toArray();
- for ( int i = 0; i < elements.length; i++ )
- removeElementNode( elements[i] );
- elementNodes.clear();
- elementNodes = null;
-
- setViewer( null );
- }
-}
\ No newline at end of file
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/TaxonList.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/TaxonList.java
deleted file mode 100644
index a8356b17f..000000000
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/TaxonList.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package eu.etaxonomy.taxeditor.prototype2.model;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.core.databinding.observable.IChangeListener;
-import org.eclipse.core.databinding.observable.IStaleListener;
-import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.databinding.observable.list.IListChangeListener;
-import org.eclipse.core.databinding.observable.list.IObservableList;
-
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-
-/**
- * List exists mainly to catch "add taxon" events, which require
- * the taxonomic tree to be updated.
- *
- * @author p.ciardelli
- *
- */
-public class TaxonList implements IObservableList {
-
- private List taxonList = new ArrayList();
-
- public void add(Taxon taxon) {
- this.taxonList.add(0, taxon);
- firePropertyChange("taxonList", null, null); //$NON-NLS-1$
- }
-
- public void remove(Taxon taxon) {
- this.taxonList.remove(taxon);
- firePropertyChange("taxonList", null, null); //$NON-NLS-1$
- }
-
- public Taxon[] toArray() {
- return (Taxon[]) this.taxonList.toArray(new Taxon[this.taxonList.size()]);
- }
-
- public List getTaxonList() {
- return taxonList;
- }
-
- public boolean contains(Taxon taxon) {
- if (taxonList.contains(taxon))
- return true;
- return false;
- }
- public void setTaxonList(List taxonList) {
- this.taxonList = taxonList;
- }
-
- public void setTaxonList(Taxon rootTaxa) {
- this.taxonList.add(rootTaxa);
- }
-
- protected final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- propertyChangeSupport.addPropertyChangeListener(listener);
- }
-
- public void addPropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- propertyChangeSupport.removePropertyChangeListener(listener);
- }
-
- public void removePropertyChangeListener(String propertyName,
- PropertyChangeListener listener) {
- propertyChangeSupport.removePropertyChangeListener(propertyName,
- listener);
- }
-
- protected void firePropertyChange(String propertyName, Object oldValue,
- Object newValue) {
- try {
- propertyChangeSupport.firePropertyChange(propertyName, oldValue,
- newValue);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public boolean add(Object o) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public boolean addAll(Collection c) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public boolean addAll(int index, Collection c) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public void addListChangeListener(IListChangeListener listener) {
- // TODO Auto-generated method stub
-
- }
-
- public boolean contains(Object o) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public boolean containsAll(Collection c) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public Object get(int index) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public Object getElementType() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public int indexOf(Object o) {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public boolean isEmpty() {
- // TODO Auto-generated method stub
- return false;
- }
-
- public Iterator iterator() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public int lastIndexOf(Object o) {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public ListIterator listIterator() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public ListIterator listIterator(int index) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean remove(Object o) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public Object remove(int index) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean removeAll(Collection c) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public void removeListChangeListener(IListChangeListener listener) {
- // TODO Auto-generated method stub
-
- }
-
- public boolean retainAll(Collection c) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public Object set(int index, Object element) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public int size() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- public List subList(int fromIndex, int toIndex) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public Object[] toArray(Object[] a) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public void add(int index, Object element) {
- // TODO Auto-generated method stub
-
- }
-
- public void clear() {
- // TODO Auto-generated method stub
-
- }
-
- public void addChangeListener(IChangeListener listener) {
- // TODO Auto-generated method stub
-
- }
-
- public void addStaleListener(IStaleListener listener) {
- // TODO Auto-generated method stub
-
- }
-
- public void dispose() {
- // TODO Auto-generated method stub
-
- }
-
- public Realm getRealm() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean isStale() {
- // TODO Auto-generated method stub
- return false;
- }
-
- public void removeChangeListener(IChangeListener listener) {
- // TODO Auto-generated method stub
-
- }
-
- public void removeStaleListener(IStaleListener listener) {
- // TODO Auto-generated method stub
-
- }
-}
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/AcceptedNameViewer.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/AcceptedNameViewer.java
index 15adaaaae..67c32eb3c 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/AcceptedNameViewer.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/AcceptedNameViewer.java
@@ -7,7 +7,7 @@ import org.eclipse.swt.widgets.Composite;
import com.swtdesigner.SWTResourceManager;
-public class AcceptedNameViewer extends NameViewer {
+public class AcceptedNameViewer extends NameViewer_ {
AcceptedNameViewer(TaxonName taxonName, DataBindingContext bindingContext,
Composite parent) {
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/MultiPageTaxonView.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/MultiPageTaxonView.java
index b42d7ed37..5d8f11506 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/MultiPageTaxonView.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/MultiPageTaxonView.java
@@ -1,7 +1,8 @@
package eu.etaxonomy.taxeditor.prototype2.view;
-import org.eclipse.core.databinding.DataBindingContext;
-import org.eclipse.core.databinding.beans.BeansObservables;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
@@ -10,7 +11,6 @@ import org.eclipse.ui.part.MultiPageEditorPart;
import eu.etaxonomy.cdm.model.taxon.Taxon;
-
/**
*
* Generates the tabbed editor with Name view on top and tabs for
@@ -23,7 +23,6 @@ public class MultiPageTaxonView extends MultiPageEditorPart {
public static final String ID = "eu.etaxonomy.taxeditor.prototype2.view.multipagetaxonview";
private Taxon taxon;
- private DataBindingContext bindingContext;
@Override
protected void createPages() {
@@ -45,6 +44,8 @@ public class MultiPageTaxonView extends MultiPageEditorPart {
// TODO Auto-generated catch block
e.printStackTrace();
}
+
+// bindPartName();
}
@Override
@@ -72,12 +73,23 @@ public class MultiPageTaxonView extends MultiPageEditorPart {
throw new PartInitException(
"Invalid Input: Must be IFileEditorInput");
+ // Get taxon from editor input
if (input.getAdapter(Taxon.class) != null) {
taxon = (Taxon) input.getAdapter(Taxon.class);
} else {
taxon = null;
}
-
+
+ // Listen for name changes fired when taxon is saved;
+ // change tab for this taxon editor accordingly
+ taxon.addPropertyChangeListener("name", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent e) {
+ setPartName(taxon.getName().getNameCache());
+ }
+ });
+
+ // Any taxon that has been saved will by necessity have a name;
+ // only a new taxon will not
if (taxon.getName().getNameCache() == null)
setPartName("New taxon");
else
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameEditorView.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameEditorView.java
index 10cee8fab..48b18b164 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameEditorView.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameEditorView.java
@@ -1,8 +1,11 @@
package eu.etaxonomy.taxeditor.prototype2.view;
import java.beans.IntrospectionException;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -52,13 +55,18 @@ import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
+import org.eclipse.ui.part.WorkbenchPart;
import com.swtdesigner.ResourceManager;
import com.swtdesigner.SWTResourceManager;
import eu.etaxonomy.cdm.model.name.BotanicalName;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
import eu.etaxonomy.taxeditor.prototype2.Activator;
import eu.etaxonomy.taxeditor.prototype2.controller.DeleteTaxonAction;
import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;
@@ -79,7 +87,6 @@ import eu.etaxonomy.taxeditor.prototype2.view.propertysheetsupport.PropertySheet
import eu.etaxonomy.taxeditor.prototype2.view.propertysheetsupport.PropertySheetValueLabelProvider;
public class NameEditorView extends EditorPart {
-
/**
* The taxon the editor is editing
*/
@@ -88,6 +95,21 @@ public class NameEditorView extends EditorPart {
* The higher taxon of the taxon the editor is editing
*/
private Taxon higherTaxon = null;
+ /**
+ * The workbench part that contains this editor,
+ * i.e. MultiPageTaxonView
+ */
+ private WorkbenchPart parentPart = null;
+ /**
+ * Shared listener that sets dirty state to true
+ * when any registered property changes
+ */
+ private PropertyChangeListener taxonChangeListener = new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent arg0) {
+ dirtyBoy = true;
+ firePropertyChange(PROP_DIRTY);
+ }
+ };
/**
* Arrays for the creation of synonyms - text and images
*/
@@ -109,10 +131,10 @@ public class NameEditorView extends EditorPart {
"orthovariant_no_bg.gif",
"misapplied_no_bg.gif",
"concept_no_bg.gif"};
- /*
- * Annotation model
+ String [] conceptTypes = {"congruent","included in","includes","overlaps","excludes","doubtful"};
+ /**
+ * If true, show "save" prompt before closing editor
*/
- private AnnotationModel fAnnotationModel = new AnnotationModel();
public boolean dirtyBoy = false;
String clickText;
@@ -123,13 +145,19 @@ public class NameEditorView extends EditorPart {
public static final String ID = "eu.etaxonomy.taxeditor.prototype2.view.nameeditorview"; //$NON-NLS-1$
+ public NameEditorView() {
+
+ }
+ public NameEditorView(WorkbenchPart parentPart) {
+ this.parentPart = parentPart;
+ }
/**
* Create contents of the editor part
* @param parent
*/
@Override
public void createPartControl(Composite parent) {
-
+
parent.setLayout(new GridLayout());
parent.setRedraw(true);
@@ -163,30 +191,28 @@ public class NameEditorView extends EditorPart {
// toolBar.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));
final ToolItem itemSave = new ToolItem(toolBar, SWT.PUSH);
-// final CoolItem itemSave = new CoolItem(coolBar, SWT.PUSH);
-// itemSave.setToolTipText("Save taxon \"" + taxon.getName().getNameCache() + "\"");
itemSave.setToolTipText("Save taxon");
itemSave.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/save_edit.gif"));
itemSave.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
+ dirtyBoy = false;
new SaveTaxonAction(taxon).run();
}
public void widgetSelected(SelectionEvent e) {
+ dirtyBoy = false;
new SaveTaxonAction(taxon).run();
}
});
final ToolItem itemMove = new ToolItem(toolBar, SWT.DROP_DOWN);
-// itemMove.setToolTipText("Move taxon \"" + taxon.getName().getNameCache() + "\"");
itemMove.setToolTipText("Move taxon");
final Menu menuMove = new Menu(toolBar);
addDropDown(itemMove, menuMove);
- final MenuItem moveTaxonpilosellaMenuItem = new MenuItem(menuMove, SWT.NONE);
-// moveTaxonpilosellaMenuItem.setText("Move taxon \"" + taxon.getName().getNameCache() + "\" to another higher taxon");
- moveTaxonpilosellaMenuItem.setText("Move taxon to another higher taxon");
- moveTaxonpilosellaMenuItem.addSelectionListener(new SelectionAdapter() {
+ final MenuItem moveTaxonMenuItem = new MenuItem(menuMove, SWT.NONE);
+ moveTaxonMenuItem.setText("Move taxon to another higher taxon");
+ moveTaxonMenuItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
new MoveDialogView(getSite().getShell());
MoveDialogView dialog = new MoveDialogView(getSite().getShell());
@@ -194,11 +220,10 @@ public class NameEditorView extends EditorPart {
}
});
- final MenuItem turnTaxonpilosellaMenuItem = new MenuItem(menuMove, SWT.NONE);
- turnTaxonpilosellaMenuItem.setSelection(true);
-// turnTaxonpilosellaMenuItem.setText("Turn taxon \"" + taxon.getName().getNameCache() + "\" into a synonym");
- turnTaxonpilosellaMenuItem.setText("Turn taxon's accepted name into a synonym");
- turnTaxonpilosellaMenuItem.addSelectionListener(new SelectionAdapter() {
+ final MenuItem taxonToSynonymMenuItem = new MenuItem(menuMove, SWT.NONE);
+ taxonToSynonymMenuItem.setSelection(true);
+ taxonToSynonymMenuItem.setText("Turn taxon's accepted name into a synonym");
+ taxonToSynonymMenuItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
new MoveDialogView(getSite().getShell());
MoveDialogView dialog = new MoveDialogView(getSite().getShell());
@@ -209,7 +234,6 @@ public class NameEditorView extends EditorPart {
itemMove.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/correction_change.gif"));
final ToolItem itemDelete = new ToolItem(toolBar, SWT.NONE);
-// itemDelete.setToolTipText("Delete taxon \"" + taxon.getName().getNameCache() + "\"");
itemDelete.setToolTipText("Delete taxon");
itemDelete.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/delete_edit.gif"));
itemDelete.addSelectionListener(new SelectionListener() {
@@ -226,8 +250,6 @@ public class NameEditorView extends EditorPart {
final ToolItem separator1 = new ToolItem(toolBar, SWT.SEPARATOR);
final ToolItem itemAddRelationship = new ToolItem(toolBar, SWT.DROP_DOWN);
-// itemAddRelationship.setToolTipText("Add nom. or tax. relation to \"" +
-// taxon.getName().getNameCache() + "\"");
itemAddRelationship.setToolTipText("Add nom. or tax. relation to taxon");
itemAddRelationship.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/rel_no_bg.gif"));
@@ -235,73 +257,35 @@ public class NameEditorView extends EditorPart {
* Create menu to add relations to the taxon
*/
final Menu menuAddRel = new Menu(toolBar);
-// menuAddRel.setData("x", null);
addDropDown(itemAddRelationship, menuAddRel);
-// for (int i= 0; i < relTypes.length; i++) {
-// final MenuItem menuItem = new MenuItem(menuAddRel, SWT.NONE);
-// menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImgs[i]));
-// menuItem.setText("Add " + relTypes[i]);
-// }
-
- final MenuItem testMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- testMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/unknown_no_bg.gif"));
- testMenuItem.setText("Add synonym (type unknown)");
-
- final MenuItem addHomotypicSynonymMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- addHomotypicSynonymMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/homosyn_no_bg.gif"));
- addHomotypicSynonymMenuItem.setText("Add homotypic synonym");
-
- final MenuItem addHeterotypicSynoynmMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- addHeterotypicSynoynmMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/heterosyn_no_bg.gif"));
- addHeterotypicSynoynmMenuItem.setText("Add heterotypic synoynm");
-
- final MenuItem addBasionymMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- addBasionymMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/basionym_no_bg.gif"));
- addBasionymMenuItem.setText("Add basionym");
-
- final MenuItem addReplacedSynonymMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- addReplacedSynonymMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/repsyn_no_bg.gif"));
- addReplacedSynonymMenuItem.setText("Add replaced synonym");
-
- final MenuItem addHomonymMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- addHomonymMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/homonym_no_bg.gif"));
- addHomonymMenuItem.setText("Add homonym");
-
- final MenuItem addOrthographicVariantMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- addOrthographicVariantMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/orthovariant_no_bg.gif"));
- addOrthographicVariantMenuItem.setText("Add orthographic variant");
-
- final MenuItem addMisappliedNameMenuItem = new MenuItem(menuAddRel, SWT.NONE);
- addMisappliedNameMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/misapplied_no_bg.gif"));
- addMisappliedNameMenuItem.setText("Add misapplied name");
-
- final MenuItem addConceptRelationMenuItem_1 = new MenuItem(menuAddRel, SWT.CASCADE);
- addConceptRelationMenuItem_1.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/concept_no_bg.gif"));
- addConceptRelationMenuItem_1.setText("Add concept relation");
-
- final Menu menu = new Menu(addConceptRelationMenuItem_1);
- addConceptRelationMenuItem_1.setMenu(menu);
-
- final MenuItem checkboxMenuItem = new MenuItem(menu, SWT.CHECK);
- checkboxMenuItem.setText("congruent");
-
- final MenuItem checkboxMenuItem_1 = new MenuItem(menu, SWT.CHECK);
- checkboxMenuItem_1.setSelection(true);
- checkboxMenuItem_1.setText("included in");
-
- final MenuItem checkboxMenuItem_2 = new MenuItem(menu, SWT.CHECK);
- checkboxMenuItem_2.setText("includes");
-
- final MenuItem checkboxMenuItem_3 = new MenuItem(menu, SWT.CHECK);
- checkboxMenuItem_3.setText("overlaps");
-
- final MenuItem checkboxMenuItem_4 = new MenuItem(menu, SWT.CHECK);
- checkboxMenuItem_4.setText("excludes");
+ for (int i = 0; i < relTypes.length; i++) {
+ final MenuItem menuItem;
+ if (relTypes[i].contains("concept")) {
+ menuItem = new MenuItem(menuAddRel, SWT.CASCADE);
+
+ final Menu conceptMenu = new Menu(menuItem);
+ menuItem.setMenu(conceptMenu);
+
+ for (int j = 0; j < conceptTypes.length; j++) {
+ final MenuItem conceptMenuItem = new MenuItem(conceptMenu, SWT.CHECK);
+ conceptMenuItem.setText(conceptTypes[j]);
+ }
+ } else {
+ menuItem = new MenuItem(menuAddRel, SWT.NONE);
+ }
+
+ menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImgs[i]));
+ menuItem.setText("Add " + relTypes[i]);
+ }
- final MenuItem checkboxMenuItem_5 = new MenuItem(menu, SWT.CHECK);
- checkboxMenuItem_5.setSelection(true);
- checkboxMenuItem_5.setText("doubtful");
+// SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF()
+// SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF()
+// SynonymRelationshipType.PARTIAL_SYNONYM_OF()
+// SynonymRelationshipType.PRO_PARTE_SYNONYM_OF()
+// SynonymRelationshipType.SYNONYM_OF()
+// NameRelationshipType.BASIONYM()
+// NameRelationshipType.LATER_HOMONYM()
final ToolItem separator2 = new ToolItem(toolBar, SWT.SEPARATOR);
@@ -329,7 +313,6 @@ public class NameEditorView extends EditorPart {
});
}
final MenuItem addTaxonItem = new MenuItem(menuAdd, SWT.NONE);
-// addTaxonItem.setText("Add new taxon to \"" + taxon.getName().getNameCache() + "\"");
addTaxonItem.setText("Add new taxon to this taxon");
addTaxonItem.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
@@ -351,7 +334,7 @@ public class NameEditorView extends EditorPart {
contentComposite.setLayout(gridLayout_2);
contentComposite.setRedraw(true);
- nameComposite = new Composite(contentComposite, SWT.NONE);
+ nameComposite = new Composite(contentComposite, SWT.BORDER);
nameComposite.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
nameComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
nameComposite.setLayout(new GridLayout());
@@ -359,7 +342,7 @@ public class NameEditorView extends EditorPart {
nameComposite.setRedraw(true);
// clickText = "Click here to start entering accepted name or enter its individual fields in the property sheet to the right";
-// NameViewer acceptedNameViewer = new AcceptedNameViewer(taxon, bindingContext, nameComposite);
+// NameViewer_ acceptedNameViewer = new AcceptedNameViewer(taxon, bindingContext, nameComposite);
// acceptedNameViewer.setBindingContext(bindingContext);
// acceptedNameViewer.configure(new NameViewerConfig());
@@ -394,6 +377,18 @@ public class NameEditorView extends EditorPart {
private SourceViewer createAcceptedName() {
+// Method[] methods = BotanicalName.class.getMethods();
+// for (int i = 0; i < methods.length; i++) {
+// System.out.println("Annotations:");
+// for (int j = 0; i < methods[j].getAnnotations().length; j++)
+// System.out.println("\t" + methods[i].getAnnotations()[j]);
+// System.out.println("Type: " + methods[i].getReturnType().toString());
+// System.out.println("Name:" + methods[i].getName());
+// System.out.println();
+// }
+ // use annotations to find persistent methods
+
+
// PropertyDescriptor descriptor;
// try {
// descriptor = new PropertyDescriptor("genus", taxonname.getClass());
@@ -418,7 +413,7 @@ public class NameEditorView extends EditorPart {
final SourceViewer sourceViewer = createSourceViewer(taxon.getName());
sourceViewer.getTextWidget().setLayoutData(
- new GridData(SWT.FILL, SWT.CENTER, true, false, 2 , 1));
+ new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
sourceViewer.getTextWidget().setFont(
SWTResourceManager.getFont("Georgia", 12, SWT.NONE));
@@ -437,8 +432,8 @@ public class NameEditorView extends EditorPart {
sourceViewer.getTextWidget().setText("");
sourceViewer.getTextWidget().setFont(SWTResourceManager.getFont("Georgia", 12, SWT.NONE));
sourceViewer.getTextWidget().setForeground(SWTResourceManager.getColor(0, 0, 0));
- dirtyBoy = true;
- firePropertyChange(PROP_DIRTY);
+// dirtyBoy = true;
+// firePropertyChange(PROP_DIRTY);
}
}
public void focusLost(FocusEvent e) {
@@ -489,21 +484,6 @@ public class NameEditorView extends EditorPart {
ctlChooseRelType.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
((Label) ctlChooseRelType).setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/unknown_no_bg.gif"));
ctlChooseRelType.moveBelow(precedingControl);
-
- ctlChooseRelType.addMouseListener(new MouseListener() {
- public void mouseDoubleClick(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
- public void mouseDown(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
- public void mouseUp(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
- });
createRelationMenu((Label) ctlChooseRelType);
@@ -566,7 +546,9 @@ public class NameEditorView extends EditorPart {
}
public void focusLost(FocusEvent e) {
// ((StyledText) e.widget).setBackgrond((Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)));
- String text = ((StyledText) e.widget).getText();
+ String text = ((StyledText) e.widget).getText();
+
+ // dummy code to get squigglies for walter's screenshots
if (text.contains("(?)")) {
sourceViewer.getAnnotationModel().addAnnotation(
new ErrorAnnotation(1, "Could not parse name."),
@@ -673,10 +655,15 @@ public class NameEditorView extends EditorPart {
taxon = null;
}
- // get parent taxon
+ // Get parent taxon
if (taxon.getTaxonomicParent() != null)
higherTaxon = taxon.getTaxonomicParent();
+ // Register listeners for any change in accepted name or set of relations
+ taxon.getName().addPropertyChangeListener("nameCache", taxonChangeListener);
+ taxon.addPropertyChangeListener("relationsFromThisTaxon", taxonChangeListener);
+ taxon.addPropertyChangeListener("relationsToThisTaxon", taxonChangeListener);
+
setSite(site);
setInput(input);
setBindingContext(new DataBindingContext());
@@ -696,7 +683,7 @@ public class NameEditorView extends EditorPart {
null, PropertySheetNode.EDITABLE);
propertySheetNodes.add(node);
- // note: only top-level nodes are "add"-ed - otherwise, they are
+ // Note: only top-level nodes are "add"-ed - otherwise, they are
// instantiated with their parent node
new PropertySheetNode("Genus", BeansObservables.observeValue(botName, "uninomial"),
node, PropertySheetNode.EDITABLE);
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameListView.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameListView.java
index afb17252f..bd2d94570 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameListView.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameListView.java
@@ -57,7 +57,7 @@ public class NameListView extends ViewPart {
*/
@Override
public void createPartControl(Composite parent) {
- // TODO Auto-generated method stub
+
parent.setLayout(new FillLayout());
GridLayout gridLayout = new GridLayout();
gridLayout.horizontalSpacing = 0;
@@ -145,8 +145,6 @@ public class NameListView extends ViewPart {
taxTreeExpandItem.setExpanded(true);
taxTreeExpandItem.setHeight(200);
taxTreeExpandItem.setText("Taxonomic Tree");
-// IFileArrangerImages.IMG_HOME);
-// nameListExpandItem.setImage(image);
taxTreeComposite = new Composite(expandBar, SWT.NONE);
taxTreeComposite.setLayout(new FillLayout());
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameViewer.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameViewer_.java
similarity index 95%
rename from eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameViewer.java
rename to eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameViewer_.java
index a7f584794..79c3f195a 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameViewer.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameViewer_.java
@@ -64,7 +64,7 @@ import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NamePartitionSca
* @author p.ciardelli
*
*/
-public class NameViewer extends SourceViewer {
+public class NameViewer_ extends SourceViewer {
final Document document;
final IDocumentPartitioner partitioner;
@@ -84,7 +84,7 @@ public class NameViewer extends SourceViewer {
// annotation model
private AnnotationModel fAnnotationModel = new AnnotationModel();
- NameViewer(TaxonName taxonName, DataBindingContext bindingContext, Composite parent) {
+ NameViewer_(TaxonName taxonName, DataBindingContext bindingContext, Composite parent) {
super(parent, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE); // null -> no vertical ruler
this.taxonName = taxonName;
@@ -92,7 +92,7 @@ public class NameViewer extends SourceViewer {
this.parent = parent;
Assert.isNotNull(bindingContext,
- "NameViewer's binding context must be explicitly set.");
+ "NameViewer_'s binding context must be explicitly set.");
fieldPartitions = new BoundPartition[] {
new BoundPartition("genus", SWT.ITALIC),
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RecentNamesTableViewer.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RecentNamesTableViewer.java
index 4f5853a13..d4e8a967a 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RecentNamesTableViewer.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RecentNamesTableViewer.java
@@ -1,8 +1,6 @@
package eu.etaxonomy.taxeditor.prototype2.view;
import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.map.IObservableMap;
import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
@@ -40,9 +38,7 @@ public class RecentNamesTableViewer extends TableViewer {
}
});
//
- IObservableList rnObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), Activator.getDefault().
- getRecentNamesList(), "taxonList");
- this.setInput(rnObjectListObserveList);
+ this.setInput(Activator.getDefault().getObservableRecentNamesList());
}
}
\ No newline at end of file
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RelatedNameViewer.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RelatedNameViewer.java
index 2bb923d34..639bf7948 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RelatedNameViewer.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RelatedNameViewer.java
@@ -13,7 +13,7 @@ import com.swtdesigner.SWTResourceManager;
import eu.etaxonomy.taxeditor.prototype2.Activator;
-public class RelatedNameViewer extends NameViewer {
+public class RelatedNameViewer extends NameViewer_ {
Control ctlChooseRelType;
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/TaxonomicTreeViewer.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/TaxonomicTreeViewer.java
index 242070422..68e3a25bf 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/TaxonomicTreeViewer.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/TaxonomicTreeViewer.java
@@ -1,30 +1,17 @@
package eu.etaxonomy.taxeditor.prototype2.view;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.beans.BeansObservables;
-import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.map.IObservableMap;
import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.taxeditor.prototype2.Activator;
import eu.etaxonomy.taxeditor.prototype2.model.NameTreeContentProvider;
-import eu.etaxonomy.taxeditor.prototype2.model.TaxonList;
/**
*
@@ -46,64 +33,39 @@ import eu.etaxonomy.taxeditor.prototype2.model.TaxonList;
*
*/
public class TaxonomicTreeViewer extends TreeViewer {
-
- class TreeContentProvider implements IStructuredContentProvider, ITreeContentProvider {
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
- public void dispose() {
- }
- public Object[] getElements(Object inputElement) {
- if (inputElement != null && inputElement instanceof TaxonList)
- return ((TaxonList) inputElement).toArray();
- return new Object[0];
- }
- public Object[] getChildren(Object parentElement) {
- Set children = ((Taxon) parentElement).getTaxonomicChildren();
- return children == null ? new Object[0] : children.toArray();
- }
- public Object getParent(Object element) {
- return ((Taxon) element).getTaxonomicParent();
- }
- public boolean hasChildren(Object element) {
- return ((Taxon) element).hasTaxonomicChildren();
- }
- }
public TaxonomicTreeViewer(Composite parent) {
super(parent, SWT.VIRTUAL);
- this.setContentProvider(new TreeContentProvider());
- this.setLabelProvider(new LabelProvider() {
- public String getText(Object element) {
- return ((Taxon) element).getName().getNameCache();
- }
- public Image getImage(Object element) {
- return null;
- }
- });
- this.setInput(Activator.getDefault().getTaxonList());
this.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
this.getTree().setLinesVisible(false);
this.getTree().setHeaderVisible(false);
-// initDataBindings();
+ initDataBindings();
}
- protected DataBindingContext initDataBindings() {
+ protected void initDataBindings() {
//
-// ObservableListContentProvider viewerContentProviderList = new NameTreeContentProvider();
-// this.setContentProvider(viewerContentProviderList);
-// //
-// IObservableMap[] viewerLabelProviderMaps = BeansObservables.observeMaps(viewerContentProviderList.getKnownElements(),
-// TaxonName.class, new String[]{"name"});
-// this.setLabelProvider(new ObservableMapLabelProvider(viewerLabelProviderMaps));
-// //
-// IObservableList olObjectListObserveList = BeansObservables.observeList(Realm.getDefault(),
-// Activator.getDefault().getTaxonList(), "taxonList");
-// this.setInput(olObjectListObserveList);
- DataBindingContext bindingContext = new DataBindingContext();
+ ObservableListContentProvider viewerContentProviderList = new NameTreeContentProvider();
+ this.setContentProvider(viewerContentProviderList);
//
+ IObservableMap[] viewerLabelProviderMaps = BeansObservables.observeMaps(viewerContentProviderList.getKnownElements(),
+ Taxon.class, new String[]{"name"});
+ this.setLabelProvider(new ObservableMapLabelProvider(viewerLabelProviderMaps) {
+ /*
+ * JFace databinding syntax makes it to difficult to retrieve
+ * Taxon.getName().getNameCache, so override function that returns
+ * label
+ *
+ * (non-Javadoc)
+ * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ return ((Taxon) element).getName().getNameCache();
+ }
+ });
//
- return bindingContext;
+ this.setInput(Activator.getDefault().getObservableTaxonTreeList());
+
}
-
}
+
--
2.34.1