.
authorp.ciardelli <p.ciardelli@localhost>
Fri, 21 Aug 2009 17:02:29 +0000 (17:02 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Fri, 21 Aug 2009 17:02:29 +0000 (17:02 +0000)
22 files changed:
.gitattributes
taxeditor-bulkeditor/plugin.xml
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/AnnotatedLineEditor.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorLineDisplay.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorPersistenceService.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSearchComposite.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSortMenuProvider.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorConstants.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorQuery.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorSortMenuProvider.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IdentifiableEntityComparator.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorInputTypeValues.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/NewObjectContributionItem.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/MergeGroupHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/NewObjectHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeTargetHandler.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java [moved from taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorInput.java with 75% similarity]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java [moved from taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ReferenceEditorInput.java with 57% similarity]

index 9e617f1138880f4ed5c6b698c88b0da5644c1c54..540593a458be10b1d930cca22d9ac1a68a098bb2 100644 (file)
@@ -652,29 +652,36 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/AnnotatedLi
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/AnnotatedLineEditorReconcilingStrategy.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/AnnotatedLineEditorSourceViewerConfiguration.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorInput.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorLineDisplay.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorPersistenceService.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSearchComposite.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSortMenuProvider.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorConstants.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorQuery.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorSortMenuProvider.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IEntityContainer.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IEntityCreator.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IEntityPersistenceService.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ILineDisplayStrategy.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ILineSelectionSource.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IdentifiableEntityComparator.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/LineAnnotation.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/LineAnnotationModel.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/LineSelection.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/LineSelectionSource.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/LineSelectionViewer.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ReferenceCreator.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ReferenceEditorInput.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorInputTypeValues.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/NewObjectContributionItem.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/MergeGroupHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/NewObjectHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMergeTargetHandler.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/ShowReferencingObjectsHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/internal/TaxeditorBulkeditorPlugin.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/IReferencingObjectsService.java -text
 taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsContentProvider.java -text
index 00d32c26f2edb7d6e252898347379d8a13cb40e3..136019b8328497740f2aa027ebc549683764af26 100644 (file)
@@ -39,7 +39,7 @@
       </menuContribution>\r
       <menuContribution\r
             locationURI="menu:bulkeditor.menus.openmenu">\r
-         <command\r
+         <!--command\r
                commandId="bulkeditor.commands.openbulkeditor"\r
                label="Reference"\r
                style="push">\r
                   name="taxeditor-bulkeditor.commandParameter.inputType"\r
                   value="referenceInputType">\r
             </parameter>\r
-         </command>\r
-      </menuContribution       >\r
+         </command-->\r
+         <dynamic\r
+               class="eu.etaxonomy.taxeditor.bulkeditor.command.OpenBulkEditorContributionItem"\r
+               id="taxeditor-bulkeditor.dynamicopenmenu">\r
+         </dynamic>\r
+      </menuContribution>\r
       <menuContribution\r
             locationURI="popup:#BulkEditorContext">\r
+         <dynamic\r
+               class="eu.etaxonomy.taxeditor.bulkeditor.command.NewObjectContributionItem"\r
+               id="taxeditor-bulkeditor.dynamicnewobjectcommand">\r
+         </dynamic>\r
       <!--menuContribution\r
             locationURI="popup:org.eclipse.ui.popup.any"-->            \r
          <command\r
@@ -72,7 +80,7 @@
    </extension>\r
    <extension\r
          point="org.eclipse.ui.commands">\r
-      <command\r
+      <!--command\r
             defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.OpenBulkEditorHandler"\r
             id="bulkeditor.commands.openbulkeditor"\r
             name="Open Bulk Editor">\r
@@ -80,7 +88,7 @@
                id="taxeditor-bulkeditor.commandParameter.inputType"\r
                name="Bulk Editor Class">\r
          </commandParameter>\r
-      </command>\r
+      </command-->\r
       <command\r
             defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.MergeGroupHandler"\r
             id="bulkeditor.commands.mergegroup"\r
             id="bulkeditor.commands.referencingobjects"\r
             name="Show Referencing Objects">\r
       </command>\r
+      <command\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.OpenBulkEditorHandler"\r
+            id="taxeditor-bulkeditor.dynamicopenmenu"\r
+            name="Dynamic Open Bulk Editor">\r
+         <commandParameter\r
+               id="taxeditor-bulkeditor.commandParameter.inputType"\r
+               name="Bulk Editor Class"\r
+               values="eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues">\r
+         </commandParameter>\r
+      </command>\r
+      <commandParameterType\r
+            id="taxeditor-bulkeditor.commandParameterType1">\r
+      </commandParameterType>\r
+      <command\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.NewObjectHandler"\r
+            id="taxeditor-bulkeditor.dynamicnewobjectcommand"\r
+            name="Dynamic New Object">\r
+      </command>\r
    </extension>\r
    <extension\r
          point="org.eclipse.ui.editors.markerAnnotationSpecification">\r
                visible="false">\r
          </view>\r
       </perspectiveExtension>\r
-   </extension>\r
+   </extension>
 </plugin>\r
index b3deaec19ab645c8ef74b659c73f133c1cabd111..e5f1e5d2b95d636e8d64ba0c2072f36f8eb724c0 100644 (file)
 package eu.etaxonomy.taxeditor.bulkeditor;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.jface.text.BadLocationException;\r
+import org.eclipse.jface.text.Document;\r
 import org.eclipse.jface.text.source.ISourceViewer;\r
 import org.eclipse.jface.text.source.IVerticalRuler;\r
 import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.StyleRange;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IEditorSite;\r
@@ -90,4 +93,35 @@ public class AnnotatedLineEditor extends TextEditor {
                                \r
                return viewer;\r
        }\r
+\r
+       /**\r
+        * @param newInstance\r
+        */\r
+       public void createAnnotatedLine() {\r
+               Document document = (Document) getDocumentProvider().getDocument(getEditorInput());\r
+               try {\r
+                       int length = document.getLength();\r
+                       \r
+                       // Check whether last character is line delimiter\r
+                       String text = "new guy";\r
+                       int styleLength = text.length();\r
+                       String lastChar = document.get(length - 2, 2);\r
+                       String delimiter = document.getDefaultLineDelimiter();\r
+                       if (delimiter.equals(lastChar)) {\r
+                               // do nothing\r
+                       } else {\r
+                               text = document.getDefaultLineDelimiter() + text; \r
+                       }\r
+                       document.replace(length, 0, text);\r
+                       \r
+                       StyleRange styleRange = new StyleRange();\r
+                       styleRange.start = length;\r
+                       styleRange.length = styleLength;\r
+                       styleRange.fontStyle = SWT.ITALIC;\r
+                       getSourceViewer().getTextWidget().setStyleRange(styleRange);\r
+               } catch (BadLocationException e) {\r
+                       // TODO Auto-generated catch block\r
+                       e.printStackTrace();\r
+               }\r
+       }\r
 }
\ No newline at end of file
index e3983e23d135f1fc55f18aba10631de24eb6838d..cfd91919d1014a77751237086f9a2570c5edebc3 100644 (file)
@@ -27,10 +27,11 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Control;\r
 import org.eclipse.ui.IEditorInput;\r
-import org.eclipse.ui.IEditorPart;\r
 import org.eclipse.ui.IEditorSite;\r
 import org.eclipse.ui.PartInitException;\r
 \r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+\r
 /**\r
  * @author p.ciardelli\r
  * @created 07.07.2009\r
@@ -92,15 +93,15 @@ public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeLis
        @Override\r
        public void createPartControl(Composite parent) {\r
                \r
-               GridLayout rowLayout = new GridLayout();\r
-               parent.setLayout(rowLayout);\r
+               GridLayout gridLayout = new GridLayout();\r
+               parent.setLayout(gridLayout);\r
                \r
                BulkEditorSearchComposite searchBar = new BulkEditorSearchComposite(this, parent, SWT.NONE);\r
                searchBar.getParent().setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));\r
                \r
                super.createPartControl(parent);\r
                \r
-               // \r
+               // Set viewer composite to fill grid\r
                for (Control control : parent.getChildren()) {\r
                        if (control instanceof Composite && !(control instanceof BulkEditorSearchComposite)) {\r
                                control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
index 15a4ce34ba43f784d2c7be39d7afe0d638cbc08d..7f680afe57a7a800e3582b521d6c0b408030d828 100644 (file)
@@ -16,7 +16,13 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.ui.IEditorPart;\r
 \r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.model.common.TimePeriod;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
+import eu.etaxonomy.taxeditor.propertysheet.name.NonViralNamePropertySource;\r
 import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
 \r
 /**\r
@@ -60,6 +66,10 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
                if (entity instanceof ReferenceBase) {\r
                        return new ReferencePropertySource((ReferenceBase) entity);                     \r
                }\r
+               if (entity instanceof NonViralName) {\r
+                       return new NonViralNamePropertySource((NonViralName) entity);\r
+               }\r
+               \r
                return null;\r
        }\r
 \r
@@ -68,7 +78,18 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         */\r
        public String getText(Object entity) {          \r
                if (entity instanceof ReferenceBase) {\r
-                       return ((ReferenceBase) entity).getTitleCache();\r
+                       ReferenceBase reference = (ReferenceBase) HibernateProxyHelper.deproxy(entity);\r
+                       String text = reference.getTitleCache();\r
+                       TimePeriod datePublished = ((StrictReferenceBase) reference).getDatePublished();\r
+                       \r
+                       String date = datePublished == null ? null : datePublished.toString();\r
+                       if (date != null) {\r
+                               text += " [" + date + "]";\r
+                       }\r
+                       return text;\r
+               }\r
+               if (entity instanceof TaxonNameBase) {\r
+                       return ((TaxonNameBase) entity).getTitleCache();\r
                }\r
                return null;\r
        }\r
index a602b8b45c11884c6a769c8b529bd7e68b2e8213..c591102e8a5377d86d94fce8d112bbaea9049a83 100644 (file)
 \r
 package eu.etaxonomy.taxeditor.bulkeditor;\r
 \r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.Comparator;\r
 import java.util.List;\r
 \r
 import org.apache.log4j.Logger;\r
 \r
+import eu.etaxonomy.cdm.model.common.TimePeriod;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 /**\r
@@ -25,31 +32,49 @@ public class BulkEditorPersistenceService implements IEntityPersistenceService {
        private static final Logger logger = Logger\r
                        .getLogger(BulkEditorPersistenceService.class);\r
        \r
+       \r
+       public ReferenceBase makeTestReference(String titleCache, int year) {\r
+               StrictReferenceBase ref = (StrictReferenceBase) creator.createEntity(titleCache);\r
+               if (year > 0)\r
+                       ref.setDatePublished(TimePeriod.NewInstance(year));\r
+               return ref;\r
+       }\r
+\r
+       ReferenceCreator creator = new ReferenceCreator();\r
+       \r
        /* (non-Javadoc)\r
         * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#getEntityList(java.lang.Object)\r
         */\r
        public List<?> getEntityList(Object element) {\r
-//             List entityList = new ArrayList();\r
-//             \r
-//             ReferenceCreator creator = new ReferenceCreator();\r
-//             \r
-//             entityList.add(creator.createEntity("Acta universitatis carolinae. Biologica Prague"));\r
-//             entityList.add(creator.createEntity("Acta universitatis asiae mediae. Botanica"));\r
-//             entityList.add(creator.createEntity("Acta phytogeographica suecica Uppsala"));\r
-//             entityList.add(creator.createEntity("Acta botanica neerlandica Amsterdam"));\r
-//             entityList.add(creator.createEntity("Acta geobotanica hungarica Debrecen, Hungary"));\r
-//             return entityList;\r
+               List entityList = new ArrayList();\r
                \r
                if (element instanceof BulkEditorInput) {\r
                        IBulkEditorQuery query = ((BulkEditorInput) element).getQuery();\r
-                       String queryString = "S*";\r
-                       if (query != null) {\r
-                               queryString = query.getSearchString();\r
-                       }\r
-                       return CdmStore.getReferencesByTitle(queryString);\r
+                       \r
+//                     Comparator queryComparator = null;\r
+//                     if (query != null) {\r
+//                             String queryString = query.getSearchString();\r
+//                             queryComparator = query.getComparator();\r
+//                             if (element instanceof ReferenceEditorInput) {\r
+//                                     entityList = CdmStore.getReferencesByTitle(queryString);\r
+//                             }\r
+//                             if (element instanceof NameEditorInput) {\r
+//                                     entityList = CdmStore.searchNameString(queryString);\r
+//                             }\r
+//                             if (queryComparator != null) {\r
+//                                     Collections.sort(entityList, queryComparator);                          \r
+//                             } else {\r
+//                                     Collections.sort(entityList, new IdentifiableEntityComparator());\r
+//                             }\r
+//                             ((BulkEditorInput) element).setQuery(null);\r
+//                     }\r
+                       entityList.add(makeTestReference("Acta universitatis carolinae. Biologica Prague",1932));\r
+                       entityList.add(makeTestReference("Acta universitatis asiae mediae. Botanica",1753));\r
+                       entityList.add(makeTestReference("Acta phytogeographica suecica Uppsala",1900));\r
+                       entityList.add(makeTestReference("Acta botanica neerlandica Amsterdam",1864));\r
+                       entityList.add(makeTestReference("Acta geobotanica hungarica Debrecen, Hungary",0));\r
                }\r
-               \r
-               return null;\r
+               return entityList;\r
        }\r
        \r
        /* (non-Javadoc)\r
index 43578340d583e29146be5580a14b220c4176984e..d23c1d6f93a07a30add819fb9be6d980b807cc81 100644 (file)
@@ -20,6 +20,7 @@ import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
 import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.events.SelectionListener;\r
 import org.eclipse.swt.graphics.Point;\r
 import org.eclipse.swt.graphics.Rectangle;\r
 import org.eclipse.swt.layout.GridData;\r
@@ -32,22 +33,30 @@ import org.eclipse.swt.widgets.ToolBar;
 import org.eclipse.swt.widgets.ToolItem;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IEditorPart;\r
-import org.eclipse.ui.part.EditorPart;\r
 \r
-import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;\r
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
 import eu.etaxonomy.taxeditor.model.Resources;\r
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 \r
 /**\r
  * @author p.ciardelli\r
  * @created 17.08.2009\r
  * @version 1.0\r
  */\r
-public class BulkEditorSearchComposite extends Composite implements IBulkEditorQuery {\r
+public class BulkEditorSearchComposite extends Composite {\r
+       private static final Logger logger = Logger.getLogger(BulkEditorSearchComposite.class);\r
        \r
        private IEditorPart editor;\r
+       \r
+       private IBulkEditorSortMenuProvider menuProvider;\r
+\r
+       private Menu sortMenu;\r
 \r
+       private Text text;\r
+       \r
+       private String defaultText = "Use \"*\" for wildcard searching";\r
+       \r
+       public Object ORDER_BY = new Object();\r
+       \r
        /**\r
         * @param parent\r
         * @param style\r
@@ -57,16 +66,11 @@ public class BulkEditorSearchComposite extends Composite implements IBulkEditorQ
                \r
                this.editor = editor;\r
                \r
+               this.menuProvider = new BulkEditorSortMenuProvider();\r
+               \r
                createControl();\r
        }\r
 \r
-       private static final Logger logger = Logger.getLogger(BulkEditorSearchComposite.class);\r
-       private Text text;\r
-       \r
-       private String defaultText = "Use \"*\" for wildcard searching";\r
-       \r
-       final private ConfigurationSelectionListener configurationListener = new ConfigurationSelectionListener();\r
-       public Object ORDER_BY = new Object();\r
 \r
        protected void createControl() {\r
                \r
@@ -115,174 +119,114 @@ public class BulkEditorSearchComposite extends Composite implements IBulkEditorQ
                ToolItem toolItem = new ToolItem(toolBar, SWT.DROP_DOWN);\r
                toolItem.setText("Search");\r
                \r
-               DropdownSelectionListener dropdownListener = new DropdownSelectionListener(toolItem);\r
-               \r
-           dropdownListener.add(SearchOption.TAXON);\r
-           dropdownListener.add(SearchOption.SYNONYM);\r
-           dropdownListener.add(SearchOption.NAME);\r
-           dropdownListener.add(SearchOption.COMMON_NAME);\r
-           \r
-           toolItem.addSelectionListener(dropdownListener);\r
+               DropdownMenu dropdownMenu = new DropdownMenu(toolItem);\r
+           toolItem.addSelectionListener(dropdownMenu);\r
        }\r
        \r
        private void updateEditorInput() {\r
                \r
                String searchString = getSearchString();\r
                \r
-               if(searchString.length() > 0){\r
-                       \r
-                       ITaxonServiceConfigurator configurator = configurationListener.getConfigurator();\r
-                       configurator.setSearchString(searchString);\r
-                       \r
+               if(searchString.length() > 0){                  \r
                        // update query in IEditorInput\r
                        IEditorInput input = editor.getEditorInput();\r
                        if (input instanceof BulkEditorInput) {\r
-                               ((BulkEditorInput) input).setQuery(this);\r
+                               ((BulkEditorInput) input).setQuery(new BulkEditorQuery(getSearchString(), getComparator()));\r
                        }\r
                }\r
        }\r
        \r
-       class DropdownSelectionListener extends SelectionAdapter {\r
-\r
-               private Menu menu;\r
+       class DropdownMenu extends SelectionAdapter {\r
 \r
-               public DropdownSelectionListener(ToolItem dropdown) {\r
-                       menu = new Menu(dropdown.getParent().getShell());\r
+               /**\r
+                * @param dropdown\r
+                */\r
+               public DropdownMenu(ToolItem dropdown) {\r
+                       sortMenu = new Menu(dropdown.getParent().getShell());\r
                        \r
-                       MenuItem menuItem = new MenuItem(menu, SWT.PUSH);\r
+                       MenuItem menuItem = new MenuItem(sortMenu, SWT.PUSH);\r
                    menuItem.setText("Order by:");\r
                    menuItem.setData(ORDER_BY);\r
-                       new MenuItem(menu, SWT.SEPARATOR);\r
-               }\r
+                       new MenuItem(sortMenu, SWT.SEPARATOR);\r
 \r
-               public void add(SearchOption option) {\r
-                       MenuItem menuItem = new MenuItem(menu, SWT.CHECK);\r
-                       menuItem.setData(option);\r
-                   menuItem.setText(option.getLabel());\r
-                   menuItem.setSelection(option.getPreference());\r
-                   menuItem.addSelectionListener(configurationListener);\r
+                       menuProvider.fillMenu(editor.getEditorInput(), sortMenu);\r
+                       \r
+                       SelectionListener listener = new SortListSelectionListener();\r
+                       \r
+                       for (MenuItem item : sortMenu.getItems()) {\r
+                               if (item.getData() instanceof Comparator) {\r
+                                       item.addSelectionListener(listener);\r
+                               }\r
+                       }\r
                }\r
 \r
+               /* (non-Javadoc)\r
+                * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)\r
+                */\r
                public void widgetSelected(SelectionEvent event) {\r
                        if (event.detail == SWT.ARROW) {\r
                                ToolItem item = (ToolItem) event.widget;\r
                                Rectangle rect = item.getBounds();\r
                                Point pt = item.getParent().toDisplay(new Point(rect.x, rect.y));\r
-                               menu.setLocation(pt.x, pt.y + rect.height);\r
-                               menu.setVisible(true);\r
+                               sortMenu.setLocation(pt.x, pt.y + rect.height);\r
+                               sortMenu.setVisible(true);\r
                    } else {\r
                        updateEditorInput();\r
                    }\r
                }\r
        }\r
-       \r
-       class ConfigurationSelectionListener extends SelectionAdapter{\r
 \r
-               ITaxonServiceConfigurator configurator;\r
+       class SortListSelectionListener extends SelectionAdapter {\r
                \r
-               /* (non-Javadoc)\r
-                * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)\r
-                */\r
                public void widgetSelected(SelectionEvent e) {\r
-                       logger.warn("configuration menu clicked");\r
-                       SearchOption option = (SearchOption) e.widget.getData();\r
-                       \r
-                       if(option == SearchOption.TAXON){\r
-                               getConfigurator().setDoTaxa(configurator.isDoTaxa() ? false : true);\r
-                       }\r
-                       \r
-                       if(option == SearchOption.SYNONYM){\r
-                               getConfigurator().setDoSynonyms(configurator.isDoSynonyms() ? false : true);\r
-                       }\r
-                       \r
-                       if(option == SearchOption.NAME){\r
-                               getConfigurator().setDoNamesWithoutTaxa(configurator.isDoNamesWithoutTaxa() ? false : true);\r
-                       }\r
-                       \r
-                       if(option == SearchOption.COMMON_NAME){\r
-                               getConfigurator().setDoTaxaByCommonNames(configurator.isDoTaxaByCommonNames() ? false : true);\r
-                       }\r
-                       saveConfigurator();\r
-               }\r
-               \r
-               public ITaxonServiceConfigurator getConfigurator(){\r
-                       if(configurator == null){\r
-                               configurator = PreferencesUtil.getSearchConfigurator();\r
-                       }\r
-                       return configurator;\r
-               }\r
-               \r
-               private void saveConfigurator(){\r
-                       PreferencesUtil.setSearchConfigurator(configurator);\r
-                       this.configurator = PreferencesUtil.getSearchConfigurator();\r
+                       for (MenuItem item : sortMenu.getItems()) {\r
+                               if (item.getData() instanceof Comparator) {\r
+                                       if (item.equals(e.getSource())) {\r
+                                               item.setSelection(true);\r
+                                       } else {\r
+                                               item.setSelection(false);\r
+                                       }\r
+                               }\r
+                       }                               \r
                }\r
        }\r
        \r
-       enum SearchOption {\r
-               TAXON("Taxa"),\r
-               SYNONYM("Synonyms"),\r
-               NAME("Names (without taxa)"),\r
-               COMMON_NAME("Common Names");\r
-               \r
-               private String label;\r
-               \r
-               private SearchOption(String label){\r
-                       this.label = label;\r
-               }\r
-               \r
-               public String getLabel(){\r
-                       return label;\r
-               }\r
-               \r
-               public boolean getPreference(){\r
-                       if(! PreferencesUtil.getPreferenceStore().contains(PreferencesUtil.TAXON_SERVICE_CONFIGURATOR_TAXA)){\r
-                               // initializes the search configurator\r
-                               PreferencesUtil.initializeSearchConfigurator();\r
-                       }\r
-                       \r
-                       switch(this){\r
-                       case TAXON:\r
-                               boolean result = PreferencesUtil.getPreferenceStore().getBoolean(PreferencesUtil.TAXON_SERVICE_CONFIGURATOR_TAXA);\r
-                               return result;\r
-                       case SYNONYM:\r
-                               return PreferencesUtil.getPreferenceStore().getBoolean(PreferencesUtil.TAXON_SERVICE_CONFIGURATOR_SYNONYMS);\r
-                       case NAME:\r
-                               return PreferencesUtil.getPreferenceStore().getBoolean(PreferencesUtil.TAXON_SERVICE_CONFIGURATOR_NAMES);\r
-                       case COMMON_NAME:\r
-                               return PreferencesUtil.getPreferenceStore().getBoolean(PreferencesUtil.TAXON_SERVICE_CONFIGURATOR_COMMON_NAMES);\r
-                       }\r
-                       \r
-                       return true;\r
-               }\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery#getSearchString()\r
-        */\r
        public String getSearchString() {\r
                return text.getText().trim();\r
        }\r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery#getComparator()\r
-        */\r
        public Comparator getComparator() {\r
-               return new IdentifiableEntityComparator();\r
+               Comparator comparator;\r
+               for (MenuItem item : sortMenu.getItems()) {\r
+                       if (item.getSelection() == true && item.getData() instanceof Comparator) {\r
+                               return (Comparator) item.getData();\r
+                       }\r
+               }\r
+               return null;\r
        };\r
        \r
-       class IdentifiableEntityComparator implements Comparator {\r
-        private boolean fIgnoreCase;\r
+       class BulkEditorQuery implements IBulkEditorQuery {\r
+               \r
+               private String searchString;\r
+               private Comparator comparator;\r
 \r
-               private String getTitleCache(Object o) {\r
-                       return o == null || !(o instanceof IdentifiableEntity) ? \r
-                                       null : ((IdentifiableEntity) o).getTitleCache();\r
+               BulkEditorQuery (String searchString, Comparator comparator) {\r
+                       this.searchString = searchString;\r
+                       this.comparator = comparator;\r
                }\r
-               \r
-               public int compare(Object o1, Object o2) {\r
-                       String titleCache1 = getTitleCache(o1);\r
-                       String titleCache2 = getTitleCache(o2);\r
-            return fIgnoreCase ? titleCache1.compareToIgnoreCase(titleCache2) : \r
-                                                       titleCache1.compareTo(titleCache2);\r
+\r
+               /* (non-Javadoc)\r
+                * @see eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery#getComparator()\r
+                */\r
+               public Comparator getComparator() {\r
+                       return comparator;\r
+               }\r
+\r
+               /* (non-Javadoc)\r
+                * @see eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery#getSearchString()\r
+                */\r
+               public String getSearchString() {\r
+                       return searchString;\r
                }\r
        }\r
-}\r
+}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSortMenuProvider.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSortMenuProvider.java
new file mode 100644 (file)
index 0000000..8fa344d
--- /dev/null
@@ -0,0 +1,93 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor;\r
+\r
+import java.util.Comparator;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.widgets.Menu;\r
+import org.eclipse.swt.widgets.MenuItem;\r
+import org.eclipse.ui.IEditorInput;\r
+\r
+import eu.etaxonomy.cdm.model.common.TimePeriod;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 19.08.2009\r
+ * @version 1.0\r
+ */\r
+public class BulkEditorSortMenuProvider implements IBulkEditorSortMenuProvider {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(BulkEditorSortMenuProvider.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortMenuProvider#fillMenu(org.eclipse.ui.IEditorInput, java.awt.Menu)\r
+        */\r
+       public Menu fillMenu(IEditorInput input, Menu menu) {\r
+               addMenuItem(menu, "Title cache", new IdentifiableEntityComparator(), true);\r
+               \r
+               if (input instanceof ReferenceEditorInput) {\r
+                       addMenuItem(menu, "Year", new ReferenceYearComparator(), false);\r
+               }\r
+               \r
+               return menu;\r
+       }\r
+       \r
+       /**\r
+        * @param menu \r
+        * @param string\r
+        * @param identifiableEntityComparator\r
+        * @return \r
+        */\r
+       private MenuItem addMenuItem(Menu menu, String text, Comparator comparator, boolean selected) {\r
+               MenuItem menuItem = new MenuItem(menu, SWT.CHECK);\r
+               menuItem.setText(text);\r
+               menuItem.setData(comparator);\r
+               menuItem.setSelection(selected);\r
+               return menuItem;\r
+       }\r
+       \r
+       class ReferenceYearComparator implements Comparator {\r
+               \r
+               /**\r
+                * @param o1\r
+                * @return\r
+                */\r
+               private String getYearString(Object o) {\r
+                       TimePeriod datePublished = o == null || !(o instanceof ReferenceBase) ? \r
+                                       null : ((StrictReferenceBase) o).getDatePublished(); \r
+                       return datePublished == null? null : datePublished.toString();\r
+               }\r
+               \r
+               /* (non-Javadoc)\r
+                * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)\r
+                */\r
+               public int compare(Object o1, Object o2) {\r
+                       String yearString1 = getYearString(o1);\r
+                       String yearString2 = getYearString(o2);\r
+                       if (yearString1 == null) {\r
+                               if (yearString2 == null) {\r
+                                       return 0;\r
+                               } else {\r
+                                       return -1;\r
+                               }\r
+                       }\r
+                       if (yearString2 == null) {\r
+                               return 1;\r
+                       }\r
+            return yearString1.compareToIgnoreCase(yearString2);\r
+               }               \r
+       }\r
+}
\ No newline at end of file
index 9b9805beb419b0a217ca3c1e589cd66a4222e3fa..95a72e87c285ce8ff347a221fa26d6987f3a9957 100644 (file)
@@ -19,4 +19,8 @@ package eu.etaxonomy.taxeditor.bulkeditor;
 public interface IBulkEditorConstants {\r
        public static final String TYPE_MERGE_TARGET = "merge_target_annotation";\r
        public static final String TYPE_MERGE_CANDIDATE = "merge_candidate_annotation";\r
+       \r
+       public static final String INPUT_TYPE_PARAMETER_ID = "taxeditor-bulkeditor.commandParameter.inputType";\r
+       public static final String DYNAMIC_OPEN_MENU_ID = "taxeditor-bulkeditor.dynamicopenmenu";\r
+       public static final String DYNAMIC_OPEN_OBJECT_ID = "taxeditor-bulkeditor.dynamicnewobjectcommand";\r
 }\r
index a4ce137553ff1b71c40819c669d5bde7d3a3c29e..a6f6e072809d47d769dcebbfaaa81a49a1d20f67 100644 (file)
@@ -10,6 +10,8 @@
 \r
 package eu.etaxonomy.taxeditor.bulkeditor;\r
 \r
+import java.util.Comparator;\r
+\r
 /**\r
  * @author p.ciardelli\r
  * @created 19.08.2009\r
@@ -19,5 +21,5 @@ public interface IBulkEditorQuery {
 \r
        String getSearchString();\r
        \r
-       void setSearchString(); \r
+       Comparator getComparator();\r
 }\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorSortMenuProvider.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorSortMenuProvider.java
new file mode 100644 (file)
index 0000000..c204592
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor;\r
+\r
+\r
+import org.eclipse.swt.widgets.Menu;\r
+import org.eclipse.ui.IEditorInput;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 19.08.2009\r
+ * @version 1.0\r
+ */\r
+public interface IBulkEditorSortMenuProvider {\r
+       \r
+       /**\r
+        * Fills a menu with MenuItems representing sort options specific to the IEditorInput. \r
+        * <p>\r
+        * Populates each MenuItem with a Comparator associated with the sort option.\r
+        *  \r
+        * @param input\r
+        * @param menu\r
+        * @return\r
+        */\r
+       Menu fillMenu(IEditorInput input, Menu menu);\r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IdentifiableEntityComparator.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IdentifiableEntityComparator.java
new file mode 100644 (file)
index 0000000..3cf76d1
--- /dev/null
@@ -0,0 +1,45 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor;\r
+\r
+import java.util.Comparator;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 19.08.2009\r
+ * @version 1.0\r
+ */\r
+public class IdentifiableEntityComparator implements Comparator {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(IdentifiableEntityComparator.class);\r
+       \r
+    private boolean fIgnoreCase;\r
+\r
+       private String getTitleCache(Object o) {\r
+               return o == null || !(o instanceof IdentifiableEntity) ? \r
+                               null : ((IdentifiableEntity) o).getTitleCache();\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)\r
+        */\r
+       public int compare(Object o1, Object o2) {\r
+               String titleCache1 = getTitleCache(o1);\r
+               String titleCache2 = getTitleCache(o2);\r
+               logger.warn(titleCache1 + " <> " + titleCache2);\r
+        return fIgnoreCase ? titleCache1.compareToIgnoreCase(titleCache2) : \r
+                                                       titleCache1.compareTo(titleCache2);\r
+       }\r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorInputTypeValues.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/BulkEditorInputTypeValues.java
new file mode 100644 (file)
index 0000000..2e106e7
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.command;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.IParameterValues;\r
+import org.eclipse.ui.IEditorInput;\r
+\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.NameEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.08.2009\r
+ * @version 1.0\r
+ */\r
+public class BulkEditorInputTypeValues implements IParameterValues {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(BulkEditorInputTypeValues.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.IParameterValues#getParameterValues()\r
+        */\r
+       public Map getParameterValues() {\r
+               final Map values = new HashMap();\r
+               \r
+               // TODO user role determines which editor inputs are returned\r
+               values.put("Reference", ReferenceEditorInput.getID());\r
+               values.put("Name", NameEditorInput.getID());\r
+               \r
+               return values;\r
+       }\r
+\r
+       /**\r
+        * @param input\r
+        */\r
+       public String getLabelByInputInstance(IEditorInput input) {\r
+               if (input instanceof ReferenceEditorInput) {\r
+                       return "Reference";\r
+               }\r
+               if (input instanceof NameEditorInput) {\r
+                       return "Name";\r
+               }\r
+               return "";\r
+       }\r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/NewObjectContributionItem.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/NewObjectContributionItem.java
new file mode 100644 (file)
index 0000000..2adf92f
--- /dev/null
@@ -0,0 +1,78 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.command;\r
+\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.IContributionItem;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.IWorkbenchWindow;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.actions.CompoundContributionItem;\r
+import org.eclipse.ui.menus.CommandContributionItem;\r
+import org.eclipse.ui.menus.CommandContributionItemParameter;\r
+\r
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 21.08.2009\r
+ * @version 1.0\r
+ */\r
+public class NewObjectContributionItem extends CompoundContributionItem {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(NewObjectContributionItem.class);\r
+\r
+       /**\r
+        * \r
+        */\r
+       public NewObjectContributionItem() {\r
+       }\r
+\r
+       /**\r
+        * @param id\r
+        */\r
+       public NewObjectContributionItem(String id) {\r
+               super(id);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()\r
+        */\r
+       @Override\r
+       protected IContributionItem[] getContributionItems() {\r
+               \r
+               IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();\r
+               \r
+               CommandContributionItemParameter parameter = \r
+                       new CommandContributionItemParameter(\r
+                                       window, null, IBulkEditorConstants.DYNAMIC_OPEN_OBJECT_ID, SWT.NONE);\r
+               \r
+               parameter.label = "New " + getEditorInputLabel(window);         \r
+               \r
+               return new IContributionItem[] {\r
+                               new CommandContributionItem(parameter)\r
+               };\r
+       }\r
+\r
+       /**\r
+        * @param window\r
+        * @return\r
+        */\r
+       private String getEditorInputLabel(IWorkbenchWindow window) {\r
+               IEditorInput input = window.getActivePage().getActiveEditor().getEditorInput();\r
+               \r
+               BulkEditorInputTypeValues inputValues = new BulkEditorInputTypeValues();\r
+               return inputValues.getLabelByInputInstance(input);\r
+       }\r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java
new file mode 100644 (file)
index 0000000..efabed8
--- /dev/null
@@ -0,0 +1,87 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.command;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.IContributionItem;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.actions.CompoundContributionItem;\r
+import org.eclipse.ui.menus.CommandContributionItem;\r
+import org.eclipse.ui.menus.CommandContributionItemParameter;\r
+\r
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 19.08.2009\r
+ * @version 1.0\r
+ */\r
+public class OpenBulkEditorContributionItem extends CompoundContributionItem {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(OpenBulkEditorContributionItem.class);\r
+\r
+       /**\r
+        * \r
+        */\r
+       public OpenBulkEditorContributionItem() {\r
+       }\r
+\r
+       /**\r
+        * @param id\r
+        */\r
+       public OpenBulkEditorContributionItem(String id) {\r
+               super(id);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()\r
+        */\r
+       @Override\r
+       protected IContributionItem[] getContributionItems() {\r
+               \r
+               List<IContributionItem> contributionItems = new ArrayList<IContributionItem>();\r
+               \r
+               Map inputTypeValues = (new BulkEditorInputTypeValues()).getParameterValues();\r
+               for (Object key : inputTypeValues.keySet()) {\r
+                       contributionItems.add(createContributionItem(\r
+                                                               (String) key, (String) inputTypeValues.get(key)));\r
+               }\r
+               \r
+               return (IContributionItem[])contributionItems.\r
+                                                                       toArray(new IContributionItem[contributionItems.size()]);\r
+       }\r
+\r
+       /**\r
+        * @param key\r
+        * @param object\r
+        * @return\r
+        */\r
+       private IContributionItem createContributionItem(String label, String inputType) {\r
+               CommandContributionItemParameter parameter = \r
+                               new CommandContributionItemParameter(\r
+                                               PlatformUI.getWorkbench().getActiveWorkbenchWindow(),\r
+                                               null, IBulkEditorConstants.DYNAMIC_OPEN_MENU_ID, SWT.NONE);\r
+               \r
+               parameter.label = label;\r
+               \r
+               Map parameters = new HashMap();\r
+               parameters.put(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID, inputType);        \r
+               parameter.parameters = parameters;\r
+               \r
+               return new CommandContributionItem(parameter);\r
+       }\r
+}\r
index 96977e8a06bd707ed9f270b76060827e78799997..e953da4265301a9061e352e3600695697ef8216c 100644 (file)
@@ -27,10 +27,10 @@ import org.eclipse.ui.texteditor.IDocumentProvider;
 \r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.taxeditor.bulkeditor.AnnotatedLineEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorInput;\r
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
 import eu.etaxonomy.taxeditor.bulkeditor.IEntityContainer;\r
 import eu.etaxonomy.taxeditor.bulkeditor.LineAnnotationModel;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
index b25083285a03b61c4201e420ad970f9d55f7dd04..66f2cafae9b6eafffe4dc2b078294d30590e26ca 100644 (file)
@@ -14,13 +14,12 @@ import org.apache.log4j.Logger;
 import org.eclipse.core.commands.AbstractHandler;\r
 import org.eclipse.core.commands.ExecutionEvent;\r
 import org.eclipse.core.commands.ExecutionException;\r
-import org.eclipse.jface.text.BadLocationException;\r
-import org.eclipse.jface.text.Document;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IEditorPart;\r
-import org.eclipse.ui.editors.text.TextEditor;\r
 import org.eclipse.ui.handlers.HandlerUtil;\r
 \r
+import eu.etaxonomy.taxeditor.bulkeditor.AnnotatedLineEditor;\r
+\r
 /**\r
  * @author p.ciardelli\r
  * @created 14.08.2009\r
@@ -37,16 +36,8 @@ public class NewObjectHandler extends AbstractHandler {
                \r
                IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
                IEditorInput input = editor.getEditorInput();\r
-               if (editor instanceof TextEditor) {\r
-                       Document document = (Document) ((TextEditor) editor).getDocumentProvider().getDocument(input);\r
-                       try {\r
-                               document.replace(document.getLength(), 0, document.getDefaultLineDelimiter() + "new guy");\r
-//                             ((TextEditor) editor).gotoAnnotation(forward)\r
-                       } catch (BadLocationException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
-                       }\r
-//                     ((TextEditor) editor).getDocumentProvider().getDocument(input).set("hi");\r
+               if (editor instanceof AnnotatedLineEditor) {\r
+                       ((AnnotatedLineEditor) editor).createAnnotatedLine();\r
                }\r
                return null;\r
        }\r
index 81dcbc1cfb83c3e90329ffd18a35c0e885ecb0af..a172c2275bb573b92f6bb55213331590f297c061 100644 (file)
@@ -15,7 +15,8 @@ import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;\r
 \r
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -23,15 +24,12 @@ import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorInput;
  * @version 1.0\r
  */\r
 public class OpenBulkEditorHandler extends AbstractHandler {\r
-\r
-       public static final String INPUT_TYPE_PARAMETER_ID = \r
-                       "taxeditor-bulkeditor.commandParameter.inputType";\r
                \r
        /* (non-Javadoc)\r
         * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
         */\r
        public Object execute(ExecutionEvent event) throws ExecutionException {\r
-               String inputType = event.getParameter(INPUT_TYPE_PARAMETER_ID);\r
+               String inputType = event.getParameter(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID);\r
                try {\r
                        HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().\r
                                        openEditor(BulkEditorInput.NewInstance(inputType), BulkEditor.ID);\r
index 1d151268ca15678fd5d70aeaab32ea78e924ba6f..1e95504fe710adb5d729c05f3acb2e57573d330b 100644 (file)
@@ -22,9 +22,9 @@ import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.ui.texteditor.IDocumentProvider;\r
 \r
 import eu.etaxonomy.taxeditor.bulkeditor.AnnotatedLineEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorInput;\r
 import eu.etaxonomy.taxeditor.bulkeditor.LineAnnotationModel;\r
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
similarity index 75%
rename from taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorInput.java
rename to taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInput.java
index d56bebf75fb8bf69d55a1004a69a62ed53e20e26..d7fb81673fb3d7f86e29a23a09c41fdc4e2a6de0 100644 (file)
@@ -7,7 +7,7 @@
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
-package eu.etaxonomy.taxeditor.bulkeditor;\r
+package eu.etaxonomy.taxeditor.bulkeditor.input;\r
 \r
 import java.beans.PropertyChangeSupport;\r
 \r
@@ -15,6 +15,8 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IPersistableElement;\r
 \r
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery;\r
+\r
 /**\r
  * @author p.ciardelli\r
  * @created 25.06.2009\r
@@ -29,25 +31,26 @@ abstract public class BulkEditorInput extends PropertyChangeSupport implements I
        public BulkEditorInput(Object sourceBean) {\r
                super(sourceBean);\r
        }\r
-\r
-       /**\r
-        * See menu parameters for "taxeditor-bulkeditor.commandParameter.inputType" \r
-        * in "plugin.xml" \r
-        */\r
-       private static final String REFERENCE_INPUT_TYPE = "referenceInputType";\r
        \r
        public static final String QUERY_CHANGED = "query_changed";\r
        \r
        static public BulkEditorInput NewInstance(String inputType) {\r
-               \r
-               if (REFERENCE_INPUT_TYPE.equals(inputType)) {\r
-                       return (BulkEditorInput) new ReferenceEditorInput();                    \r
+                               \r
+               if (ReferenceEditorInput.getID().equals(inputType)) {\r
+//                     return ReferenceEditorInput.getInstance();\r
+                       return new ReferenceEditorInput();\r
                }\r
+\r
+               if (NameEditorInput.getID().equals(inputType)) {\r
+//                     return NameEditorInput.getInstance();\r
+                       return new NameEditorInput();\r
+               }\r
+               \r
                return null;\r
        }\r
 \r
        private IBulkEditorQuery query;\r
-               \r
+                       \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.IEditorInput#exists()\r
         */\r
@@ -85,7 +88,9 @@ abstract public class BulkEditorInput extends PropertyChangeSupport implements I
        public void setQuery(IBulkEditorQuery bulkEditorQuery) {\r
                this.query = bulkEditorQuery;\r
                \r
-               firePropertyChange(QUERY_CHANGED, null, null);\r
+               if (query != null) {\r
+                       firePropertyChange(QUERY_CHANGED, null, null);\r
+               }\r
        }\r
        \r
        public IBulkEditorQuery getQuery() {\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java
new file mode 100644 (file)
index 0000000..499abb9
--- /dev/null
@@ -0,0 +1,62 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.input;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.08.2009\r
+ * @version 1.0\r
+ */\r
+public class NameEditorInput extends BulkEditorInput {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(NameEditorInput.class);\r
+       \r
+       private static NameEditorInput instance;\r
+\r
+       /**\r
+        * @param sourceBean\r
+        */\r
+       public NameEditorInput() {\r
+               super(new Object());\r
+       }\r
+\r
+       public static final String ID = "bulkeditor.input.name";\r
+       \r
+       public static BulkEditorInput getInstance() {\r
+               if (instance == null) {\r
+                       instance = new NameEditorInput();\r
+               }\r
+               return instance;\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.IEditorInput#getName()\r
+        */\r
+       public String getName() {\r
+               return "Bulk Editor - Names";\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.IEditorInput#getToolTipText()\r
+        */\r
+       public String getToolTipText() {\r
+               return getName();\r
+       }\r
+\r
+       /**\r
+        * @return\r
+        */\r
+       public static Object getID() {\r
+               return ID;\r
+       }\r
+}\r
similarity index 57%
rename from taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ReferenceEditorInput.java
rename to taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java
index 5db79bccb4db4ba170b73c43bdfa02189a41580e..9ce4b68d20a8f31c0f5932147dc2c89d74d0ba1c 100644 (file)
@@ -7,26 +7,34 @@
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
-package eu.etaxonomy.taxeditor.bulkeditor;\r
+package eu.etaxonomy.taxeditor.bulkeditor.input;\r
 \r
-import org.eclipse.ui.IEditorInput;\r
 \r
 /**\r
  * @author p.ciardelli\r
  * @created 25.06.2009\r
  * @version 1.0\r
  */\r
-public class ReferenceEditorInput extends BulkEditorInput implements\r
-               IEditorInput {\r
+public class ReferenceEditorInput extends BulkEditorInput {\r
+\r
+       public static final String ID = "bulkeditor.input.reference";\r
+       \r
+       private static ReferenceEditorInput instance;\r
 \r
        /**\r
         * @param sourceBean\r
         */\r
        public ReferenceEditorInput() {\r
                super(new Object());\r
-               // TODO Auto-generated constructor stub\r
        }\r
 \r
+       /**\r
+        * @return the iD\r
+        */\r
+       public static String getID() {\r
+               return ID;\r
+       }\r
+       \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.IEditorInput#getName()\r
         */\r
@@ -38,7 +46,16 @@ public class ReferenceEditorInput extends BulkEditorInput implements
         * @see org.eclipse.ui.IEditorInput#getToolTipText()\r
         */\r
        public String getToolTipText() {\r
-               // TODO Auto-generated method stub\r
                return getName();\r
        }\r
+\r
+       /**\r
+        * @return\r
+        */\r
+       public static BulkEditorInput getInstance() {\r
+               if (instance == null) {\r
+                       instance = new ReferenceEditorInput();\r
+               }\r
+               return instance;\r
+       }\r
 }
\ No newline at end of file