merge from trunk
authorCherian Mathew <c.mathew@bgbm.org>
Tue, 9 Dec 2014 17:05:29 +0000 (17:05 +0000)
committerCherian Mathew <c.mathew@bgbm.org>
Tue, 9 Dec 2014 17:05:29 +0000 (17:05 +0000)
38 files changed:
.gitattributes
eu.etaxonomy.taxeditor.application/build.properties
eu.etaxonomy.taxeditor.application/icons/check.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.application/plugin.xml
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/ApplicationUtil.java
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/ReferenceCreator.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java
eu.etaxonomy.taxeditor.cdmlib/.classpath
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.cdmlib/build.properties
eu.etaxonomy.taxeditor.editor/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.editor/build.properties
eu.etaxonomy.taxeditor.editor/icons/check.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/dnd/NameEditorDropTargetListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/ChecklistLabelProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/edit/DistributionEditingSupport.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/listener/ChecklistDropdownSelectionListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/DeleteMediaOperation.java
eu.etaxonomy.taxeditor.navigation/build.properties
eu.etaxonomy.taxeditor.navigation/icons/check.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.navigation/plugin.xml
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java
eu.etaxonomy.taxeditor.store/build.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/MessagingUtils.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguagePreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/AbstractMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/datasource/handler/UpdateDataSourceHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java

index cd93b2b7f85196d26a43efbbee4ee9bf96ce024a..00d216e1fb60cfdbe28e10f92abf50cd86e878de 100644 (file)
@@ -13,6 +13,7 @@ eu.etaxonomy.taxeditor.application/icons/256color_16x16.gif -text
 eu.etaxonomy.taxeditor.application/icons/256color_32x32.gif -text
 eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif -text
 eu.etaxonomy.taxeditor.application/icons/256color_48x48.ico -text
+eu.etaxonomy.taxeditor.application/icons/check.png -text
 eu.etaxonomy.taxeditor.application/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.application/icons/specimen_derivate-16x16-32.png -text
 eu.etaxonomy.taxeditor.application/plugin.xml -text
@@ -31,6 +32,7 @@ eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/SaveAllH
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/SaveHandler.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/TaxonomicEditorPlugin.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/BulkEditing.java -text
+eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/Default.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/DerivatePerspective.java -text
 eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/PolytomousKey.java -text
@@ -407,6 +409,7 @@ eu.etaxonomy.taxeditor.editor/OSGI-INF/l10n/plugin_en.properties -text
 eu.etaxonomy.taxeditor.editor/build.properties -text
 eu.etaxonomy.taxeditor.editor/icons/address-book-new.png -text
 eu.etaxonomy.taxeditor.editor/icons/camera-photo.png -text
+eu.etaxonomy.taxeditor.editor/icons/check.png -text
 eu.etaxonomy.taxeditor.editor/icons/derivate_view-16x16-32.png -text
 eu.etaxonomy.taxeditor.editor/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.editor/icons/emblem-photos.png -text
@@ -969,6 +972,7 @@ eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/messages.properties -text
 eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/messages_de.properties -text
 eu.etaxonomy.taxeditor.navigation/OSGI-INF/l10n/messages_en.properties -text
 eu.etaxonomy.taxeditor.navigation/build.properties -text
+eu.etaxonomy.taxeditor.navigation/icons/check.png -text
 eu.etaxonomy.taxeditor.navigation/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.navigation/icons/preferences-system-windows.png -text
 eu.etaxonomy.taxeditor.navigation/icons/system-search.png -text
index cccbe07e1e94c4fa7d2929f279a462e51ebf34a3..defad674da438a4d302c77b664c0edbba446ad19 100644 (file)
@@ -7,6 +7,6 @@ bin.includes = META-INF/,\
                plugin_customization.ini,\
                icons/,\
                OSGI-INF/l10n/plugin.properties,\
-               splash.bmp,\              
                OSGI-INF/l10n/plugin_de.properties,\
-               OSGI-INF/l10n/plugin_en.properties
+               OSGI-INF/l10n/plugin_en.properties,\
+               splash.bmp,\              
diff --git a/eu.etaxonomy.taxeditor.application/icons/check.png b/eu.etaxonomy.taxeditor.application/icons/check.png
new file mode 100644 (file)
index 0000000..d776b66
Binary files /dev/null and b/eu.etaxonomy.taxeditor.application/icons/check.png differ
index 1e27e9f4731338fb7e5778ef1bc9b501eb254c58..b74e209ce9d93b65fa3e04ed7461db32d7388015 100644 (file)
             id="eu.etaxonomy.taxeditor.application.perspective.derivates"\r
             name="%perspective.name.2">\r
       </perspective>\r
+      <perspective\r
+            class="eu.etaxonomy.taxeditor.perspective.ChecklistPerspective"\r
+            icon="icons/check.png"\r
+            id="eu.etaxonomy.taxeditor.perspective.checklistperspective"\r
+            name="Checklist">\r
+      </perspective>\r
      \r
    </extension>\r
    <!--extension\r
index 9d80b139ca1f9133fc06dbe7791a89a0af6bc847..a587a61f47b7b02c80f7480154d0c0944d7ce7f4 100644 (file)
@@ -28,7 +28,7 @@ public class ApplicationUtil extends AbstractUtility {
     /**
      * Prefix to declare the version as beta
      */
-    private static final String BETA_PREFIX = "[BETA]";
+    private static final String BETA_PREFIX = "[Beta]";
 
     /**
      * @return
diff --git a/eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java b/eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/ChecklistPerspective.java
new file mode 100644 (file)
index 0000000..8c7a86a
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$
+/**
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy 
+ * http://www.e-taxonomy.eu
+ * 
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+
+package eu.etaxonomy.taxeditor.perspective;
+
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
+import eu.etaxonomy.taxeditor.editor.view.media.MediaViewPart;
+import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
+import eu.etaxonomy.taxeditor.navigation.search.SearchResultView;
+import eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.editor.view.concept.ConceptViewPart;
+
+/**
+ * @author a.oppermann
+ * @created Nov 18, 2014
+ * @version 1.0
+ */
+public class ChecklistPerspective extends Default {
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.ui.IPerspectiveFactory#createInitialLayout(org.eclipse.ui
+        * .IPageLayout)
+        */
+       @Override
+       public void createInitialLayout(IPageLayout layout) {
+               IFolderLayout navigationFolder = layout.createFolder("navigation",
+                               IPageLayout.LEFT, 0.25f, layout.getEditorArea());
+
+               navigationFolder.addView(TaxonNavigator.ID);
+               navigationFolder.addPlaceholder(SearchResultView.ID + ":*");
+
+               layout.addView(CdmDataSourceViewPart.ID, IPageLayout.BOTTOM, 0.6f, TaxonNavigator.ID);
+               IFolderLayout folder = layout.createFolder("Folder", IPageLayout.BOTTOM, 0.6f, layout.getEditorArea());
+               folder.addView(DescriptiveViewPart.ID);
+               folder.addView(DetailsViewPart.ID);
+               folder.addView(ConceptViewPart.ID);
+//             folder.addView(MediaViewPart.ID);
+
+//             createAdditionalFolder(layout, layout.getEditorArea());
+       }
+}
index 0bdd381a6b4911dbb6be274bd4ad5677c801348f..ff3190303b336560bfaf7a51b2fe3571669ec520 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -32,7 +32,8 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
         * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityCreator#createEntity(java.lang.String)
         */
        /** {@inheritDoc} */
-       public Reference createEntity(String text) {
+       @Override
+    public Reference createEntity(String text) {
                return createEntity(Reference.class, text);
        }
 
@@ -40,9 +41,10 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator#createEntity(java.lang.Class, java.lang.String)
         */
        /** {@inheritDoc} */
-       public Reference createEntity(Object key, String text) {
+       @Override
+    public Reference createEntity(Object key, String text) {
                Reference reference = null;
-               
+
                // TODO replace w more generic method when cdmlib matures accordingly
                if  (ReferenceType.Article.getMessage().equals(key)) {
                        reference = ReferenceFactory.newArticle();
@@ -92,6 +94,9 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
                if  (ReferenceType.WebPage.getMessage().equals(key)) {
                        reference = ReferenceFactory.newWebPage();
                }
+               if  (ReferenceType.Section.getMessage().equals(key)) {
+            reference = ReferenceFactory.newSection();
+        }
                if (reference == null) {
                        MessagingUtils.warn(getClass(), "Reference type " + key + " not found. Creating reference with default type.");
                        reference = ReferenceFactory.newGeneric();
@@ -108,7 +113,8 @@ public class ReferenceCreator implements IEntityCreator<Reference> {
         *
         * @return a {@link java.util.Map} object.
         */
-       public Map<Object, String> getKeyLabelPairs() {
+       @Override
+    public Map<Object, String> getKeyLabelPairs() {
                Map<Object, String> result = new HashMap<Object, String>();
                for (ReferenceType type : ReferenceType.values()) {
                        result.put(type.getMessage(), type.getMessage());
index df5ba8d8d222d35627f77fb0b5c38610ffb749f7..f4d15b14639694532c9e316be86d77b39256a15a 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -17,10 +17,6 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
@@ -31,19 +27,13 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchPart;
 
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.ICommonService;
-import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
-import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.model.DescriptionHelper;
 import eu.etaxonomy.taxeditor.model.LineSelection;
@@ -63,11 +53,11 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
 
        /** Constant <code>ID="eu.etaxonomy.taxeditor.bulkeditor.refer"{trunked}</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.bulkeditor.view.referencingobjects";
-       
+
        private TableViewer viewer;
 
        private CdmBase referencedObject;
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite)
         */
@@ -75,7 +65,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        @Override
        public void createViewer(Composite parent) {
                selectionService.addSelectionListener(this);
-               
+
                viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
                                | SWT.V_SCROLL | SWT.FULL_SELECTION);
                createColumns(viewer);
@@ -83,7 +73,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
                viewer.setLabelProvider(new ReferencingObjectsLabelProvider());
 //             viewer.setInput(new ArrayList<CdmBase>());
        }
-       
+
        /**
         * Create the columns for the table
         * @param viewer
@@ -110,19 +100,21 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
         * @param entity a {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity} object.
         */
        public void updateReferencingObjects(final IdentifiableEntity entity) {
-               
+
                final Display display = Display.getCurrent();
-               
+
+               //TODO see ticket #4537 (Re-enable asynchronous loading for ReferencingObjectsView)
+               //this is a workaround for #1569
                //Job job = new Job("Update Referencing Objects") {
-//                     
+//
 //                     @Override
 //                     protected IStatus run(IProgressMonitor monitor) {
 //                             monitor.beginTask("Calculating referencing objects", 10);
-//                     
+//
 //                             monitor.worked(3);
-//                             
+//
 //                             display.asyncExec(new Runnable() {
-//                                     
+//
 //                                     @Override
 //                                     public void run() {
 //                                             ConversationHolder conversation = CdmStore.createConversation();
@@ -131,14 +123,14 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
 //                                             conversation.close();
 //                                     }
 //                             });
-//                             
+//
 //                             monitor.done();
-//                             
-//                             
+//
+//
 //                             return Status.OK_STATUS;
 //                     }
 //             };
-//             
+//
 //             job.setPriority(Job.DECORATE);
 //             job.schedule();
        }
@@ -153,10 +145,10 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
                        //referencedObject =(CdmBase) CdmStore.getService(IIdentifiableEntityService.class).load(referencedObject.getUuid());
                        Set<CdmBase> setOfReferencingObjects = CdmStore.getService(ICommonService.class).getReferencingObjects(referencedObject);
                        if (setOfReferencingObjects != null){
-                               List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);                     
-                               
+                               List<CdmBase> referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);
+
                                Collections.sort(referencingObjects, new ReferencingClassComparator());
-                               
+
                                return referencingObjects;
                        }
                }
@@ -165,13 +157,14 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
         }
                return null;
        }
-       
+
        class ReferencingClassComparator implements Comparator<CdmBase> {
 
                /* (non-Javadoc)
                 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
                 */
-               public int compare(CdmBase o1, CdmBase o2) {
+               @Override
+        public int compare(CdmBase o1, CdmBase o2) {
                        String string1 = o1.getClass().getSimpleName();
                        String string2 = o2.getClass().getSimpleName();
                        int classCompare = string1.compareToIgnoreCase(string2);
@@ -184,9 +177,9 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
                        }
                }
        }
-       
+
        /**
-        * 
+        *
         */
        private void updateView(List<CdmBase> referencingObjects) {
                viewer.setInput(referencingObjects);
@@ -195,29 +188,33 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        }
 
        /** {@inheritDoc} */
-       public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+       @Override
+    public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+           if(part==null){
+               return;
+           }
                if(! (part instanceof BulkEditor)){
                        setContentDescription("");
                        showEmptyPage();
                        return;
                }
-               
+
                if(! (selection instanceof LineSelection)){
                        return;
                }
                LineSelection lineSelection = (LineSelection) selection;
-               
+
                if(lineSelection.size() != 1){
                        return;
                }
-                       
+
                if(! (lineSelection.getFirstElement() instanceof IdentifiableEntity)){
                        return;
                }
-               
+
                showViewer(part, lineSelection);
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#showViewer(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
         */
@@ -225,17 +222,17 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        @Override
        public void showViewer(IWorkbenchPart part, IStructuredSelection selection) {
                this.part = part;
-               
+
                updateReferencingObjects((IdentifiableEntity) selection.getFirstElement());
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public void dispose() {
                selectionService.removePostSelectionListener(this);
                selectionService.removeSelectionListener(this);
                super.dispose();
-               
+
        }
 
        /* (non-Javadoc)
@@ -255,7 +252,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        public void changed(Object object) {
                // no editing in this view
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#onComplete()
         */
@@ -264,13 +261,13 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        public boolean onComplete() {
                return false;
        }
-       
+
        public void refresh(){
                selectionService.removePostSelectionListener(this);
                selectionService.removeSelectionListener(this);
                selectionService.addPostSelectionListener(this);
                selectionService.addSelectionListener(this);
-               
+
        }
 
 
index 4a0612e2f815dd8857735e7e12325e3fb3040314..936f69db52783a7288113763a930f3ad1678223c 100644 (file)
        <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.4.0-SNAPSHOT-sources.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.4.0-SNAPSHOT.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.4.0-SNAPSHOT-sources.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.4.0-SNAPSHOT.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.4.0-SNAPSHOT.jar" />
        <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.4.0-SNAPSHOT-sources.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.4.0-SNAPSHOT.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-3.4.0-SNAPSHOT-sources.jar"/>
index cb24e554dd00a409df9a6e79616ff9bebd5a221b..b0f6b689650a697afc204ae5cea0730977d0ff87 100644 (file)
@@ -635,19 +635,19 @@ Bundle-ClassPath: .,
  lib/spring-security-remoting-3.1.3.RELEASE.jar,
  lib/jena-core-2.11.2.jar,
  lib/jena-iri-1.0.2.jar,
- lib/cdmlib-commons-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-commons-3.4.0-SNAPSHOT.jar,
- lib/cdmlib-ext-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-ext-3.4.0-SNAPSHOT.jar,
- lib/cdmlib-io-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-io-3.4.0-SNAPSHOT.jar,
- lib/cdmlib-model-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-model-3.4.0-SNAPSHOT.jar,
- lib/cdmlib-persistence-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-persistence-3.4.0-SNAPSHOT.jar,
- lib/cdmlib-print-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-print-3.4.0-SNAPSHOT.jar,
- lib/cdmlib-remote-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-remote-3.4.0-SNAPSHOT.jar,
- lib/cdmlib-services-3.4.0-SNAPSHOT-sources.jar,
- lib/cdmlib-services-3.4.0-SNAPSHOT.jar
+ lib/cdmlib-commons-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-commons-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-ext-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-ext-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-io-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-io-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-model-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-model-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-persistence-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-persistence-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-print-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-print-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-remote-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-remote-3.5.0-SNAPSHOT.jar,
+ lib/cdmlib-services-3.5.0-SNAPSHOT-sources.jar,
+ lib/cdmlib-services-3.5.0-SNAPSHOT.jar
index 4278186a308eab1d97e68320d77d18fc08166442..babad4f1f20d2804dbf16a4a4bf94812d5c00405 100644 (file)
@@ -187,25 +187,25 @@ bin.includes = META-INF/,\
                lib/odfdom-0.8.jar,\\r
                lib/h2mig_pagestore_addon.jar,\\r
                lib/spring-security-remoting-3.1.3.RELEASE.jar,\\r
-               lib/cdmlib-commons-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-commons-3.4.0-SNAPSHOT.jar,\\r
-               lib/cdmlib-ext-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-ext-3.4.0-SNAPSHOT.jar,\\r
-               lib/cdmlib-io-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-io-3.4.0-SNAPSHOT.jar,\\r
-               lib/cdmlib-model-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-model-3.4.0-SNAPSHOT.jar,\\r
-               lib/cdmlib-persistence-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-persistence-3.4.0-SNAPSHOT.jar,\\r
-               lib/cdmlib-print-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-print-3.4.0-SNAPSHOT.jar,\\r
-               lib/cdmlib-remote-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-remote-3.4.0-SNAPSHOT.jar,\\r
-               lib/cdmlib-services-3.4.0-SNAPSHOT-sources.jar,\\r
-               lib/cdmlib-services-3.4.0-SNAPSHOT.jar,\\r
                lib/spring-security-remoting-3.1.3.RELEASE.jar,\\r
                lib/jena-core-2.11.2.jar,\\r
-               lib/jena-iri-1.0.2.jar\r
+               lib/jena-iri-1.0.2.jar,\\r
+               lib/cdmlib-commons-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-commons-3.5.0-SNAPSHOT.jar,\\r
+               lib/cdmlib-ext-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-ext-3.5.0-SNAPSHOT.jar,\\r
+               lib/cdmlib-io-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-io-3.5.0-SNAPSHOT.jar,\\r
+               lib/cdmlib-model-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-model-3.5.0-SNAPSHOT.jar,\\r
+               lib/cdmlib-persistence-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-persistence-3.5.0-SNAPSHOT.jar,\\r
+               lib/cdmlib-print-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-print-3.5.0-SNAPSHOT.jar,\\r
+               lib/cdmlib-remote-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-remote-3.5.0-SNAPSHOT.jar,\\r
+               lib/cdmlib-services-3.5.0-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-services-3.5.0-SNAPSHOT.jar\r
 jars.compile.order = .\r
 output.. = bin/\r
 source.. = src/main/java/,\\r
index 0718ed6fb01b4e5cbef12f07296c5ac48e55f31c..eb50aa616f97c77a16671e23e7ce9d3dcb04ddb3 100644 (file)
@@ -11,6 +11,7 @@ Export-Package: eu.etaxonomy.taxeditor.editor,
  eu.etaxonomy.taxeditor.editor.internal,
  eu.etaxonomy.taxeditor.editor.name,
  eu.etaxonomy.taxeditor.editor.name.handler,
+ eu.etaxonomy.taxeditor.editor.view.concept,
  eu.etaxonomy.taxeditor.editor.view.dataimport,
  eu.etaxonomy.taxeditor.editor.view.descriptive,
  eu.etaxonomy.taxeditor.editor.view.media,
index 356db7a1cda467ef29a56af7be60e2cd7b2bc5c8..df9378660517f9cd598aab37f9da0413890e85c1 100644 (file)
@@ -3,8 +3,8 @@ source.. = src/main/java/,\
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               OSGI-INF/l10n/plugin.properties,\
                icons/,\
                p2.inf,\
+               OSGI-INF/l10n/plugin.properties,\
                OSGI-INF/l10n/plugin_de.properties,\
                OSGI-INF/l10n/plugin_en.properties
diff --git a/eu.etaxonomy.taxeditor.editor/icons/check.png b/eu.etaxonomy.taxeditor.editor/icons/check.png
new file mode 100644 (file)
index 0000000..d776b66
Binary files /dev/null and b/eu.etaxonomy.taxeditor.editor/icons/check.png differ
index 86f824d1fed26ffe08f5dab5c83ca0b934d85ca3..23f66c05e7de39952e872b023b34fa340fe6e6c4 100644 (file)
@@ -79,7 +79,7 @@
       </editor>
          <editor
             class="eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor"
-            icon="icons/address-book-new.png"
+            icon="icons/check.png"
             id="eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor"
             name="%editor.name.8">
       </editor>
index 8f1921f382ee69ba8e72effc689946fd33d0067e..c622997aa5d878408c93efcf106af684def7cfcc 100644 (file)
@@ -44,6 +44,7 @@ import org.eclipse.ui.part.EditorPart;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
@@ -234,7 +235,7 @@ public class TaxonNameEditor extends EditorPart implements
         * </p>
         */
        public void createOrUpdateNameComposites() {
-
+               this.taxon = (Taxon)CdmStore.getService(ITaxonService.class).load(this.getTaxon().getUuid());
                ContainerFactory.createOrUpdateAcceptedTaxonsHomotypicGroup(this);
                ContainerFactory.createOrUpdateHeterotypicSynonymyGroups(this);
                ContainerFactory.createOrUpdateMisapplicationsGroup(this);
index d0ebdbd7d19a8db2441bc400cf02ad3056e9eed3..c8bccaa26f795ba7294ed37f037927e00c138a89 100644 (file)
@@ -1,16 +1,20 @@
 /**
- *
+ * 
  */
 package eu.etaxonomy.taxeditor.editor.name.dnd;
 
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.SWTException;
 import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTargetAdapter;
 import org.eclipse.swt.dnd.DropTargetEvent;
 
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
@@ -18,11 +22,13 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.IDropTargetable;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
 import eu.etaxonomy.taxeditor.editor.name.container.AbstractHomotypicalGroupContainer;
+import eu.etaxonomy.taxeditor.editor.name.container.HomotypicalSynonymGroup;
 import eu.etaxonomy.taxeditor.editor.name.container.MisappliedGroup;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptRelationshipTypeOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptToSynonymOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeHomotypicGroupOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeSynonymToMisapplicationOperation;
+import eu.etaxonomy.taxeditor.editor.name.operation.MoveSynonymToAnotherAcceptedTaxonOperation;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 
@@ -33,131 +39,145 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
  * @version $Id: $
  */
 public class NameEditorDropTargetListener extends DropTargetAdapter {
-
-    private final IDropTargetable target;
-
-    /**
-     * <p>Constructor for NameEditorDropTargetListener.</p>
-     *
-     * @param target a {@link eu.etaxonomy.taxeditor.editor.IDropTargetable} object.
-     */
-    public NameEditorDropTargetListener(IDropTargetable target){
-        this.target = target;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void dragEnter(DropTargetEvent dropTargetEvent) {
-        target.dragEntered();
-
-//      if(! EditorUtil.getActiveMultiPageTaxonEditor().equals(editor.getMultiPageTaxonEditor())){
-//          editor.getMultiPageTaxonEditor().setFocus();
-//      }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void dragLeave(DropTargetEvent dropTargetEvent) {
-        target.dragLeft();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void drop(DropTargetEvent dropTargetEvent) {
-
-        TaxonBase taxonBase = getDroppedTaxonBase(dropTargetEvent);
-
-        Assert.isNotNull(taxonBase);
-
-        if(taxonBase.getHomotypicGroup().equals(getHomotypicalGroup())){
-            // do nothing when dragged to the same group
-            dropTargetEvent.detail = DND.DROP_NONE;
-            return;
-        }
-
-        // Execute operations at end of drag event
-        AbstractPostOperation operation = createOperation(taxonBase);
-
-        // Execute operation if it has been initiated
-        if (operation == null) {
-            MessagingUtils.warn(getClass(), "User unsuccessfully tried to drop: " + taxonBase.getClass() +
-                    ". Target: " + target);
-            dropTargetEvent.detail = DND.DROP_NONE;
-        } else {
-            EditorUtil.executeOperation(operation);
-        }
-    }
-
-    private AbstractPostOperation createOperation(TaxonBase taxonBase) {
-
-        if(taxonBase instanceof Synonym){
-            Synonym synonym = (Synonym) taxonBase;
-
-            if(target instanceof AbstractHomotypicalGroupContainer){
-                HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
-
-                return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), synonym, homotypicalGroup, target);
-            }
-            else if(target instanceof MisappliedGroup){
-                return new ChangeSynonymToMisapplicationOperation("Change Synonym to Misapplication", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), synonym, target);
-            }
-            else if(target instanceof TaxonNameEditor){
-                return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), synonym, null, target);
-            }
-
-        }else if(taxonBase instanceof Taxon){
-            Taxon concept = (Taxon) taxonBase;
-
-            if(target instanceof AbstractHomotypicalGroupContainer){
-                HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
-
-                return new ChangeConceptToSynonymOperation("Change to Synonym", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), concept, homotypicalGroup, target);
-            }
-            else if(target instanceof MisappliedGroup ){
-                return new ChangeConceptRelationshipTypeOperation("Change", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), concept, TaxonRelationshipType.MISAPPLIED_NAME_FOR(), target);
-            }
-        }
-
-
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void dropAccept(DropTargetEvent event) {
-        // pass
-    }
-
-
-    private HomotypicalGroup getHomotypicalGroup() {
-        if(target instanceof AbstractHomotypicalGroupContainer){
-            return ((AbstractHomotypicalGroupContainer) target).getGroup();
-        }
-        return null;
-    }
-
-    private TaxonBase getDroppedTaxonBase(DropTargetEvent dropTargetEvent){
-        if(dropTargetEvent.data instanceof ICdmBase[]){
-
-            ICdmBase[] cdmBaseObjects = (ICdmBase[]) dropTargetEvent.data;
-
-            if(cdmBaseObjects[0] instanceof TaxonBase){
-                return (TaxonBase) cdmBaseObjects[0];
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @return
-     *
-     */
-    private TaxonNameEditor getEditor() {
-        return target.getEditor();
-    }
+               
+       private IDropTargetable target;
+       
+
+       /**
+        * <p>Constructor for NameEditorDropTargetListener.</p>
+        *
+        * @param target a {@link eu.etaxonomy.taxeditor.editor.IDropTargetable} object.
+        */
+       public NameEditorDropTargetListener(IDropTargetable target){
+               this.target = target;
+       }
+       
+       /** {@inheritDoc} */
+       public void dragEnter(DropTargetEvent dropTargetEvent) {
+               target.dragEntered();
+               
+//             if(! EditorUtil.getActiveMultiPageTaxonEditor().equals(editor.getMultiPageTaxonEditor())){
+//                     editor.getMultiPageTaxonEditor().setFocus();
+//             }
+       }
+       
+       /** {@inheritDoc} */
+       public void dragLeave(DropTargetEvent dropTargetEvent) {
+               target.dragLeft();
+       }
+       
+       /** {@inheritDoc} */
+       public void drop(DropTargetEvent dropTargetEvent) {
+               
+               TaxonBase taxonBase = getDroppedTaxonBase(dropTargetEvent);
+               
+               Assert.isNotNull(taxonBase);
+               
+               if(taxonBase.getHomotypicGroup().equals(getHomotypicalGroup())){
+                       // do nothing when dragged to the same group
+                       dropTargetEvent.detail = DND.DROP_NONE;
+                       return;
+               }
+               
+               // Execute operations at end of drag event
+               AbstractPostOperation operation = createOperation(taxonBase);
+               
+               // Execute operation if it has been initiated
+               if (operation == null) {
+                       MessagingUtils.warn(getClass(), "User unsuccessfully tried to drop: " + taxonBase.getClass() +
+                                       ". Target: " + target);
+                       dropTargetEvent.detail = DND.DROP_NONE;
+               } else {
+                       EditorUtil.executeOperation(operation);
+               }
+               target.getEditor().getConversationHolder().commit();
+               if (!target.equals(EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor())){
+                       ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).redraw();
+                       ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
+                       
+               }
+               target.getEditor().redraw();
+               
+       }
+       
+       private AbstractPostOperation createOperation(TaxonBase taxonBase) {
+               
+               if(taxonBase instanceof Synonym){
+                       Synonym synonym = (Synonym) taxonBase;
+                       
+                       if(target instanceof AbstractHomotypicalGroupContainer){
+                               HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
+                               
+                               return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), synonym, homotypicalGroup, target);
+                       }
+                       else if(target instanceof MisappliedGroup){
+                               return new ChangeSynonymToMisapplicationOperation("Change Synonym to Misapplication", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), synonym, target);
+                       }
+                       else if(target instanceof TaxonNameEditor){
+                               if (target.equals(getEditor())){
+                                       return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), synonym, null, target);
+                               } else{
+                                       getEditor().getConversationHolder().commit();
+                                       ((TaxonNameEditor) target).getConversationHolder().commit();
+                                       
+                                       return new MoveSynonymToAnotherAcceptedTaxonOperation("Change accepted Taxon", getEditor().getUndoContext(), getEditor().getTaxon().getUuid(), synonym.getUuid(), ((TaxonNameEditor) target).getTaxon(), null );
+                                       
+                               }
+                       }
+                       
+               }else if(taxonBase instanceof Taxon){
+                       Taxon concept = (Taxon) taxonBase;
+                       
+                       if(target instanceof AbstractHomotypicalGroupContainer){
+                               HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
+                               
+                               return new ChangeConceptToSynonymOperation("Change to Synonym", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), concept, homotypicalGroup, target);
+                       }
+                       else if(target instanceof MisappliedGroup ){
+                               return new ChangeConceptRelationshipTypeOperation("Change", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), concept, TaxonRelationshipType.MISAPPLIED_NAME_FOR(), target);
+                       }
+               }
+
+               
+               return null;
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public void dropAccept(DropTargetEvent event) {
+               // pass
+       }
+
+       
+       private HomotypicalGroup getHomotypicalGroup() {
+               if(target instanceof AbstractHomotypicalGroupContainer){
+                       return ((AbstractHomotypicalGroupContainer) target).getGroup();
+               }
+               return null;
+       }       
+       
+       private TaxonBase getDroppedTaxonBase(DropTargetEvent dropTargetEvent){
+               if(dropTargetEvent.data instanceof ICdmBase[]){
+               
+                       ICdmBase[] cdmBaseObjects = (ICdmBase[]) dropTargetEvent.data;
+                       
+                       if(cdmBaseObjects[0] instanceof TaxonBase){
+                               return (TaxonBase) cdmBaseObjects[0];
+                       }
+               }
+               return null;
+       }
+       
+       /**
+        * @return 
+        * 
+        */
+       private TaxonNameEditor getEditor() {
+               return (TaxonNameEditor) EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor();
+       }
 }
index 3fe844fa730415ac61b362a3c6a2246d57214553..4b6afb1a12f7a7f8570e1890491b743d95551d3a 100644 (file)
@@ -37,6 +37,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.Text;
@@ -64,7 +65,6 @@ import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.SimpleSelectionProvider;
 import eu.etaxonomy.taxeditor.editor.view.checklist.edit.DistributionEditingSupport;
-import eu.etaxonomy.taxeditor.editor.view.checklist.edit.RankEditingSupport;
 import eu.etaxonomy.taxeditor.editor.view.checklist.filter.ChecklistEditorFilter;
 import eu.etaxonomy.taxeditor.editor.view.checklist.listener.ChecklistDropdownSelectionListener;
 import eu.etaxonomy.taxeditor.editor.view.checklist.listener.ChecklistFocusListener;
@@ -132,7 +132,7 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
                     @Override
                     public void run() {
-                        viewer.setInput(taxonList);
+                       viewer.setInput(taxonList);
                     }
                 });
                 monitor.worked(1);
@@ -182,6 +182,8 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
     private Label statusLabel;
 
     private SortedSet<DefinedTermBase> terms = null;
+       private ToolItem toolItem;
+       private ChecklistDropdownSelectionListener dropListener;
 
     /**
      * @return the selectedTaxonNodes
@@ -231,10 +233,7 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
         parent.setLayout(gridLayout);
 
         final Text searchText = createSearchBar(parent);
-
-//        if (terms != null && !terms.isEmpty()) {
-            createToolbar(parent);
-//        }
+        createToolbar(parent);
         viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
         getSite().setSelectionProvider(viewer);
 
@@ -242,27 +241,29 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
         searchText.addFocusListener(new ChecklistFocusListener(searchText, modifyListener));
         searchText.addModifyListener(modifyListener);
-
-        // Layout the viewer
-        GridData gridData = new GridData();
-        gridData.verticalAlignment = GridData.FILL;
-        gridData.horizontalSpan = 3;
-        gridData.grabExcessHorizontalSpace = true;
-        gridData.grabExcessVerticalSpace = true;
-        gridData.horizontalAlignment = GridData.FILL;
-        viewer.getControl().setLayoutData(gridData);
+        createGridDataForViewerLayout();
 
         viewer.addFilter(filter);
-        createColumns(viewer);
+        createTable();
 
         viewer.setContentProvider(new ChecklistContentProvider());
-        viewer.setLabelProvider(new ChecklistLabelProvider());
+        viewer.setLabelProvider(new ChecklistLabelProvider(viewer));
         comparator = new ChecklistEditorComparator();
         viewer.setComparator(comparator);
 
         createStatusBar(parent);
     }
 
+       private void createGridDataForViewerLayout() {
+               GridData gridData = new GridData();
+               gridData.verticalAlignment = GridData.FILL;
+        gridData.horizontalSpan = 3;
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.grabExcessVerticalSpace = true;
+        gridData.horizontalAlignment = GridData.FILL;
+        viewer.getControl().setLayoutData(gridData);
+       }
+
     /**
      * @param parent
      * @return
@@ -282,18 +283,22 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     private void createToolbar(Composite parent) {
         ToolBar toolBar = new ToolBar(parent, SWT.NONE);
-        ToolItem toolItem = new ToolItem(toolBar, SWT.DROP_DOWN | SWT.BORDER);
+        toolItem = new ToolItem(toolBar, SWT.DROP_DOWN | SWT.BORDER);
         toolItem.setText("Distribution Status");
         toolItem.setToolTipText("Show Distribution Status for selected Areas");
-        ChecklistDropdownSelectionListener dropListener = new ChecklistDropdownSelectionListener(toolItem, this, terms);
+        createToolbarItems();
+        toolItem.addSelectionListener(dropListener);
+        toolBar.pack();
+    }
+
+       private void createToolbarItems() {
+               dropListener = new ChecklistDropdownSelectionListener(toolItem, this, terms);
         for (DefinedTermBase<DefinedTermBase> term : terms) {
             if(term!=null){
                 dropListener.add(term);
             }
         }
-        toolItem.addSelectionListener(dropListener);
-        toolBar.pack();
-    }
+       }
 
     private void createStatusBar(Composite composite) {
         GridData gridData = new GridData();
@@ -306,54 +311,105 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
         statusLabel.setLayoutData(gridData);
     }
 
-    // This will create the columns for the table
-    private void createColumns(TableViewer viewer) {
-        Table table = viewer.getTable();
+    private void createTable() {
+        Table table = viewer.getTable();//new Table(parent, viewer.getTable().getStyle());
         List<String> titles = new ArrayList<String>();
         Collections.addAll(titles, "Taxon", "Author", "Reference", "Rank");
         List<Integer> bounds = new ArrayList<Integer>();
         Collections.addAll(bounds, 300, 200, 200, 200);
-        Map<Integer, Boolean>restoreColumnWidth = new HashMap<Integer, Boolean>();
-        if (terms != null) {
-            int i = 4;
-            for (DefinedTermBase<DefinedTermBase> term : terms) {
-                if(term != null){
-                    restoreColumnWidth.put(i, PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString()));
-                    titles.add(term.getTitleCache());
-                    bounds.add(200);
-                    i++;
-                }
-            }
-        }
-
-        for (int i = 0; i < titles.size(); i++) {
+        Map<Integer, Boolean> restoreValuesForColumnWidth = restoreValuesForColumnWidth(titles, bounds);
+        createInitalDistributionColumns(table, titles, bounds, restoreValuesForColumnWidth);
+        table.setSortDirection(SWT.DOWN);
+        table.setHeaderVisible(true);
+        table.setLinesVisible(true);
+       }
+    /**
+     * This method creates initially the distribution columns for a table. It should only be called for creation.<br>
+     *<p> 
+     *
+     *<b>Notice:</b> If you want to add additional columns later please use <b>addTableViewerColumn()</b>
+     *
+     * @param table
+     * @param titles
+     * @param bounds
+     * @param restoreValuesForColumnWidth
+     */
+       private void createInitalDistributionColumns(Table table,
+                       List<String> titles, List<Integer> bounds,
+                       Map<Integer, Boolean> restoreValuesForColumnWidth) {
+               for (int columnIndex = 0; columnIndex < titles.size(); columnIndex++) {
             TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
-            column.getColumn().setText(titles.get(i));
-            column.getColumn().setWidth(bounds.get(i));
+            column.getColumn().setText(titles.get(columnIndex));
+            column.getColumn().setWidth(bounds.get(columnIndex));
             column.getColumn().setResizable(true);
             column.getColumn().setMoveable(true);
-            column.getColumn().addSelectionListener(getSelectionAdapter(column.getColumn(), i));
-            if (i == 1) {
+            column.getColumn().addSelectionListener(getSelectionAdapter(column.getColumn(), columnIndex));
+            if (columnIndex == 1) {
                 table.setSortColumn(column.getColumn());
             }
-            if (i == 3) {
-                column.setEditingSupport(new RankEditingSupport(viewer, this));
+            if (columnIndex == 3) {
+               /** uncommented it for now because no rank editing is wanted **/
+//                column.setEditingSupport(new RankEditingSupport(viewer, this));
             }
-            if (i >= 4) {
+            if (columnIndex >= 4) {
                 //read PrefrenceStore to setWidth according to last saved state
-                if(restoreColumnWidth.get(i)){
+                if(restoreValuesForColumnWidth.get(columnIndex)){
                     column.getColumn().setWidth(100);
                 }else{
                     column.getColumn().setWidth(0);
                 }
-                column.setEditingSupport(new DistributionEditingSupport(viewer, this, i));
+                column.setEditingSupport(new DistributionEditingSupport(viewer, this, columnIndex));
             }
         }
-        table.setSortDirection(SWT.DOWN);
-        table.setHeaderVisible(true);
-        table.setLinesVisible(true);
-    }
+       }
+
+    /**
+     * This methods loads the last opened distribution columns for the table viewer from the prefrence store.<br>
+     *<p> 
+     * <b>Notice:</b> It adds also the TitleCache to the titles list for the header of each column.<p>
+     * 
+     * @param titles
+     * @param bounds
+     * @return Map<Integer, Boolean>
+     */
+       private Map<Integer, Boolean> restoreValuesForColumnWidth(List<String> titles,
+                       List<Integer> bounds) {
+               Map<Integer, Boolean> restoreColumnWidth = new HashMap<Integer, Boolean>();
+               if (terms != null) {
+            int columnIndex = 4;
+            for (DefinedTermBase<DefinedTermBase> term : terms) {
+                if(term != null){
+                    restoreColumnWidth.put(columnIndex, PreferencesUtil.getPreferenceStore().getBoolean(term.getUuid().toString()));
+                    titles.add(term.getTitleCache());
+                    bounds.add(200);
+                    columnIndex++;
+                }
+            }
+        }
+               return restoreColumnWidth;
+       }
 
+    /**
+     * This method adds new DistributionColumns to an existing table. 
+     * 
+     * @param title
+     * @param bound
+     * @param colNumber
+     * @return
+     */
+    private TableViewerColumn addTableViewerColumn(String title, int bound, final int colNumber) {
+        final TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE);
+        final TableColumn column = viewerColumn.getColumn();
+        column.setText(title);
+        column.setWidth(200);
+        viewerColumn.setEditingSupport(new DistributionEditingSupport(viewer, this, colNumber));
+        column.setResizable(true);
+        column.setMoveable(true);
+        return viewerColumn;
+      }
+    
+    
+    
     /**
      *
      * pull data from database and set input for view
@@ -427,6 +483,65 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
         viewer.refresh();
     }
 
+    /**
+     * This method should only be called for adding new Distribution columns and reloading the table.<br>
+     * It will hide the old distribution column and load the newly added columns.<br>
+     * <p>
+     * <b>Notice:</b> for data update please use <b>refresh()</b>
+     * 
+     */
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+       public void reload(){
+       //create new Items for Dropdown menue
+       Table table = viewer.getTable();
+       table.setRedraw(false);
+       SortedSet<DefinedTermBase> oldTerms = terms;
+       ChecklistLabelProvider labelProvider = new ChecklistLabelProvider();
+       terms = (SortedSet<DefinedTermBase>) labelProvider.getTermsOrderedByLabels(labelProvider.getNamedAreas(), CdmStore.getDefaultLanguage());
+       SortedSet<DefinedTermBase> newTerms = terms;
+       toolItem.removeSelectionListener(dropListener);
+       hideDistributionColumns(oldTerms);
+       createToolbarItems();
+       toolItem.addSelectionListener(dropListener);
+       for(DefinedTermBase term:newTerms){
+               int count = viewer.getTable().getColumnCount();
+               addTableViewerColumn(term.getTitleCache(), 200, count);
+               acitivateNewColumnInDropDownMenu(term);
+       }
+        viewer.setLabelProvider(new ChecklistLabelProvider(viewer));
+        getService().schedule(new ChecklistJob("loading Taxa", selectedTaxonNodes), Job.LONG);
+        table.setRedraw(true);
+       viewer.refresh();
+    }
+
+       private void acitivateNewColumnInDropDownMenu(DefinedTermBase term) {
+               Menu menu = dropListener.getMenu();
+               MenuItem[] items = menu.getItems();
+               for(MenuItem item: items){
+                       if(item.getText().equalsIgnoreCase(term.getTitleCache())){
+                               item.setSelection(true);
+                               PreferencesUtil.getPreferenceStore().setValue(term.getUuid().toString(), true);
+                       }
+               }
+       }
+
+       private void hideDistributionColumns(SortedSet<DefinedTermBase> oldTerms) {
+               TableColumn[] columns = viewer.getTable().getColumns();
+       for(int i=4; i<columns.length; i++){
+               //remove all columns
+               columns[i].dispose();
+               Menu menu = dropListener.getMenu();
+               int itemCount = menu.getItemCount();
+               MenuItem item = menu.getItem(i-3);
+               item.setSelection(false);
+       }
+       if(oldTerms != null){
+               for(DefinedTermBase term : oldTerms){
+                       PreferencesUtil.getPreferenceStore().setValue(term.getUuid().toString(), false);
+               }
+       }
+       }
+    
     /**
      * <p>
      * Getter for the field <code>service</code>.
@@ -473,8 +588,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
     @Override
     public void doSaveAs() {
-        // TODO Auto-generated method stub
-
     }
 
     @Override
@@ -492,7 +605,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
 
     @Override
     public boolean isSaveAsAllowed() {
-        // TODO Auto-generated method stub
         return false;
     }
 
@@ -504,8 +616,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     @Override
     public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-        // TODO Auto-generated method stub
-
     }
 
     /*
@@ -554,7 +664,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     @Override
     public void contextStop(IMemento memento, IProgressMonitor monitor) {
-        // TODO Auto-generated method stub
 //        IStructuredSelection sel = (IStructuredSelection) this.viewer.getSelection();
 //        if (sel.isEmpty()) {
 //            return;
@@ -588,8 +697,6 @@ public class ChecklistEditor extends EditorPart implements ISelectionListener, I
      */
     @Override
     public void contextRefresh(IProgressMonitor monitor) {
-        // TODO Auto-generated method stub
-
     }
 
     /*
index 16a5e2689d4c35fc73be3d23eb7d431725b511f2..56af4186aa5a57b11bbacc59372bb4763820188b 100644 (file)
@@ -20,7 +20,9 @@ import java.util.UUID;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.TableColumn;
 
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.ITermService;
@@ -46,11 +48,10 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class ChecklistLabelProvider extends LabelProvider implements ITableLabelProvider {
 
-    public static final String DEFAULT_ENTRY = "-";
+    public static final String DEFAULT_ENTRY = "";
     private IDescriptionService descriptionService;
     private final List<DefinedTermBase<?>> namedAreas;
-
-
+    TableViewer viewer = null;
 
     /**
      *
@@ -59,6 +60,11 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
         namedAreas = loadNamedAreas();
     }
 
+    public ChecklistLabelProvider(TableViewer viewer) {
+        namedAreas = loadNamedAreas();
+        this.viewer = viewer;
+    }
+    
     /*
      * (non-Javadoc)
      *
@@ -81,12 +87,11 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
      * .Object, int)
      */
     /** {@inheritDoc} */
-    @Override
+       @Override
     public String getColumnText(Object element, int columnIndex) {
         descriptionService = CdmStore.getService(IDescriptionService.class);
         Taxon taxon = (Taxon) element;
         //TODO load areas by this list
-        SortedSet<DefinedTermBase<?>> sortedNamedAreas = (SortedSet<DefinedTermBase<?>>) getTermsOrderedByLabels(namedAreas, CdmStore.getDefaultLanguage());
 
         List<TaxonDescription> listTaxonDescriptions = descriptionService.listTaxonDescriptions(taxon, null, null, null, null, null, DESC_INIT_STRATEGY);;
         NonViralName<?> nonVirlaName = HibernateProxyHelper.deproxy(taxon.getName(), NonViralName.class);
@@ -124,14 +129,11 @@ public class ChecklistLabelProvider extends LabelProvider implements ITableLabel
                     if (deb instanceof Distribution) {
                         Distribution distribution = (Distribution) deb;
                         String area = distribution.toString();
-                        if(sortedNamedAreas != null){
-                            Object[] array = sortedNamedAreas.toArray();
-                            DefinedTermBase<DefinedTermBase> term = (DefinedTermBase<DefinedTermBase>) array[columnIndex-4];
-                            if(term != null){
-                                if (area.equalsIgnoreCase(term.getTitleCache())) {
-                                    return (distribution.getStatus().getTitleCache() != null)?distribution.getStatus().getTitleCache():DEFAULT_ENTRY;
-                                }
-                            }
+                        if(viewer != null){
+                               TableColumn column = viewer.getTable().getColumn(columnIndex);
+                               if (area.equalsIgnoreCase(column.getText())) {
+                                       return (distribution.getStatus().getTitleCache() != null)?distribution.getStatus().getTitleCache():DEFAULT_ENTRY;
+                               }
                         }
                     }
                 }
index c30985b9cb8108dfa083d43f3d47aec742d7aabf..11b8173dbf3d7526c3f71eb6fb4100da0484abf7 100644 (file)
@@ -18,6 +18,7 @@ import org.eclipse.swt.widgets.TableColumn;
 
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
@@ -48,8 +49,9 @@ public final class DistributionEditingSupport extends EditingSupport {
         cellEditor.setLabelProvider(new LabelProvider());
         cellEditor.setContentProvider(new ArrayContentProvider());
         // TODO set input
-        List<PresenceAbsenceTermBase> input = CdmStore.getTermManager()
-                .getPreferredTerms(PresenceAbsenceTermBase.class);
+//        List<PresenceAbsenceTermBase> input = CdmStore.getTermManager()
+//                .getPreferredTerms(PresenceAbsenceTermBase.class);
+        List<DefinedTermBase<?>> input = CdmStore.getTermManager().getPreferredTerms(TermType.PresenceAbsenceTerm);
         cellEditor.setInput(input);
     }
 
@@ -78,7 +80,7 @@ public final class DistributionEditingSupport extends EditingSupport {
 
     @Override
     protected void setValue(Object element, Object value) {
-        if (element instanceof Taxon && value instanceof PresenceAbsenceTermBase) {
+       if (element instanceof Taxon && value instanceof PresenceAbsenceTermBase) {
             Taxon taxon = (Taxon) element;
             PresenceAbsenceTermBase occurenceStatus = (PresenceAbsenceTermBase) value;
             Distribution distribution = getDistributionForColumn(taxon);
index 45c558e9b3dd87b3c7d996d2249d62b894b5b0be..68bda9a28d1a701c55941ccf1e4a68d6a0243101 100644 (file)
@@ -2,6 +2,7 @@ package eu.etaxonomy.taxeditor.editor.view.checklist.listener;
 
 import java.util.SortedSet;
 
+import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
@@ -32,13 +33,12 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 public class ChecklistDropdownSelectionListener extends SelectionAdapter {
 
     private final Menu menu;
-    private final ToolItem dropdown;
     private final ChecklistEditor editor;
     private final SortedSet<DefinedTermBase> termSet;
-
+    private Logger logger = Logger.getLogger(ChecklistDropdownSelectionListener.class);
+    
     public ChecklistDropdownSelectionListener(ToolItem dropdown, ChecklistEditor editor,
             SortedSet<DefinedTermBase> termSet) {
-        this.dropdown = dropdown;
         this.editor = editor;
         this.termSet = termSet;
         menu = new Menu(dropdown.getParent().getShell());
@@ -65,16 +65,19 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
                 TableColumn column = null;
                 DefinedTermBase<DefinedTermBase> selectedTerm = null;
                 if (termSet != null) {
-                    int i = 0;
-                    for (DefinedTermBase<DefinedTermBase> term : termSet) {
-                        if (term != null) {
-                            if (selected.getText().equalsIgnoreCase(term.getTitleCache())) {
-                                selectedTerm = term;
-                                column = table.getColumn(4 + i);
-                            }
-                            i++;
-                        }
-                    }
+                       TableColumn[] columns = viewer.getTable().getColumns();
+                       for(int i=0; i<columns.length; i++){
+                               if(selected.getText().equalsIgnoreCase(columns[i].getText())){
+                                       column = columns[i];
+                                       logger.info("Column no " +i +" Column Header "+ column.getText() );
+                                       for (DefinedTermBase<DefinedTermBase> term : termSet) {
+                                               if(column.getText().equalsIgnoreCase(term.getTitleCache())){
+                                                       selectedTerm = term;
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
                 }
                 if (column != null && column.getWidth() == 0) {
                     // save column status if shown or not
@@ -88,7 +91,6 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
                     }
                     column.setWidth(0);
                 }
-                viewer.refresh();
             }
         });
     }
@@ -103,7 +105,10 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
                 WizardDialog dialog = new WizardDialog(StoreUtil.getShell(),
                         availableDistributionWizard);
 
-                dialog.open();
+                int open = dialog.open();
+                if(open == 0){
+                       editor.reload();
+                }
             }
         });
         new MenuItem(menu, SWT.SEPARATOR);
@@ -121,4 +126,8 @@ public class ChecklistDropdownSelectionListener extends SelectionAdapter {
             menu.setVisible(true);
         }
     }
+    
+    public Menu getMenu(){
+       return menu;
+    }
 }
\ No newline at end of file
index 753f38769c7d592ed1b4765bd83803b71fe8ff17..844f0a1f039734cdcb25965245617cc438029896 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -24,6 +24,7 @@ import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.media.Media;
@@ -31,10 +32,11 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptionElementOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -45,28 +47,29 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 public class DeleteHandler extends AbstractHandler {
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
+       @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
                IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getActiveSite(event).getSelectionProvider().getSelection();
 
                IWorkbenchPart part = HandlerUtil.getActivePart(event);
                IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part : null;
-               
+
                try {
                        String label = event.getCommand().getName();
-               
+
                        IUndoContext undoContext = EditorUtil.getUndoContext();
-                       
+
                        List<AbstractPostTaxonOperation> operations = new ArrayList<AbstractPostTaxonOperation>();
-                       
+
                        for(Object object : selection.toArray()){
-                               
+
                                AbstractPostOperation operation = null;
-                               
+
                                // TaxonDescription
                                if(object instanceof TaxonDescription){
                                        operations.add(new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, postOperationEnabled));
@@ -77,36 +80,36 @@ public class DeleteHandler extends AbstractHandler {
                                }
                                else if(object instanceof FeatureNodeContainer){
                                        List<DescriptionElementBase> descriptions = ((FeatureNodeContainer) object).getDescriptionElementsForEntireBranch();
-                                       
+
                                        for(DescriptionElementBase description : descriptions){
-                                               operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, postOperationEnabled)); 
+                                               operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, postOperationEnabled));
                                        }
                                }
                                // Media
                                else if(object instanceof Media){
                                        TreeSelection treeSelection = (TreeSelection) selection;
-                                       
+
                                        TreePath[] path = treeSelection.getPathsFor(object);
-                                       
-                                       TaxonDescription imageGallery = (TaxonDescription) path[0].getFirstSegment();
-                                                                               
+
+                                       DescriptionBase<?> imageGallery = (DescriptionBase<?>) path[0].getFirstSegment();
+
                                        operations.add(new DeleteMediaOperation(label, undoContext, imageGallery, (Media) object, postOperationEnabled));
                                }
                                else{
                                        MessagingUtils.error(getClass(), "Selection is not valid for this delete handler", null);
-                               }       
+                               }
                        }
-                       
+
                        // execute all cumulated operations
-                       for(AbstractPostOperation operation : operations){
-                               EditorUtil.executeOperation(operation);
+                       for(AbstractPostOperation<?> operation : operations){
+                               AbstractUtility.executeOperation(operation);
                        }
-                       
+
                } catch (NotDefinedException e) {
                        MessagingUtils.warn(getClass(), "Command name not set.");
                }
-               
-               
+
+
                return null;
        }
 }
index 63172152fec8b8be561b289b4fc5d6cbfa74e0da..b14889f28074e5ee2eb1a553c2f5a647fdb429ed 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -29,12 +29,11 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 31.03.2009
  * @version 1.0
  */
-@Deprecated // I don't think this is really used anymore
 public class DeleteMediaOperation extends AbstractPostTaxonOperation {
-       
-       private Media media;
 
-       private DescriptionBase<?> description;
+       private final Media media;
+
+       private final DescriptionBase<?> description;
 
        /**
         * <p>Constructor for DeleteMediaOperation.</p>
@@ -48,7 +47,7 @@ public class DeleteMediaOperation extends AbstractPostTaxonOperation {
        public DeleteMediaOperation(String label, IUndoContext undoContext,
                        DescriptionBase<?> description, Media media, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, postOperationEnabled);
-               
+
                this.media = media;
                this.description = description;
        }
@@ -85,9 +84,9 @@ public class DeleteMediaOperation extends AbstractPostTaxonOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                ImagesUtility.addMediaToGallery(description, media);
-               
+
                return postExecute(null);
        }
 
index 25703253efd9a9a42b013ca2503ad5b3bdc20152..7e3bae6fafcbc1213abea82d40a5383e9e3d1bc3 100644 (file)
@@ -7,5 +7,12 @@ bin.includes = META-INF/,\
                plugin.xml,\
                icons/,\
                p2.inf,\
-               OSGI-INF/
+               OSGI-INF/l10n/bundle.properties,\
+               OSGI-INF/l10n/bundle_en.properties,\
+               OSGI-INF/l10n/bundle_de.properties,\
+               OSGI-INF/l10n/messages.properties,\
+               OSGI-INF/l10n/messages_en.properties,\
+               OSGI-INF/l10n/messages_de.properties
+               
+               
 
diff --git a/eu.etaxonomy.taxeditor.navigation/icons/check.png b/eu.etaxonomy.taxeditor.navigation/icons/check.png
new file mode 100644 (file)
index 0000000..d776b66
Binary files /dev/null and b/eu.etaxonomy.taxeditor.navigation/icons/check.png differ
index 29f6b8d33e6dd60c36c16e585534c201091c23ef..0667e56f6cf3546c2a982bf4a3dacceccf4ef053 100644 (file)
          </menu>
          <command
                commandId="eu.etaxonomy.taxeditor.editor.handler.OpenChecklistViewHandler"
-               icon="icons/edit_16x16.gif"
+               icon="icons/check.png"
                label="%command.label.4"
                style="push">
            <visibleWhen
index 2b910df22964e7d0cb72c498da42d2c875c092f4..e10a6488ebc67b0c259c24d621cb80d624b9ab6b 100644 (file)
@@ -21,9 +21,6 @@ import java.util.UUID;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.ui.IMemento;
 import org.eclipse.ui.IViewSite;
@@ -34,7 +31,6 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonComparatorSearch;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.DataChangeBridge;
@@ -80,28 +76,29 @@ public class TaxonNavigator extends CommonNavigator implements
        /** {@inheritDoc} */
        @Override
        protected IAdaptable getInitialInput() {
-               
+
                TaxonComparatorSearch comparator = new TaxonComparatorSearch();
                TaxonNodeComparator viewerComparator = new TaxonNodeComparator(comparator);
                this.getCommonViewer().setComparator(viewerComparator);
+        setLinkingEnabled(true);
 //             this.getCommonViewer().addSelectionChangedListener(new ISelectionChangedListener() {
-//                     
+//
 //                     @Override
 //                     public void selectionChanged(SelectionChangedEvent arg0) {
 //                             IStructuredSelection selection = (IStructuredSelection) getCommonViewer().getSelection();
-//                             
+//
 //                             Object firstElement =  selection.getFirstElement();
 //                             //
 //                             if (!(firstElement instanceof Classification)){
 //                                     //NavigationUtil.selectInNavigator(firstElement, null);
 //                                     NavigationUtil.openEditor(firstElement);
 //                             }
-//                             
+//
 //                     }
 //             } );
-               
+
                if (CdmStore.isActive()) {
-                       
+
                        // TODO when closing and reopening the taxon navigator
                        // we do not preserve state. Closing the view, in contrary to
                        // closing the whole application
index b7014aed164c2aa1da47c83c64b01597a776bc08..4a870cf80f8ba3c7de273dd56344b62a03848773 100644 (file)
@@ -8,5 +8,10 @@ bin.includes = META-INF/,\
                icons/,\
                p2.inf,\
                OSGI-INF/,\
-               OSGI-INF/l10n/bundle.properties
+               OSGI-INF/l10n/bundle.properties,\
+               OSGI-INF/l10n/bundle_de.properties,\
+               OSGI-INF/l10n/bundle_en.properties,\
+               OSGI-INF/l10n/messages.properties,\
+               OSGI-INF/l10n/messages_de.properties,\
+               OSGI-INF/l10n/messages_en.properties
 
index 858214f8782be51b181777868754b8806bd89f11..04c9eb4b51322980ffa8363aa949d837ce3128bf 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -46,12 +46,12 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  */
 public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage implements ModifyListener {
        private ICdmDataSource dataSource;
-       
+
        protected Text text_password;
        protected Text text_databaseName;
        protected Text text_dataSourceName;
        protected Text text_username;
-       
+
        protected Group authenticationGroup;
        protected Group locationGroup;
        protected Group nomenclaturalCodeGroup;
@@ -64,11 +64,11 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        protected String database;
        protected String username;
        protected String password;
-       
+
        protected NomenclaturalCode nomenclaturalCode;
-       
+
        CdmDataSourceWizard.Mode mode;
-       
+
        /**
         * <p>Constructor for CdmDataSourceCredentialsWizardPage.</p>
         *
@@ -77,10 +77,10 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        protected CdmDataSourceCredentialsWizardPage(String pageName, ICdmDataSource dataSource) {
                super(pageName);
                this.setPageComplete(false);
-               setDataSource(dataSource);              
+               setDataSource(dataSource);
                mode = CdmDataSourceWizard.Mode.CREATE;
        }
-       
+
        /**
         * <p>Constructor for CdmDataSourceCredentialsWizardPage.</p>
         *
@@ -89,23 +89,24 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        protected CdmDataSourceCredentialsWizardPage(String pageName, ICdmDataSource dataSource, CdmDataSourceWizard.Mode mode) {
                super(pageName);
                this.setPageComplete(false);
-               
+
                this.mode = mode;
                if(mode == CdmDataSourceWizard.Mode.CLONE) {
-                       setDataSource(CdmDataSource.NewInstance(dataSource));                                           
+                       setDataSource(CdmDataSource.NewInstance(dataSource));
                } else {
-                       setDataSource(dataSource);      
+                       setDataSource(dataSource);
                }
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
         */
        /** {@inheritDoc} */
-       public void createControl(Composite parent) {
+       @Override
+    public void createControl(Composite parent) {
                this.parent = parent;
-               
-               // Create top-level composite 
+
+               // Create top-level composite
                parent.setLayout(new GridLayout());
                composite = new Composite(parent, SWT.NONE);
                composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false,2,5));
@@ -132,28 +133,28 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                if(getDataSource() == null) {
                        editDatasourceComposite.setVisible(false);
                }
-               
+
                // create a database specific form
                createDatabaseForm();
-               
+
                // create the authentication input fields
                createAuthenticationForm();
-               
+
                // create nomenclatural code combo
                createNomenclaturalCodeForm();
-               
+
                // Create composite for buttons
                Composite buttonComposite = new Composite(composite, SWT.NONE);
                buttonComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));
                GridLayout buttonLayout = new GridLayout();
                buttonLayout.numColumns = 1;
                buttonComposite.setLayout(buttonLayout);
-               
+
                // Create test connection button
                Button testButton = new Button(buttonComposite, SWT.NONE);
                testButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
                testButton.setText("Test connection");
-               
+
                // Test connection when button is pressed
                testButton.addSelectionListener(new SelectionAdapter() {
                        /* (non-Javadoc)
@@ -164,11 +165,11 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                                testDbConfiguration();
                        }
                });
-               
+
                setControl(composite);
-                               
-               init(); 
-                               
+
+               init();
+
        }
 
        /**
@@ -182,7 +183,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                GridLayout authenticationLayout = new GridLayout();
                authenticationLayout.numColumns = 2;
                authenticationGroup.setLayout(authenticationLayout);
-               
+
                // Create database name label
                Label databaseNameLabel = new Label(authenticationGroup, SWT.NONE);
                databaseNameLabel.setText("Database Name:");
@@ -190,17 +191,17 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                // Create database name input
                text_databaseName = new Text(authenticationGroup, SWT.BORDER);
                text_databaseName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               
+
 
                // Create username label
                Label usernameLabel = new Label(authenticationGroup, SWT.NONE);
                usernameLabel.setText("User Name:");
-               
+
                // Create username input
                text_username = new Text(authenticationGroup, SWT.BORDER);
                text_username.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               
-               
+
+
                // Create password label
                Label passwordLabel = new Label(authenticationGroup, SWT.NONE);
                passwordLabel.setText("Password:");
@@ -208,15 +209,15 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                // Create password input
                text_password = new Text(authenticationGroup, SWT.BORDER | SWT.PASSWORD);
                text_password.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               
+
        }
-       
+
        /**
         * Initialize text fields
         */
-       public void init() {            
+       public void init() {
                removeListeners();
-               if(getDataSource() != null){                                    
+               if(getDataSource() != null){
                        text_dataSourceName.setText(getDataSource().getName());
                        text_databaseName.setText(getDataSource().getDatabase());
                        text_username.setText(getDataSource().getUsername());
@@ -225,25 +226,25 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                // add listeners after setting text to avoid the modify event being called
                // for the initial value
                addListeners();
-               
+
                // in the case of cloning we use the same datasource info
                // except for the name
                if(mode == CdmDataSourceWizard.Mode.CLONE) {
-                       getDataSource().setName("");                    
-                       text_dataSourceName.setText("");                        
+                       getDataSource().setName("");
+                       text_dataSourceName.setText("");
                } else {
                        name = text_dataSourceName.getText();
                }
-               
+
        }
-       
+
        private void addListeners() {
-               text_dataSourceName.addModifyListener(this);            
+               text_dataSourceName.addModifyListener(this);
                text_databaseName.addModifyListener(this);
                text_username.addModifyListener(this);
                text_password.addModifyListener(this);
        }
-       
+
        private void removeListeners() {
                text_dataSourceName.removeModifyListener(this);
                text_databaseName.removeModifyListener(this);
@@ -256,9 +257,9 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        private void createNomenclaturalCodeForm() {
                nomenclaturalCodeGroup = new Group(composite , SWT.NONE);
                nomenclaturalCodeGroup.setLayout(new GridLayout());
-               
+
                nomenclaturalCode = dataSource != null ? dataSource.getNomenclaturalCode() : PreferencesUtil.getPreferredNomenclaturalCode();
-               
+
                for (final NomenclaturalCode code : NomenclaturalCodeHelper.getSupportedCodes()) {
                        Button button = new Button(nomenclaturalCodeGroup, SWT.RADIO);
                        button.setText(NomenclaturalCodeHelper.getDescription(code));
@@ -267,18 +268,19 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                                button.setSelection(nomenclaturalCode.equals(code));
                        }
                        button.addSelectionListener(new SelectionAdapter() {
-                               public void widgetSelected(SelectionEvent e) {
+                               @Override
+                public void widgetSelected(SelectionEvent e) {
                                        nomenclaturalCode = (NomenclaturalCode) e.widget.getData();
                                        modifyText(null);
                                }
                        });
-               }               
+               }
        }
-       
+
        public void testDbConfiguration(){
                testDbConfiguration(false);
        }
-       
+
        /**
         * Tries to open a connection to the given dataSource. Generates a message on either
         * failure or success
@@ -292,35 +294,33 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                                MessageDialog.openConfirm(parent.getShell(), "Connection Test successful", "Test successful!");
                        }
                } catch(SQLException e){
-                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage() 
+                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage()
                                        + System.getProperty("line.separator")    //we may use System.lineSeparator when migrated to Java 1.7
                                        + System.getProperty("line.separator")
                                        + "Please double check the connection fields");
-                       throw new RuntimeException(e);
                } catch (ClassNotFoundException e) {
-                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage()                                        
+                       MessageDialog.openWarning(parent.getShell(), "Connection Test unsuccessful", "Reason: " + e.getMessage()
                                        + System.getProperty("line.separator")    //we may use System.lineSeparator when migrated to Java 1.7
                                        + System.getProperty("line.separator")
                                        + "Please double check the connection fields");
-                       throw new RuntimeException(e);
-               } 
+               }
        }
-       
+
        /**
         * Form implementation for the specific database
         */
-       public abstract void createDatabaseForm(); 
-       
+       public abstract void createDatabaseForm();
+
        /**
         * <p>updateLocation</p>
         */
        public abstract void updateLocation();
-       
+
        /**
         * <p>updateDataSource</p>
         */
        public abstract void updateDataSource();
-       
+
        /**
         * <p>checkPageComplete</p>
         */
@@ -328,18 +328,18 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                boolean complete = false;
                if(mode == CdmDataSourceWizard.Mode.CREATE) {
                        complete = database.length() != 0;
-               } else {                        
+               } else {
                        complete = name.length() != 0 && database.length() != 0;
-               }       
+               }
                this.setPageComplete(complete);
        }
-       
 
-       
+
+
        /**
         * updates the current datasource with form values
         */
-       public void updateAuthentication(){                             
+       public void updateAuthentication(){
                database = text_databaseName.getText();
                username = text_username.getText();
                password = text_password.getText();
@@ -359,7 +359,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
         *
         * @param dataSource the dataSource to set
         */
-       public void setDataSource(ICdmDataSource dataSource) {          
+       public void setDataSource(ICdmDataSource dataSource) {
                this.dataSource = dataSource;
        }
 
@@ -372,11 +372,11 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                updateDataSource();
                return dataSource;
        }
-       
-       protected ICdmDataSource getDataSource() {              
+
+       protected ICdmDataSource getDataSource() {
                return dataSource;
        }
-       
+
        /**
         * <p>getDataSourceName</p>
         *
@@ -385,19 +385,20 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
        public String getDataSourceName() {
                return name;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.swto.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
         */
        /** {@inheritDoc} */
-       public void modifyText(ModifyEvent e) {
-               
+       @Override
+    public void modifyText(ModifyEvent e) {
+
                name = text_dataSourceName.getText();
                database = text_databaseName.getText();
 
                switch(mode) {
                case EDIT:
-                       if(name.length() == 0){                 
+                       if(name.length() == 0){
                                name = "";
                                setErrorMessage("DataSource name must not be empty.");
                                this.setPageComplete(false);
@@ -410,7 +411,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                        }
                        break;
                case CLONE:
-                       if(name.length() == 0){                 
+                       if(name.length() == 0){
                                name = "";
                                setErrorMessage("DataSource name must not be empty.");
                                this.setPageComplete(false);
@@ -425,17 +426,17 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl
                default:
                        break;
                }
-               
-               if(database.length() == 0){                                     
+
+               if(database.length() == 0){
                        setErrorMessage("Database name must not be empty.");
                        this.setPageComplete(false);
-               } else {                        
+               } else {
                        updateAndCheck();
-                       setErrorMessage(null);                  
-               }                       
-       }               
+                       setErrorMessage(null);
+               }
+       }
+
 
-       
        private void updateAndCheck() {
                updateLocation();
                updateAuthentication();
index e9033c3925ca875a46b6840bd22b1ebcd6482f8a..e44ad8f82ec17ebc7152a31cf7070174096f8df1 100644 (file)
@@ -490,6 +490,20 @@ public class MessagingUtils {
         MessagingUtils.warningDialog(title, source, status.getMessage());
     }
 
+    /**
+     * Standard warning dialog for the case when the application is not yet connected to the datasource
+     *
+     * @param source
+     */
+    public static void noDataSourceWarningDialog(Object source) {
+        MessagingUtils
+        .warningDialog(
+                "Application is not connected to a datastore",
+                source,
+                "The requested operation is only available when "
+                + "connected to a datasource. You may choose a datasource to connect to or create a new one in the datasource view.");
+    }
+
     /**
      * Displays a warning {@link org.eclipse.jface.dialogs.MessageDialog}.
      *
index e1a6b959c7b3b4c3ac3071c24029aa81900c0f59..b816fd4956165bfa33a117209acc581b45f8ba25 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -39,14 +39,14 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
 
        private boolean isMultilanguageTextEditingCapability;
        private Language globalLanguage;
-       
+
        private Composite createComposite(Composite parent){
                Composite composite = new Composite(parent, SWT.NULL);
                composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
                composite.setLayout(new RowLayout(SWT.HORIZONTAL));
                return composite;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
         */
@@ -55,14 +55,14 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
                Composite container = new Composite(parent, SWT.NULL);
                final GridLayout gridLayout = new GridLayout();
                container.setLayout(gridLayout);
-               
+
                createSetDefaultLanguage(container);
-               
+
                createSetMultiLanguageTextEditingCapability(container);
-                               
+
                return container;
-               
-               
+
+
        }
 
        /**
@@ -70,19 +70,23 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
         */
        private void createSetDefaultLanguage(Composite parent) {
                globalLanguage = PreferencesUtil.getGlobalLanguage();
-               
+
+               if(globalLanguage == null) {
+                   return;
+               }
+
                int curentSelectionIndex = 0;
-               
+
                final Composite composite = createComposite(parent);
                composite.setLayout(new RowLayout(1));
-               
+
                final Label label = new Label(composite, SWT.NONE);
                label.setText("Choose the global language that will be used throughout the editor to get representations in.");
-               
-               final Combo combo_globalLanguage = new Combo(composite, SWT.NONE); 
-               
+
+               final Combo combo_globalLanguage = new Combo(composite, SWT.NONE);
+
                List<Language> preferredLanguages = CdmStore.getTermManager().getPreferredTerms(Language.class);
-               
+
                for(int i = 0; i < preferredLanguages.size(); i++){
                        Language language = preferredLanguages.get(i);
                        combo_globalLanguage.add(language.getLabel(), i);
@@ -90,9 +94,9 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
                                curentSelectionIndex = i;
                        }
                }
-               
+
                combo_globalLanguage.select(curentSelectionIndex);
-               
+
                combo_globalLanguage.addSelectionListener(new SelectionAdapter() {
                        /* (non-Javadoc)
                         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
@@ -102,25 +106,25 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
                                int selectionIndex = combo_globalLanguage.getSelectionIndex();
                                globalLanguage = Language.getLanguageByLabel(combo_globalLanguage.getItem(selectionIndex));
                        }
-               });             
+               });
        }
 
        /**
-        * 
+        *
         */
        private void createSetMultiLanguageTextEditingCapability(Composite parent) {
                isMultilanguageTextEditingCapability = getPreferenceStore().getBoolean(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY);
-               
+
                final Composite composite = createComposite(parent);
-               
-               final Button button_toggle = new Button(composite, SWT.CHECK);          
-               
-               
+
+               final Button button_toggle = new Button(composite, SWT.CHECK);
+
+
                button_toggle.setText("Enable Multiple Language Editing Capability");
-               
+
                button_toggle.setSelection(isMultilanguageTextEditingCapability);
-               
-               
+
+
                button_toggle.addSelectionListener(new SelectionAdapter(){
                        /* (non-Javadoc)
                         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
@@ -147,7 +151,7 @@ public class LanguagePreferencePage extends PreferencePage implements IWorkbench
        public boolean performOk() {
                getPreferenceStore().setValue(IPreferenceKeys.MULTILANGUAGE_TEXT_EDITING_CAPABILITY, isMultilanguageTextEditingCapability);
                PreferencesUtil.setGlobalLanguage(globalLanguage);
-               
+
                return super.performOk();
        }
 }
index 484a133579ee30ddfa7fe9602f0cc232ceb9c900..7493ff0b911d77a987b196cfa5b22ebe9aadfd3b 100644 (file)
@@ -392,6 +392,7 @@ public class PreferencesUtil implements IPreferenceKeys {
                                "http://www.biodiversitylibrary.org/openurl");
                getPreferenceStore().setDefault(OPENURL_IMAGE_MAX_WIDTH, "1000");
                getPreferenceStore().setDefault(OPENURL_IMAGE_MAX_HEIGHT, "1000");
+               getPreferenceStore().setDefault(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE, true);
        }
 
        /**
@@ -425,7 +426,7 @@ public class PreferencesUtil implements IPreferenceKeys {
                                                        "The following has been set as your preferred nomenclatural code:\n\n\t"
                                                                        + NomenclaturalCodeHelper
                                                                                        .getDescription(code)
-                                                                       + "\n\nYou can change the nomenclatural code at any time in the \"Preferences\" menu.");*/
+                                                                       + "\n\nYou iour is not consistent throughout the application. For DescriptionElemts and also PolytomousKeyNode.Question and PolytomousKeyNode.Statement it shows only the languages where text is available whereas for PolytomousKeyNode.modyfingText it shows a strange list of about 10-20 (different for different nodes) most of them starting with can change the nomenclatural code at any time in the \"Preferences\" menu.");*/
                }
        }
 
@@ -523,9 +524,16 @@ public class PreferencesUtil implements IPreferenceKeys {
        }
 
        public static Language getGlobalLanguage() {
+
+
                String languageUuidString = getPreferenceStore().getString(
                                GLOBAL_LANGUAGE_UUID);
 
+               if(!CdmStore.isActive()) {
+            MessagingUtils.noDataSourceWarningDialog(languageUuidString);
+            return null;
+        }
+
                if (CdmUtils.isBlank(languageUuidString)) {
                        return Language.getDefaultLanguage();
                }
@@ -536,9 +544,11 @@ public class PreferencesUtil implements IPreferenceKeys {
        }
 
        public static void setGlobalLanguage(Language language) {
-               getPreferenceStore().setValue(GLOBAL_LANGUAGE_UUID,
-                               language.getUuid().toString());
-               CdmStore.setDefaultLanguage(language);
+           if(language != null) {
+               getPreferenceStore().setValue(GLOBAL_LANGUAGE_UUID,language.getUuid().toString());
+               CdmStore.setDefaultLanguage(language);
+           }
+
        }
 
        /**
index c8a7fc5b2fd1cfe72070784482bc38c0b2756e31..e98123ac9d339b34739187da3747f00aaf9c963a 100644 (file)
@@ -95,7 +95,11 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        }
 
        protected List<T> getTerms(){
-               return TermStore.getTerms(getTermClass());
+           if(!CdmStore.isActive()) {
+               return new ArrayList<T>();
+           } else {
+               return TermStore.getTerms(getTermClass());
+           }
        }
 
        /**
@@ -274,8 +278,13 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        /** {@inheritDoc} */
        @Override
     public void init(IWorkbench workbench) {
-               setPreferenceStore(PreferencesUtil.getPreferenceStore());
-               getConversationHolder().bind();
+           setPreferenceStore(PreferencesUtil.getPreferenceStore());
+           if(!CdmStore.isActive()) {
+               MessagingUtils.noDataSourceWarningDialog(null);
+
+           } else {
+               getConversationHolder().bind();
+           }
        }
 
        /*
@@ -305,6 +314,10 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        /** {@inheritDoc} */
        @Override
        public boolean performOk() {
+           if(!CdmStore.isActive()) {
+               return true;
+           }
+
                if(checkNoneChecked()){
                        return false;
                }
index 1ae6037def851009e038437ab8d53fc1c096db19..89a898b8a21c71bf80fc27c307a845d471f772d2 100644 (file)
@@ -106,12 +106,7 @@ public class CdmStore {
                        return instance;
                } else{// if (instance == null || !instance.isConnected) {
 
-                       MessagingUtils
-                                       .warningDialog(
-                                                       "Application is not connected to a datastore",
-                                                       instance,
-                                                       "The requested operation is only available when "
-                                                       + "connected to a datasource. You may choose a datasource to connect to or create a new one in the datasource view.");
+                       MessagingUtils.noDataSourceWarningDialog(instance);
 
                        AbstractUtility.showView(CdmDataSourceViewPart.ID);
                        return null;
index acd4690a3b9b01856249247e6bf24790eaae012c..665e6e12a781223e90751f6134799ac6928522d7 100644 (file)
@@ -40,6 +40,8 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 public class DerivedUnitGeneralDetailElement extends
                AbstractCdmDetailElement<DerivedUnitFacade> {
 
+    boolean showOnlyDerivedUnitData = false;
+
        private ToggleableTextElement toggleableText_titleCache;
        private EnumComboElement<SpecimenOrObservationType> combo_specorobstype;
        private EntitySelectionElement<NamedArea> selection_country;
@@ -54,14 +56,13 @@ public class DerivedUnitGeneralDetailElement extends
        private GatheringEventUnitElement element_elevation;
 
 
-
        /**
         * @param formFactory
         * @param formElement
         */
        public DerivedUnitGeneralDetailElement(CdmFormFactory formFactory,
                        ICdmFormElement formElement) {
-               super(formFactory, formElement);
+           super(formFactory, formElement);
        }
 
        /*
@@ -77,7 +78,11 @@ public class DerivedUnitGeneralDetailElement extends
                toggleableText_titleCache = formFactory.createToggleableTextField(
                                formElement, "Title Cache", entity.getTitleCache(),
                                entity.isProtectedTitleCache(), style);
-               if((AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart)){
+        //TODO for DerivateEditor do not use facade anyore to avoid this special case handling #4539
+               if(showOnlyDerivedUnitData){
+                   toggleableText_titleCache.setEnabled(false);
+               }
+               else{
                    combo_specorobstype = formFactory.createEnumComboElement(SpecimenOrObservationType.class, formElement, style);
                    combo_specorobstype.setSelection(entity.getType());
                    selection_country = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
@@ -101,9 +106,6 @@ public class DerivedUnitGeneralDetailElement extends
                    text_collectingNumber = formFactory.createTextWithLabelElement(formElement,
                            "Collecting number", entity.getFieldNumber(), style);
                }
-               else{
-                   toggleableText_titleCache.setEnabled(false);
-               }
                selection_collection = formFactory
                                .createSelectionElement(Collection.class,
                                                getConversationHolder(), formElement, "Collection",
@@ -155,5 +157,9 @@ public class DerivedUnitGeneralDetailElement extends
                        toggleableText_titleCache.setText(getEntity().getTitleCache());
                }
        }
+       
+    public void setShowOnlyDerivedUnitData(boolean showOnlyDerivedUnitData) {
+        this.showOnlyDerivedUnitData = showOnlyDerivedUnitData;
+    }
 
 }
index 6b48d0796e3e2f732966c6e8f3170518214a58c0..2e2ff814237a3394ed25f97bba20381a7bd51b75 100644 (file)
@@ -26,7 +26,10 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  */
 public class DerivedUnitGeneralDetailSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
 
-       /**
+    //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539
+       private DerivedUnitGeneralDetailElement derivedUnitGeneralDetailElement;
+
+    /**
         * @param formFactory
         * @param conversation
         * @param parentElement
@@ -53,7 +56,12 @@ public class DerivedUnitGeneralDetailSection extends AbstractCdmDetailSection<De
         */
        @Override
        protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
-           return formFactory.createDerivedUnitGeneralDetailElement(parentElement);
+           derivedUnitGeneralDetailElement = formFactory.createDerivedUnitGeneralDetailElement(parentElement);
+        return derivedUnitGeneralDetailElement;
+       }
+
+       public void setShowOnlyDerivedUnitData(boolean showOnlyDerivedUnitData){
+           derivedUnitGeneralDetailElement.setShowOnlyDerivedUnitData(showOnlyDerivedUnitData);
        }
 
 }
index 9521b5345640461fd994727301b913de944b44ea..efcd9d5702ef1c6b145d6143fd0c3caa4f9cf855 100644 (file)
@@ -79,10 +79,12 @@ public class UpdateDataSourceHandler extends AbstractDataSourceHandler {
                                                        }
                                                });
                                                status = Status.OK_STATUS;
+                                       }else{
+                                               throw new RuntimeException("An error occurred during the update.");
                                        }
                                }catch(Exception e){
                                        status = new Status(IStatus.ERROR, TaxeditorStorePlugin.PLUGIN_ID, e.getMessage(), e);
-                                       MessagingUtils.messageDialog("Could not run updater", getClass(), status.getMessage());
+                                       MessagingUtils.errorDialog("Could not complete updater", updater, status.getMessage(), status.getPlugin(), e, true);
                                }
                                }
 
index 5d81dbf00f16e61dd0aa8968041200135370fc76..4f22a0c2833e844f9f8fb2734acff9861d4cafce 100644 (file)
@@ -659,6 +659,10 @@ public class DetailsViewer extends AbstractCdmDataViewer {
         destroySections();
 
         DerivedUnitGeneralDetailSection derivedUnitGeneralDetailSection = formFactory.createDerivedUnitGeneralDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+        //TODO for DerivateEditor do not use facade anymore to avoid this special case handling #4539 
+        if(!(AbstractUtility.getActivePart() instanceof IDerivedUnitFacadePart)){
+            derivedUnitGeneralDetailSection.setShowOnlyDerivedUnitData(true);
+        }
         addPart(derivedUnitGeneralDetailSection);
 
         formFactory.createHorizontalSeparator(parent, SWT.BORDER);