Added rudiments of query-generated lists.
authorp.ciardelli <p.ciardelli@localhost>
Wed, 19 Aug 2009 11:42:52 +0000 (11:42 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Wed, 19 Aug 2009 11:42:52 +0000 (11:42 +0000)
14 files changed:
.gitattributes
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/BulkEditorInput.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorPersistenceService.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSearchComposite.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorQuery.java [new file with mode: 0644]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/LineSelection.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditor.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorDocumentProvider.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorReconcilingStrategy.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorSourceViewerConfiguration.java [deleted file]
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ReferenceEditorInput.java
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/NewObjectHandler.java [new file with mode: 0644]

index 5e12fef078ba938014ad908d4bcaf4de9cf9e9d6..9e617f1138880f4ed5c6b698c88b0da5644c1c54 100644 (file)
@@ -655,7 +655,9 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.
 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/IBulkEditorConstants.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorQuery.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
@@ -666,13 +668,10 @@ taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/LineAnnotat
 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/ListEditor.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorDocumentProvider.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorReconcilingStrategy.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorSourceViewerConfiguration.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/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
index 95192440eb24dcae7f1126e1ca35fc0539dc559b..b3deaec19ab645c8ef74b659c73f133c1cabd111 100644 (file)
@@ -87,9 +87,7 @@ public class AnnotatedLineEditor extends TextEditor {
                LineSelectionViewer viewer = new LineSelectionViewer(parent, ruler, getOverviewRuler(), \r
                                                isOverviewRulerVisible(), styles | SWT.WRAP);\r
                getSourceViewerDecorationSupport(viewer);\r
-               \r
-//             viewer.getTextWidget().setI\r
-               \r
+                               \r
                return viewer;\r
        }\r
 }
\ No newline at end of file
index c6497814a2d7633c9bf4f2c5587cf3c599b0cd79..e3983e23d135f1fc55f18aba10631de24eb6838d 100644 (file)
 \r
 package eu.etaxonomy.taxeditor.bulkeditor;\r
 \r
+import java.beans.PropertyChangeEvent;\r
+import java.beans.PropertyChangeListener;\r
+\r
 import org.apache.log4j.Logger;\r
 import org.eclipse.jface.text.IDocument;\r
 import org.eclipse.jface.text.source.Annotation;\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.StyledText;\r
 import org.eclipse.swt.events.MouseAdapter;\r
 import org.eclipse.swt.events.MouseEvent;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.layout.GridLayout;\r
 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
@@ -29,7 +36,7 @@ import org.eclipse.ui.PartInitException;
  * @created 07.07.2009\r
  * @version 1.0\r
  */\r
-public class BulkEditor extends AnnotatedLineEditor {\r
+public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeListener {\r
        private static final Logger logger = Logger.getLogger(BulkEditor.class);\r
 \r
        public static final String ID = "bulkeditor.editor";\r
@@ -44,7 +51,7 @@ public class BulkEditor extends AnnotatedLineEditor {
                 * see AbstractTextEditor javadoc for explanation of context menu ids\r
                 */\r
                setEditorContextMenuId("#BulkEditorContext");\r
-\r
+               \r
                setEntityCreator(new ReferenceCreator());\r
                \r
                setPersistenceService(new BulkEditorPersistenceService());\r
@@ -60,10 +67,55 @@ public class BulkEditor extends AnnotatedLineEditor {
                ISourceViewer viewer = super.createSourceViewer(parent, ruler, styles);\r
                setSourceViewerConfiguration(new AnnotatedLineEditorSourceViewerConfiguration());\r
                addToggleMergeCandidateListener(ruler.getControl());\r
-               \r
                return viewer;\r
        }\r
-\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.bulkeditor.AnnotatedLineEditor#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)\r
+        */\r
+       @Override\r
+       public void init(IEditorSite site, IEditorInput input)\r
+                       throws PartInitException {\r
+               \r
+               if (!(input instanceof BulkEditorInput)) {\r
+                       throw new PartInitException("Invalid Input: Must be BulkEditorInput");\r
+               }\r
+               \r
+               super.init(site, input);\r
+               \r
+               ((BulkEditorInput) input).addPropertyChangeListener(this);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createPartControl(org.eclipse.swt.widgets.Composite)\r
+        */\r
+       @Override\r
+       public void createPartControl(Composite parent) {\r
+               \r
+               GridLayout rowLayout = new GridLayout();\r
+               parent.setLayout(rowLayout);\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
+               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
+                       }\r
+               }\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#isEditable()\r
+        */\r
+       @Override\r
+       public boolean isEditable() {\r
+               return false;\r
+       }\r
+       \r
        /**\r
         * @param control\r
         */\r
@@ -98,4 +150,15 @@ public class BulkEditor extends AnnotatedLineEditor {
                        }\r
                }\r
        }\r
+\r
+       /* (non-Javadoc)\r
+        * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)\r
+        */\r
+       public void propertyChange(PropertyChangeEvent evt) {\r
+               if (evt.getPropertyName().equals(BulkEditorInput.QUERY_CHANGED)) {\r
+                       // TODO check if dirty, prompt save\r
+                       \r
+                       setInput(getEditorInput());\r
+               }\r
+       }\r
 }\r
index 2d4a47378975fee4e7c3b609662293774026cb6c..d56bebf75fb8bf69d55a1004a69a62ed53e20e26 100644 (file)
@@ -9,7 +9,8 @@
 */\r
 package eu.etaxonomy.taxeditor.bulkeditor;\r
 \r
-import org.apache.log4j.Logger;\r
+import java.beans.PropertyChangeSupport;\r
+\r
 import org.eclipse.jface.resource.ImageDescriptor;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IPersistableElement;\r
@@ -20,10 +21,14 @@ import org.eclipse.ui.IPersistableElement;
  * @version 1.0\r
  * @param <T>\r
  */\r
-abstract public class BulkEditorInput implements IEditorInput {\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger\r
-                       .getLogger(BulkEditorInput.class);\r
+abstract public class BulkEditorInput extends PropertyChangeSupport implements IEditorInput {\r
+\r
+       /**\r
+        * @param sourceBean\r
+        */\r
+       public BulkEditorInput(Object sourceBean) {\r
+               super(sourceBean);\r
+       }\r
 \r
        /**\r
         * See menu parameters for "taxeditor-bulkeditor.commandParameter.inputType" \r
@@ -31,13 +36,18 @@ abstract public class BulkEditorInput implements IEditorInput {
         */\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
                return null;\r
        }\r
-       \r
+\r
+       private IBulkEditorQuery query;\r
+               \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.IEditorInput#exists()\r
         */\r
@@ -68,4 +78,17 @@ abstract public class BulkEditorInput implements IEditorInput {
        public Object getAdapter(Class adapter) {\r
                return null;\r
        }\r
+\r
+       /**\r
+        * @param bulkEditorQuery\r
+        */\r
+       public void setQuery(IBulkEditorQuery bulkEditorQuery) {\r
+               this.query = bulkEditorQuery;\r
+               \r
+               firePropertyChange(QUERY_CHANGED, null, null);\r
+       }\r
+       \r
+       public IBulkEditorQuery getQuery() {\r
+               return query;\r
+       }\r
 }
\ No newline at end of file
index ed73f7ee474700a8e08c488c21812c49bf119895..a602b8b45c11884c6a769c8b529bd7e68b2e8213 100644 (file)
@@ -10,7 +10,6 @@
 \r
 package eu.etaxonomy.taxeditor.bulkeditor;\r
 \r
-import java.util.ArrayList;\r
 import java.util.List;\r
 \r
 import org.apache.log4j.Logger;\r
@@ -41,7 +40,16 @@ public class BulkEditorPersistenceService implements IEntityPersistenceService {
 //             entityList.add(creator.createEntity("Acta geobotanica hungarica Debrecen, Hungary"));\r
 //             return entityList;\r
                \r
-               return CdmStore.getReferencesByTitle("S*");\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
+               \r
+               return null;\r
        }\r
        \r
        /* (non-Javadoc)\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSearchComposite.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorSearchComposite.java
new file mode 100644 (file)
index 0000000..90049ba
--- /dev/null
@@ -0,0 +1,268 @@
+// $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 org.apache.log4j.Logger;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.FocusEvent;\r
+import org.eclipse.swt.events.FocusListener;\r
+import org.eclipse.swt.events.KeyAdapter;\r
+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.graphics.Point;\r
+import org.eclipse.swt.graphics.Rectangle;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Menu;\r
+import org.eclipse.swt.widgets.MenuItem;\r
+import org.eclipse.swt.widgets.Text;\r
+import org.eclipse.swt.widgets.ToolBar;\r
+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.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
+       \r
+       private IEditorPart editor;\r
+\r
+       /**\r
+        * @param parent\r
+        * @param style\r
+        */\r
+       public BulkEditorSearchComposite(EditorPart editor, Composite parent, int style) {\r
+               super(parent, style);\r
+               \r
+               this.editor = editor;\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
+\r
+       protected void createControl() {\r
+               \r
+               GridLayout gridLayout = new GridLayout();\r
+               gridLayout.numColumns = 3;\r
+               gridLayout.marginHeight = 0;\r
+               gridLayout.marginWidth = 12;\r
+               setLayout(gridLayout);\r
+               \r
+               text = new Text(this, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);\r
+               text.setText(defaultText);\r
+               text.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
+               \r
+               text.addFocusListener(new FocusListener() {\r
+\r
+                       public void focusGained(FocusEvent e) {\r
+                               text.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOCUS));\r
+                               text.setText("");\r
+                       }\r
+\r
+                       public void focusLost(FocusEvent e) {\r
+                               if (text.getText() == "") {\r
+                                       text.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
+                                       text.setText(defaultText);                                      \r
+                               }       \r
+                       }\r
+               });\r
+               \r
+               text.addKeyListener(new KeyAdapter() {\r
+                       /* (non-Javadoc)\r
+                        * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)\r
+                        */\r
+                       @Override\r
+                       public void keyReleased(KeyEvent e) {\r
+                               if (e.keyCode == SWT.CR) {\r
+                                       updateEditorInput();\r
+                               }\r
+                       }\r
+               });\r
+               \r
+               GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false);\r
+               text.setLayoutData(gridData);\r
+               \r
+               final ToolBar toolBar = new ToolBar(this, SWT.NULL);\r
+               \r
+               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
+       }\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
+                       // update query in IEditorInput\r
+                       IEditorInput input = editor.getEditorInput();\r
+                       if (input instanceof BulkEditorInput) {\r
+                               ((BulkEditorInput) input).setQuery(this);\r
+                       }\r
+               }\r
+       }\r
+       \r
+       class DropdownSelectionListener extends SelectionAdapter {\r
+\r
+               private Menu menu;\r
+\r
+               public DropdownSelectionListener(ToolItem dropdown) {\r
+                       menu = new Menu(dropdown.getParent().getShell());\r
+                       \r
+                       MenuItem menuItem = new MenuItem(menu, SWT.PUSH);\r
+                   menuItem.setText("Order by");                       \r
+               }\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
+               }\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
+                   } else {\r
+                       updateEditorInput();\r
+                   }\r
+               }\r
+       }\r
+       \r
+       class ConfigurationSelectionListener extends SelectionAdapter{\r
+\r
+               ITaxonServiceConfigurator configurator;\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
+                       \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
+               }\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#setSearchString()\r
+        */\r
+       public void setSearchString() {\r
+               // TODO Auto-generated method stub\r
+       }\r
+}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorQuery.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/IBulkEditorQuery.java
new file mode 100644 (file)
index 0000000..a4ce137
--- /dev/null
@@ -0,0 +1,23 @@
+// $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
+ * @author p.ciardelli\r
+ * @created 19.08.2009\r
+ * @version 1.0\r
+ */\r
+public interface IBulkEditorQuery {\r
+\r
+       String getSearchString();\r
+       \r
+       void setSearchString(); \r
+}\r
index 6a03918f22d7fab84124372357be6e0eecb46297..4078f0efa30646dc548a2794f8419fa8271115f5 100644 (file)
@@ -39,7 +39,11 @@ public class LineSelection extends TextSelection implements IStructuredSelection
         */\r
        public LineSelection(TextSelection selection, IDocument document, Object selectedObject) {\r
                super(document, selection.getOffset(), selection.getLength());\r
-               this.structuredSelection = new StructuredSelection(selectedObject);\r
+               if (selectedObject != null) {\r
+                       this.structuredSelection = new StructuredSelection(selectedObject);\r
+               } else {\r
+                       this.structuredSelection = StructuredSelection.EMPTY;\r
+               }\r
        }\r
 \r
        /* (non-Javadoc)\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditor.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditor.java
deleted file mode 100644 (file)
index d6506bd..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// $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
-package eu.etaxonomy.taxeditor.bulkeditor;\r
-\r
-import org.apache.log4j.Logger;\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.widgets.Composite;\r
-import org.eclipse.ui.IEditorInput;\r
-import org.eclipse.ui.IEditorSite;\r
-import org.eclipse.ui.PartInitException;\r
-import org.eclipse.ui.editors.text.TextEditor;\r
-\r
-/**\r
- * A list-based editor, where each line in the editor's document is associated with a domain object.\r
- * <p>\r
- * Extending classes must set:\r
- * <ul>\r
- * <li>an <code>IEntityCreator</code> to create a new domain object when the user creates a new line;\r
- * <li>an <code>IEntityPersistenceService</code> for interacting with the persistence layer; and\r
- * <li>an <code>ILineDisplayStrategy</code> for various visual manifestations of the domain object. \r
- * </ul>\r
- * \r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class ListEditor extends TextEditor {\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger\r
-                       .getLogger(ListEditor.class);\r
-       \r
-       private IEntityCreator<?> entityCreator;\r
-       private IEntityPersistenceService persistenceService;\r
-       private ILineDisplayStrategy lineDisplayStrategy;\r
-       \r
-       @Override\r
-       public void init(IEditorSite site, IEditorInput input)\r
-                       throws PartInitException {\r
-               \r
-               ListEditorDocumentProvider provider = new ListEditorDocumentProvider();\r
-               provider.setEntityCreator(entityCreator, input);\r
-               provider.setPersistenceService(persistenceService, input);\r
-               provider.setLineDisplayStrategy(lineDisplayStrategy, input);\r
-               setDocumentProvider(provider);\r
-               \r
-               super.init(site, input);\r
-       }\r
-       \r
-       /**\r
-        * @param referenceCreator\r
-        */\r
-       protected void setEntityCreator(IEntityCreator<?> entityCreator) {\r
-               this.entityCreator = entityCreator;\r
-       }\r
-       \r
-       /**\r
-        * @param bulkEditorPersistenceService\r
-        */\r
-       protected void setPersistenceService(\r
-                       IEntityPersistenceService persistenceService) {\r
-               this.persistenceService = persistenceService;   \r
-       }\r
-\r
-       /**\r
-        * @param bulkEditorLineDisplay\r
-        */\r
-       protected void setLineDisplayStrategy(\r
-                       ILineDisplayStrategy lineDisplayStrategy) {\r
-               this.lineDisplayStrategy = lineDisplayStrategy;         \r
-       }\r
-       \r
-       @Override\r
-       protected ISourceViewer createSourceViewer(Composite parent,\r
-                       IVerticalRuler ruler, int styles) {\r
-               \r
-               fAnnotationAccess= getAnnotationAccess();\r
-               fOverviewRuler= createOverviewRuler(getSharedColors()); \r
-               LineSelectionViewer viewer = new LineSelectionViewer(parent, ruler, getOverviewRuler(), \r
-                                               isOverviewRulerVisible(), styles | SWT.WRAP);\r
-               getSourceViewerDecorationSupport(viewer);\r
-               return viewer;\r
-       }\r
-}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorDocumentProvider.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorDocumentProvider.java
deleted file mode 100644 (file)
index d748819..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-// $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
-package eu.etaxonomy.taxeditor.bulkeditor;\r
-\r
-import java.util.HashMap;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.core.runtime.Assert;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.operation.IRunnableContext;\r
-import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.Position;\r
-import org.eclipse.jface.text.source.Annotation;\r
-import org.eclipse.jface.text.source.IAnnotationModel;\r
-import org.eclipse.ui.IEditorInput;\r
-import org.eclipse.ui.texteditor.AbstractDocumentProvider;\r
-\r
-/**\r
- * Using an <code>IEditorPart</code>, creates a document where each line is associated\r
- * with an entity. Mapping between document positions and entities is stored in\r
- * <code>LineAnnotation</code>s in a <code>LineAnnotationModdel</code>.  \r
- * <p>\r
- * Requires:\r
- * <ul>\r
- * <li>an <code>IEntityCreator</code> to create entities for new lines;\r
- * <li>an <code>IEntityPersistenceService</code> for interacting with the persistence layer; and\r
- * <li>an <code>ILineDisplayStrategy</code> for various visual manifestations of the domain object. \r
- * </ul> \r
- * \r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class ListEditorDocumentProvider extends AbstractDocumentProvider {\r
-\r
-       private static final Logger logger = Logger\r
-                       .getLogger(ListEditorDocumentProvider.class);\r
-       \r
-       private Map<IEditorInput, IDocument> documents = \r
-                       new HashMap<IEditorInput, IDocument>();\r
-\r
-       private Map<IEditorInput, IAnnotationModel> annotationModels = \r
-               new HashMap<IEditorInput, IAnnotationModel>();\r
-\r
-       private Map<IEditorInput, IEntityCreator<?>> entityCreators = \r
-               new HashMap<IEditorInput, IEntityCreator<?>>();\r
-\r
-       private Map<IEditorInput, IEntityPersistenceService> persistenceServices = \r
-               new HashMap<IEditorInput, IEntityPersistenceService>();\r
-\r
-       private Map<IEditorInput, ILineDisplayStrategy> lineDisplayStrategies = \r
-               new HashMap<IEditorInput, ILineDisplayStrategy>();\r
-       \r
-       \r
-       @Override\r
-       public IAnnotationModel getAnnotationModel(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       \r
-                       IEditorInput input = (IEditorInput) element;\r
-                       IAnnotationModel model = annotationModels.get((IEditorInput) element);\r
-                       \r
-                       // Create model as necessary\r
-                       if (model == null) {\r
-                               model = new LineAnnotationModel(getLineDisplayStrategy(element));\r
-                               ((LineAnnotationModel) model).setEntityCreator(getEntityCreator(element));\r
-                               annotationModels.put(input, model);\r
-                       }       \r
-                       return model;\r
-               }\r
-               \r
-               return null;\r
-       }\r
-       \r
-       @Override\r
-       protected IAnnotationModel createAnnotationModel(Object element)\r
-                       throws CoreException {\r
-               return getAnnotationModel(element);\r
-       }\r
-\r
-       @Override\r
-       public IDocument getDocument(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       return documents.get((IEditorInput) element);\r
-               }\r
-               return null;\r
-       }\r
-       \r
-       @Override\r
-       protected IDocument createDocument(Object element) throws CoreException {\r
-               \r
-               if (element instanceof IEditorInput) {\r
-                       IEditorInput input = (IEditorInput) element;\r
-                       Document document = new Document("");\r
-                       IAnnotationModel model = getAnnotationModel(element);\r
-                                       \r
-                       String text = "";\r
-                       String line;\r
-                       for (Object entity : getEntityList(element)) {\r
-                               \r
-                               Annotation annotation = new LineAnnotation(entity, getLineDisplayStrategy(element));\r
-                               \r
-                               line = annotation.getText()     + document.getDefaultLineDelimiter();\r
-                               Position position = new Position(text.length(), line.length());\r
-                               model.addAnnotation(annotation, position);\r
-                               logger.info("Adding annotation " + entity);\r
-                               document.set(document.get() + line);\r
-                               \r
-                               text += line;\r
-                       }\r
-                       documents.put(input, document);\r
-                       if (model instanceof LineAnnotationModel) {\r
-                               ((LineAnnotationModel) model).printAnnotations();\r
-                       }\r
-                       return document;\r
-               }\r
-               return null;\r
-       }\r
-\r
-       /**\r
-        * @param element \r
-        * @return\r
-        */\r
-       private List<?> getEntityList(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       return getPersistenceService(element).getEntityList(element);\r
-               }\r
-               return null;\r
-       }\r
-\r
-       @Override\r
-       protected void doSaveDocument(IProgressMonitor monitor, Object element,\r
-                       IDocument document, boolean overwrite) throws CoreException {\r
-               if (element instanceof IEditorInput) {\r
-                       \r
-                       IEntityPersistenceService persistenceService = getPersistenceService(element);\r
-                       \r
-                       // Get new containers from annotation model\r
-                       LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(element);\r
-                       Iterator iterator = model.getAnnotationIterator();\r
-                       while (iterator.hasNext()) {\r
-                               Annotation annotation = (Annotation) iterator.next();\r
-                               if (annotation instanceof IEntityContainer<?>) {\r
-                                       IEntityContainer<?> container = (IEntityContainer<?>) annotation;\r
-                                       if (container.isMarkedAsNew() || container.isDirty()) {\r
-                                               persistenceService.save(container.getEntity(), element);\r
-                                               container.setDirty(false);\r
-                                               container.markAsNew(false);\r
-                                       }\r
-                               }\r
-                       }\r
-                       for (LineAnnotation annotation : model.getDeletedAnnotations()) {\r
-                               if (annotation.isMarkedAsNew()) {\r
-                                       continue;\r
-                               }\r
-                               if (annotation.isMarkedAsMerged()) {\r
-                                       persistenceService.merge(annotation.getEntity(), annotation.getMergeTarget(), element);                                 \r
-                               }\r
-                               persistenceService.delete(annotation.getEntity(), element);\r
-                       }\r
-                       model.clearDeletedAnnotations();\r
-               }\r
-       }\r
-\r
-       @Override\r
-       protected IRunnableContext getOperationRunner(IProgressMonitor monitor) {\r
-               return null;\r
-       }\r
-       \r
-       @Override\r
-       public boolean isModifiable(Object element) {\r
-               return true;\r
-       }\r
-       \r
-       @Override\r
-       public boolean isReadOnly(Object element) {\r
-               // enables copy & paste\r
-               return false;\r
-       }\r
-\r
-       /**\r
-        * @param entityCreator\r
-        * @param element\r
-        */\r
-       public void setEntityCreator(IEntityCreator<?> entityCreator, Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       entityCreators.put((IEditorInput) element, entityCreator);\r
-               }\r
-       }\r
-       \r
-       /**\r
-        * @param element\r
-        * @return\r
-        */\r
-       public IEntityCreator<?> getEntityCreator(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       IEntityCreator<?> entityCreator = entityCreators.get(element);\r
-                       Assert.isNotNull(entityCreator, "No IEntityCreator set for this element.");\r
-                       return entityCreator;\r
-               }\r
-               return null;\r
-       }\r
-\r
-       /**\r
-        * @param persistenceService\r
-        * @param input\r
-        */\r
-       public void setPersistenceService(\r
-                       IEntityPersistenceService persistenceService, Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       persistenceServices.put((IEditorInput) element, persistenceService);\r
-               }\r
-       }\r
-       \r
-       public IEntityPersistenceService getPersistenceService(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       IEntityPersistenceService persistenceService = persistenceServices.get((IEditorInput) element);\r
-                       Assert.isNotNull(persistenceService, "No IEntityPersistenceService set for this element.");\r
-                       return persistenceService;\r
-               }\r
-               return null;\r
-       }\r
-\r
-       /**\r
-        * @param lineDisplayStrategy\r
-        * @param input\r
-        */\r
-       public void setLineDisplayStrategy(\r
-                       ILineDisplayStrategy lineDisplayStrategy, Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       lineDisplayStrategies.put((IEditorInput) element, lineDisplayStrategy);\r
-               }       \r
-       }\r
-       \r
-       /**\r
-        * @param element\r
-        * @return\r
-        */\r
-       private ILineDisplayStrategy getLineDisplayStrategy(Object element) {\r
-               if (element instanceof IEditorInput) {\r
-                       ILineDisplayStrategy lineDisplayStrategy = lineDisplayStrategies.get((IEditorInput) element);\r
-                       Assert.isNotNull(lineDisplayStrategy, "No ILineDisplayStrategy set for this element.");\r
-                       return lineDisplayStrategy;\r
-               }\r
-               return null;\r
-       }\r
-}
\ No newline at end of file
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorReconcilingStrategy.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorReconcilingStrategy.java
deleted file mode 100644 (file)
index 87a65f4..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-// $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
-package eu.etaxonomy.taxeditor.bulkeditor;\r
-\r
-import java.util.List;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.jface.text.BadLocationException;\r
-import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.IRegion;\r
-import org.eclipse.jface.text.Position;\r
-import org.eclipse.jface.text.reconciler.DirtyRegion;\r
-import org.eclipse.jface.text.reconciler.IReconcilingStrategy;\r
-import org.eclipse.jface.text.source.Annotation;\r
-import org.eclipse.jface.text.source.IAnnotationModel;\r
-import org.eclipse.jface.text.source.ISourceViewer;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class ListEditorReconcilingStrategy implements IReconcilingStrategy {\r
-       private static final Logger logger = Logger\r
-                       .getLogger(ListEditorReconcilingStrategy.class);\r
-\r
-       private IDocument document;\r
-       private ISourceViewer viewer;\r
-\r
-       public ListEditorReconcilingStrategy(ISourceViewer sourceViewer) {\r
-               this.viewer = sourceViewer;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#reconcile(org.eclipse.jface.text.IRegion)\r
-        */\r
-       public void reconcile(IRegion partition) {\r
-               // not used\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#reconcile(org.eclipse.jface.text.reconciler.DirtyRegion, org.eclipse.jface.text.IRegion)\r
-        */\r
-       public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {\r
-               try {\r
-                       doReconcile(dirtyRegion);\r
-               } catch (BadLocationException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-       \r
-       synchronized private void doReconcile(DirtyRegion dirtyRegion) throws BadLocationException {\r
-               // Get all affected lines\r
-               int dirtyOffset = dirtyRegion.getOffset();\r
-               int dirtyLength = dirtyRegion.getLength();\r
-               \r
-               int lineChangeStart = document.getLineOfOffset(dirtyOffset);\r
-               int lineChangeEnd;\r
-               if (DirtyRegion.INSERT.equals(dirtyRegion.getType())) {\r
-                       lineChangeEnd = document.getLineOfOffset(dirtyOffset + dirtyLength);\r
-               } else {\r
-                       lineChangeEnd = lineChangeStart;\r
-               }\r
-               \r
-               for (int i = lineChangeStart; i <= lineChangeEnd; i++) {\r
-                       int lineOffset = document.getLineOffset(i);\r
-                       int lineLength = document.getLineLength(i);\r
-                       IRegion lineRegion = document.getLineInformation(i);\r
-                       String lineText = document.get(lineRegion.getOffset(), lineRegion.getLength());\r
-                       \r
-                       List<LineAnnotation> annotationsCurrentLine = \r
-                                       ((LineAnnotationModel) getAnnotationModel()).getUndeletedAnnotations(lineOffset, lineLength);\r
-                       \r
-                       if (annotationsCurrentLine.size() == 0) {\r
-                               logger.debug("Adding new annotation " + lineText);\r
-                               addAnnotation(lineText, lineRegion);\r
-                       } else {\r
-                               LineAnnotation currentAnnotation = annotationsCurrentLine.get(0);\r
-                               int length = lineLength;\r
-                               getAnnotationModel().getPosition(currentAnnotation).setLength(length);\r
-                               currentAnnotation.setText(lineText);\r
-                               \r
-                               for (int j = 1; j < annotationsCurrentLine.size(); j++) {\r
-                                       annotationsCurrentLine.get(j).markAsMerged(currentAnnotation.getEntity());\r
-                                       getAnnotationModel().removeAnnotation(annotationsCurrentLine.get(j));\r
-                               }\r
-                       }\r
-               }\r
-               \r
-               // Deletes have already taken place\r
-               \r
-               ((LineAnnotationModel) getAnnotationModel()).printAnnotations();\r
-       }\r
-               \r
-       private void addAnnotation(String text, IRegion region) {\r
-               Position position = new Position(region.getOffset(), region.getLength());\r
-               Annotation annotation = ((LineAnnotationModel) getAnnotationModel()).createAnnotation(text);\r
-               getAnnotationModel().addAnnotation(annotation, position);\r
-               \r
-//             Position position2 = new Position(region.getOffset() + 1, region.getLength() - 2);\r
-//             Annotation annotation2 = new Annotation("org.eclipse.ui.workbench.texteditor.error",true,"asdf");\r
-//             getAnnotationModel().addAnnotation(annotation2, position2);\r
-       }\r
-\r
-       private IAnnotationModel getAnnotationModel() {\r
-               return viewer.getAnnotationModel();\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#setDocument(org.eclipse.jface.text.IDocument)\r
-        */\r
-       public void setDocument(IDocument document) {\r
-               this.document = document;               \r
-       }\r
-}\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorSourceViewerConfiguration.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/ListEditorSourceViewerConfiguration.java
deleted file mode 100644 (file)
index 6663f04..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-// $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
-package eu.etaxonomy.taxeditor.bulkeditor;\r
-\r
-import java.util.Iterator;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.jface.text.DefaultInformationControl;\r
-import org.eclipse.jface.text.DefaultTextHover;\r
-import org.eclipse.jface.text.IInformationControl;\r
-import org.eclipse.jface.text.IInformationControlCreator;\r
-import org.eclipse.jface.text.IRegion;\r
-import org.eclipse.jface.text.ITextHover;\r
-import org.eclipse.jface.text.ITextHoverExtension;\r
-import org.eclipse.jface.text.ITextViewer;\r
-import org.eclipse.jface.text.Position;\r
-import org.eclipse.jface.text.reconciler.IReconciler;\r
-import org.eclipse.jface.text.reconciler.IReconcilingStrategy;\r
-import org.eclipse.jface.text.reconciler.MonoReconciler;\r
-import org.eclipse.jface.text.source.Annotation;\r
-import org.eclipse.jface.text.source.IAnnotationModel;\r
-import org.eclipse.jface.text.source.ISourceViewer;\r
-import org.eclipse.jface.text.source.SourceViewerConfiguration;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.eclipse.ui.editors.text.EditorsUI;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class ListEditorSourceViewerConfiguration extends\r
-               SourceViewerConfiguration {\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger.getLogger(ListEditorSourceViewerConfiguration.class);\r
-       \r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getReconciler(org.eclipse.jface.text.source.ISourceViewer)\r
-        */\r
-       public IReconciler getReconciler(ISourceViewer sourceViewer) {\r
-               \r
-               IReconcilingStrategy strategy = new ListEditorReconcilingStrategy(sourceViewer);\r
-               IReconciler reconciler = new MonoReconciler(strategy, true);\r
-\r
-               return reconciler;\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getTextHover(org.eclipse.jface.text.source.ISourceViewer, java.lang.String, int)\r
-        */\r
-       @Override\r
-       public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {\r
-               /**\r
-                * http://dev.eclipse.org/newslists/news.eclipse.platform/msg76821.html\r
-                * \r
-                * The Javadoc hover is shown in a Browser widget\r
-                */\r
-               return new TextHover(sourceViewer);\r
-       }\r
-       \r
-       private final class TextHover extends DefaultTextHover implements ITextHoverExtension {\r
-\r
-               private ISourceViewer sourceViewer;\r
-\r
-               public TextHover(ISourceViewer sourceViewer) {\r
-                       super(sourceViewer);\r
-                       \r
-                       this.sourceViewer = sourceViewer;\r
-               }\r
-               \r
-               /* (non-Javadoc)\r
-                * @see org.eclipse.jface.text.DefaultTextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)\r
-                */\r
-               @Override\r
-               public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {\r
-                       \r
-                       IAnnotationModel model= sourceViewer.getAnnotationModel();\r
-                       Iterator e= model.getAnnotationIterator();\r
-                       while (e.hasNext()) {\r
-                               Annotation annotation= (Annotation) e.next();\r
-                               if (isIncluded(annotation)) {\r
-                                       Position p= model.getPosition(annotation);\r
-                                       if (p != null && p.overlapsWith(hoverRegion.getOffset(), hoverRegion.getLength())) {\r
-                                               return ((LineAnnotation) annotation).getHoverText();\r
-                                       }\r
-                               }\r
-                       }\r
-                       return null;\r
-               }\r
-               \r
-               /* (non-Javadoc)\r
-                * @see org.eclipse.jface.text.ITextHoverExtension#getHoverControlCreator()\r
-                */\r
-               public IInformationControlCreator getHoverControlCreator() {\r
-                       return new IInformationControlCreator() {\r
-                               public IInformationControl createInformationControl(Shell parent) {\r
-                                       return new DefaultInformationControl(parent, EditorsUI.getTooltipAffordanceString());\r
-                               }\r
-                       };\r
-               }\r
-       }\r
-}
\ No newline at end of file
index bc157fb9a7a108d3a211cfc179f0475e12aea472..5db79bccb4db4ba170b73c43bdfa02189a41580e 100644 (file)
@@ -9,7 +9,6 @@
 */\r
 package eu.etaxonomy.taxeditor.bulkeditor;\r
 \r
-import org.apache.log4j.Logger;\r
 import org.eclipse.ui.IEditorInput;\r
 \r
 /**\r
@@ -19,10 +18,14 @@ import org.eclipse.ui.IEditorInput;
  */\r
 public class ReferenceEditorInput extends BulkEditorInput implements\r
                IEditorInput {\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger\r
-                       .getLogger(ReferenceEditorInput.class);\r
 \r
+       /**\r
+        * @param sourceBean\r
+        */\r
+       public ReferenceEditorInput() {\r
+               super(new Object());\r
+               // TODO Auto-generated constructor stub\r
+       }\r
 \r
        /* (non-Javadoc)\r
         * @see org.eclipse.ui.IEditorInput#getName()\r
diff --git a/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/NewObjectHandler.java b/taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/NewObjectHandler.java
new file mode 100644 (file)
index 0000000..b250832
--- /dev/null
@@ -0,0 +1,53 @@
+// $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.handler;\r
+\r
+import org.apache.log4j.Logger;\r
+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
+/**\r
+ * @author p.ciardelli\r
+ * @created 14.08.2009\r
+ * @version 1.0\r
+ */\r
+public class NewObjectHandler extends AbstractHandler {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(NewObjectHandler.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+        */\r
+       public Object execute(ExecutionEvent event) throws ExecutionException {\r
+               \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
+               }\r
+               return null;\r
+       }\r
+}\r