Checkin before attempting to databind tax. tree to "add new taxon" and propertysheet...
authorp.ciardelli <p.ciardelli@localhost>
Tue, 22 Jan 2008 09:34:50 +0000 (09:34 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 22 Jan 2008 09:34:50 +0000 (09:34 +0000)
28 files changed:
.gitattributes
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/Activator.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/Perspective.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/DeleteTaxonAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNameEditorAction.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNewChildNameEditorAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveNameAction.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveTaxonAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/NameEditorInput.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/TaxonList.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/AcceptedNameViewer.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/CarduusEditorView.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/MoveDialogView.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/MultiPageTaxonView.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameEditorView.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameListView.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/NameViewer.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/PilosellaEditorView.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/PropertySheetViewer.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RecentNamesTableViewer.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RelatedNameViewer.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/TaxonomicTreeViewer.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/AnnotationMarkerAccess.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/ErrorAnnotation.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/NameDocument.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/NamePartitioner__.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/NameViewerModifyListener.java
eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/propertysheetsupport/PropertySheetValueEditingSupport.java

index 05593d71568f0ee83f38a1a0e5e53a4feee7b514..393ad1586616df63a4a86fa1c3b6f612610a6c25 100644 (file)
@@ -181,8 +181,10 @@ eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/pro
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/ApplicationWorkbenchAdvisor.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/ApplicationWorkbenchWindowAdvisor.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/Perspective.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/DeleteTaxonAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNameEditorAction.java -text
-eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveNameAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNewChildNameEditorAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveTaxonAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/NameEditorInput.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/NameTreeContentProvider.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/model/ObservableListTreeContentProvider.java -text
@@ -203,6 +205,8 @@ eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/pro
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/RelatedNameViewer.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/TaxonomicTreeViewer.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/UndoView.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/AnnotationMarkerAccess.java -text
+eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/ErrorAnnotation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/MyCompletionProcessor.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/MyRuleScanner.java -text
 eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/MySourceViewerConfig.java -text
index bec6f818bc5e3f6e005b52a991965b9ea1f38eed..8af39b211e76f4827ff9c90262cfcb7eb3d23e4c 100644 (file)
@@ -6,6 +6,7 @@ import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.taxeditor.prototype2.model.TaxonList;\r
 \r
 \r
@@ -37,7 +38,7 @@ public class Activator extends AbstractUIPlugin {
         */\r
        public Activator() {\r
                                \r
-               taxonList.setTaxonList(cdmApp.getNameService().getAllNames());\r
+               taxonList.setTaxonList(cdmApp.getTaxonService().getRootTaxa(null));\r
        }\r
 \r
        /*\r
@@ -90,4 +91,8 @@ public class Activator extends AbstractUIPlugin {
        public TaxonList getRecentNamesList() {\r
                return recentNamesList;\r
        }\r
+       \r
+       public CdmApplicationController getCdmApp() {\r
+               return cdmApp;\r
+       }\r
 }\r
index 38fa5646b082c8968347992c1f389528d4f7e885..1f855cc7b46158cda1714819933eeef18614f092 100644 (file)
@@ -15,7 +15,7 @@ public class Perspective implements IPerspectiveFactory {
        public void createInitialLayout(IPageLayout layout) {
                String editorArea = layout.getEditorArea();
                layout.addStandaloneView(NameListView.ID, false, IPageLayout.LEFT, 0.30f, editorArea);
-               layout.addView(UndoView.ID, IPageLayout.BOTTOM, 0.8f, editorArea);
+//             layout.addView(UndoView.ID, IPageLayout.BOTTOM, 0.8f, editorArea);
                layout.getViewLayout(NameListView.ID).setCloseable(false);
                addFastViews(layout);
        }
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/DeleteTaxonAction.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/DeleteTaxonAction.java
new file mode 100644 (file)
index 0000000..802ab63
--- /dev/null
@@ -0,0 +1,24 @@
+package eu.etaxonomy.taxeditor.prototype2.controller;\r
+\r
+import org.eclipse.jface.action.Action;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+\r
+/**\r
+ * Delete this taxon from the CDM\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class DeleteTaxonAction extends Action {\r
+       Taxon taxon;\r
+       \r
+       public DeleteTaxonAction(Taxon taxon) {\r
+               this.taxon = taxon;\r
+       }\r
+       \r
+       public void run() {\r
+//             Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+       }\r
+}\r
index 8997217d38e3f73f483065aef88bde13be939383..b9d97dadf1ef4c58dbcdcd63f4b15ea7056bd7a8 100644 (file)
@@ -4,37 +4,52 @@ import org.eclipse.jface.action.Action;
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.PartInitException;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.prototype2.view.MultiPageTaxonView;\r
 import eu.etaxonomy.taxeditor.prototype2.model.NameEditorInput;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
 \r
+/**\r
+ * Opens a name editor for an existing or new taxon\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
 public class OpenNameEditorAction extends Action {\r
 \r
-       private TaxonName taxonname;\r
+       private Taxon taxon;\r
        public static final String ID = "eu.etaxonomy.taxeditor.prototype2.controller.opennameeditoraction"; //$NON-NLS-1$\r
        \r
-       public OpenNameEditorAction(TaxonName taxonname) {\r
-               this.taxonname = taxonname;\r
+       public OpenNameEditorAction(Taxon taxon) {\r
+               this.taxon = taxon;\r
        }\r
 \r
        public OpenNameEditorAction() {\r
-               this.taxonname = new TaxonName();\r
-               this.taxonname.setName("new");\r
-               setId(ID);\r
+\r
+               // the text for the menu item\r
                setText("New taxon");\r
+               \r
+               setId(ID);\r
+               \r
+               this.taxon = new Taxon();\r
+               taxon.setName(new BotanicalName(Rank.GENUS()));\r
+               \r
        }\r
        \r
        public void run() {\r
-               \r
-               // make sure there are no duplicates in recent names list\r
-               if (!Activator.getDefault().getRecentNamesList().contains(taxonname))\r
-                       Activator.getDefault().getRecentNamesList().add(taxonname);             \r
-               \r
-               IEditorInput input = new NameEditorInput(taxonname);\r
+\r
+               // if this is a non-empty taxon being opened for the first time,\r
+               //  add to recent names list\r
+               if (taxon.getName().getNameCache() != null && !Activator.getDefault().getRecentNamesList().contains(taxon))\r
+                       Activator.getDefault().getRecentNamesList().add(taxon);\r
+\r
+               IEditorInput input = new NameEditorInput(taxon);\r
         try {\r
                Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().\r
-                       getActivePage().openEditor(input, MultiPageTaxonView.ID);       \r
+                       getActivePage().openEditor(input, MultiPageTaxonView.ID);\r
+               \r
                } catch (PartInitException e) {\r
                        // TODO Auto-generated catch block\r
                        e.printStackTrace();\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNewChildNameEditorAction.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/OpenNewChildNameEditorAction.java
new file mode 100644 (file)
index 0000000..0e5c12d
--- /dev/null
@@ -0,0 +1,41 @@
+package eu.etaxonomy.taxeditor.prototype2.controller;\r
+\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.PartInitException;\r
+\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.prototype2.view.MultiPageTaxonView;\r
+import eu.etaxonomy.taxeditor.prototype2.model.NameEditorInput;\r
+import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+\r
+/**\r
+ * Opens a name editor for a new taxon with a parent taxon\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class OpenNewChildNameEditorAction extends Action {\r
+\r
+       private Taxon taxon;\r
+       public static final String ID = "eu.etaxonomy.taxeditor.prototype2.controller.opennameeditoraction"; //$NON-NLS-1$\r
+       \r
+       public OpenNewChildNameEditorAction(Taxon parentTaxon) {\r
+               \r
+               taxon = new Taxon();\r
+               taxon.setName(new BotanicalName(Rank.GENUS()));\r
+               \r
+               parentTaxon.addTaxonomicChild(taxon, null, null);\r
+       }\r
+\r
+       public OpenNewChildNameEditorAction() {\r
+               setId(ID);\r
+       }\r
+       \r
+       public void run() {\r
+\r
+               new OpenNameEditorAction(taxon).run();\r
+       }\r
+}
\ No newline at end of file
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveNameAction.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveNameAction.java
deleted file mode 100644 (file)
index 48399cb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-package eu.etaxonomy.taxeditor.prototype2.controller;\r
-\r
-import org.eclipse.jface.action.Action;\r
-\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-\r
-public class SaveNameAction extends Action {\r
-       TaxonName taxonname;\r
-       \r
-       public SaveNameAction(TaxonName taxonname) {\r
-               this.taxonname = taxonname;\r
-       }\r
-       \r
-       public void run() {\r
-//             Activator.getDefault().getApplicationController().getNameService().\r
-//                     saveTaxonName(taxonname);\r
-       }\r
-}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveTaxonAction.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/controller/SaveTaxonAction.java
new file mode 100644 (file)
index 0000000..640703e
--- /dev/null
@@ -0,0 +1,24 @@
+package eu.etaxonomy.taxeditor.prototype2.controller;\r
+\r
+import org.eclipse.jface.action.Action;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+\r
+/**\r
+ * Commit any changes to this taxon to the CDM\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class SaveTaxonAction extends Action {\r
+       Taxon taxon;\r
+       \r
+       public SaveTaxonAction(Taxon taxon) {\r
+               this.taxon = taxon;\r
+       }\r
+       \r
+       public void run() {\r
+               Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+       }\r
+}\r
index 4f8ee4daa6aa8773d4ce0531294ce88293761031..a8398a111868d5d0230258b8fd8f151ce9859b32 100644 (file)
@@ -4,7 +4,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IPersistableElement;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -12,10 +12,10 @@ import eu.etaxonomy.cdm.model.name.TaxonName;
  */\r
 public class NameEditorInput implements IEditorInput {\r
 \r
-       private TaxonName taxonname;\r
+       private Taxon taxon;\r
        \r
-       public NameEditorInput (TaxonName taxonname) {\r
-               this.taxonname = taxonname;\r
+       public NameEditorInput (Taxon taxon) {\r
+               this.taxon = taxon;\r
        }\r
        \r
        public boolean exists() {\r
@@ -29,7 +29,10 @@ public class NameEditorInput implements IEditorInput {
        }\r
 \r
        public String getName() {\r
-               return taxonname.getName();\r
+               if (taxon.getName().getNameCache() == null)\r
+                       return "New taxon";\r
+               else\r
+                       return taxon.getName().getNameCache();\r
        }\r
 \r
        public IPersistableElement getPersistable() {\r
@@ -38,26 +41,26 @@ public class NameEditorInput implements IEditorInput {
        }\r
 \r
        public String getToolTipText() {\r
-               return taxonname.getName();\r
+               return getName();\r
        }\r
 \r
        public Object getAdapter(Class adapter) {\r
 \r
-               if (adapter == TaxonName.class) {\r
-                       return this.taxonname;\r
+               if (adapter == Taxon.class) {\r
+                       return this.taxon;\r
                }\r
                \r
                return null;\r
        }\r
 \r
     /**\r
-     * Overrides equals to ensure that a taxonname can only be edited by\r
+     * Overrides equals to ensure that a taxon can only be edited by\r
      *  one editor at a time.\r
      * \r
      * @return boolean\r
      */\r
-       public boolean equals(Object obj) {\r
-               if (this.taxonname.equals(((NameEditorInput) obj).taxonname))\r
+       public boolean equals(Object obj) {             \r
+               if (this.taxon.equals(((NameEditorInput) obj).taxon))\r
                        return true;\r
                return false;\r
        }\r
index 399f3a754450ad7e6ee79169523476b066256591..a8356b17ffde13b8bbdd40f149bc455f3ecb8d61 100644 (file)
@@ -14,39 +14,50 @@ import org.eclipse.core.databinding.observable.Realm;
 import org.eclipse.core.databinding.observable.list.IListChangeListener;\r
 import org.eclipse.core.databinding.observable.list.IObservableList;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
+/**\r
+ * List exists mainly to catch "add taxon" events, which require\r
+ *  the taxonomic tree to be updated.\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
 public class TaxonList implements IObservableList {\r
 \r
-    private List<TaxonName> taxonList = new ArrayList<TaxonName>();\r
+    private List<Taxon> taxonList = new ArrayList<Taxon>();\r
        \r
-       public void add(TaxonName tn) {\r
-       this.taxonList.add(0, tn);\r
+       public void add(Taxon taxon) {\r
+       this.taxonList.add(0, taxon);\r
        firePropertyChange("taxonList", null, null); //$NON-NLS-1$\r
        }\r
     \r
-    public void remove(TaxonName tn) {\r
-        this.taxonList.remove(tn);\r
+    public void remove(Taxon taxon) {\r
+        this.taxonList.remove(taxon);\r
         firePropertyChange("taxonList", null, null); //$NON-NLS-1$\r
     }\r
 \r
-    public TaxonName[] toArray() {\r
-        return (TaxonName[]) this.taxonList.toArray(new TaxonName[this.taxonList.size()]);\r
+    public Taxon[] toArray() {\r
+        return (Taxon[]) this.taxonList.toArray(new Taxon[this.taxonList.size()]);\r
     }\r
 \r
-       public List<TaxonName> getTaxonList() {\r
+       public List<Taxon> getTaxonList() {\r
                return taxonList;\r
        }\r
 \r
-       public boolean contains(TaxonName tn) {\r
-               if (taxonList.contains(tn))\r
+       public boolean contains(Taxon taxon) {\r
+               if (taxonList.contains(taxon))\r
                        return true;\r
                return false;\r
        }\r
-       public void setTaxonList(List<TaxonName> taxonList) {\r
+       public void setTaxonList(List<Taxon> taxonList) {\r
                this.taxonList = taxonList;\r
        }\r
        \r
+       public void setTaxonList(Taxon rootTaxa) {\r
+               this.taxonList.add(rootTaxa);\r
+       }\r
+       \r
        protected final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);\r
        public void addPropertyChangeListener(PropertyChangeListener listener) {\r
                propertyChangeSupport.addPropertyChangeListener(listener);\r
@@ -69,8 +80,12 @@ public class TaxonList implements IObservableList {
 \r
        protected void firePropertyChange(String propertyName, Object oldValue,\r
                        Object newValue) {\r
-               propertyChangeSupport.firePropertyChange(propertyName, oldValue,\r
-                               newValue);\r
+               try {\r
+                       propertyChangeSupport.firePropertyChange(propertyName, oldValue,\r
+                                       newValue);\r
+               } catch (Exception e) {\r
+                       e.printStackTrace();\r
+               }\r
        }\r
 \r
        public boolean add(Object o) {\r
index ea044ab7fa0c34ab61fc26f8e4f116e5ba819d10..15adaaaaec76a1fe1a9dfe9ade429b8a3bc761f2 100644 (file)
@@ -7,8 +7,6 @@ import org.eclipse.swt.widgets.Composite;
 \r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-\r
 public class AcceptedNameViewer extends NameViewer {\r
 \r
        AcceptedNameViewer(TaxonName taxonName, DataBindingContext bindingContext,\r
index 2a744df1eaba8faf2fc9d15d11fb7b589538b998..59dc977e2bd7b5bdf8f0eb017fcdabeecd45ce55 100644 (file)
@@ -1,43 +1,29 @@
 package eu.etaxonomy.taxeditor.prototype2.view;\r
 \r
 import java.beans.PropertyChangeEvent;\r
-import java.beans.PropertyChangeListener;\r
 \r
 import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.TextViewer;\r
 import org.eclipse.jface.text.source.SourceViewer;\r
 import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.PopupList;\r
 import org.eclipse.swt.custom.StyledText;\r
-import org.eclipse.swt.events.ControlAdapter;\r
-import org.eclipse.swt.events.ControlEvent;\r
 import org.eclipse.swt.events.FocusEvent;\r
 import org.eclipse.swt.events.FocusListener;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.KeyListener;\r
-import org.eclipse.swt.events.MouseAdapter;\r
 import org.eclipse.swt.events.MouseEvent;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
 import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.events.SelectionListener;\r
 import org.eclipse.swt.graphics.Point;\r
 import org.eclipse.swt.graphics.Rectangle;\r
-import org.eclipse.swt.layout.FillLayout;\r
 import org.eclipse.swt.layout.GridData;\r
 import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
 import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.CoolBar;\r
-import org.eclipse.swt.widgets.CoolItem;\r
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.swt.widgets.Event;\r
 import org.eclipse.swt.widgets.Label;\r
 import org.eclipse.swt.widgets.Listener;\r
 import org.eclipse.swt.widgets.Menu;\r
 import org.eclipse.swt.widgets.MenuItem;\r
-import org.eclipse.swt.widgets.Shell;\r
 import org.eclipse.swt.widgets.Table;\r
 import org.eclipse.swt.widgets.TableColumn;\r
 import org.eclipse.swt.widgets.TableItem;\r
@@ -48,19 +34,13 @@ import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;\r
 import org.eclipse.ui.PartInitException;\r
 import org.eclipse.ui.part.EditorPart;\r
+\r
 import com.swtdesigner.ResourceManager;\r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-//import org.eclipse.ui.texteditor.AbstractTextEditor;\r
-\r
-//import eu.etaxonomy.cdm.event.ICdmEventListener;\r
-//import eu.etaxonomy.cdm.event.ICdmEventListenerRegistration;\r
-//import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.SaveNameAction;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.SaveTaxonAction;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
 \r
 //public class CarduusEditorView extends EditorPart implements ICdmEventListener {\r
 public class CarduusEditorView extends EditorPart {\r
@@ -161,15 +141,15 @@ public class CarduusEditorView extends EditorPart {
 //                             taxonname.setGenus(txtGenus.getText());\r
 //                             taxonname.setSpecificEpithet(txtSpEpi.getText());\r
                                \r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxonname).run();\r
                        }\r
 \r
                        public void widgetDefaultSelected(SelectionEvent e) {\r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxonname).run();\r
                        }\r
 \r
                        public void widgetSelected(SelectionEvent e) {\r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxonname).run();\r
                        }\r
                });\r
 \r
index c43dd77244718577674577b2464a337e6dead691..952bac4cc95164e3e00b283971f3adfe796e03ed 100644 (file)
@@ -13,8 +13,6 @@ import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.events.FocusEvent;\r
 import org.eclipse.swt.events.FocusListener;\r
-import org.eclipse.swt.events.MouseAdapter;\r
-import org.eclipse.swt.events.MouseEvent;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
 import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.graphics.Point;\r
@@ -27,26 +25,27 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Group;\r
 import org.eclipse.swt.widgets.Label;\r
 import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableItem;\r
 import org.eclipse.swt.widgets.Text;\r
 \r
 import com.swtdesigner.ResourceManager;\r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
 \r
 public class MoveDialogView extends Dialog {\r
 \r
        private Text searchText;\r
        private TreeViewer treeViewer;\r
-       private TaxonName selectedTaxonName;\r
        private Label selectedTaxonNameLabel;\r
+       private Taxon taxon;\r
        \r
        private List<Button> buttons = new ArrayList<Button>();\r
        \r
+       public int open(Taxon taxon) {\r
+               this.taxon = taxon;\r
+               return super.open();\r
+       }\r
        /**\r
         * Create the dialog\r
         * @param parentShell\r
@@ -71,7 +70,8 @@ public class MoveDialogView extends Dialog {
                final GridData gd_youHaveChosenLabel = new GridData(SWT.CENTER, SWT.FILL, true, false, 2, 1);\r
                gd_youHaveChosenLabel.heightHint = 30;\r
                youHaveChosenLabel.setLayoutData(gd_youHaveChosenLabel);\r
-               youHaveChosenLabel.setText("You have chosen to turn \"Pilosella fuscoatra (Nägeli & Peter) Soják\" into a synonym. Please choose a new accepted name from one of the following options.");\r
+               youHaveChosenLabel.setText("You have chosen to turn \"" + taxon.getName().getNameCache() +\r
+                               "\" into a synonym. Please choose a new accepted name from one of the following options.");\r
 \r
                final Group group_1 = new Group(container, SWT.NONE);\r
                group_1.setLayout(new GridLayout());\r
@@ -90,7 +90,7 @@ public class MoveDialogView extends Dialog {
 \r
                final Composite composite = new Composite(container, SWT.NONE);\r
                composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
-               composite.setLayout(new FillLayout(SWT.VERTICAL));\r
+               composite.setLayout(new FillLayout(SWT.VERTICAL | SWT.HORIZONTAL));\r
                \r
                final Group group = new Group(composite, SWT.NONE);\r
                group.setLayout(new GridLayout());\r
@@ -203,7 +203,8 @@ public class MoveDialogView extends Dialog {
        protected void configureShell(Shell newShell) {\r
                super.configureShell(newShell);\r
                newShell.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/edit_16x16.ico"));\r
-               newShell.setText("Move \"Pilosella fuscoatra (Nägeli & Peter) Soják\"");\r
+               newShell.setText("Move \"" + taxon.getName().getNameCache() +\r
+                               "\"");\r
        }\r
 \r
        class SelectButtonFocusListener implements FocusListener {\r
@@ -226,14 +227,15 @@ public class MoveDialogView extends Dialog {
        class SelectTaxonDoubleClickListener implements IDoubleClickListener {\r
 \r
                public void doubleClick(DoubleClickEvent event) {                                                               \r
-                       TaxonName taxonname = null;\r
+//                     TaxonName taxonname = null;\r
+                       Taxon taxon = null;\r
                        try {\r
-                               taxonname = (TaxonName) ((StructuredSelection)event.getSelection()).getFirstElement();\r
+                               taxon = (Taxon) ((StructuredSelection)event.getSelection()).getFirstElement();\r
                        }catch (Exception e){\r
                                e.printStackTrace();\r
-                               taxonname = null;\r
+                               taxon = null;\r
                        }\r
-                       selectedTaxonNameLabel.setText(taxonname.getName());\r
+                       selectedTaxonNameLabel.setText(taxon.getName().getNameCache());\r
                }\r
        }\r
-}\r
+}
\ No newline at end of file
index 89113df11cef47fa22b2745ca21a17243cc15ed8..b42d7ed37ddd5598a1befece27e054a7cc7b209a 100644 (file)
@@ -8,7 +8,8 @@ import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;\r
 import org.eclipse.ui.part.MultiPageEditorPart;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
 \r
 /**\r
  * \r
@@ -21,11 +22,12 @@ import eu.etaxonomy.cdm.model.name.TaxonName;
 public class MultiPageTaxonView extends MultiPageEditorPart {\r
 \r
        public static final String ID = "eu.etaxonomy.taxeditor.prototype2.view.multipagetaxonview";\r
-       private TaxonName taxonname;\r
+       private Taxon taxon;\r
        private DataBindingContext bindingContext;\r
        \r
        @Override\r
        protected void createPages() {\r
+               \r
                try {\r
                        addPage(0, new NameEditorView(), getEditorInput());\r
                        setPageText(0, "Name");\r
@@ -39,7 +41,7 @@ public class MultiPageTaxonView extends MultiPageEditorPart {
 //                     addPage(3, new EmptyEditorView(), new NameEditorInput(new TaxonName()));\r
 //                     setPageText(3, "Geographic");\r
                        \r
-               } catch (PartInitException e) {\r
+               } catch (PartInitException e) {                 \r
                        // TODO Auto-generated catch block\r
                        e.printStackTrace();\r
                }\r
@@ -70,13 +72,17 @@ public class MultiPageTaxonView extends MultiPageEditorPart {
                        throw new PartInitException(\r
                                        "Invalid Input: Must be IFileEditorInput");\r
                \r
-               if (input.getAdapter(TaxonName.class) != null) {\r
-                       taxonname = (TaxonName) input.getAdapter(TaxonName.class);\r
+               if (input.getAdapter(Taxon.class) != null) {\r
+                       taxon = (Taxon) input.getAdapter(Taxon.class);\r
                } else {\r
-                       taxonname = null;\r
+                       taxon = null;\r
                }\r
-\r
-               setPartName(taxonname.getName());               \r
+               \r
+               if (taxon.getName().getNameCache() == null)\r
+                       setPartName("New taxon");\r
+               else\r
+                       setPartName(taxon.getName().getNameCache());\r
+               \r
                setSite(site);\r
                setInput(input);\r
        }\r
index a2676ee9a18c2eaca444a57d38db46dc93890363..10cee8fab631fbda12a3604381c3b37c9dbaecc1 100644 (file)
@@ -9,17 +9,30 @@ import java.util.List;
 import org.eclipse.core.databinding.DataBindingContext;\r
 import org.eclipse.core.databinding.beans.BeansObservables;\r
 import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.jface.text.Document;\r
+import org.eclipse.jface.text.IDocument;\r
 import org.eclipse.jface.text.IDocumentPartitioner;\r
+import org.eclipse.jface.text.Position;\r
+import org.eclipse.jface.text.Region;\r
 import org.eclipse.jface.text.source.AnnotationModel;\r
+import org.eclipse.jface.text.source.AnnotationPainter;\r
+import org.eclipse.jface.text.source.CompositeRuler;\r
+import org.eclipse.jface.text.source.IAnnotationAccess;\r
+import org.eclipse.jface.text.source.ISourceViewer;\r
 import org.eclipse.jface.text.source.SourceViewer;\r
 import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.StyledText;\r
+import org.eclipse.swt.events.FocusEvent;\r
+import org.eclipse.swt.events.FocusListener;\r
 import org.eclipse.swt.events.MouseEvent;\r
 import org.eclipse.swt.events.MouseListener;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
 import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.events.SelectionListener;\r
+import org.eclipse.swt.graphics.Color;\r
 import org.eclipse.swt.graphics.Point;\r
 import org.eclipse.swt.graphics.Rectangle;\r
+import org.eclipse.swt.layout.FillLayout;\r
 import org.eclipse.swt.layout.GridData;\r
 import org.eclipse.swt.layout.GridLayout;\r
 import org.eclipse.swt.widgets.Composite;\r
@@ -29,6 +42,7 @@ import org.eclipse.swt.widgets.CoolItem;
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.swt.widgets.Event;\r
 import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Link;\r
 import org.eclipse.swt.widgets.Listener;\r
 import org.eclipse.swt.widgets.Menu;\r
 import org.eclipse.swt.widgets.MenuItem;\r
@@ -42,10 +56,17 @@ import org.eclipse.ui.part.EditorPart;
 import com.swtdesigner.ResourceManager;\r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.SaveNameAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.DeleteTaxonAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.OpenNewChildNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.SaveTaxonAction;\r
 import eu.etaxonomy.taxeditor.prototype2.model.PropertySheetNode;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.AnnotationMarkerAccess;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.ErrorAnnotation;\r
 import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NameDocument;\r
 import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NamePartitionScanner;\r
 import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NamePartitioner;\r
@@ -59,8 +80,39 @@ import eu.etaxonomy.taxeditor.prototype2.view.propertysheetsupport.PropertySheet
 \r
 public class NameEditorView extends EditorPart {\r
        \r
-       private TaxonName taxonname;\r
-       \r
+       /**\r
+        * The taxon the editor is editing \r
+        */\r
+       private Taxon taxon;\r
+       /**\r
+        * The higher taxon of the taxon the editor is editing \r
+        */\r
+       private Taxon higherTaxon = null;\r
+       /**\r
+        * Arrays for the creation of synonyms - text and images \r
+        */\r
+       String [] relTypes = {"a synonym (type unknown)",\r
+                       "a homotypic synonym",\r
+                       "a heterotypic synoynm",\r
+                       "a basionym",\r
+                       "a replaced synonym",\r
+                       "a homonym",\r
+                       "an orthographic variant",\r
+                       "a misapplied name",\r
+                       "a concept relation"};\r
+       String [] relImgs = {"unknown_no_bg.gif",\r
+                       "homosyn_no_bg.gif",\r
+                       "heterosyn_no_bg.gif",\r
+                       "basionym_no_bg.gif",\r
+                       "repsyn_no_bg.gif",\r
+                       "homonym_no_bg.gif",\r
+                       "orthovariant_no_bg.gif",\r
+                       "misapplied_no_bg.gif",\r
+                       "concept_no_bg.gif"};\r
+       /*\r
+        * Annotation model\r
+        */\r
+    private AnnotationModel fAnnotationModel = new AnnotationModel();\r
        public boolean dirtyBoy = false;\r
        String clickText;\r
        \r
@@ -80,11 +132,29 @@ public class NameEditorView extends EditorPart {
        \r
                parent.setLayout(new GridLayout());\r
                parent.setRedraw(true);\r
-               \r
-\r
-               final Label taxonomicallyIncludedInLabel = new Label(parent, SWT.NONE);\r
-               taxonomicallyIncludedInLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));\r
-               taxonomicallyIncludedInLabel.setText("Higher taxon: ");\r
+                               \r
+               /*\r
+                *  display hyperlinked higher taxon, if there is one\r
+                */\r
+               Composite higherTaxonComposite = new Composite(parent, SWT.NONE);\r
+               higherTaxonComposite.setLayout(new FillLayout());\r
+               (new Label(higherTaxonComposite, SWT.NONE)).setText("Higher taxon:  ");\r
+               if (higherTaxon == null)\r
+                       (new Label(higherTaxonComposite, SWT.NONE)).setText("none");\r
+               else {\r
+                       Link higherTaxonLink = new Link(higherTaxonComposite, SWT.NONE);\r
+                       higherTaxonLink.setText("<a href=\"#\">" + higherTaxon.getName().getNameCache() + "</a>");\r
+                       higherTaxonLink.addMouseListener(new MouseListener() {\r
+                               public void mouseDoubleClick(MouseEvent e) {\r
+                                       new OpenNameEditorAction(higherTaxon).run();                                    \r
+                               }\r
+                               public void mouseDown(MouseEvent e) {\r
+                                       new OpenNameEditorAction(higherTaxon).run();\r
+                               }\r
+                               public void mouseUp(MouseEvent e) {\r
+                               }               \r
+                       });\r
+               }\r
 \r
                final CoolBar coolBar = new CoolBar(parent, SWT.NONE);\r
                new CoolItem(coolBar, SWT.PUSH).setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/save_edit.gif"));\r
@@ -94,72 +164,89 @@ public class NameEditorView extends EditorPart {
 \r
                final ToolItem itemSave = new ToolItem(toolBar, SWT.PUSH);\r
 //             final CoolItem itemSave = new CoolItem(coolBar, SWT.PUSH);              \r
-               itemSave.setToolTipText("Save taxon \"" + taxonname.getName() + "\"");\r
+//             itemSave.setToolTipText("Save taxon \"" + taxon.getName().getNameCache() + "\"");\r
+               itemSave.setToolTipText("Save taxon");\r
                itemSave.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/save_edit.gif"));\r
                itemSave.addSelectionListener(new SelectionListener() {\r
-                       public void mouseDown(final MouseEvent e) {\r
-                               \r
-//                             taxonname.setGenus(txtGenus.getText());\r
-//                             taxonname.setSpecificEpithet(txtSpEpi.getText());\r
-                               \r
-                               new SaveNameAction(taxonname).run();\r
-                       }\r
-\r
                        public void widgetDefaultSelected(SelectionEvent e) {\r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxon).run();\r
                        }\r
-\r
                        public void widgetSelected(SelectionEvent e) {\r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxon).run();\r
                        }\r
                });\r
 \r
                final ToolItem itemMove = new ToolItem(toolBar, SWT.DROP_DOWN);\r
-               itemMove.setToolTipText("Move taxon \"" + taxonname.getName() + "\"");\r
+//             itemMove.setToolTipText("Move taxon \"" + taxon.getName().getNameCache() + "\"");\r
+               itemMove.setToolTipText("Move taxon");\r
                \r
                final Menu menuMove = new Menu(toolBar);\r
                addDropDown(itemMove, menuMove);\r
 \r
                final MenuItem moveTaxonpilosellaMenuItem = new MenuItem(menuMove, SWT.NONE);\r
-               moveTaxonpilosellaMenuItem.setText("Move taxon \"" + taxonname.getName() + "\" to another higher taxon");\r
+//             moveTaxonpilosellaMenuItem.setText("Move taxon \"" + taxon.getName().getNameCache() + "\" to another higher taxon");\r
+               moveTaxonpilosellaMenuItem.setText("Move taxon to another higher taxon");\r
                moveTaxonpilosellaMenuItem.addSelectionListener(new SelectionAdapter() {\r
                        public void widgetSelected(final SelectionEvent e) {\r
                                new MoveDialogView(getSite().getShell());                               \r
                                MoveDialogView dialog = new MoveDialogView(getSite().getShell());\r
-                               dialog.open();                          \r
+                               dialog.open(taxon);                             \r
                        }\r
                });\r
 \r
                final MenuItem turnTaxonpilosellaMenuItem = new MenuItem(menuMove, SWT.NONE);\r
                turnTaxonpilosellaMenuItem.setSelection(true);\r
-               turnTaxonpilosellaMenuItem.setText("Turn taxon \"" + taxonname.getName() + "\" into a synonym");\r
+//             turnTaxonpilosellaMenuItem.setText("Turn taxon \"" + taxon.getName().getNameCache() + "\" into a synonym");\r
+               turnTaxonpilosellaMenuItem.setText("Turn taxon's accepted name into a synonym");                \r
                turnTaxonpilosellaMenuItem.addSelectionListener(new SelectionAdapter() {\r
                        public void widgetSelected(final SelectionEvent e) {\r
                                new MoveDialogView(getSite().getShell());                               \r
                                MoveDialogView dialog = new MoveDialogView(getSite().getShell());\r
-                               dialog.open();                          \r
+                               dialog.open(taxon);                             \r
                        }\r
                });\r
 \r
                itemMove.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/correction_change.gif"));\r
 \r
                final ToolItem itemDelete = new ToolItem(toolBar, SWT.NONE);\r
-               itemDelete.setToolTipText("Delete taxon \"" + taxonname.getName() + "\"");\r
+//             itemDelete.setToolTipText("Delete taxon \"" + taxon.getName().getNameCache() + "\"");\r
+               itemDelete.setToolTipText("Delete taxon");\r
                itemDelete.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/delete_edit.gif"));\r
+               itemDelete.addSelectionListener(new SelectionListener() {\r
+\r
+                       public void widgetDefaultSelected(SelectionEvent e) {\r
+                               // TODO Auto-generated method stub\r
+                               \r
+                       }\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               new DeleteTaxonAction(taxon).run();\r
+                       }\r
+               });\r
                                \r
                final ToolItem separator1 = new ToolItem(toolBar, SWT.SEPARATOR);\r
 \r
                final ToolItem itemAddRelationship = new ToolItem(toolBar, SWT.DROP_DOWN);\r
-               itemAddRelationship.setToolTipText("Add nom. or tax. relation to \"" + taxonname.getName() + "\"");\r
+//             itemAddRelationship.setToolTipText("Add nom. or tax. relation to \"" + \r
+//                             taxon.getName().getNameCache() + "\"");\r
+               itemAddRelationship.setToolTipText("Add nom. or tax. relation to taxon");               \r
                itemAddRelationship.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/rel_no_bg.gif"));\r
-               \r
+\r
+               /*\r
+                * Create menu to add relations to the taxon\r
+                */\r
                final Menu menuAddRel = new Menu(toolBar);\r
-               menuAddRel.setData("x", null);\r
+//             menuAddRel.setData("x", null);\r
                addDropDown(itemAddRelationship, menuAddRel);\r
 \r
+//             for (int i= 0; i < relTypes.length; i++) {\r
+//                     final MenuItem menuItem = new MenuItem(menuAddRel, SWT.NONE);\r
+//                     menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImgs[i]));\r
+//                     menuItem.setText("Add " + relTypes[i]);\r
+//             }\r
+               \r
                final MenuItem testMenuItem = new MenuItem(menuAddRel, SWT.NONE);\r
                testMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/unknown_no_bg.gif"));\r
-               testMenuItem.setText("Add synonymy (type unknown)");\r
+               testMenuItem.setText("Add synonym (type unknown)");\r
 \r
                final MenuItem addHomotypicSynonymMenuItem = new MenuItem(menuAddRel, SWT.NONE);\r
                addHomotypicSynonymMenuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/homosyn_no_bg.gif"));\r
@@ -222,15 +309,37 @@ public class NameEditorView extends EditorPart {
                itemAddTaxon.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/add_edit.gif"));\r
                itemAddTaxon.setToolTipText("Add new taxon");\r
 \r
+               /*\r
+                *  drop-down to add new "included in" taxon\r
+                */             \r
                final Menu menuAdd = new Menu(toolBar);\r
-               menuAdd.setData("x", null);\r
                addDropDown(itemAddTaxon, menuAdd);\r
 \r
-               final MenuItem addTaxonToMenuItem = new MenuItem(menuAdd, SWT.NONE);\r
-               addTaxonToMenuItem.setText("Add new taxon to \"" + taxonname.getName() + "\"");\r
-\r
-               final MenuItem addNewTaxonMenuItem = new MenuItem(menuAdd, SWT.NONE);\r
-               addNewTaxonMenuItem.setText("Add new taxon to \"Pilosella fuscoatra coll.\"");\r
+               if (higherTaxon != null) {\r
+                       final MenuItem addToHigherTaxonItem = new MenuItem(menuAdd, SWT.NONE);\r
+                       addToHigherTaxonItem.setText("Add new taxon to \"" + higherTaxon.getName().getNameCache() + "\"");\r
+                       addToHigherTaxonItem.addSelectionListener(new SelectionListener() {\r
+                               public void widgetDefaultSelected(SelectionEvent e) {\r
+                                       // TODO Auto-generated method stub\r
+                                       \r
+                               }\r
+                               public void widgetSelected(SelectionEvent e) {\r
+                                       new OpenNewChildNameEditorAction(higherTaxon).run();\r
+                               }               \r
+                       });\r
+               }\r
+               final MenuItem addTaxonItem = new MenuItem(menuAdd, SWT.NONE);\r
+//             addTaxonItem.setText("Add new taxon to \"" + taxon.getName().getNameCache() + "\"");\r
+               addTaxonItem.setText("Add new taxon to this taxon");\r
+               addTaxonItem.addSelectionListener(new SelectionListener() {\r
+                       public void widgetDefaultSelected(SelectionEvent e) {\r
+                               // TODO Auto-generated method stub\r
+                               \r
+                       }\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               new OpenNewChildNameEditorAction(taxon).run();\r
+                       }               \r
+               });\r
 \r
                final Composite contentComposite = new Composite(parent, SWT.NONE);\r
                contentComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
@@ -250,12 +359,15 @@ public class NameEditorView extends EditorPart {
                nameComposite.setRedraw(true);\r
                \r
 //             clickText = "Click here to start entering accepted name or enter its individual fields in the property sheet to the right";\r
-//             NameViewer acceptedNameViewer = new AcceptedNameViewer(taxonname, bindingContext, nameComposite);\r
+//             NameViewer acceptedNameViewer = new AcceptedNameViewer(taxon, bindingContext, nameComposite);\r
 //             acceptedNameViewer.setBindingContext(bindingContext);\r
-               createAcceptedName();\r
 //             acceptedNameViewer.configure(new NameViewerConfig());\r
+\r
+               createAcceptedName();\r
                \r
-               // Construct PropertySheetViewer, with bindings to model layer\r
+               /*\r
+                *  construct PropertySheetViewer, with bindings to model layer\r
+                */\r
                propertySheetViewer = new PropertySheetViewer(contentComposite);\r
                propertySheetViewer.setBindingContext(bindingContext);\r
                \r
@@ -266,50 +378,90 @@ public class NameEditorView extends EditorPart {
                propertySheetViewer.getPropertyValueColumn().setEditingSupport(\r
                                new PropertySheetValueEditingSupport(propertySheetViewer));\r
                \r
-               setPropertySheetNodes(taxonname);\r
+               setPropertySheetNodes(taxon.getName());\r
                \r
 //             Text testeroo = new Text(composite, SWT.BORDER);\r
 //             testeroo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
 //             \r
 //             bindingContext.bindValue( SWTObservables.observeText(testeroo, SWT.Modify),\r
-//                             BeansObservables.observeValue(taxonname,"genus"),\r
+//                             BeansObservables.observeValue(taxon,"genus"),\r
 //                             null, null);            \r
        }\r
        \r
-       private void setPropertySheetNodes(TaxonName taxonname2) {\r
+       private void setPropertySheetNodes(TaxonNameBase taxonname) {\r
                propertySheetViewer.setInput(getPropertySheetNodes(taxonname));         \r
        }\r
 \r
        private SourceViewer createAcceptedName() {\r
                \r
-               PropertyDescriptor descriptor;\r
-               try {\r
-                       descriptor = new PropertyDescriptor("genus", taxonname.getClass());\r
-                       try {\r
-                               System.out.println("Property desc. test in createAcceptedName: " \r
-                                               + descriptor.getReadMethod().invoke(taxonname, null));\r
-                       } catch (IllegalArgumentException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
-                       } catch (IllegalAccessException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
-                       } catch (InvocationTargetException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
-                       }\r
-               } catch (IntrospectionException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
-               } \r
+//             PropertyDescriptor descriptor;\r
+//             try {\r
+//                     descriptor = new PropertyDescriptor("genus", taxonname.getClass());\r
+//                     try {\r
+//                             System.out.println("Property desc. test in createAcceptedName: " \r
+//                                             + descriptor.getReadMethod().invoke(taxonname, null));\r
+//                     } catch (IllegalArgumentException e) {\r
+//                             // TODO Auto-generated catch block\r
+//                             e.printStackTrace();\r
+//                     } catch (IllegalAccessException e) {\r
+//                             // TODO Auto-generated catch block\r
+//                             e.printStackTrace();\r
+//                     } catch (InvocationTargetException e) {\r
+//                             // TODO Auto-generated catch block\r
+//                             e.printStackTrace();\r
+//                     }\r
+//             } catch (IntrospectionException e) {\r
+//                     // TODO Auto-generated catch block\r
+//                     e.printStackTrace();\r
+//             } \r
                \r
-               SourceViewer sourceViewer = createSourceViewer(taxonname);\r
+               final SourceViewer sourceViewer = createSourceViewer(taxon.getName());\r
                \r
                sourceViewer.getTextWidget().setLayoutData(\r
                                new GridData(SWT.FILL, SWT.CENTER, true, false, 2       , 1));\r
                sourceViewer.getTextWidget().setFont(\r
                                SWTResourceManager.getFont("Georgia", 12, SWT.NONE));           \r
                \r
+               /*\r
+                *  if this is a new name, show text prompt to start entering data\r
+                */\r
+               if (taxon.getName().getNameCache() == null) {\r
+                       clickText = "Click here to start entering accepted name or enter individual fields in the property sheet to the right";\r
+                       \r
+                       sourceViewer.getTextWidget().setText(clickText);\r
+                       sourceViewer.getTextWidget().setFont(SWTResourceManager.getFont("Georgia", 12, SWT.ITALIC));\r
+                       sourceViewer.getTextWidget().setForeground(SWTResourceManager.getColor(192, 192, 192));\r
+                       sourceViewer.getTextWidget().addFocusListener(new FocusListener() {\r
+                               public void focusGained(FocusEvent e) {\r
+                                       if (!dirtyBoy) {\r
+                                               sourceViewer.getTextWidget().setText("");\r
+                                               sourceViewer.getTextWidget().setFont(SWTResourceManager.getFont("Georgia", 12, SWT.NONE));\r
+                                               sourceViewer.getTextWidget().setForeground(SWTResourceManager.getColor(0, 0, 0));\r
+                                               dirtyBoy = true;\r
+                                               firePropertyChange(PROP_DIRTY);\r
+                                       }\r
+                               }\r
+                               public void focusLost(FocusEvent e) {                           \r
+                                       if (sourceViewer.getTextWidget().getText() == "") {\r
+                                               sourceViewer.getTextWidget().setForeground(SWTResourceManager.getColor(192, 192, 192));\r
+                                               sourceViewer.getTextWidget().setText(clickText);\r
+                                               sourceViewer.getTextWidget().setFont(SWTResourceManager.getFont("Georgia", 12, SWT.ITALIC));\r
+                                               dirtyBoy = false;\r
+                                       } else {\r
+                                               dirtyBoy = true;\r
+                                       }\r
+                               }\r
+                       });\r
+                       \r
+               \r
+               // add an annotation\r
+//             ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, "Learn how to spell \"text!\"");\r
+//     \r
+//             // lets underline the word "texst"\r
+//             sourceViewer.getAnnotationModel().addAnnotation(errorAnnotation, new Position(1, 5));\r
+                       \r
+               }\r
+               \r
                return sourceViewer;\r
        }\r
        \r
@@ -353,6 +505,8 @@ public class NameEditorView extends EditorPart {
                        }\r
                });\r
                \r
+               createRelationMenu((Label) ctlChooseRelType);\r
+               \r
                return sourceViewer;\r
        }\r
        \r
@@ -366,50 +520,126 @@ public class NameEditorView extends EditorPart {
         * @return SourceViewer\r
         */\r
        private SourceViewer createSourceViewer(Object contentObject) {\r
-               SourceViewer sourceViewer = new SourceViewer(nameComposite, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
+               final SourceViewer sourceViewer = new SourceViewer(nameComposite, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
                \r
-               final NameDocument document;\r
-               if (contentObject instanceof TaxonName) {\r
-                       document = new NameDocument((TaxonName) contentObject);\r
+               IDocument document;\r
+               if (contentObject instanceof TaxonNameBase) {\r
+                       document = new Document( ((TaxonNameBase) contentObject).getNameCache());\r
                } else if (contentObject instanceof String) {\r
-                       document = new NameDocument((String) contentObject);\r
+                       document = new Document((String) contentObject);\r
                } else {\r
-                       document = new NameDocument();\r
+                       document = new Document();\r
                }\r
+//             final NameDocument document;\r
+//             if (contentObject instanceof TaxonNameBase) {\r
+//                     document = new NameDocument((TaxonNameBase) contentObject);\r
+//                     document.set( ((TaxonNameBase) contentObject).getNameCache());\r
+//             } else if (contentObject instanceof String) {\r
+//                     document = new NameDocument((String) contentObject);\r
+//             } else {\r
+//                     document = new NameDocument();\r
+//             }\r
                \r
-//             document.set("huh`?");\r
                \r
-               IDocumentPartitioner partitioner = new NamePartitioner(new NamePartitionScanner(),\r
-                               NamePartitionScanner.PARTITION_TYPES, this, sourceViewer.getTextWidget());\r
+//             IDocumentPartitioner partitioner = new NamePartitioner(new NamePartitionScanner(),\r
+//                             NamePartitionScanner.PARTITION_TYPES, this, sourceViewer.getTextWidget());\r
 //             IDocumentPartitioner partitioner = new SimpleNamePartitioner(this, sourceViewer.getTextWidget());               \r
-               partitioner.connect(document); // <--------------- problem\r
-               document.setDocumentPartitioner(partitioner);\r
+//             partitioner.connect(document); // <--------------- problem\r
+//             document.setDocumentPartitioner(partitioner);\r
                sourceViewer.setDocument(document, new AnnotationModel());\r
                \r
 //             document.addDocumentListener(new NameDocumentListener(\r
 //                             this, sourceViewer.getTextWidget(), this.nameComposite));\r
                \r
-               sourceViewer.configure(new NameViewerConfig());\r
+//             sourceViewer.configure(new NameViewerConfig());\r
                \r
                // maybe use these after all: partitioning only takes place on the first line after all ...\r
                sourceViewer.getTextWidget().addKeyListener(\r
                                new NameViewerKeyListener(this, this.nameComposite));\r
                sourceViewer.getTextWidget().addModifyListener(\r
                                new NameViewerModifyListener(this, this.nameComposite));\r
-//             sourceViewer.getTextWidget().addFocusListener(new FocusListener() {\r
-//                     public void focusGained(FocusEvent e) {\r
-//                             \r
+               sourceViewer.getTextWidget().addFocusListener(new FocusListener() {\r
+                       public void focusGained(FocusEvent e) {\r
+                               \r
 //                             ((StyledText) e.widget).setBackground((Display.getCurrent().getSystemColor(SWT.COLOR_GRAY)));\r
 //                             setPropertySheetNodes( document.getTaxonName() );\r
-//                     }\r
-//                     public void focusLost(FocusEvent e) {\r
-//                             ((StyledText) e.widget).setBackground((Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)));\r
-//                     }\r
-//                     \r
-//             });\r
+                       }\r
+                       public void focusLost(FocusEvent e) {\r
+//                             ((StyledText) e.widget).setBackgrond((Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)));\r
+                               String text = ((StyledText) e.widget).getText(); \r
+                               if (text.contains("(?)")) {\r
+                                       sourceViewer.getAnnotationModel().addAnnotation(\r
+                                                       new ErrorAnnotation(1, "Could not parse name."), \r
+                                                       new Position(0, text.length() - 1));\r
+                               }\r
+                       }\r
+                       \r
+               });\r
+               \r
+               // annotations section\r
+               IAnnotationAccess fAnnotationAccess = new AnnotationMarkerAccess();\r
+               \r
+               // to paint the annotations\r
+        AnnotationPainter ap = new AnnotationPainter(sourceViewer, fAnnotationAccess);\r
+        ap.addAnnotationType(ErrorAnnotation.ERROR_TYPE);\r
+        ap.setAnnotationTypeColor(ErrorAnnotation.ERROR_TYPE, new Color(Display.getDefault(), ErrorAnnotation.ERROR_RGB));\r
+\r
+        // this will draw the squigglies under the text\r
+        sourceViewer.addPainter(ap);\r
+               \r
                return sourceViewer;\r
        }\r
 \r
+       /**\r
+        * Creates the drop-down menu next to every synonym for changing relationship type\r
+        * \r
+        * @param label\r
+        * @param name\r
+        */\r
+//     private void createRelationMenu(Control control, BotanicalName name) {\r
+       private void createRelationMenu(final Label label) {\r
+               \r
+               final Menu menu = new Menu(label);\r
+               label.setMenu(menu);\r
+               label.addMouseListener(new MouseListener() {\r
+                       public void mouseDown(MouseEvent e) {\r
+                               menu.setVisible(true);\r
+                       }\r
+                       public void mouseDoubleClick(MouseEvent e) {\r
+                       }\r
+                       public void mouseUp(MouseEvent e) {     \r
+                       }\r
+               });\r
+               \r
+               createRelationMenuItem(menu, "delete_edit.gif", "Delete synonym from this taxon");\r
+               createRelationMenuItem(menu, "correction_change.gif", "Move synonym to another taxon");\r
+               \r
+               new MenuItem(menu, SWT.SEPARATOR);\r
+               \r
+               for (int i= 0; i < relTypes.length; i++) {\r
+                       final String relImg = relImgs[i];\r
+                       String relText = "Turn this synonym into " + relTypes[i];\r
+                       createRelationMenuItem(menu, relImg, relText).addSelectionListener(new SelectionListener() {\r
+                               public void widgetDefaultSelected(SelectionEvent e) {   \r
+                               }\r
+                               public void widgetSelected(SelectionEvent e) {\r
+                                       label.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImg));      \r
+                               }\r
+                       });\r
+               }\r
+       }\r
+       \r
+       private MenuItem createRelationMenuItem(Menu menu, String img, String text) {\r
+               final MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
+               menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + img));\r
+               menuItem.setText(text);\r
+               return menuItem;\r
+       }\r
+       \r
+       private void createRelationMenuAction() {\r
+               \r
+       }\r
+       \r
        private SourceViewer createSourceViewer() {\r
                return createSourceViewer(null);\r
        }\r
@@ -431,35 +661,46 @@ public class NameEditorView extends EditorPart {
 \r
        @Override\r
        public void init(IEditorSite site, IEditorInput input) throws PartInitException {\r
-\r
+               \r
                if (!(input instanceof IEditorInput))\r
                        throw new PartInitException(\r
                                        "Invalid Input: Must be IFileEditorInput");\r
                \r
-               if (input.getAdapter(TaxonName.class) != null) {\r
-                       taxonname = (TaxonName) input.getAdapter(TaxonName.class);\r
+               if (input.getAdapter(Taxon.class) != null) {\r
+                       taxon = (Taxon) input.getAdapter(Taxon.class);\r
                } else {\r
                        \r
-                       taxonname = null;\r
+                       taxon = null;\r
                }\r
                \r
+               // get parent taxon\r
+               if (taxon.getTaxonomicParent() != null)\r
+                               higherTaxon = taxon.getTaxonomicParent();\r
+               \r
                setSite(site);\r
                setInput(input);\r
                setBindingContext(new DataBindingContext());\r
+               \r
        }\r
 \r
-       private List<PropertySheetNode> getPropertySheetNodes(TaxonName taxonName) {\r
+       /**\r
+        * @param taxonName\r
+        * @return\r
+        */\r
+       private List<PropertySheetNode> getPropertySheetNodes(TaxonNameBase taxonName) {\r
                \r
+               BotanicalName botName = (BotanicalName) taxonName;\r
+                               \r
                List<PropertySheetNode> propertySheetNodes = new ArrayList<PropertySheetNode>();\r
-               PropertySheetNode node = new PropertySheetNode("Full Name", BeansObservables.observeValue(taxonName, "name"), \r
+               PropertySheetNode node = new PropertySheetNode("Full Name", BeansObservables.observeValue(botName, "nameCache"), \r
                                null, PropertySheetNode.EDITABLE);\r
                propertySheetNodes.add(node);\r
                \r
                // note: only top-level nodes are "add"-ed - otherwise, they are\r
                //  instantiated with their parent node\r
-               new PropertySheetNode("Genus", BeansObservables.observeValue(taxonName, "genus"), \r
+               new PropertySheetNode("Genus", BeansObservables.observeValue(botName, "uninomial"), \r
                                node, PropertySheetNode.EDITABLE);\r
-               new PropertySheetNode("Species Epithet", BeansObservables.observeValue(taxonName, "specificEpithet"), \r
+               new PropertySheetNode("Species Epithet", BeansObservables.observeValue(botName, "specificEpithet"), \r
                                node, PropertySheetNode.EDITABLE);\r
 \r
                return propertySheetNodes;\r
@@ -496,4 +737,4 @@ public class NameEditorView extends EditorPart {
        public void setBindingContext(DataBindingContext bindingContext) {\r
                this.bindingContext = bindingContext;\r
        }\r
-}\r
+}
\ No newline at end of file
index 315291166d0be2343ed7dc55e75abcec5a1518a2..afb17252fc53f1a20ed111d3f7c234646760c682 100644 (file)
@@ -1,14 +1,8 @@
 package eu.etaxonomy.taxeditor.prototype2.view;\r
 \r
 import org.eclipse.core.databinding.DataBindingContext;\r
-import org.eclipse.core.databinding.beans.BeansObservables;\r
-import org.eclipse.core.databinding.observable.Realm;\r
-import org.eclipse.core.databinding.observable.list.IObservableList;\r
-import org.eclipse.core.databinding.observable.map.IObservableMap;\r
 import org.eclipse.jface.action.IMenuManager;\r
 import org.eclipse.jface.action.IToolBarManager;\r
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
-import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;\r
 import org.eclipse.jface.viewers.DoubleClickEvent;\r
 import org.eclipse.jface.viewers.IDoubleClickListener;\r
 import org.eclipse.jface.viewers.StructuredSelection;\r
@@ -35,9 +29,9 @@ import org.eclipse.ui.part.ViewPart;
 import com.swtdesigner.ResourceManager;\r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
 \r
 //public class NameListView extends ViewPart implements ICdmEventListener {\r
 public class NameListView extends ViewPart {\r
@@ -164,14 +158,14 @@ public class NameListView extends ViewPart {
                treeViewer.addDoubleClickListener(new IDoubleClickListener(){\r
 \r
                        public void doubleClick(DoubleClickEvent event) {                                                               \r
-                               TaxonName taxonname = null;\r
+                               Taxon taxon = null;\r
                                try {\r
-                                       taxonname = (TaxonName) ((StructuredSelection)event.getSelection()).getFirstElement();\r
+                                       taxon = (Taxon) ((StructuredSelection)event.getSelection()).getFirstElement();\r
                                }catch (Exception e){\r
                                        e.printStackTrace();\r
-                                       taxonname = null;\r
+                                       taxon = null;\r
                                }\r
-                               new OpenNameEditorAction(taxonname).run();\r
+                               new OpenNameEditorAction(taxon).run();\r
                        }\r
                });             \r
        }\r
@@ -190,14 +184,14 @@ public class NameListView extends ViewPart {
                recentNamesViewer.addDoubleClickListener(new IDoubleClickListener(){\r
 \r
                        public void doubleClick(DoubleClickEvent event) {                                                               \r
-                               TaxonName taxonname = null;\r
+                               Taxon taxon = null;\r
                                try {\r
-                                       taxonname = (TaxonName) ((StructuredSelection)event.getSelection()).getFirstElement();\r
+                                       taxon = (Taxon) ((StructuredSelection)event.getSelection()).getFirstElement();\r
                                }catch (Exception e){\r
                                        e.printStackTrace();\r
-                                       taxonname = null;\r
+                                       taxon = null;\r
                                }\r
-                               new OpenNameEditorAction(taxonname).run();\r
+                               new OpenNameEditorAction(taxon).run();\r
                        }\r
                });                             \r
                \r
index 9a9dbd97b5d8a5fe9c2b83a96eb1fb2e0e3620da..a7f5847943132953133eade51ac413cc1c61aed6 100644 (file)
@@ -35,6 +35,7 @@ import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.FocusListener;\r
 import org.eclipse.swt.events.KeyAdapter;\r
 import org.eclipse.swt.events.KeyEvent;\r
+import org.eclipse.swt.graphics.Color;\r
 import org.eclipse.swt.graphics.GC;\r
 import org.eclipse.swt.graphics.Image;\r
 import org.eclipse.swt.graphics.RGB;\r
@@ -46,7 +47,8 @@ import org.eclipse.swt.widgets.Display;
 \r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.AnnotationMarkerAccess;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.ErrorAnnotation;\r
 import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.NamePartitionScanner_;\r
 \r
 /**\r
@@ -123,21 +125,21 @@ public class NameViewer extends SourceViewer {
                });\r
                \r
                // annotations section\r
-//             IAnnotationAccess fAnnotationAccess = new AnnotationMarkerAccess();\r
-//             \r
-//             // to paint the annotations\r
-//        AnnotationPainter ap = new AnnotationPainter(this, fAnnotationAccess);\r
-//        ap.addAnnotationType(ERROR_TYPE);\r
-//        ap.setAnnotationTypeColor(ERROR_TYPE, new Color(Display.getDefault(), ERROR_RGB));\r
-//\r
-//        // this will draw the squigglies under the text\r
-//        this.addPainter(ap);\r
-//        \r
-//        // add an annotation\r
-//        ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, "Learn how to spell \"text!\"");\r
-//\r
-//        // lets underline the word "texst"\r
-//        fAnnotationModel.addAnnotation(errorAnnotation, new Position(1, 5));\r
+               IAnnotationAccess fAnnotationAccess = new AnnotationMarkerAccess();\r
+               \r
+               // to paint the annotations\r
+        AnnotationPainter ap = new AnnotationPainter(this, fAnnotationAccess);\r
+        ap.addAnnotationType(ERROR_TYPE);\r
+        ap.setAnnotationTypeColor(ERROR_TYPE, new Color(Display.getDefault(), ERROR_RGB));\r
+\r
+        // this will draw the squigglies under the text\r
+        this.addPainter(ap);\r
+        \r
+        // add an annotation\r
+        ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, "Learn how to spell \"text!\"");\r
+\r
+        // lets underline the word "texst"\r
+        fAnnotationModel.addAnnotation(errorAnnotation, new Position(1, 5));\r
                                \r
        };\r
 \r
@@ -316,107 +318,107 @@ public class NameViewer extends SourceViewer {
 //             }\r
        }\r
        \r
-    class AnnotationMarkerAccess implements IAnnotationAccess, IAnnotationAccessExtension {\r
-        public Object getType(Annotation annotation) {\r
-            return annotation.getType();\r
-        }\r
-\r
-        public boolean isMultiLine(Annotation annotation) {\r
-            return true;\r
-        }\r
-\r
-        public boolean isTemporary(Annotation annotation) {\r
-            return !annotation.isPersistent();\r
-        }\r
-\r
-        public String getTypeLabel(Annotation annotation) {\r
-            if (annotation instanceof ErrorAnnotation)\r
-                return "Errors";\r
-\r
-            return null;\r
-        }\r
-\r
-        public int getLayer(Annotation annotation) {\r
-            if (annotation instanceof ErrorAnnotation)\r
-                return ((ErrorAnnotation)annotation).getLayer();\r
-\r
-            return 0;\r
-        }\r
-\r
-        public void paint(Annotation annotation, GC gc, Canvas canvas, Rectangle bounds) {\r
-            ImageUtilities.drawImage(((ErrorAnnotation)annotation).getImage(), \r
-                       gc, canvas, bounds, SWT.CENTER, SWT.TOP);\r
-        }\r
-\r
-        public boolean isPaintable(Annotation annotation) {\r
-            if (annotation instanceof ErrorAnnotation)\r
-                return ((ErrorAnnotation)annotation).getImage() != null;\r
-\r
-            return false;\r
-        }\r
-\r
-        public boolean isSubtype(Object annotationType, Object potentialSupertype) {\r
-            if (annotationType.equals(potentialSupertype))\r
-                return true;\r
-\r
-            return false;\r
-\r
-        }\r
-\r
-        public Object[] getSupertypes(Object annotationType) {\r
-            return new Object[0];\r
-        }\r
-    }\r
+//    class AnnotationMarkerAccess implements IAnnotationAccess, IAnnotationAccessExtension {\r
+//        public Object getType(Annotation annotation) {\r
+//            return annotation.getType();\r
+//        }\r
+//\r
+//        public boolean isMultiLine(Annotation annotation) {\r
+//            return true;\r
+//        }\r
+//\r
+//        public boolean isTemporary(Annotation annotation) {\r
+//            return !annotation.isPersistent();\r
+//        }\r
+//\r
+//        public String getTypeLabel(Annotation annotation) {\r
+//            if (annotation instanceof ErrorAnnotation)\r
+//                return "Errors";\r
+//\r
+//            return null;\r
+//        }\r
+//\r
+//        public int getLayer(Annotation annotation) {\r
+//            if (annotation instanceof ErrorAnnotation)\r
+//                return ((ErrorAnnotation)annotation).getLayer();\r
+//\r
+//            return 0;\r
+//        }\r
+//\r
+//        public void paint(Annotation annotation, GC gc, Canvas canvas, Rectangle bounds) {\r
+//            ImageUtilities.drawImage(((ErrorAnnotation)annotation).getImage(), \r
+//                     gc, canvas, bounds, SWT.CENTER, SWT.TOP);\r
+//        }\r
+//\r
+//        public boolean isPaintable(Annotation annotation) {\r
+//            if (annotation instanceof ErrorAnnotation)\r
+//                return ((ErrorAnnotation)annotation).getImage() != null;\r
+//\r
+//            return false;\r
+//        }\r
+//\r
+//        public boolean isSubtype(Object annotationType, Object potentialSupertype) {\r
+//            if (annotationType.equals(potentialSupertype))\r
+//                return true;\r
+//\r
+//            return false;\r
+//\r
+//        }\r
+//\r
+//        public Object[] getSupertypes(Object annotationType) {\r
+//            return new Object[0];\r
+//        }\r
+//    }\r
     \r
     // one error annotation\r
-    class ErrorAnnotation extends Annotation {\r
-        private IMarker marker;\r
-        private String text;\r
-        private int line;\r
-        private Position position;\r
-\r
-        public ErrorAnnotation(IMarker marker) {\r
-            this.marker = marker;\r
-        }\r
-\r
-        public ErrorAnnotation(int line, String text) {\r
-            super(ERROR_TYPE, true, null);\r
-            this.marker = null;\r
-            this.line = line;\r
-            this.text = text;\r
-        }\r
-\r
-        public IMarker getMarker() {\r
-            return marker;\r
-        }\r
-\r
-        public int getLine() {\r
-            return line;\r
-        }\r
-\r
-        public String getText() {\r
-            return text;\r
-        }\r
-\r
-        public Image getImage() {\r
-            return ERROR_IMAGE;\r
-        }\r
-\r
-        public int getLayer() {\r
-            return 3;\r
-        }\r
-\r
-        public String getType() {\r
-            return ERROR_TYPE;\r
-        }\r
-\r
-        public Position getPosition() {\r
-            return position;\r
-        }\r
-\r
-        public void setPosition(Position position) {\r
-            this.position = position;\r
-        }\r
-    }    \r
+//    class ErrorAnnotation extends Annotation {\r
+//        private IMarker marker;\r
+//        private String text;\r
+//        private int line;\r
+//        private Position position;\r
+//\r
+//        public ErrorAnnotation(IMarker marker) {\r
+//            this.marker = marker;\r
+//        }\r
+//\r
+//        public ErrorAnnotation(int line, String text) {\r
+//            super(ERROR_TYPE, true, null);\r
+//            this.marker = null;\r
+//            this.line = line;\r
+//            this.text = text;\r
+//        }\r
+//\r
+//        public IMarker getMarker() {\r
+//            return marker;\r
+//        }\r
+//\r
+//        public int getLine() {\r
+//            return line;\r
+//        }\r
+//\r
+//        public String getText() {\r
+//            return text;\r
+//        }\r
+//\r
+//        public Image getImage() {\r
+//            return ERROR_IMAGE;\r
+//        }\r
+//\r
+//        public int getLayer() {\r
+//            return 3;\r
+//        }\r
+//\r
+//        public String getType() {\r
+//            return ERROR_TYPE;\r
+//        }\r
+//\r
+//        public Position getPosition() {\r
+//            return position;\r
+//        }\r
+//\r
+//        public void setPosition(Position position) {\r
+//            this.position = position;\r
+//        }\r
+//    }    \r
     \r
 }\r
index 545a301261d291f725907168a1147e1446396cc5..62e0b7ce0baaa59a6b94daba8d7e785e25047c05 100644 (file)
@@ -1,44 +1,29 @@
 package eu.etaxonomy.taxeditor.prototype2.view;\r
 \r
 import java.beans.PropertyChangeEvent;\r
-import java.beans.PropertyChangeListener;\r
 \r
 import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.action.Action;\r
-import org.eclipse.jface.dialogs.MessageDialog;\r
 import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.TextViewer;\r
 import org.eclipse.jface.text.source.SourceViewer;\r
 import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.PopupList;\r
 import org.eclipse.swt.custom.StyledText;\r
-import org.eclipse.swt.events.ControlAdapter;\r
-import org.eclipse.swt.events.ControlEvent;\r
 import org.eclipse.swt.events.FocusEvent;\r
 import org.eclipse.swt.events.FocusListener;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.KeyListener;\r
-import org.eclipse.swt.events.MouseAdapter;\r
 import org.eclipse.swt.events.MouseEvent;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
 import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.events.SelectionListener;\r
 import org.eclipse.swt.graphics.Point;\r
 import org.eclipse.swt.graphics.Rectangle;\r
-import org.eclipse.swt.layout.FillLayout;\r
 import org.eclipse.swt.layout.GridData;\r
 import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
 import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.CoolBar;\r
-import org.eclipse.swt.widgets.CoolItem;\r
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.swt.widgets.Event;\r
 import org.eclipse.swt.widgets.Label;\r
 import org.eclipse.swt.widgets.Listener;\r
 import org.eclipse.swt.widgets.Menu;\r
 import org.eclipse.swt.widgets.MenuItem;\r
-import org.eclipse.swt.widgets.Shell;\r
 import org.eclipse.swt.widgets.Table;\r
 import org.eclipse.swt.widgets.TableColumn;\r
 import org.eclipse.swt.widgets.TableItem;\r
@@ -49,20 +34,13 @@ import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;\r
 import org.eclipse.ui.PartInitException;\r
 import org.eclipse.ui.part.EditorPart;\r
+\r
 import com.swtdesigner.ResourceManager;\r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-//import org.eclipse.ui.texteditor.AbstractTextEditor;\r
-\r
-//import eu.etaxonomy.cdm.event.ICdmEventListener;\r
-//import eu.etaxonomy.cdm.event.ICdmEventListenerRegistration;\r
-//import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.taxeditor.prototype2.view.MoveDialogView;\r
-import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.SaveNameAction;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
-import eu.etaxonomy.taxeditor.prototype2.controller.OpenNameEditorAction;\r
+import eu.etaxonomy.taxeditor.prototype2.controller.SaveTaxonAction;\r
+import eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport.MySourceViewerConfig;\r
 \r
 //public class PilosellaEditorView extends EditorPart implements ICdmEventListener {\r
 public class PilosellaEditorView extends EditorPart {\r
@@ -168,15 +146,15 @@ public class PilosellaEditorView extends EditorPart {
 //                             taxonname.setGenus(txtGenus.getText());\r
 //                             taxonname.setSpecificEpithet(txtSpEpi.getText());\r
                                \r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxonname).run();\r
                        }\r
 \r
                        public void widgetDefaultSelected(SelectionEvent e) {\r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxonname).run();\r
                        }\r
 \r
                        public void widgetSelected(SelectionEvent e) {\r
-                               new SaveNameAction(taxonname).run();\r
+                               new SaveTaxonAction(taxonname).run();\r
                        }\r
                });\r
 \r
index e480cf49a458a9415a8d40cd58b7c73b82d89161..4d427ece01c7606b2850c117062f112b6b180fe0 100644 (file)
@@ -27,15 +27,12 @@ public class PropertySheetViewer extends TreeViewer {
        public PropertySheetViewer(Composite parent) {\r
                // Note: SWT.FULL_SELECTION hides lines connecting nodes\r
                super(parent, SWT.BORDER | SWT.FULL_SELECTION);\r
-               \r
+\r
                this.getTree().setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, true));\r
-               this.getTree().setLinesVisible(true);\r
-               this.getTree().setHeaderVisible(true);\r
-               this.getTree().getVerticalBar().setEnabled(true);\r
-                                               \r
+//             this.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));\r
+               \r
                // create a column for property fields\r
                propertyFieldColumn = new TreeViewerColumn(this, SWT.NONE);\r
-               propertyFieldColumn.getColumn().setWidth(100);\r
                propertyFieldColumn.getColumn().setMoveable(true);\r
                propertyFieldColumn.setLabelProvider(new ColumnLabelProvider() {\r
                        public String getText(Object element) {\r
@@ -45,10 +42,25 @@ public class PropertySheetViewer extends TreeViewer {
                                \r
                // create a column for property values          \r
                propertyValueColumn = new TreeViewerColumn(this, SWT.NONE);\r
-               propertyValueColumn.getColumn().setWidth(100);\r
                propertyValueColumn.getColumn().setMoveable(true);\r
 \r
-//             this.getTree().setSize(150, 300);\r
+               // expand everything\r
+//             this.expandAll();\r
+               \r
+           // pack the columns\r
+//         propertyFieldColumn.getColumn().pack();\r
+//         propertyValueColumn.getColumn().pack();\r
+               \r
+               this.getTree().setLinesVisible(true);\r
+               this.getTree().setHeaderVisible(true);\r
+               this.getTree().getVerticalBar().setEnabled(true);\r
+               \r
+               // pack the parent window\r
+//             parent.pack();\r
+               \r
+               this.getTree().setSize(200, 300);\r
+               propertyValueColumn.getColumn().setWidth(100);\r
+               propertyFieldColumn.getColumn().setWidth(100);\r
 //         propertyFieldColumn.getColumn().pack();\r
 //         propertyValueColumn.getColumn().pack();\r
 //             this.getTree().redraw();\r
index c424f3222d582452d08d501d018d0b566f72d7aa..4f5853a137b79f10666cd40f4038844442bb73cf 100644 (file)
@@ -11,25 +11,38 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;\r
 import org.eclipse.swt.widgets.Composite;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
 \r
 public class RecentNamesTableViewer extends TableViewer {\r
 \r
        public RecentNamesTableViewer(Composite parent) {\r
-               super(parent, SWT.H_SCROLL\r
-                               | SWT.V_SCROLL);\r
+               super(parent, SWT.H_SCROLL | SWT.V_SCROLL);\r
                this.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
                \r
                ObservableListContentProvider rnViewerContentProviderList = new ObservableListContentProvider();\r
                this.setContentProvider(rnViewerContentProviderList);\r
                //\r
-               IObservableMap[] rnViewerLabelProviderMaps = BeansObservables.observeMaps(rnViewerContentProviderList.getKnownElements(), TaxonName.class, new String[]{"name"});\r
-               this.setLabelProvider(new ObservableMapLabelProvider(rnViewerLabelProviderMaps));\r
+               IObservableMap[] rnViewerLabelProviderMaps = BeansObservables.observeMaps(rnViewerContentProviderList.\r
+                               getKnownElements(), Taxon.class, new String[]{"name"});\r
+               this.setLabelProvider(new ObservableMapLabelProvider(rnViewerLabelProviderMaps) {\r
+                       \r
+                       /*\r
+                        * JFace databinding syntax makes it to difficult to retrieve\r
+                        *      Taxon.getName().getNameCache, so override function that returns\r
+                        *  label\r
+                        * \r
+                        *  (non-Javadoc)\r
+                        * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int)\r
+                        */\r
+                       public String getColumnText(Object element, int columnIndex) {\r
+                               return ((Taxon) element).getName().getNameCache();\r
+                       }                       \r
+               });\r
                //\r
-               IObservableList rnObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), Activator.getDefault().getRecentNamesList(), "taxonList");\r
+               IObservableList rnObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), Activator.getDefault().\r
+                               getRecentNamesList(), "taxonList");\r
                this.setInput(rnObjectListObserveList);\r
                \r
        }\r
-\r
-}\r
+}
\ No newline at end of file
index 02835fe791f7102ca4184ad4153e7361dbaf2008..2bb923d3490f6efbad28ff04a3c5edc69f444df1 100644 (file)
@@ -11,7 +11,6 @@ import org.eclipse.swt.widgets.Label;
 import com.swtdesigner.ResourceManager;\r
 import com.swtdesigner.SWTResourceManager;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
 \r
 public class RelatedNameViewer extends NameViewer {\r
index 3ae703346f5ca8ea981f09ee430fd07e9cb4e559..24207042227df7234f72fa7348fe892ea0aa1482 100644 (file)
@@ -1,6 +1,7 @@
 package eu.etaxonomy.taxeditor.prototype2.view;\r
 \r
 import java.util.List;\r
+import java.util.Set;\r
 \r
 import org.eclipse.core.databinding.DataBindingContext;\r
 import org.eclipse.core.databinding.beans.BeansObservables;\r
@@ -20,7 +21,7 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;\r
 import org.eclipse.swt.widgets.Composite;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.prototype2.Activator;\r
 import eu.etaxonomy.taxeditor.prototype2.model.NameTreeContentProvider;\r
 import eu.etaxonomy.taxeditor.prototype2.model.TaxonList;\r
@@ -57,25 +58,23 @@ public class TaxonomicTreeViewer extends TreeViewer {
                        return new Object[0];\r
                }\r
                public Object[] getChildren(Object parentElement) {\r
-//                     List children = ((TaxonName) parentElement).getChildren();\r
-                       List children = null;\r
+                       Set<Taxon> children = ((Taxon) parentElement).getTaxonomicChildren();\r
                        return children == null ? new Object[0] : children.toArray();\r
                }\r
                public Object getParent(Object element) {\r
-                       return null;\r
+                       return ((Taxon) element).getTaxonomicParent();\r
                }\r
                public boolean hasChildren(Object element) {\r
-//                     return getChildren(element).length > 0;\r
-                       return false;\r
+                       return ((Taxon) element).hasTaxonomicChildren();\r
                }\r
        }       \r
        \r
        public TaxonomicTreeViewer(Composite parent) {\r
-               super(parent, SWT.NONE);\r
+               super(parent, SWT.VIRTUAL);\r
                this.setContentProvider(new TreeContentProvider());\r
                this.setLabelProvider(new LabelProvider() {\r
                        public String getText(Object element) {\r
-                               return ((TaxonName) element).getName();\r
+                               return ((Taxon) element).getName().getNameCache();\r
                        }\r
                        public Image getImage(Object element) {\r
                                return null;\r
@@ -83,7 +82,7 @@ public class TaxonomicTreeViewer extends TreeViewer {
                });     \r
                this.setInput(Activator.getDefault().getTaxonList());\r
                \r
-               this.getTree().setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true));\r
+               this.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));\r
                this.getTree().setLinesVisible(false);\r
                this.getTree().setHeaderVisible(false);         \r
 //             initDataBindings();\r
@@ -91,16 +90,16 @@ public class TaxonomicTreeViewer extends TreeViewer {
 \r
        protected DataBindingContext initDataBindings() {\r
                //\r
-               ObservableListContentProvider viewerContentProviderList = new NameTreeContentProvider();\r
-               this.setContentProvider(viewerContentProviderList);\r
-               //\r
-               IObservableMap[] viewerLabelProviderMaps = BeansObservables.observeMaps(viewerContentProviderList.getKnownElements(), \r
-                               TaxonName.class, new String[]{"name"});\r
-               this.setLabelProvider(new ObservableMapLabelProvider(viewerLabelProviderMaps));\r
-               //\r
-               IObservableList olObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), \r
-                               Activator.getDefault().getTaxonList(), "taxonList");\r
-               this.setInput(olObjectListObserveList);         \r
+//             ObservableListContentProvider viewerContentProviderList = new NameTreeContentProvider();\r
+//             this.setContentProvider(viewerContentProviderList);\r
+//             //\r
+//             IObservableMap[] viewerLabelProviderMaps = BeansObservables.observeMaps(viewerContentProviderList.getKnownElements(), \r
+//                             TaxonName.class, new String[]{"name"});\r
+//             this.setLabelProvider(new ObservableMapLabelProvider(viewerLabelProviderMaps));\r
+//             //\r
+//             IObservableList olObjectListObserveList = BeansObservables.observeList(Realm.getDefault(), \r
+//                             Activator.getDefault().getTaxonList(), "taxonList");\r
+//             this.setInput(olObjectListObserveList);         \r
                DataBindingContext bindingContext = new DataBindingContext();\r
                //\r
                //\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/AnnotationMarkerAccess.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/AnnotationMarkerAccess.java
new file mode 100644 (file)
index 0000000..c0de001
--- /dev/null
@@ -0,0 +1,62 @@
+package eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport;\r
+\r
+import org.eclipse.jface.text.source.Annotation;\r
+import org.eclipse.jface.text.source.IAnnotationAccess;\r
+import org.eclipse.jface.text.source.IAnnotationAccessExtension;\r
+import org.eclipse.jface.text.source.ImageUtilities;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.graphics.GC;\r
+import org.eclipse.swt.graphics.Rectangle;\r
+import org.eclipse.swt.widgets.Canvas;\r
+\r
+public class AnnotationMarkerAccess implements IAnnotationAccess, IAnnotationAccessExtension {\r
+    public Object getType(Annotation annotation) {\r
+        return annotation.getType();\r
+    }\r
+\r
+    public boolean isMultiLine(Annotation annotation) {\r
+        return true;\r
+    }\r
+\r
+    public boolean isTemporary(Annotation annotation) {\r
+        return !annotation.isPersistent();\r
+    }\r
+\r
+    public String getTypeLabel(Annotation annotation) {\r
+        if (annotation instanceof ErrorAnnotation)\r
+            return "Errors";\r
+\r
+        return null;\r
+    }\r
+\r
+    public int getLayer(Annotation annotation) {\r
+        if (annotation instanceof ErrorAnnotation)\r
+            return ((ErrorAnnotation)annotation).getLayer();\r
+\r
+        return 0;\r
+    }\r
+\r
+    public void paint(Annotation annotation, GC gc, Canvas canvas, Rectangle bounds) {\r
+        ImageUtilities.drawImage(((ErrorAnnotation)annotation).getImage(), \r
+                       gc, canvas, bounds, SWT.CENTER, SWT.TOP);\r
+    }\r
+\r
+    public boolean isPaintable(Annotation annotation) {\r
+        if (annotation instanceof ErrorAnnotation)\r
+            return ((ErrorAnnotation)annotation).getImage() != null;\r
+\r
+        return false;\r
+    }\r
+\r
+    public boolean isSubtype(Object annotationType, Object potentialSupertype) {\r
+        if (annotationType.equals(potentialSupertype))\r
+            return true;\r
+\r
+        return false;\r
+\r
+    }\r
+\r
+    public Object[] getSupertypes(Object annotationType) {\r
+        return new Object[0];\r
+    }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/ErrorAnnotation.java b/eclipseprojects/eu.etaxonomy.taxeditor.prototype2/src/eu/etaxonomy/taxeditor/prototype2/view/nameviewersupport/ErrorAnnotation.java
new file mode 100644 (file)
index 0000000..ff0bb9d
--- /dev/null
@@ -0,0 +1,62 @@
+package eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport;\r
+\r
+import org.eclipse.core.resources.IMarker;\r
+import org.eclipse.jface.text.Position;\r
+import org.eclipse.jface.text.source.Annotation;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.swt.graphics.RGB;\r
+\r
+public class ErrorAnnotation extends Annotation {\r
+    private IMarker marker;\r
+    private String text;\r
+    private int line;\r
+    private Position position;\r
+\r
+    // error identifiers, images and colors\r
+    public static String ERROR_TYPE = "error.type";\r
+    public static Image ERROR_IMAGE;\r
+    public static final RGB ERROR_RGB = new RGB(255, 0, 0);    \r
+    \r
+    public ErrorAnnotation(IMarker marker) {\r
+        this.marker = marker;\r
+    }\r
+\r
+    public ErrorAnnotation(int line, String text) {\r
+        super(ERROR_TYPE, true, null);\r
+        this.marker = null;\r
+        this.line = line;\r
+        this.text = text;\r
+    }\r
+\r
+    public IMarker getMarker() {\r
+        return marker;\r
+    }\r
+\r
+    public int getLine() {\r
+        return line;\r
+    }\r
+\r
+    public String getText() {\r
+        return text;\r
+    }\r
+\r
+    public Image getImage() {\r
+        return ERROR_IMAGE;\r
+    }\r
+\r
+    public int getLayer() {\r
+        return 3;\r
+    }\r
+\r
+    public String getType() {\r
+        return ERROR_TYPE;\r
+    }\r
+\r
+    public Position getPosition() {\r
+        return position;\r
+    }\r
+\r
+    public void setPosition(Position position) {\r
+        this.position = position;\r
+    }\r
+}
\ No newline at end of file
index 4382cd3c3ce01a96dd4132e3c01fc78e40f2b30f..4fa4dd39e863ff3a8c50dc2fe4149da3dee0fd66 100644 (file)
@@ -2,7 +2,10 @@ package eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport;
 \r
 import org.eclipse.jface.text.Document;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+\r
 \r
 /**\r
  * Extends Document to associate a TaxonName\r
@@ -12,13 +15,13 @@ import eu.etaxonomy.cdm.model.name.TaxonName;
  */\r
 public class NameDocument extends Document {\r
 \r
-       private TaxonName taxonName = new TaxonName();\r
+       private TaxonNameBase taxonName = new BotanicalName(Rank.SPECIES());\r
 \r
        public NameDocument (String initialContent) {\r
                super(initialContent);\r
        }\r
        \r
-       public NameDocument (TaxonName taxonName) {\r
+       public NameDocument (TaxonNameBase taxonName) {\r
                this("");\r
                this.taxonName = taxonName;\r
        }\r
@@ -27,11 +30,11 @@ public class NameDocument extends Document {
                this("");\r
        }\r
 \r
-       public TaxonName getTaxonName() {\r
+       public TaxonNameBase getTaxonName() {\r
                return taxonName;\r
        }\r
 \r
-       public void setTaxonName(TaxonName taxonName) {\r
+       public void setTaxonName(TaxonNameBase taxonName) {\r
                this.taxonName = taxonName;\r
        }       \r
 }\r
index 0dc40c3e2f8636a1329455506a192f78a2213837..ff98f26c28c2cf6751188a33dc41c87994ea0810 100644 (file)
@@ -16,7 +16,6 @@ import org.eclipse.jface.text.TypedPosition;
 import org.eclipse.jface.text.rules.FastPartitioner;\r
 import org.eclipse.jface.text.rules.IPartitionTokenScanner;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
 \r
 public class NamePartitioner__ implements IDocumentPartitioner {\r
 \r
index f3d1775ab9a65220fff6428788159aa01b3a78d7..f82f70aace26043a0e8516c5a05da76564231102 100644 (file)
@@ -55,7 +55,7 @@ public class NameViewerModifyListener implements ModifyListener {
                        // put cursor at EOL of last sourceviewer\r
                        sText.setCaretOffset(sText.getText().length()); \r
                }\r
-               \r
+                               \r
                // re-draw parent in case text controls need re-sizing -\r
                //  could also be the case if databinding has modified text\r
            parent.getParent().layout();\r
index bfeb0e22d170d799aeceba430a47f7c1719cb56f..ec08a6a03bc620fcdab9b9cdcfad36106893cff1 100644 (file)
@@ -51,7 +51,9 @@ public class PropertySheetValueEditingSupport extends EditingSupport {
 \r
        protected void initializeCellEditorValue(CellEditor cellEditor, ViewerCell cell) {\r
                PropertySheetNode node = (PropertySheetNode) getValue(cell.getElement());\r
-               cellEditor.setValue(node.getPropertyValue());\r
+               \r
+               // an empty string instead of a null makes the field editable\r
+               cellEditor.setValue(node.getPropertyValue() == null ? "" : node.getPropertyValue());\r
                \r
                // if node element is observing a value, bind it to its TreeItem\r
                IObservableValue observeNodeValue = node.getObserveValue();\r