Platform Version 1.0
authorp.ciardelli <p.ciardelli@localhost>
Tue, 2 Dec 2008 09:14:37 +0000 (09:14 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 2 Dec 2008 09:14:37 +0000 (09:14 +0000)
27 files changed:
.gitattributes
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationActionBarAdvisor.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/DeleteTaxonAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SaveTaxonAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ExportAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ImportAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddQuickNameAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenTaxonEditorAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditorView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorGroupedComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ErrorAnnotation.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionElementComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameViewer.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditorView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/TaxonomicTreeViewer.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySourceAdapter.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/NameRelationsPropertySource.java

index 2e3688a8730c09919343529c466d92fb8945bcfd..29b8493f8fde6a7ce781f606747e7a951a464304 100644 (file)
@@ -466,9 +466,9 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupCo
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupedComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IDataDisposer.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IFavoritesDraggable.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParentDataAdapter.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParserFeedback.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineBreakListener.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSupport.java -text
@@ -493,7 +493,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/io/InputWizard
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/io/InputWizard2.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameEditorInput.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/TaxonomicTreeContentProvider.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/FavoritesTableViewer.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/navigation/FavoritesView.java -text
@@ -519,7 +518,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/CustomSortPropertySheetEntry.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/DayValidator.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/MarkersPropertySource.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySourceAdapter.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/SourceViewerConfig.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/TimePeriodPropertySource.java -text
index 08f2e09b2d314f4db3a8003ad1138c098858da0b..65110bc34e864cf760afaad4f6e916510878b0b1 100644 (file)
@@ -81,10 +81,10 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
                
                preferencesAction = ActionFactory.PREFERENCES.create(window);
                
-               makeImportActions();
+//             makeImportActions();
                
-               exportJaxbAction = new ExportAction(ExportAction.JAXB);
-               register(exportJaxbAction);
+//             exportJaxbAction = new ExportAction(ExportAction.JAXB);
+//             register(exportJaxbAction);
        }
 
        private void makeImportActions() {
@@ -105,30 +105,30 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
                MenuManager fileMenu = new MenuManager("&File",
                                null);
                
-               // Create submenu for imports
-               MenuManager importMenu = new MenuManager("Import ...", null);
-               
-               // Create submenu for exports
-               MenuManager exportMenu = new MenuManager("Export as ...", null);
+//             // Create submenu for imports
+//             MenuManager importMenu = new MenuManager("Import ...", null);
+//             
+//             // Create submenu for exports
+//             MenuManager exportMenu = new MenuManager("Export as ...", null);
 
                // Populate file menu
                menuBar.add(fileMenu);
                fileMenu.add(newNameAction);
                fileMenu.add(saveAction);
                fileMenu.add(undoAction);
-               fileMenu.add(new Separator());
-               fileMenu.add(importMenu);
-               fileMenu.add(exportMenu);
+//             fileMenu.add(new Separator());
+//             fileMenu.add(importMenu);
+//             fileMenu.add(exportMenu);
                fileMenu.add(new Separator());
                fileMenu.add(exitAction);
                
-               // Populate submenu for imports
-               for (IAction importAction : importActionList) {
-                       importMenu.add(importAction);
-               }
-
-               // Populate submenu for exports
-               exportMenu.add(exportJaxbAction);
+//             // Populate submenu for imports
+//             for (IAction importAction : importActionList) {
+//                     importMenu.add(importAction);
+//             }
+//
+//             // Populate submenu for exports
+//             exportMenu.add(exportJaxbAction);
                
                // Populate preferences
                MenuManager preferencesMenu = new MenuManager("&Preferences",
index 1b4ba7959429f0aea48e5a51bd9f626a974746a7..e4555823e8bb57832f46a63e6fa448712a21373a 100644 (file)
@@ -28,6 +28,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
 import eu.etaxonomy.taxeditor.UiUtil;\r
+import eu.etaxonomy.taxeditor.actions.SaveAllAction;\r
 import eu.etaxonomy.taxeditor.model.CdmUtil;\r
 \r
 /**\r
@@ -59,6 +60,9 @@ public class DeleteTaxonAction extends Action {
 \r
        public void run() {\r
 \r
+               // Call save all action\r
+               new SaveAllAction().run(null);\r
+               \r
                // If the taxon has children, cancel operation\r
                // TODO add option to continue, and delete children\r
                if (taxon.hasTaxonomicChildren()) {\r
@@ -115,6 +119,8 @@ public class DeleteTaxonAction extends Action {
                        TaxEditorPlugin.getDefault().getCdmApp().getTaxonService()\r
                                        .removeTaxon(taxon);\r
                }\r
-\r
+               \r
+               // Call save all action\r
+               new SaveAllAction().run(null);\r
        }\r
 }
\ No newline at end of file
index f01266d5a388e306d66427e2e4d8a50e462eada5..949ae369a8e9e623e941cbaa0f21e25a3e8541d0 100644 (file)
@@ -6,6 +6,7 @@ import org.eclipse.jface.action.Action;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
 import eu.etaxonomy.taxeditor.UiUtil;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
 import eu.etaxonomy.taxeditor.navigation.TaxonomicTreeViewer;\r
 \r
 /**\r
@@ -40,11 +41,10 @@ public class SaveTaxonAction extends Action {
                TaxEditorPlugin.getDefault().addSessionTaxon(taxon);\r
                \r
                // Save the taxon to the CDM\r
-               TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+               CdmUtil.getTaxonService().saveTaxon(taxon);\r
 \r
                // Notify taxon listeners in case name has been updated - updates editor view tab and recent names\r
                taxon.firePropertyChange("name", null, null);\r
-\r
                \r
                // Open node on save\r
                treeViewer.revealTaxon(taxon);\r
index 5de2f111859b426c29848511583d4491bce25518..b6d128a2829786d871fd6963fa3ac351336139c3 100644 (file)
 package eu.etaxonomy.taxeditor.actions.io;\r
 \r
 import java.io.File;\r
+import java.net.MalformedURLException;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.dialogs.MessageDialog;\r
 import org.eclipse.jface.resource.ImageDescriptor;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.widgets.FileDialog;\r
 \r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.io.common.CdmDefaultExport;\r
+import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
 import eu.etaxonomy.taxeditor.UiUtil;\r
 \r
 /**\r
@@ -53,7 +59,7 @@ public class ExportAction extends Action {
 \r
        public void run() {\r
 \r
-               // Use same title "Import FORMAT" for all message dialogs\r
+               // Use same title "Export FORMAT" for all message dialogs\r
                String title = "Export " + getText();\r
                \r
                // Get file from user\r
@@ -61,5 +67,27 @@ public class ExportAction extends Action {
                dialog.setFileName("export.xml");\r
                String filePath = dialog.open();\r
                file = new File(filePath);              \r
+               \r
+               // Get current data source\r
+               ICdmDataSource source = TaxEditorPlugin.getDefault().getCdmDataSource();\r
+               \r
+               // Format file path \r
+               String destination = null;\r
+//                     destination = file.toURI().toURL().toString();\r
+               destination = file.toString();\r
+               \r
+               JaxbExportConfigurator configurator = JaxbExportConfigurator.NewInstance(source, destination);\r
+               CdmDefaultExport<JaxbExportConfigurator> jaxbExport = \r
+                               new CdmDefaultExport<JaxbExportConfigurator>();\r
+               \r
+               // Start export\r
+               boolean isSuccessfulExport = jaxbExport.invoke(configurator);\r
+               \r
+               // Tell user whether import was a success or a dismal failure\r
+               if (isSuccessfulExport) {\r
+                       MessageDialog.openInformation(UiUtil.getShell(), title, "Export successful");\r
+               } else {\r
+                       MessageDialog.openError(UiUtil.getShell(), title, "Export was unsuccessful.");\r
+               }\r
        }\r
 }\r
index ff66615258e0097b7a46b86f2b69018b4d179d54..febd4b569268161703e293ea5b953e6ae4b3c266 100644 (file)
@@ -39,7 +39,7 @@ public class ImportAction extends Action {
        private File file;\r
        private ImportWrapper importWrapper;\r
        \r
-       public ImportAction() {\r
+       private ImportAction() {\r
                super(text);\r
                setImageDescriptor(image);\r
                setId(ID);\r
@@ -86,7 +86,6 @@ public class ImportAction extends Action {
                boolean isSuccessfulImport = importWrapper.invoke(source, destination, null);\r
                \r
                // Tell user whether import was a success or a dismal failure\r
-               String msg = null;\r
                if (isSuccessfulImport) {\r
                        MessageDialog.openInformation(UiUtil.getShell(), title, "Import successful");\r
                } else {\r
index 249c6feb406084605d0fcd5fdd9efc2b7fd72f5b..70a877d94803305e40b5bca15e70240a366d8a27 100644 (file)
@@ -68,7 +68,7 @@ public class AddQuickNameAction extends Action {
                // ULTRA HACKY, ULTRA MYSTERIOUS - if this is not called, name created with quick name\r
                // then deleted in the same session causes error \r
                // "org.springframework.dao.InvalidDataAccessApiUsageException: deleted object would be re-saved by cascade" \r
-               (new PropertySourceAdapter(quickNameTaxon.getName())).getPropertySource();\r
+//             (new PropertySourceAdapter(quickNameTaxon.getName())).getPropertySource();\r
                \r
                firePropertyChange(ITaxEditorConstants.QUICK_NAME_TAXON, null, quickNameTaxon);\r
                \r
index 75eeebf3f361cddae51558cf31c93decc14e4587..9fda72492f1654bd15ab89384aa4c8daf9e5c573 100644 (file)
@@ -70,6 +70,7 @@ public class OpenTaxonEditorAction extends Action {
                        //  preference store, i.e. BotanicalName\r
                        TaxonNameBase name = CdmUtil.parseFullReference("", null, null);\r
                        name.setFullTitleCache("", false);\r
+                       name.setTitleCache("", false);\r
                        this.taxon = Taxon.NewInstance(name, CdmUtil.getSessionDefaultSec());\r
                } else {\r
                        \r
index 3cdb98d4e661ee98c0c79d5df280d1633d6ad80b..f86cb8323b9641e997c34e4b8c7882e15ece4178 100644 (file)
@@ -15,16 +15,21 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.IMenuManager;\r
 import org.eclipse.jface.action.IStatusLineManager;\r
 import org.eclipse.jface.action.IToolBarManager;\r
+import org.eclipse.jface.viewers.ISelection;\r
 import org.eclipse.jface.viewers.ISelectionProvider;\r
 import org.eclipse.jface.viewers.StructuredSelection;\r
 import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.graphics.Color;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Control;\r
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.swt.widgets.Tree;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IEditorSite;\r
+import org.eclipse.ui.IPartListener2;\r
+import org.eclipse.ui.ISelectionListener;\r
+import org.eclipse.ui.IWorkbenchPage;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.IWorkbenchPartReference;\r
 import org.eclipse.ui.PartInitException;\r
 import org.eclipse.ui.forms.IManagedForm;\r
 import org.eclipse.ui.forms.ManagedForm;\r
@@ -38,7 +43,6 @@ import org.eclipse.ui.views.properties.PropertySheetPage;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.UiUtil;\r
 import eu.etaxonomy.taxeditor.propertysheet.CustomSortPropertySheetEntry;\r
-import eu.etaxonomy.taxeditor.propertysheet.PropertySourceAdapter;\r
 \r
 /**\r
  * The abstract editor for displaying a category of <code>Taxon</code> data, corresponding\r
@@ -64,37 +68,30 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements
         * When this <code>EditorPart</code> gets focus, the data structure of \r
         * <code>defaultPropertyObject</code> is displayed in the property sheet.\r
         */\r
-       protected Object defaultPropertySheetObject = null;\r
        \r
        protected IManagedForm managedForm;\r
        protected ScrolledForm scrolledForm; \r
        protected Composite parent;\r
        protected ISelectionProvider provider;\r
+\r
+       private IHasPropertySource selectedObject;\r
        \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)\r
         */\r
-       @Override\r
-       public void doSave(IProgressMonitor monitor) {\r
-               // TODO Auto-generated method stub\r
-\r
-       }\r
+       public void doSave(IProgressMonitor monitor) {}\r
 \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.part.EditorPart#doSaveAs()\r
         */\r
-       @Override\r
-       public void doSaveAs() {\r
-               // TODO Auto-generated method stub\r
-\r
-       }\r
+       public void doSaveAs() {}\r
 \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)\r
         */\r
-       @Override\r
        public void init(IEditorSite site, IEditorInput input)\r
                        throws PartInitException {\r
+               \r
                if (!(input instanceof IEditorInput))\r
                        throw new PartInitException(\r
                                "Invalid Input: Must be IFileEditorInput");\r
@@ -113,21 +110,11 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements
                this.getSite().setSelectionProvider(provider);\r
        }\r
 \r
-       /**\r
-        * When this <code>EditorPart</code> gets focus, the data structure of \r
-        * <code>defaultPropertyObject</code> is displayed in the property sheet.\r
-        * \r
-        * @param object\r
-        */\r
-       protected void setDefaultPropertySheetObject(Object object) {\r
-               this.defaultPropertySheetObject = object;\r
-       }\r
-\r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.part.WorkbenchPart#setFocus()\r
         */\r
        public void setFocus() {\r
-               setSelection(defaultPropertySheetObject);\r
+//             setSelection(selectedObject);\r
        }\r
        \r
        /**\r
@@ -137,41 +124,47 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements
         * \r
         * @param selectedObject\r
         */\r
-       protected void setSelection(Object selectedObject) {\r
+       protected void setSelection(IHasPropertySource selectedObject) {\r
+                               \r
+               // Unpaint last selection - last selection will only be unpainted\r
+               //      when something else on this page is selected\r
+               if (this.selectedObject instanceof EditorGroupedComposite) {\r
+                       ((EditorGroupedComposite) this.selectedObject).unpaintBorder();\r
+               }\r
+               \r
+               // Set the selection to this editor's selected object\r
+               this.selectedObject = selectedObject;\r
+               \r
+               // Get the selection's property source, pass it to the selection provider\r
                IPropertySource propertySource = null;\r
                if (selectedObject != null) {\r
-                       propertySource = new PropertySourceAdapter(selectedObject).getPropertySource();\r
+                       propertySource = selectedObject.getPropertySource();\r
                }\r
-               \r
                if (propertySource == null) {\r
                        provider.setSelection(new StructuredSelection());\r
                } else {\r
                        provider.setSelection(new StructuredSelection(propertySource));\r
-               }               \r
+               }\r
+               \r
        }\r
        \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.part.EditorPart#isDirty()\r
         */\r
-       @Override\r
        public boolean isDirty() {\r
-               // TODO Auto-generated method stub\r
                return false;\r
        }\r
 \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()\r
         */\r
-       @Override\r
        public boolean isSaveAsAllowed() {\r
-               // TODO Auto-generated method stub\r
                return false;\r
        }\r
 \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)\r
         */\r
-       @Override\r
        public void createPartControl(Composite composite) {\r
                \r
                managedForm = new ManagedForm(composite) {\r
@@ -179,7 +172,9 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements
                                firePropertyChange(PROP_DIRTY);\r
                        }\r
                        public boolean setInput(Object input) {\r
-                               setSelection(input);\r
+                               if (input instanceof IHasPropertySource) {\r
+                                       setSelection((IHasPropertySource)input);\r
+                               }\r
                                return super.setInput(input); \r
                        } \r
                };\r
@@ -209,6 +204,8 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements
                    \r
                    public Control getControl() {\r
                        Control control = super.getControl();\r
+                       \r
+                       // Save the property sheet tree for easy access as needed\r
                        if (!control.isDisposed()) {\r
                                if (control instanceof Tree) {\r
                                        UiUtil.setPropertySheetTree((Tree) control);\r
@@ -217,6 +214,62 @@ public abstract class AbstractTaxonEditorView extends EditorPart implements
                        return control;\r
                    }\r
                };              \r
+               \r
+               // Try out PartListener to intercept selections\r
+               IWorkbenchPage activePage = UiUtil.getActivePage();\r
+//             IWorkbenchPart active = activePage.getActivePart();\r
+               IPartListener2 partListener = new IPartListener2() {\r
+\r
+                               @Override\r
+                               public void partActivated(IWorkbenchPartReference partRef) {\r
+                                       // Fires for every part\r
+                                       logger.warn(partRef.getTitle());\r
+                               }\r
+\r
+                               @Override\r
+                               public void partBroughtToTop(IWorkbenchPartReference partRef) {\r
+                                       // TODO Auto-generated method stub\r
+                                       \r
+                               }\r
+\r
+                               @Override\r
+                               public void partClosed(IWorkbenchPartReference partRef) {\r
+                                       // TODO Auto-generated method stub\r
+                                       \r
+                               }\r
+\r
+                               @Override\r
+                               public void partDeactivated(IWorkbenchPartReference partRef) {\r
+                                       // TODO Auto-generated method stub\r
+                                       \r
+                               }\r
+\r
+                               @Override\r
+                               public void partHidden(IWorkbenchPartReference partRef) {\r
+                                       // TODO Auto-generated method stub\r
+                                       \r
+                               }\r
+\r
+                               @Override\r
+                               public void partInputChanged(IWorkbenchPartReference partRef) {\r
+                                       logger.warn("part input changed");\r
+                               }\r
+\r
+                               @Override\r
+                               public void partOpened(IWorkbenchPartReference partRef) {\r
+                                       // TODO Auto-generated method stub\r
+                                       \r
+                               }\r
+\r
+                               @Override\r
+                               public void partVisible(IWorkbenchPartReference partRef) {\r
+                                       // TODO Auto-generated method stub\r
+                                       \r
+                               }\r
+                       \r
+               };\r
+               activePage.addPartListener(partListener);\r
+\r
                UiUtil.setPropertySheetPage(page);\r
                \r
                CustomSortPropertySheetEntry entry = new CustomSortPropertySheetEntry();\r
index 2d33e8cb3629858c6a3646dbab9c4847ec3b3ba0..eadee0cbe97816e1915cd4d17f0562f005a7df23 100644 (file)
@@ -33,6 +33,12 @@ public class CompositeBorderDecorator {
        private Composite borderedComposite;\r
        \r
        private FocusListener listener = new PaintBorderListener();\r
+       \r
+       /**\r
+        * If true, the <code>borderedComposite</code>'s border is erased when\r
+        * it loses focus.\r
+        */\r
+       private boolean doLoseFocus = true;\r
 \r
        public CompositeBorderDecorator(Composite composite, IManagedForm form) {\r
                this.borderedComposite = composite;\r
@@ -48,6 +54,30 @@ public class CompositeBorderDecorator {
                composite.addFocusListener(listener);\r
        }\r
        \r
+       /**\r
+        * If this is set to true, border will disappear when focus is lost.\r
+        * Otherwise, it will remain until explicitly erased. \r
+        * \r
+        * @param doLoseFocus\r
+        */\r
+       public void setLoseFocus(boolean doLoseFocus) {\r
+               this.doLoseFocus = doLoseFocus;\r
+       }\r
+       \r
+       /**\r
+        * Removes the border from <code>borderedComposite</code>.\r
+        */\r
+       public void unpaintBorder() {\r
+               paintBorder(null);              \r
+       }\r
+       \r
+       /**\r
+        * Adds a border to <code>borderedComposite</code>.\r
+        */\r
+       public void paintBorder() {\r
+               paintBorder(FormToolkit.TEXT_BORDER);\r
+       }\r
+       \r
        private void paintBorder(String border) {               \r
                borderedComposite.setData(FormToolkit.KEY_DRAW_BORDER, border);\r
                toolkit.paintBordersFor(borderedComposite.getParent());\r
@@ -69,13 +99,13 @@ public class CompositeBorderDecorator {
        \r
        class PaintBorderListener implements FocusListener {\r
                public void focusGained(FocusEvent e) {\r
-                       String border = FormToolkit.TEXT_BORDER;\r
-                       paintBorder(border);\r
+                       paintBorder();\r
                }\r
 \r
                public void focusLost(FocusEvent e) {\r
-                       String border = null;\r
-                       paintBorder(border);\r
+                       if (doLoseFocus) {\r
+                               unpaintBorder();\r
+                       }\r
                }\r
        }\r
 }
\ No newline at end of file
index 58769bdc607a37f2abb66331f7d0bec2039e429c..2812d02532e6992128366abbd4a9a3ed439e327e 100644 (file)
@@ -46,15 +46,16 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
  * @created 02.06.2008\r
  * @version 1.0\r
  */\r
-abstract public class EditorGroupedComposite extends GroupedComposite {\r
+abstract public class EditorGroupedComposite extends GroupedComposite implements IHasPropertySource {\r
        private static final Logger logger = Logger.getLogger(EditorGroupedComposite.class);\r
        \r
        protected TextViewer textViewer;\r
        protected TableWrapLayout layout;\r
-       private ISelectionWrapper selectionWrapper;\r
        private Label draggableLabel;\r
        protected IManagedForm managedForm;\r
        private Taxon taxon;\r
+\r
+       private CompositeBorderDecorator borderDecorator;\r
        \r
        /**\r
         * @param parent\r
@@ -160,9 +161,6 @@ abstract public class EditorGroupedComposite extends GroupedComposite {
         * @see org.eclipse.swt.widgets.Composite#setFocus()\r
         */\r
        public boolean setFocus() {\r
-               if (selectionWrapper != null) {\r
-                       selectionWrapper.setSelection();\r
-               }\r
                setSelection();\r
                return super.setFocus();\r
        }\r
@@ -171,7 +169,7 @@ abstract public class EditorGroupedComposite extends GroupedComposite {
         * \r
         */\r
        protected void setSelection() {\r
-               managedForm.setInput(getData());\r
+               managedForm.setInput(this);\r
        }\r
        \r
        /* (non-Javadoc)\r
@@ -180,13 +178,6 @@ abstract public class EditorGroupedComposite extends GroupedComposite {
        public void setFont(Font font) {\r
                getTextViewer().getTextWidget().setFont(font);\r
        }\r
-       \r
-       /**\r
-        * @param selectionWrapper\r
-        */\r
-       public void setSelectionWrapper (ISelectionWrapper selectionWrapper) {\r
-               this.selectionWrapper = selectionWrapper;\r
-       }\r
 \r
        /**\r
         * If <code>textViewer</code> has already been set, it will show a \r
@@ -223,14 +214,19 @@ abstract public class EditorGroupedComposite extends GroupedComposite {
         * \r
         */\r
        public void createBorderSupport() {\r
-               CompositeBorderDecorator borderDecorator = new CompositeBorderDecorator(\r
+               borderDecorator = new CompositeBorderDecorator(\r
                                this, managedForm);\r
                if (getTextViewer() == null) {\r
                        logger.warn("Could not create border support - getTextViewer() returned null.");\r
                } else {\r
                        borderDecorator.setBorderedComposite(getTextViewer().getTextWidget());\r
+                       borderDecorator.setLoseFocus(false);\r
                }\r
        }\r
+       \r
+       public void drawBorder() {\r
+               borderDecorator.paintBorder();\r
+       }\r
 \r
        /**\r
         * @param isDirty\r
@@ -243,7 +239,14 @@ abstract public class EditorGroupedComposite extends GroupedComposite {
         * @see eu.etaxonomy.taxeditor.editor.name.GroupedComposite#dispose()\r
         */\r
        public void dispose () {\r
+               \r
+               // Nullify decorator to stop its listener to listening for\r
+               //      composite focus\r
+               borderDecorator = null;\r
+               \r
                super.dispose();\r
+               \r
+               // A disposed graphic element means that the taxon has changed\r
                setDirty(true);\r
        }\r
        \r
@@ -268,6 +271,7 @@ abstract public class EditorGroupedComposite extends GroupedComposite {
                return false;\r
        }\r
        \r
+       \r
        /**\r
         * Returns a <code>ContextMenu</code> opened by right-clicking on\r
         * <code>draggableLabel</code>.\r
@@ -276,5 +280,12 @@ abstract public class EditorGroupedComposite extends GroupedComposite {
         */\r
        protected ContextMenu createContextMenu() {\r
                return new ContextMenu(getDraggableLabel());\r
+//             return new ContextMenu(this);\r
+       }\r
+       \r
+       public void unpaintBorder() {\r
+               if (borderDecorator != null) {\r
+                       borderDecorator.unpaintBorder();\r
+               }\r
        }\r
-}
\ No newline at end of file
+} 
\ No newline at end of file
index a8d3ba780fe89f13252901411f2041a5eefed6f2..f3d727c2abdb1bac1a94a2c3f5979c606034f8f7 100644 (file)
@@ -38,7 +38,7 @@ public class ErrorAnnotation extends Annotation {
     }\r
 \r
     public String getText() {\r
-        return text;\r
+        return "Error in the string " + text;\r
     }\r
 \r
     public Image getImage() {\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java
new file mode 100644 (file)
index 0000000..1172880
--- /dev/null
@@ -0,0 +1,21 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.editor;\r
+\r
+import org.eclipse.ui.views.properties.IPropertySource;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 21.11.2008\r
+ * @version 1.0\r
+ */\r
+public interface IHasPropertySource {\r
+       public IPropertySource getPropertySource();\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ISelectionWrapper.java
deleted file mode 100644 (file)
index b1aa6bc..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package eu.etaxonomy.taxeditor.editor;\r
-\r
-public interface ISelectionWrapper {\r
-       public void setSelection();\r
-}\r
index 41078838988a8675d46194d8c3ae92891d4d2cdd..4280a4c85bce8ac9803657c859eb4de07008ee42 100644 (file)
@@ -126,7 +126,7 @@ public class LineWrapSquigglesStrategy extends SquigglesStrategy {
        }\r
 \r
        /**\r
-        * Copied verbatim from <code>org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy</code> \r
+        * Copied verbatim from {@link org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy} \r
         * \r
         * @see org.eclipse.jface.text.source.AnnotationPainter$SquigglesStrategy\r
         *  \r
index f3923dbcecd18f113cd6b1d28673e37c4f95bb1e..4f425fdd509e540d583f73a9d41fcb7e7f29716a 100644 (file)
@@ -22,6 +22,7 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.forms.IManagedForm;\r
 import org.eclipse.ui.forms.widgets.TableWrapData;\r
+import org.eclipse.ui.views.properties.IPropertySource;\r
 \r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
@@ -33,6 +34,7 @@ import eu.etaxonomy.taxeditor.editor.ContextMenu;
 import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
 import eu.etaxonomy.taxeditor.editor.LineWrapSupport;\r
 import eu.etaxonomy.taxeditor.editor.ParseListener;\r
+import eu.etaxonomy.taxeditor.propertysheet.description.DescriptionElementPropertySource;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -210,4 +212,9 @@ public class DescriptionElementComposite extends EditorGroupedComposite {
 \r
                managedForm.getForm().getBody().layout();\r
        }\r
+\r
+       @Override\r
+       public IPropertySource getPropertySource() {\r
+               return new DescriptionElementPropertySource((DescriptionElementBase) getData());\r
+       }\r
 }
\ No newline at end of file
index a3b9fbbb6be75c3d8a51c8a4cadf529e7c8bc166..f0a2bae7fda8909afa9a3fd09a0dc7f978506f2d 100644 (file)
@@ -25,6 +25,7 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.forms.IManagedForm;\r
 import org.eclipse.ui.forms.widgets.TableWrapData;\r
+import org.eclipse.ui.views.properties.IPropertySource;\r
 \r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
@@ -35,6 +36,7 @@ import eu.etaxonomy.taxeditor.actions.ui.description.AddDescriptionElementCompos
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
 import eu.etaxonomy.taxeditor.editor.ParseListener;\r
+import eu.etaxonomy.taxeditor.propertysheet.description.TaxonDescriptionPropertySource;\r
 \r
 /**\r
  * Composite for editing a description's label / Title Cache information.\r
@@ -140,4 +142,9 @@ public class DescriptionLabelComposite extends EditorGroupedComposite {
                        }                       \r
                });             \r
        }\r
-}\r
+\r
+       @Override\r
+       public IPropertySource getPropertySource() {\r
+               return new TaxonDescriptionPropertySource((TaxonDescription) getData());\r
+       }\r
+}
\ No newline at end of file
index 954956e83cca9cc86c931d0463e4bf3e5dc82e16..682d811ae1fcce2848574f64d081af5f3c422ed1 100644 (file)
@@ -16,8 +16,6 @@ import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.util.IPropertyChangeListener;\r
-import org.eclipse.swt.events.DisposeEvent;\r
-import org.eclipse.swt.events.DisposeListener;\r
 import org.eclipse.swt.events.FocusAdapter;\r
 import org.eclipse.swt.events.FocusEvent;\r
 import org.eclipse.swt.graphics.Font;\r
@@ -203,6 +201,7 @@ public class NameComposite extends EditorGroupedComposite {
                        }\r
                };\r
                \r
+               // TODO clean this part up\r
                name.addPropertyChangeListener("fullTitleCache", listener);\r
                name.addPropertyChangeListener("nomenclaturalMicroReference", listener);\r
 \r
@@ -212,13 +211,6 @@ public class NameComposite extends EditorGroupedComposite {
                if (reference != null) {\r
                        reference.addPropertyChangeListener("titleCache", listener);\r
                }\r
-               \r
-               this.addDisposeListener(new DisposeListener() {\r
-\r
-                       public void widgetDisposed(DisposeEvent e) {\r
-//                             name.removePropertyChangeListener(listener);\r
-                       }\r
-               });\r
        }\r
 \r
        /**\r
@@ -325,10 +317,11 @@ public class NameComposite extends EditorGroupedComposite {
                if (getTextViewer() instanceof NameViewer) {\r
                        ((NameViewer) getTextViewer()).setCursorToEOL();\r
 \r
-                       if (((TaxonBase) data).getName() != null) {\r
-                               boolean hasProblem = ((TaxonBase) data).getName()\r
-                                               .getHasProblem();\r
-                               ((NameViewer) getTextViewer()).setShowError(hasProblem);\r
+                       TaxonNameBase name = ((TaxonBase) data).getName();\r
+                       if (name != null) {\r
+                               \r
+                               boolean hasProblem = name.getHasProblem();\r
+                               ((NameViewer) getTextViewer()).setShowError(name);\r
                        }\r
                }\r
                \r
@@ -340,24 +333,32 @@ public class NameComposite extends EditorGroupedComposite {
                        @Override\r
                        public void parse(String text) {\r
                                \r
+                               // Either composite is not yet fully built, or\r
+                               //      the property sheet is writing to it\r
                                if (!isUseParser) {\r
                                        return;\r
                                }\r
-\r
+                               \r
+                               // Let others know the parser is active\r
                                isParsing = true;\r
                                \r
+                               // Get the name from the composite's data field\r
                                TaxonBase taxonBase = (TaxonBase) getData();\r
                                NonViralName nonViralName = (NonViralName) taxonBase.getName();\r
                                \r
+                               // Parse the name and paint the text field w any errors\r
                                if (nonViralName != null) {\r
-                                       CdmUtil.parseFullReference(nonViralName, text, null, true);\r
-                                       ((NameViewer) getTextViewer()).setShowError(nonViralName.getHasProblem());\r
+                                       CdmUtil.parseFullReference(nonViralName, text);\r
+                                       ((NameViewer) getTextViewer()).setShowError(nonViralName);\r
                                }\r
 \r
+                               // Any entry of text means the taxon has been changed\r
                                setDirty(true);\r
                                \r
+                               // The parser is no longer active\r
                                isParsing = false;\r
 \r
+                               // Manually refresh the property sheet to reflect changes\r
                                UiUtil.getPropertySheetPage().refresh();\r
                        }\r
                });\r
@@ -393,7 +394,6 @@ public class NameComposite extends EditorGroupedComposite {
 \r
                });\r
 \r
-//             nameViewer.getTextWidget().addFocusListener(new FocusAdapter() {\r
                getTextViewer().getTextWidget().addFocusListener(new FocusAdapter() {\r
                        public void focusGained(FocusEvent e) {\r
                                setFocus();\r
@@ -401,10 +401,7 @@ public class NameComposite extends EditorGroupedComposite {
                });\r
 \r
                // createLineWrapSupport(nameViewer);\r
-//\r
-//             this.textViewer = nameViewer;\r
-//             nameViewer.getTextWidget().setBackground(TaxEditorPlugin.getDefault().\r
-//                             getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR));\r
+\r
                getTextViewer().getTextWidget().setBackground(TaxEditorPlugin.getDefault().\r
                                getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR));            \r
                \r
index 78083ad115238c9acd7af3f1d6d1f58a622e86f7..29d77dbd70ec511bc0410a06bd37bbe827b9c05f 100644 (file)
@@ -21,8 +21,12 @@ import org.eclipse.jface.text.IUndoManagerExtension;
 import org.eclipse.jface.text.Position;\r
 import org.eclipse.jface.text.TextViewerUndoManager;\r
 import org.eclipse.jface.text.source.Annotation;\r
+import org.eclipse.jface.text.source.AnnotationBarHoverManager;\r
 import org.eclipse.jface.text.source.AnnotationModel;\r
 import org.eclipse.jface.text.source.AnnotationPainter;\r
+import org.eclipse.jface.text.source.AnnotationRulerColumn;\r
+import org.eclipse.jface.text.source.CompositeRuler;\r
+import org.eclipse.jface.text.source.DefaultAnnotationHover;\r
 import org.eclipse.jface.text.source.IAnnotationAccess;\r
 import org.eclipse.jface.text.source.SourceViewer;\r
 import org.eclipse.swt.SWT;\r
@@ -90,9 +94,18 @@ public class NameViewer extends SourceViewer {
                annotationPainter.addAnnotationType(WarningAnnotation.WARNING_TYPE, LineWrapSquigglesStrategy.ID);\r
                annotationPainter.setAnnotationTypeColor(WarningAnnotation.WARNING_TYPE, \r
                                new Color(Display.getDefault(), WarningAnnotation.WARNING_RGB));                \r
-               \r
+                               \r
                this.addPainter(annotationPainter);\r
                \r
+//             DefaultAnnotationHover hover = new DefaultAnnotationHover();\r
+//                             \r
+//             CompositeRuler fCompositeRuler = new CompositeRuler();\r
+//             AnnotationRulerColumn annotationCol = new AnnotationRulerColumn(model, 10);\r
+//             AnnotationBarHoverManager fAnnotationHoverManager = new AnnotationBarHoverManager(annotationCol, this, \r
+//                             new DefaultAnnotationHover(), fHoverControlCreator);\r
+//             fAnnotationHoverManager.install(annotationRuler.getControl());\r
+\r
+               \r
 //             DocumentUndoManagerRegistry.connect(this.getDocument());\r
 //             IDocumentUndoManager docUndoManager = DocumentUndoManagerRegistry.getDocumentUndoManager(this.getDocument());\r
                \r
@@ -170,8 +183,7 @@ public class NameViewer extends SourceViewer {
                        \r
                        this.getAnnotationModel().addAnnotation(\r
                                        new ErrorAnnotation(0, text), \r
-                                       new Position(start, length));                   \r
-                       \r
+                                       new Position(start, length));                                           \r
                }\r
        }\r
        \r
index b13505b94d5399ea1508c90b16d13db4f8375461..3e950d72b005101e988649bf5cbf63b0838a791d 100644 (file)
@@ -75,10 +75,6 @@ public class TaxonNameEditorView extends AbstractTaxonEditorView {
                // Register listeners for any change in accepted name or set of relations\r
                taxon.getName().addPropertyChangeListener(taxonChangeListener);\r
                taxon.addPropertyChangeListener(taxonChangeListener);\r
-               \r
-               // The property sheet should show the Taxon's accepted name upon\r
-               //      receiving focus\r
-               setDefaultPropertySheetObject(taxon.getName());\r
        }\r
 \r
        @Override\r
@@ -169,6 +165,9 @@ public class TaxonNameEditorView extends AbstractTaxonEditorView {
                                \r
                // We've added elements to the managed form, so redraw it\r
                scrolledForm.reflow(true);\r
+               \r
+               setSelection(acceptedNameComposite);\r
+               acceptedNameComposite.drawBorder();\r
        }\r
        \r
        \r
index 6c12a3fffe4801e2898d324d7475f8b57bf2d68a..006b0e9a0687adf62fbd0122d0adb40c5bab155b 100644 (file)
@@ -30,6 +30,7 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.NameRelationship;\r
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
@@ -43,11 +44,6 @@ import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
 import eu.etaxonomy.taxeditor.UiUtil;\r
 \r
-/**\r
- * @author p.ciardelli\r
- * @created 26.05.2008\r
- * @version 1.0\r
- */\r
 /**\r
  * @author p.ciardelli\r
  * @created 17.09.2008\r
@@ -59,6 +55,7 @@ public class CdmUtil {
        private static INonViralNameParser nonViralNameParser;\r
        private static TermVocabulary<Feature> features;\r
        private static SortedSet<Rank> ranks;\r
+       private static TermVocabulary<NomenclaturalStatusType> statii;\r
 \r
        /**\r
         * Clears all objects retrieved from <code>cdmlib</code> \r
@@ -69,6 +66,8 @@ public class CdmUtil {
                features = null;\r
                ranks = null;\r
                nonViralNameParser = null;\r
+               \r
+               TaxEditorPlugin.getDefault().setNomStatusVocabulary(null);\r
        }\r
        \r
        /**\r
@@ -276,7 +275,7 @@ public class CdmUtil {
                        nomCode = UiUtil.getPreferredNomenclaturalCode();\r
                }\r
                \r
-               TaxonNameBase name = getNonViralNameParser().parseFullReference(fullReference,\r
+               TaxonNameBase name = getNonViralNameParser().parseReferencedName(fullReference,\r
                                nomCode, rank);\r
 \r
                if (name.hasProblem()) {\r
@@ -295,8 +294,27 @@ public class CdmUtil {
         * @param rank\r
         * @param makeEmpty\r
         */\r
-       public static void parseFullReference(NonViralName nameToBeFilled, String fullReference, Rank rank, boolean makeEmpty) {\r
-               getNonViralNameParser().parseFullReference(nameToBeFilled, fullReference, rank, makeEmpty);\r
+       public static void parseFullReference(NonViralName nameToBeFilled, String fullReference) {\r
+               \r
+               Rank rank = null;\r
+               boolean makeEmpty = true;\r
+               \r
+               // If the name already has a rank, make sure it is passed to the parser\r
+               if (nameToBeFilled.getRank() != null) {\r
+                       rank = nameToBeFilled.getRank();\r
+               }\r
+               \r
+               // Call get status to get status list into the transaction\r
+//             for (NomenclaturalStatusType status : nameToBeFilled.getStatus()) {\r
+//                     \r
+//             }\r
+//             TaxEditorPlugin.getDefault().getCdmApp().getTermService().saveTerm(termBase)\r
+//             NomenclaturalStatusType term = NomenclaturalStatusType.INVALID();\r
+////           .getRepresentation(Language.DEFAULT());\r
+//             TaxEditorPlugin.getDefaulty().getCdmApp().getTermService().saveTerm(term);\r
+//             logger.warn(term.getRepresentation(Language.DEFAULT()));\r
+                               \r
+               getNonViralNameParser().parseReferencedName(nameToBeFilled, fullReference, rank, makeEmpty);\r
                \r
                if (nameToBeFilled.hasProblem()) {\r
                        nameToBeFilled.setFullTitleCache(fullReference);\r
@@ -321,8 +339,8 @@ public class CdmUtil {
         * @return\r
         */\r
        public static ReferenceBase getSessionDefaultSec() {\r
-               return null;\r
-//             return TaxEditorPlugin.getDefault().getSec();\r
+//             return null;\r
+               return TaxEditorPlugin.getDefault().getSessionDefaultSec();\r
        }\r
 \r
        /**\r
@@ -438,7 +456,7 @@ public class CdmUtil {
                // In case format is "xxxx-xxxx"\r
                String[] years = refYear.split("-");\r
 \r
-               // Unlikely case of "xxx-xx-xxx..."\r
+               // Unlikely case of "xxxx-xxxx-xxxx..."\r
                if (years.length > 2) {\r
                        throw new NumberFormatException();\r
                }\r
@@ -446,7 +464,7 @@ public class CdmUtil {
                // Set startYear\r
                datePublished.setStartYear(getValidYear(years[0]));\r
 \r
-               // Format is "xxx-xxxx"\r
+               // Format is "xxxx-xxxx"\r
                if (years.length == 2) {\r
                        datePublished.setEndYear(getValidYear(years[1]));\r
                }\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/PropertySheetNode.java
deleted file mode 100644 (file)
index 30f21fa..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-package eu.etaxonomy.taxeditor.model;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.eclipse.core.databinding.observable.value.IObservableValue;\r
-\r
-/**\r
- * \r
- * \r
- * @author p.ciardelli\r
- *\r
- */\r
-public class PropertySheetNode {\r
-       \r
-       private boolean editable;\r
-       private List<PropertySheetNode> childProperties;\r
-       private PropertySheetNode parentProperty;\r
-       private String propertyField;\r
-       private String propertyValue;\r
-       private IObservableValue observeValue;\r
-       \r
-       public static boolean EDITABLE = true;\r
-       public static boolean NOT_EDITABLE = false;\r
-       \r
-       public PropertySheetNode(String field, String value, \r
-                       PropertySheetNode parent, boolean editable) {\r
-               this.propertyField = field;\r
-               this.propertyValue = value;\r
-               this.parentProperty = parent;\r
-               if (parent != null) parent.addChildProperty(this);\r
-               this.editable = editable;\r
-       }\r
-       \r
-       public PropertySheetNode(String field, IObservableValue observeValue, \r
-                       PropertySheetNode parent, boolean editable) {\r
-               this(field, (String) observeValue.getValue(), parent, editable);\r
-               this.observeValue = observeValue;\r
-       }\r
-       \r
-       private void addChildProperty(PropertySheetNode childProperty ) {\r
-               if (childProperties == null)\r
-                       childProperties = new ArrayList<PropertySheetNode>();\r
-               if (!childProperties.contains(childProperty))\r
-                       childProperties.add(childProperty);\r
-       }\r
-\r
-       public boolean isEditable() {\r
-               return editable;\r
-       }\r
-\r
-       public void setEditable(boolean editable) {\r
-               this.editable = editable;\r
-       }\r
-\r
-       public String getPropertyField() {\r
-               return propertyField;\r
-       }\r
-\r
-       public void setPropertyField(String propertyField) {\r
-               this.propertyField = propertyField;\r
-       }\r
-\r
-       public String getPropertyValue() {\r
-               if (observeValue != null)\r
-                       return (String) observeValue.getValue();\r
-               return propertyValue;\r
-       }\r
-\r
-       public void setPropertyValue(String propertyValue) {\r
-               this.propertyValue = propertyValue;\r
-       }\r
-\r
-       public List<PropertySheetNode> getChildProperties() {\r
-               return childProperties;\r
-       }\r
-\r
-       public void setChildProperties(List<PropertySheetNode> subProperties) {\r
-               this.childProperties = subProperties;\r
-       }\r
-\r
-       public PropertySheetNode getParentProperty() {\r
-               return parentProperty;\r
-       }\r
-\r
-       public void setParentProperty(PropertySheetNode parentProperty) {\r
-               this.parentProperty = parentProperty;\r
-       }       \r
-       \r
-       public IObservableValue getObserveValue() {\r
-               return this.observeValue;\r
-       }\r
-}\r
index be2c280c1272d3960bdf0f8b426af6407ff71de2..2f2f7fb65dcd34a1ae97fd3f9a0b3e868ed63de1 100644 (file)
@@ -202,7 +202,6 @@ public class TaxonomicTreeView extends ViewPart {
                \r
                treeViewer = new TaxonomicTreeViewer(taxTreeComposite);\r
                \r
-               // TODO move these into this class\r
                ((TaxonomicTreeViewer) treeViewer).createDoubleClickListener();\r
                ((TaxonomicTreeViewer) treeViewer).createMenu();\r
                ((TaxonomicTreeViewer) treeViewer).createQuickAdd();\r
@@ -233,7 +232,6 @@ public class TaxonomicTreeView extends ViewPart {
                                .getMenuManager();\r
        }\r
 \r
-       @Override\r
        public void setFocus() {\r
                // Set the focus\r
        }\r
@@ -244,5 +242,5 @@ public class TaxonomicTreeView extends ViewPart {
         */\r
        public TaxonomicTreeViewer getTreeViewer() {\r
                return treeViewer;\r
-       }               \r
+       }\r
 }\r
index 2dd486fdc273a2502bcb205d19fe214d48ca9ef7..ab64e160a83c0be052ce9960c1324cbafe4f5049 100644 (file)
@@ -52,9 +52,7 @@ import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Shell;\r
 import org.eclipse.swt.widgets.Tree;\r
 import org.eclipse.swt.widgets.TreeItem;\r
-import org.springframework.transaction.TransactionStatus;\r
 \r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
@@ -188,6 +186,11 @@ public class TaxonomicTreeViewer extends TreeViewer {
                                                \r
                                                return;\r
                                        }\r
+                                       \r
+                                       // Make sure taxon is not being dropped onto itself\r
+                                       if (taxon.equals(parentTaxon)) {\r
+                                               return;\r
+                                       }\r
                                }\r
 \r
                                new MoveTaxonAction(taxon, parentTaxon).run();\r
@@ -225,13 +228,8 @@ public class TaxonomicTreeViewer extends TreeViewer {
                                        } else {\r
 \r
                                                NonViralName name = (NonViralName) quickAddTaxon.getName();\r
-//                                             CdmUtil.parseFullName(name, trimmedValue, null, true);\r
-                                               CdmUtil.parseFullReference(name, trimmedValue, null, true);\r
+                                               CdmUtil.parseFullReference(name, trimmedValue);\r
                                                \r
-//                                             TaxonNameBase name = CdmUtil.parseFullReference(\r
-//                                                             trimmedValue, null, null);\r
-//                                             name.addTaxonBase(quickAddTaxon);\r
-\r
                                                new SaveTaxonAction(quickAddTaxon).run();\r
                                                quickAddTaxon = null;\r
                                        }\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/PropertySheetContentProvider.java
deleted file mode 100644 (file)
index 17e470c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-package eu.etaxonomy.taxeditor.propertysheet;\r
-\r
-import java.util.List;\r
-\r
-import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
-import org.eclipse.jface.viewers.ITreeContentProvider;\r
-import org.eclipse.jface.viewers.Viewer;\r
-\r
-import eu.etaxonomy.taxeditor.model.PropertySheetNode;\r
-\r
-public class PropertySheetContentProvider extends ObservableListContentProvider implements ITreeContentProvider {\r
-\r
-       public Object[] getChildren(Object parentElement) {\r
-               List<PropertySheetNode> children = ((PropertySheetNode) parentElement).getChildProperties();\r
-               return children == null? new Object[0] : children.toArray();\r
-       }\r
-\r
-       public Object getParent(Object element) {\r
-               return ((PropertySheetNode) element).getParentProperty();\r
-       }\r
-\r
-       public boolean hasChildren(Object element) {\r
-               return ((PropertySheetNode) element).getChildProperties() != null;\r
-       }\r
-       \r
-       public Object[] getElements(Object inputElement) {\r
-               if (inputElement != null && inputElement instanceof List) {\r
-                       return ((List) inputElement).toArray();\r
-               }\r
-               return new Object[0];\r
-       }\r
-\r
-       public void dispose() {\r
-       }\r
-\r
-       public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
-       }\r
-}\r
index 442813295c3a6cbaba5435cfa8f148528e366d95..bdd2b169cf690ae715beabf9a2a4b8bd5d0b4152 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.propertysheet;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.IAdaptable;\r
 import org.eclipse.ui.views.properties.IPropertySource;\r
 \r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
index ee0272bad793234e1d7f35ee6b41e7daf5b1e9c1..c241e9ce2f60c1a6e10e49bbaddfc0f9d1ce4e64 100644 (file)
@@ -16,6 +16,7 @@ import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
+import eu.etaxonomy.taxeditor.UiUtil;\r
 import eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource;\r
 \r
 public class NameRelationsPropertySource extends CollectionPropertySource {\r
@@ -48,7 +49,11 @@ public class NameRelationsPropertySource extends CollectionPropertySource {
                        \r
                        if (nameRelation.getType() != null) {\r
                                \r
-                               String label = nameRelation.getType().getLabel();\r
+                               // Is the problem the type ...\r
+                               NameRelationshipType type = nameRelation.getType();\r
+                               \r
+                               // or the label? LABEL\r
+                               String label = UiUtil.getNameRelationLabelType(type);\r
                                if (isZoological && \r
                                                nameRelation.getType().equals(NameRelationshipType.BASIONYM())) {\r
                                        label = "original combination";\r