taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/IdentifiableEntityComparator.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineAnnotation.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineAnnotationModel.java -text
-taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelection.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelectionSource.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/LineSelectionViewer.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/SupplementalTextScanner.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorEntityCreatorService.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorLineDisplay.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorMarkerPreferenceComposite.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/BulkEditorUtil.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorViewerConfiguration.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/handler/SetMergeCandidateHandler.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/AbstractBulkEditorInput.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.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
Bundle-ManifestVersion: 2
Bundle-Name: EDIT Taxonomic Editor - Bulk Editor Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
-Bundle-Version: 2.1.1.qualifier
+Bundle-Version: 2.1.0.qualifier
Bundle-ClassPath: .
Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
Bundle-Vendor: EDIT
Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,eu.etaxonomy.taxeditor.annotatedlineeditor.handler,eu.etaxonomy.taxeditor.bulkeditor,eu.etaxonomy.taxeditor.bulkeditor.command,eu.etaxonomy.taxeditor.bulkeditor.handler,eu.etaxonomy.taxeditor.bulkeditor.input,eu.etaxonomy.taxeditor.bulkeditor.internal,eu.etaxonomy.taxeditor.bulkeditor.referencingobjects
Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.ui.editors;bundle-version="3.5.0",
org.eclipse.core.expressions,
eu.etaxonomy.cdmlib;bundle-version="2.3.0",
- eu.etaxonomy.taxeditor.editor;bundle-version="2.1.0",
eu.etaxonomy.taxeditor.store;bundle-version="2.1.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
</menuContribution>\r
<menuContribution\r
locationURI="popup:#BulkEditorContext">\r
- <menu\r
- label="New">\r
- <dynamic\r
- class="eu.etaxonomy.taxeditor.bulkeditor.command.DynamicNewObjectMenu"\r
- id="taxeditor-bulkeditor.dynamicNewObjectMenu">\r
- </dynamic>\r
- </menu>\r
+ <command\r
+ commandId="taxeditor-bulkeditor.dynamicnewobjectcommand"\r
+ label="New"\r
+ style="push">\r
+ </command>\r
<separator\r
name="taxeditor-bulkeditor.separator1"\r
visible="true">\r
label="Show Referencing Objects"\r
style="push">\r
</command>\r
+ <command\r
+ commandId="eu.etaxonomy.taxeditor.editor.commands.showDetailsView"\r
+ label="Show Details"\r
+ style="push">\r
+ </command>\r
<separator\r
- name="taxeditor-bulkeditor.separator2"\r
+ name="taxeditor-bulkeditor.separator3"\r
visible="true">\r
</separator>\r
</menuContribution>\r
id="bulkeditor.commands.removemergecandidate"\r
name="Remove as Candidate for Group Merge">\r
</command>\r
+ <command\r
+ defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.NewEntityHandler"\r
+ id="eu.etaxonomy.taxeditor.bulkeditor.command.new"\r
+ name="New Entity">\r
+ </command>\r
</extension>\r
<extension\r
point="org.eclipse.ui.editors.markerAnnotationSpecification">\r
point="org.eclipse.ui.views">\r
<view\r
class="eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsView"\r
- id="taxeditor-bulkeditor.referencingobjectsview"\r
+ id="eu.etaxonomy.taxeditor.bulkeditor.referencingobjectsview"\r
name="Referencing Objects"\r
restorable="false">\r
</view>\r
<extension\r
point="org.eclipse.ui.perspectiveExtensions">\r
<perspectiveExtension\r
- targetID="eu.etaxonomy.taxeditor.application.perspective">\r
+ targetID="bulkeditor.perspective">\r
+ <view\r
+ closeable="true"\r
+ id="eu.etaxonomy.taxeditor.editor.forms.detailsView"\r
+ minimized="false"\r
+ moveable="true"\r
+ ratio="0.8"\r
+ relationship="right"\r
+ relative="org.eclipse.ui.editorss"\r
+ showTitle="true"\r
+ standalone="false"\r
+ visible="true">\r
+ </view>\r
<view\r
- id="eu.etaxonomy.taxeditor.store.datasource.datasourceView"\r
+ closeable="true"\r
+ id="eu.etaxonomy.taxeditor.bulkeditor.referencingobjectsview"\r
minimized="false"\r
+ moveable="true"\r
ratio="0.8"\r
- relationship="bottom"\r
+ relationship="stack"\r
relative="org.eclipse.ui.editorss"\r
- visible="false">\r
+ showTitle="true"\r
+ visible="true">\r
</view>\r
</perspectiveExtension>\r
</extension>\r
</with>\r
</activeWhen>\r
</handler>\r
- </extension>\r
+ </extension>
<!-- start set marker -->\r
-
+\r
</plugin>\r
*/\r
package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
\r
-import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.Iterator;\r
import java.util.List;\r
import org.eclipse.jface.text.BadLocationException;\r
import org.eclipse.jface.text.Document;\r
import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.IDocumentPartitioner;\r
-import org.eclipse.jface.text.IRegion;\r
-import org.eclipse.jface.text.ITypedRegion;\r
import org.eclipse.jface.text.Position;\r
-import org.eclipse.jface.text.TypedRegion;\r
-import org.eclipse.jface.text.rules.FastPartitioner;\r
-import org.eclipse.jface.text.rules.IPartitionTokenScanner;\r
-import org.eclipse.jface.text.rules.IToken;\r
-import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;\r
-import org.eclipse.jface.text.rules.Token;\r
import org.eclipse.jface.text.source.Annotation;\r
import org.eclipse.jface.text.source.IAnnotationModel;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.StyleRange;\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.texteditor.AbstractDocumentProvider;\r
\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
+\r
\r
\r
/**\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
+ \r
private Map<IEditorInput, ILineDisplayStrategy> lineDisplayStrategies = \r
new HashMap<IEditorInput, ILineDisplayStrategy>();\r
\r
IAnnotationModel model = getAnnotationModel(element);\r
documents.put(input, document);\r
\r
- for (Object entity : getEntityList(element)) {\r
- try {\r
- createAnnotatedLine(input, entity);\r
- } catch (BadLocationException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- } \r
+ List<?> entityList = getEntityList(element);\r
+ \r
+ if(entityList != null){\r
+ for (Object entity : entityList) {\r
+ try {\r
+ createAnnotatedLine(input, entity);\r
+ } catch (BadLocationException e) {\r
+ logger.error("Problems creating annotated line: ", e);\r
+ }\r
+ } \r
+ }\r
\r
return document;\r
}\r
}\r
document.replace(offset, lineLength, text);\r
} catch (BadLocationException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
+ logger.error("Problem updating annotated line: " ,e);\r
}\r
}\r
\r
* @return\r
*/\r
private List<?> getEntityList(Object element) {\r
- if (element instanceof IEditorInput) {\r
- return getPersistenceService(element).getEntityList(element);\r
+ if (element instanceof AbstractBulkEditorInput) {\r
+ return ((AbstractBulkEditorInput)element).listEntities();\r
}\r
return null;\r
}\r
@Override\r
protected void doSaveDocument(IProgressMonitor monitor, Object element,\r
IDocument document, boolean overwrite) throws CoreException {\r
- if (element instanceof IEditorInput) {\r
+ if (element instanceof AbstractBulkEditorInput) {\r
\r
- IEntityPersistenceService persistenceService = getPersistenceService(element);\r
+ IEntityPersistenceService persistenceService = (AbstractBulkEditorInput) element;\r
\r
// Get new containers from annotation model\r
LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(element);\r
if (annotation instanceof IEntityContainer<?>) {\r
IEntityContainer<?> container = (IEntityContainer<?>) annotation;\r
if (container.isMarkedAsNew() || container.isDirty()) {\r
- persistenceService.save(container.getEntity(), element); // save\r
+ persistenceService.save(container.getEntity()); // save\r
container.setDirty(false);\r
container.markAsNew(false);\r
}\r
continue;\r
}\r
if (annotation.isMarkedAsMerged()) {\r
- persistenceService.merge(annotation.getEntity(), annotation.getMergeTarget(), element); // merge \r
+ persistenceService.merge(annotation.getEntity(), annotation.getMergeTarget()); // merge \r
} else {\r
// TODO clarify w AM whether this needs to be executed on merged objects\r
- persistenceService.delete(annotation.getEntity(), element); // delete\r
+ persistenceService.delete(annotation.getEntity()); // delete\r
}\r
}\r
model.clearDeletedAnnotations();\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
length += 2;\r
}\r
} catch (BadLocationException e1) {\r
- // TODO Auto-generated catch block\r
- e1.printStackTrace();\r
+ logger.error("Problems removing annotated line", e1);\r
}\r
\r
try {\r
document.replace(offset, length, "");\r
} catch (BadLocationException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
+ logger.error("Problems removing annotated line", e);\r
}\r
} \r
}\r
} else {\r
provider.setEntityCreator(entityCreator, input);\r
}\r
- provider.setPersistenceService(persistenceService, input);\r
provider.setLineDisplayStrategy(lineDisplayStrategy, input);\r
setDocumentProvider(provider);\r
\r
package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
\r
import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.Collections;\r
import java.util.List;\r
\r
import org.apache.log4j.Logger;\r
*/\r
public interface IEntityPersistenceService {\r
\r
- List<?> getEntityList(Object element);\r
+ List<?> listEntities(); \r
\r
- boolean create(Object entity, Object element);\r
+ boolean create(Object entity);\r
\r
- boolean save(Object entity, Object element);\r
+ boolean save(Object entity);\r
\r
- boolean merge(Object entity, Object mergeTarget, Object element);\r
+ boolean merge(Object entity, Object mergeTarget);\r
\r
- boolean delete(Object entity, Object element);\r
+ boolean delete(Object entity);\r
}\r
\r
void setText(String text, Object entity);\r
\r
+ @Deprecated\r
Object getPropertySource(Object entity);\r
\r
String getHoverText(Object entity);\r
/**\r
* @return\r
*/\r
+ @Deprecated\r
public Object getPropertySource() {\r
return lineDisplayStrategy.getPropertySource(entity);\r
}\r
+++ /dev/null
-// $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.annotatedlineeditor;\r
-\r
-import java.util.Iterator;\r
-import java.util.List;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.jface.text.IDocument;\r
-import org.eclipse.jface.text.TextSelection;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.jface.viewers.StructuredSelection;\r
-\r
-/**\r
- * Extending <code>TextSelection</code> allows us to keep using Eclipse's text selection, while\r
- * <code>IStructuredSelection</code> can be used to send an object associated with the selection,\r
- * i.e. a property source, to the workbench selection service.\r
- * \r
- * @author p.ciardelli\r
- * @created 03.07.2009\r
- * @version 1.0\r
- */\r
-public class LineSelection extends TextSelection implements IStructuredSelection {\r
- @SuppressWarnings("unused")\r
- private static final Logger logger = Logger.getLogger(LineSelection.class);\r
-\r
- private StructuredSelection structuredSelection;\r
- \r
- /**\r
- * \r
- */\r
- public LineSelection(TextSelection selection, IDocument document, Object selectedObject) {\r
- super(document, selection.getOffset(), selection.getLength());\r
- if (selectedObject != null) {\r
- this.structuredSelection = new StructuredSelection(selectedObject);\r
- } else {\r
- this.structuredSelection = StructuredSelection.EMPTY;\r
- }\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IStructuredSelection#getFirstElement()\r
- */\r
- public Object getFirstElement() {\r
- return structuredSelection.getFirstElement();\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IStructuredSelection#iterator()\r
- */\r
- public Iterator<?> iterator() {\r
- return structuredSelection.iterator();\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IStructuredSelection#size()\r
- */\r
- public int size() {\r
- return structuredSelection.size();\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IStructuredSelection#toArray()\r
- */\r
- public Object[] toArray() {\r
- return structuredSelection.toArray();\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.viewers.IStructuredSelection#toList()\r
- */\r
- public List<?> toList() {\r
- return structuredSelection.toList();\r
- }\r
-}\r
Annotation annotation = ((LineAnnotationModel) model).\r
getAnnotationAtLine(line, viewer.getDocument());\r
if (annotation != null) { \r
- return ((LineAnnotation) annotation).getPropertySource();\r
+ return ((LineAnnotation) annotation).getEntity();//getPropertySource();\r
}\r
}\r
return null;\r
package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.jface.text.IRegion;\r
+import org.eclipse.jface.text.ITextSelection;\r
+import org.eclipse.jface.text.Region;\r
import org.eclipse.jface.text.TextSelection;\r
import org.eclipse.jface.text.source.IOverviewRuler;\r
import org.eclipse.jface.text.source.IVerticalRuler;\r
import org.eclipse.jface.text.source.SourceViewer;\r
import org.eclipse.jface.viewers.ISelection;\r
import org.eclipse.jface.viewers.SelectionChangedEvent;\r
-import org.eclipse.swt.events.KeyAdapter;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.MouseAdapter;\r
-import org.eclipse.swt.events.MouseEvent;\r
import org.eclipse.swt.widgets.Composite;\r
\r
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
+\r
/**\r
* Notifies selection service every time the user changes focus to a new line.\r
* \r
int styles) {\r
super(parent, verticalRuler, overviewRuler, showAnnotationsOverview, styles);\r
\r
- createLineChangeListeners();\r
+// createLineChangeListeners();\r
setLineSelectionSource(new LineSelectionSource(this));\r
}\r
\r
public void setLineSelectionSource(ILineSelectionSource lineSelectionSource) {\r
this.lineSelectionSource = lineSelectionSource;\r
}\r
- \r
- /**\r
- * \r
- */\r
- private void createLineChangeListeners() {\r
- getTextWidget().addKeyListener(new KeyAdapter() {\r
- @Override\r
- public void keyReleased(KeyEvent e) {\r
- checkLineChange();\r
- }\r
- });\r
- getTextWidget().addMouseListener(new MouseAdapter() {\r
- @Override\r
- public void mouseUp(MouseEvent e) {\r
- checkLineChange(); \r
- }\r
- });\r
- }\r
\r
- /**\r
- * If the user has put the cursor on a new line, change the selection\r
- */\r
- private void checkLineChange() {\r
- ISelection selection = getSelection();\r
- if (selection instanceof TextSelection) {\r
- int line = ((TextSelection) selection).getStartLine();\r
- if (line != lastLine) { \r
- fireLineSelection();\r
- lastLine = line;\r
- }\r
- }\r
- }\r
\r
- /**\r
- * \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.text.TextViewer#firePostSelectionChanged(int, int)\r
*/\r
- private void fireLineSelection() {\r
- if (lineSelectionSource == null) {\r
- return;\r
- }\r
- ISelection selection = getSelection();\r
- if (selection instanceof TextSelection) {\r
- selection = createLineSelection((TextSelection) selection);\r
- SelectionChangedEvent event= new SelectionChangedEvent(this, selection);\r
+ @Override\r
+ protected void firePostSelectionChanged(int offset, int length) {\r
+ if (redraws()) {\r
+ IRegion r= widgetRange2ModelRange(new Region(offset, length));\r
+ ITextSelection textSelection= r != null ? new TextSelection(getDocument(), r.getOffset(), r.getLength()) : TextSelection.emptySelection();\r
+ LineSelection lineSelection = createLineSelection(textSelection);\r
+ SelectionChangedEvent event= new SelectionChangedEvent(this, lineSelection);\r
fireSelectionChanged(event);\r
}\r
}\r
\r
- private LineSelection createLineSelection(TextSelection textSelection) {\r
- if (textSelection instanceof LineSelection) {\r
+ /**\r
+ * Creates a new instance of a LineSelection based on a given ITextSelection\r
+ * \r
+ * @param textSelection\r
+ * @return\r
+ */\r
+ private LineSelection createLineSelection(ITextSelection textSelection) {\r
+ if (textSelection instanceof LineSelection ) {\r
return (LineSelection) textSelection;\r
}\r
int line = textSelection.getStartLine();\r
\r
IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
IEditorInput input = editor.getEditorInput();\r
+ \r
if (editor instanceof AnnotatedLineEditor) {\r
\r
Object key = ((Event)event.getTrigger()).data;\r
import java.util.Iterator;\r
\r
import org.apache.log4j.Logger;\r
-import org.eclipse.jface.action.IMenuManager;\r
-import org.eclipse.jface.action.IStatusLineManager;\r
-import org.eclipse.jface.action.IToolBarManager;\r
import org.eclipse.jface.dialogs.MessageDialog;\r
import org.eclipse.jface.dialogs.MessageDialogWithToggle;\r
import org.eclipse.jface.preference.IPreferenceStore;\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.IEditorSite;\r
import org.eclipse.ui.PartInitException;\r
-import org.eclipse.ui.PlatformUI;\r
import org.eclipse.ui.texteditor.IDocumentProvider;\r
-import org.eclipse.ui.views.properties.IPropertySheetEntry;\r
-import org.eclipse.ui.views.properties.IPropertySheetPage;\r
-import org.eclipse.ui.views.properties.PropertySheetPage;\r
-import org.eclipse.ui.views.properties.PropertySheetSorter;\r
\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
-import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
+import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
* @created 07.07.2009\r
* @version 1.0\r
*/\r
-public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeListener {\r
+public class BulkEditor extends AnnotatedLineEditor implements PropertyChangeListener, IPartContentHasDetails{\r
private static final Logger logger = Logger.getLogger(BulkEditor.class);\r
\r
public static final String ID = "bulkeditor.editor";\r
private BulkEditorSearchComposite searchBar = null;\r
\r
private IPropertyChangeListener markerPreferenceListener;\r
- \r
+\r
/**\r
* \r
*/\r
public BulkEditor() {\r
- super(CdmStore.NewTransactionalConversation());\r
+ super(CdmStore.createConversation());\r
}\r
\r
/* (non-Javadoc)\r
\r
setEntityCreatorService(new BulkEditorEntityCreatorService());\r
\r
- setPersistenceService(new BulkEditorPersistenceService());\r
- \r
setLineDisplayStrategy(new BulkEditorLineDisplay(this));\r
\r
setSourceViewerConfiguration(new BulkEditorViewerConfiguration(lineDisplayStrategy));\r
protected ISourceViewer createSourceViewer(Composite parent,\r
IVerticalRuler ruler, int styles) {\r
ISourceViewer viewer = super.createSourceViewer(parent, ruler, styles);\r
- if (((BulkEditorInput) getEditorInput()).isMergingEnabled()) {\r
+ if (((AbstractBulkEditorInput) getEditorInput()).isMergingEnabled()) {\r
addToggleMergeCandidateListener(ruler.getControl());\r
}\r
return viewer;\r
public void init(IEditorSite site, IEditorInput input)\r
throws PartInitException {\r
\r
- if (!(input instanceof BulkEditorInput)) {\r
+ if (!(input instanceof AbstractBulkEditorInput)) {\r
throw new PartInitException("Invalid Input: Must be BulkEditorInput");\r
}\r
\r
super.init(site, input);\r
\r
- ((BulkEditorInput) input).addPropertyChangeListener(this);\r
+ ((AbstractBulkEditorInput) input).addPropertyChangeListener(this);\r
}\r
\r
/* (non-Javadoc)\r
@Override\r
public void createPartControl(Composite parent) {\r
\r
- GridLayout gridLayout = new GridLayout();\r
- parent.setLayout(gridLayout);\r
+ parent.setLayout(new GridLayout());\r
\r
- searchBar = new BulkEditorSearchComposite(this, parent, SWT.NONE);\r
- searchBar.getParent().setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));\r
+ Composite layoutComposite = new Composite(parent, SWT.TOP);\r
+ layoutComposite.setLayout(new GridLayout());\r
+ \r
+ searchBar = new BulkEditorSearchComposite(this, layoutComposite, SWT.NONE);\r
+ layoutComposite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));\r
\r
if (isEditableMarkerTypes()) {\r
- createMarkerEditing(parent);\r
+ // TODO this will be obsolete\r
+// createMarkerEditing(layoutComposite);\r
}\r
\r
+ searchBar.setEnabled(! getEditorInput().isSingleEntityMode());\r
+ \r
super.createPartControl(parent);\r
\r
- // Set viewer composite to fill grid\r
+ // Set viewer composite to fill grid. Unfortunately it is private and we have to do a little hack here.\r
for (Control control : parent.getChildren()) {\r
if (control instanceof Composite && \r
- !(control instanceof BulkEditorSearchComposite || control instanceof BulkEditorMarkerPreferenceComposite)) {\r
+ !(control.equals(layoutComposite))) {\r
control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
}\r
}\r
*/\r
private void createMarkerEditing(Composite parent) {\r
final BulkEditorMarkerPreferenceComposite markerPreferenceBar = \r
- new BulkEditorMarkerPreferenceComposite((BulkEditorInput) getEditorInput(), parent, SWT.NONE);\r
+ new BulkEditorMarkerPreferenceComposite((AbstractBulkEditorInput) getEditorInput(), parent, SWT.NONE);\r
markerPreferenceListener = new IPropertyChangeListener() {\r
public void propertyChange(\r
org.eclipse.jface.util.PropertyChangeEvent event) {\r
*/\r
private boolean isEditableMarkerTypes() { \r
for (MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
- if (((BulkEditorInput) getEditorInput()).isMarkerTypeEditingEnabled(markerType)) {\r
+ if (((AbstractBulkEditorInput) getEditorInput()).isMarkerTypeEditingEnabled(markerType)) {\r
return true;\r
}\r
}\r
}\r
}\r
\r
+ public void changed(Object element) {\r
+// this.dirty = dirty;\r
+ AnnotatedLineDocumentProvider p = (AnnotatedLineDocumentProvider) getDocumentProvider();\r
+ p.changed(getEditorInput());\r
+ firePropertyChange(PROP_DIRTY);\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
+ if (evt.getPropertyName().equals(AbstractBulkEditorInput.QUERY_CHANGED)) {\r
\r
// TODO check if dirty, prompt save\r
if (isDirty()) {\r
setInput(getEditorInput());\r
}\r
}\r
- \r
- @SuppressWarnings("unchecked")\r
- public Object getAdapter(Class type) {\r
- if (type == IPropertySheetPage.class) {\r
- PropertySheetPage page = new EditorPropertySheetPage();\r
- return page; \r
- }\r
- return super.getAdapter(type);\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor#getContributorId()\r
+ */\r
+ public String getContributorId() {\r
+ return BulkEditor.ID;\r
}\r
\r
- class EditorPropertySheetPage extends PropertySheetPage {\r
- \r
- EditorPropertySheetPage() {\r
- super();\r
- \r
- // Override sorter to simply display names as first-in-first-out\r
- setSorter(new PropertySheetSorter() {\r
- public int compare(IPropertySheetEntry entryA, IPropertySheetEntry entryB) {\r
- return 0;\r
- }\r
- public int compareCategories(String categoryA, String categoryB) {\r
- return 0;\r
- }\r
- public void sort(IPropertySheetEntry[] entries) {\r
- // do nothing\r
- }\r
- });\r
- }\r
- \r
- public void makeContributions(IMenuManager menuManager,\r
- IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {\r
- super.makeContributions(menuManager, toolBarManager, statusLineManager);\r
- \r
- // Remove "Show categories", "Show advanced properties", "Restore default value"\r
- toolBarManager.removeAll();\r
- menuManager.removeAll();\r
- }\r
+ @Override\r
+ public AbstractBulkEditorInput getEditorInput() {\r
+ // TODO Auto-generated method stub\r
+ return (AbstractBulkEditorInput) super.getEditorInput();\r
}\r
}
\ No newline at end of file
import eu.etaxonomy.cdm.model.agent.Person;\r
import eu.etaxonomy.cdm.model.agent.Team;\r
import eu.etaxonomy.cdm.model.common.Marker;\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.taxeditor.annotatedlineeditor.EntityListener;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
-import eu.etaxonomy.taxeditor.propertysheet.authors.AuthorTeamPropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.authors.PersonPropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.name.NonViralNamePropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
\r
/**\r
* @author p.ciardelli\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#getPropertySource(java.lang.Object)\r
*/\r
+ @Deprecated\r
public Object getPropertySource(Object entity) {\r
- if (entity instanceof ReferenceBase) {\r
- return new ReferencePropertySource((ReferenceBase) entity); \r
- }\r
- if (entity instanceof NonViralName) {\r
- return new NonViralNamePropertySource((NonViralName) entity);\r
- }\r
- if (entity instanceof Team) {\r
- return new AuthorTeamPropertySource((Team) entity);\r
- }\r
- if (entity instanceof Person) {\r
- return new PersonPropertySource((Person) entity);\r
- }\r
+// if (entity instanceof ReferenceBase) {\r
+// return new ReferencePropertySource((ReferenceBase) entity); \r
+// }\r
+// if (entity instanceof NonViralName) {\r
+// return new NonViralNamePropertySource((NonViralName) entity);\r
+// }\r
+// if (entity instanceof Team) {\r
+// return new AuthorTeamPropertySource((Team) entity);\r
+// }\r
+// if (entity instanceof Person) {\r
+// return new PersonPropertySource((Person) entity);\r
+// }\r
return null;\r
}\r
\r
import org.eclipse.swt.widgets.Composite;\r
\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
\r
public class BulkEditorMarkerPreferenceComposite extends Composite {\r
private static final Logger logger = Logger.getLogger(BulkEditorMarkerPreferenceComposite.class);\r
\r
- private BulkEditorInput editorInput;\r
+ private AbstractBulkEditorInput editorInput;\r
\r
Map<Button, MarkerType> markerTypeButtons = new HashMap<Button, MarkerType>();\r
\r
* @param parent\r
* @param style\r
*/\r
- public BulkEditorMarkerPreferenceComposite(BulkEditorInput editorInput, Composite parent, int style) {\r
+ public BulkEditorMarkerPreferenceComposite(AbstractBulkEditorInput editorInput, Composite parent, int style) {\r
super(parent, style);\r
this.editorInput = editorInput;\r
createControl();\r
+++ /dev/null
-// $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.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.api.service.config.IIdentifiableEntityServiceConfigurator;\r
-import eu.etaxonomy.cdm.model.agent.AgentBase;\r
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.strategy.merge.MergeException;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.IdentifiableEntityComparator;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.AgentEditorInput;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.NameEditorInput;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
-import eu.etaxonomy.taxeditor.store.CdmStore;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 07.07.2009\r
- * @version 1.0\r
- */\r
-public class BulkEditorPersistenceService implements IEntityPersistenceService {\r
- private static final Logger logger = Logger\r
- .getLogger(BulkEditorPersistenceService.class);\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
- if (element instanceof BulkEditorInput) {\r
- IBulkEditorQuery query = ((BulkEditorInput) element).getQuery();\r
- \r
- Comparator queryComparator = null;\r
- if (query != null) {\r
- String queryString = query.getSearchString();\r
- IIdentifiableEntityServiceConfigurator configurator = query.getSearchConfigurator();\r
- queryComparator = query.getComparator();\r
- if (element instanceof ReferenceEditorInput) {\r
- entityList = CdmStore.findReferences(configurator);\r
- }\r
- if (element instanceof NameEditorInput) {\r
- entityList = CdmStore.findNames(configurator);\r
- }\r
- if (element instanceof AgentEditorInput){\r
- entityList = CdmStore.findTeamOrPersons(configurator);\r
- \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
- }\r
- return entityList;\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#create(java.lang.Object, java.lang.Object)\r
- */\r
- public boolean create(Object entity, Object element) {\r
- logger.info("Create " + entity);\r
- return save(entity, element);\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#delete(java.lang.Object, java.lang.Object)\r
- */\r
- public boolean delete(Object entity, Object element) {\r
- logger.info("Delete " + entity);\r
- if (entity instanceof ReferenceBase) {\r
- CdmStore.getReferenceService().delete((ReferenceBase) entity);\r
- }\r
- if (entity instanceof TaxonNameBase) {\r
- CdmStore.getNameService().delete((TaxonNameBase) entity); \r
- }\r
- if (entity instanceof AgentBase) {\r
- CdmStore.getAgentService().delete((AgentBase) entity); \r
- }\r
- return true;\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#merge(java.lang.Object, java.lang.Object, java.lang.Object)\r
- */\r
- public boolean merge(Object entity, Object mergeTarget, Object element) {\r
- logger.info("Merge " + entity + " into " + mergeTarget);\r
- if (entity instanceof ReferenceBase) {\r
- try {\r
- CdmStore.getCommonService().merge((ReferenceBase) mergeTarget, (ReferenceBase) entity, null);\r
- } catch (MergeException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- }\r
- return true;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.taxeditor.bulkeditor.IEntityPersistenceService#save(java.lang.Object, java.lang.Object)\r
- */\r
- public boolean save(Object entity, Object element) {\r
- logger.info("Save " + entity);\r
- if (entity instanceof ReferenceBase) {\r
- CdmStore.getReferenceService().saveOrUpdate((ReferenceBase) entity); \r
- }\r
- if (entity instanceof TaxonNameBase) {\r
- CdmStore.getNameService().saveOrUpdate((TaxonNameBase) entity); \r
- }\r
- if (entity instanceof AgentBase) {\r
- CdmStore.getAgentService().saveOrUpdate((AgentBase) entity); \r
- }\r
- return true;\r
- }\r
-}\r
\r
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
import eu.etaxonomy.cdm.api.service.config.impl.IdentifiableServiceConfiguratorImpl;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
-import eu.etaxonomy.taxeditor.model.Resources;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
+import eu.etaxonomy.taxeditor.preference.Resources;\r
\r
/**\r
* @author p.ciardelli\r
private void createSearchTextField() {\r
text = new Text(this, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);\r
text.setText(DEFAULT_TEXT);\r
- text.setForeground(Resources.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
+ text.setForeground(BulkEditorUtil.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.setForeground(BulkEditorUtil.getColor(Resources.SEARCH_VIEW_FOCUS));\r
if (DEFAULT_TEXT.equals(text.getText())) {\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.setForeground(BulkEditorUtil.getColor(Resources.SEARCH_VIEW_FOREGROUND));\r
text.setText(DEFAULT_TEXT); \r
setSearchEnabled(false); \r
} else {\r
if(!DEFAULT_TEXT.equals(searchString.trim()) && searchString.length() > 0){\r
// update query in IEditorInput\r
IEditorInput input = editor.getEditorInput();\r
- if (input instanceof BulkEditorInput) {\r
- ((BulkEditorInput) input).setQuery(new BulkEditorQuery(getSearchString(), getComparator()));\r
+ if (input instanceof AbstractBulkEditorInput) {\r
+ ((AbstractBulkEditorInput) input).setQuery(new BulkEditorQuery(getSearchString(), getComparator()));\r
}\r
}\r
}\r
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.bulkeditor;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * @author n.hoffmann
+ * @created Mar 12, 2010
+ * @version 1.0
+ */
+public class BulkEditorUtil extends AbstractUtility{
+ private static final Logger logger = Logger.getLogger(BulkEditorUtil.class);
+
+ /**
+ * Opens a new editor window with the given input
+ *
+ * @param input
+ * @param editorId
+ * @return
+ * @throws PartInitException
+ */
+ private static IEditorPart open(IEditorInput input, String editorId)
+ throws PartInitException {
+ return getActivePage().openEditor(input, editorId);
+ }
+
+ public static void openEmptyEditor(BulkEditorInputType inputType) throws PartInitException{
+ AbstractBulkEditorInput editorInput = AbstractBulkEditorInput.NewInstance(inputType);
+ open(editorInput, BulkEditor.ID);
+ }
+
+ public static void openEditor(IdentifiableEntity entity) throws PartInitException{
+ Assert.isNotNull(entity, "Entity must not be null");
+ AbstractBulkEditorInput editorInput = AbstractBulkEditorInput.NewInstance(entity);
+ open(editorInput, BulkEditor.ID);
+ }
+}
* @see eu.etaxonomy.taxeditor.bulkeditor.IEntityCreator#createEntity(java.lang.String)\r
*/\r
public ReferenceBase createEntity(String text) {\r
- // TODO configure default reference type\r
- return createEntity(Book.class, text);\r
+ return createEntity(Generic.class, text);\r
}\r
\r
/* (non-Javadoc)\r
*/\r
public ReferenceBase createEntity(Object key, String text) {\r
ReferenceBase reference = null;\r
+ \r
// TODO replace w more generic method when cdmlib matures accordingly\r
if (ReferenceType.Article.getMessage().equals(key)) {\r
reference = Article.NewInstance();\r
}\r
if (reference == null) {\r
logger.warn("Reference type " + key + " not found. Creating reference with default type.");\r
- reference = Book.NewInstance();\r
+ reference = Generic.NewInstance();\r
}\r
reference.setTitleCache(text);\r
return reference;\r
import org.eclipse.core.commands.IParameterValues;\r
import org.eclipse.ui.IEditorInput;\r
\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.taxeditor.bulkeditor.input.AgentEditorInput;\r
import eu.etaxonomy.taxeditor.bulkeditor.input.NameEditorInput;\r
import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;\r
private static final Logger logger = Logger\r
.getLogger(BulkEditorInputTypeValues.class);\r
\r
+ public enum BulkEditorInputType{\r
+ REFERENCE("Reference", ReferenceEditorInput.ID),\r
+ NAME("Name", NameEditorInput.ID),\r
+ AGENT("Authors and Author Teams", AgentEditorInput.ID);\r
+ \r
+ String id;\r
+ String label;\r
+ \r
+ BulkEditorInputType(String label, String id){\r
+ this.id = id;\r
+ this.label = label;\r
+ }\r
+ \r
+ public static BulkEditorInputType getById(String id){\r
+ if(id.equals(REFERENCE.id)){\r
+ return REFERENCE;\r
+ }else if(id.equals(NAME.id)){\r
+ return NAME;\r
+ }else if(id.equals(AGENT.id)){\r
+ return AGENT;\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ public static BulkEditorInputType getByType(Class clazz){\r
+ if (ReferenceBase.class.isAssignableFrom(clazz)) {\r
+ return REFERENCE;\r
+ }\r
+ if (TaxonNameBase.class.isAssignableFrom(clazz)) {\r
+ return NAME;\r
+ }\r
+ if (AgentBase.class.isAssignableFrom(clazz)) {\r
+ return AGENT;\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ public static BulkEditorInputType getByInput(IEditorInput input) {\r
+ if (input instanceof ReferenceEditorInput) {\r
+ return REFERENCE;\r
+ }\r
+ if (input instanceof NameEditorInput) {\r
+ return NAME;\r
+ }\r
+ if (input instanceof AgentEditorInput) {\r
+ return AGENT;\r
+ }\r
+ return null;\r
+ }\r
+ }\r
+ \r
/* (non-Javadoc)\r
* @see org.eclipse.core.commands.IParameterValues#getParameterValues()\r
*/\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
- values.put("Authors and Author Teams", AgentEditorInput.getID());\r
+ for (BulkEditorInputType inputType : BulkEditorInputType.values()){\r
+ values.put(inputType.label, inputType.id);\r
+ } \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
- if (input instanceof AgentEditorInput) {\r
- return "Authors and Author Teams";\r
- }\r
- return "";\r
- }\r
}\r
import org.eclipse.ui.IEditorInput;\r
\r
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
\r
/**\r
* @author p.ciardelli\r
BulkEditor bulkEditor = (BulkEditor) receiver;\r
if ("isMergingEnabled".equals(property)) { \r
IEditorInput input = bulkEditor.getEditorInput();\r
- if (input instanceof BulkEditorInput) {\r
- return ((BulkEditorInput) input).isMergingEnabled();\r
+ if (input instanceof AbstractBulkEditorInput) {\r
+ return ((AbstractBulkEditorInput) input).isMergingEnabled();\r
}\r
}\r
// if (("isPublishFlagEditingEnabled").equals(property)) {\r
import org.eclipse.ui.actions.CompoundContributionItem;\r
import org.eclipse.ui.menus.CommandContributionItem;\r
import org.eclipse.ui.menus.CommandContributionItemParameter;\r
-import org.eclipse.ui.texteditor.GotoLineAction;\r
\r
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;\r
\r
/**\r
* @author p.ciardelli\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
+ BulkEditorInputType inputType = BulkEditorInputType.getByInput(input);\r
+ return (inputType != null) ? inputType.label : "";\r
}\r
}\r
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.handlers.IHandlerService;
-import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineDocumentProvider;
import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;
-import eu.etaxonomy.taxeditor.bulkeditor.input.ReferenceEditorInput;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
/**
* @author n.hoffmann
* @created 17.04.2009
* @version 1.0
*/
+@Deprecated // remove this
public class DynamicNewObjectMenu extends CompoundContributionItem {
private static final Logger logger = Logger
.getLogger(DynamicNewObjectMenu.class);
handlerService.executeCommand(IBulkEditorConstants.DYNAMIC_OPEN_OBJECT_ID, event);
} catch (Exception e) {
logger.error("Error executing command", e);
+ throw new RuntimeException("Error executing command", e);
}
}
});
import org.eclipse.ui.handlers.IHandlerService;\r
\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
\r
List<IContributionItem> contributions = new ArrayList<IContributionItem>();\r
\r
IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();\r
- if (editor.getEditorInput() instanceof BulkEditorInput) {\r
- BulkEditorInput input = (BulkEditorInput) editor.getEditorInput(); \r
+ if (editor.getEditorInput() instanceof AbstractBulkEditorInput) {\r
+ AbstractBulkEditorInput input = (AbstractBulkEditorInput) editor.getEditorInput(); \r
for (final MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
if (input.isMarkerTypeEditingEnabled(markerType) && PreferencesUtil.getEditMarkerTypePreference(input, markerType)) {\r
contributions.add(new ContributionItem() {\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
\r
/**\r
* @author p.ciardelli\r
\r
IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
IEditorInput input = editor.getEditorInput();\r
- if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
+ if (editor instanceof BulkEditor && input instanceof AbstractBulkEditorInput) {\r
\r
IDocumentProvider provider = ((BulkEditor) editor).getDocumentProvider();\r
LineAnnotationModel model = \r
\r
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
\r
/**\r
* @author p.ciardelli\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(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID);\r
+ BulkEditorInputType inputType = BulkEditorInputType.getById(event.getParameter(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID));\r
try {\r
HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().\r
- openEditor(BulkEditorInput.NewInstance(inputType), BulkEditor.ID);\r
+ openEditor(AbstractBulkEditorInput.NewInstance(inputType), BulkEditor.ID);\r
} catch (PartInitException e) {\r
new RuntimeException(e);\r
logger.error("Error opening bulk editor", e);\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
\r
/**\r
* @author p.ciardelli\r
\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
\r
/**\r
* @author p.ciardelli\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;\r
\r
/**\r
* @author p.ciardelli\r
IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
IEditorInput input = editor.getEditorInput();\r
\r
- if (editor instanceof AnnotatedLineEditor && input instanceof BulkEditorInput) {\r
+ if (editor instanceof AnnotatedLineEditor && input instanceof AbstractBulkEditorInput) {\r
\r
IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
LineAnnotationModel model = \r
try {\r
ReferencingObjectsView view = (ReferencingObjectsView) HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().\r
showView(ReferencingObjectsView.ID);\r
- view.updateReferencingObjects();\r
+// view.updateReferencingObjects();\r
} catch (PartInitException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
+ logger.error("PartInitException when updating referncing objects view", e);\r
}\r
return null;\r
}\r
--- /dev/null
+// $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.input;\r
+\r
+import java.beans.PropertyChangeSupport;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.Comparator;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.IPersistableElement;\r
+\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.strategy.merge.MergeException;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.IdentifiableEntityComparator;\r
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery;\r
+import eu.etaxonomy.taxeditor.bulkeditor.command.BulkEditorInputTypeValues.BulkEditorInputType;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ * @param <T>\r
+ */\r
+public abstract class AbstractBulkEditorInput<T extends IdentifiableEntity> extends PropertyChangeSupport implements IEditorInput, IEntityPersistenceService {\r
+ private static final Logger logger = Logger\r
+ .getLogger(AbstractBulkEditorInput.class);\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 416414530232743735L;\r
+ private String mode;\r
+ private UUID entityUuid;\r
+\r
+ /**\r
+ * @param sourceBean\r
+ */\r
+ public AbstractBulkEditorInput(Object sourceBean) {\r
+ super(sourceBean);\r
+ }\r
+ \r
+ public static final String QUERY_CHANGED = "query_changed";\r
+ \r
+ static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {\r
+ \r
+ switch (inputType) {\r
+ case REFERENCE:\r
+ return new ReferenceEditorInput();\r
+ case NAME:\r
+ return new NameEditorInput();\r
+ case AGENT:\r
+ return new AgentEditorInput();\r
+ default:\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public static AbstractBulkEditorInput NewInstance(IdentifiableEntity entity) {\r
+ \r
+ \r
+ BulkEditorInputType inputType = BulkEditorInputType.getByType(entity.getClass());\r
+ \r
+ AbstractBulkEditorInput editorInput = NewInstance(inputType);\r
+ \r
+ editorInput.setEntityUuid(entity.getUuid());\r
+ \r
+ return editorInput;\r
+ }\r
+ \r
+ /**\r
+ * Queries the service for entities that match the criterias defined in the given \r
+ * search configurator\r
+ * \r
+ * @param configurator\r
+ * @return\r
+ */\r
+ public List<T> listEntities(){\r
+ if(getEntityUuid() != null){\r
+ List<T> entityList = new ArrayList<T>();\r
+ T entity = loadEntity(getEntityUuid());\r
+ entityList.add(entity);\r
+ return entityList;\r
+ }\r
+ \r
+ if(query != null){\r
+ \r
+ String queryString = query.getSearchString();\r
+ IIdentifiableEntityServiceConfigurator configurator = query.getSearchConfigurator();\r
+ Comparator queryComparator = (query.getComparator() != null) ? query.getComparator() : new IdentifiableEntityComparator();\r
+ \r
+ List<T> entityList = listEntities(configurator);\r
+ \r
+ Collections.sort(entityList, queryComparator); \r
+ \r
+ // reset query\r
+ setQuery(null);\r
+ \r
+ return entityList;\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ protected abstract List<T> listEntities(IIdentifiableEntityServiceConfigurator configurator);\r
+ \r
+ protected abstract T loadEntity(UUID entityUuid);\r
+\r
+ private void setEntityUuid(UUID entityUuid){\r
+ this.entityUuid = entityUuid;\r
+ }\r
+ \r
+ public UUID getEntityUuid() {\r
+ return entityUuid;\r
+ }\r
+\r
+ private IBulkEditorQuery query;\r
+ \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.IEditorInput#exists()\r
+ */\r
+ public boolean exists() {\r
+ // TODO Auto-generated method stub\r
+ return false;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.IEditorInput#getImageDescriptor()\r
+ */\r
+ public ImageDescriptor getImageDescriptor() {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.IEditorInput#getPersistable()\r
+ */\r
+ public IPersistableElement getPersistable() {\r
+ return null;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)\r
+ */\r
+ @SuppressWarnings("unchecked")\r
+ public Object getAdapter(Class adapter) {\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * @param bulkEditorQuery\r
+ */\r
+ public void setQuery(IBulkEditorQuery bulkEditorQuery) {\r
+ \r
+ this.query = bulkEditorQuery;\r
+ \r
+ if (query != null) {\r
+ firePropertyChange(QUERY_CHANGED, null, null);\r
+ }\r
+ }\r
+ \r
+ public IBulkEditorQuery getQuery() {\r
+ return query;\r
+ }\r
+ \r
+ public boolean isMergingEnabled() {\r
+ return false;\r
+ }\r
+\r
+ /**\r
+ * @param markerType\r
+ * @return\r
+ */\r
+ public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {\r
+ return false;\r
+ }\r
+ \r
+ public boolean isSingleEntityMode(){\r
+ return getEntityUuid() != null;\r
+ }\r
+ \r
+ /*\r
+ * (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#merge(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
+ */\r
+ public boolean merge(Object entity, Object mergeTarget) {\r
+ logger.info("Merge " + entity + " into " + mergeTarget);\r
+ if (entity instanceof ReferenceBase) {\r
+ try {\r
+ CdmStore.getCommonService().merge((ReferenceBase) mergeTarget, (ReferenceBase) entity, null);\r
+ } catch (MergeException e) {\r
+ logger.error("Problems merging objects", e);\r
+ }\r
+ }\r
+ return true;\r
+ };\r
+ \r
+ /*\r
+ * (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#create(eu.etaxonomy.cdm.model.common.IdentifiableEntity)\r
+ */\r
+ public boolean create(Object entity) {\r
+ return save(entity); \r
+ };\r
+}
\ No newline at end of file
*/\r
package eu.etaxonomy.taxeditor.bulkeditor.input;\r
\r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
\r
/**\r
* @author p.ciardelli\r
* @created 25.06.2009\r
* @version 1.0\r
*/\r
-public class AgentEditorInput extends BulkEditorInput {\r
+public class AgentEditorInput extends AbstractBulkEditorInput<AgentBase> {\r
\r
public static final String ID = "bulkeditor.input.author";\r
\r
/**\r
* @return\r
*/\r
- public static BulkEditorInput getInstance() {\r
+ public static AbstractBulkEditorInput getInstance() {\r
if (instance == null) {\r
instance = new AgentEditorInput();\r
}\r
public boolean isMergingEnabled() {\r
return false;\r
}\r
+\r
+ @Override\r
+ public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
+ return CdmStore.findTeamOrPersons(configurator);\r
+ }\r
+\r
+ @Override\r
+ public AgentBase loadEntity(UUID uuid) {\r
+ List<String> propertyPaths = Arrays.asList(new String[]{}); \r
+ return CdmStore.getAgentService().load(uuid, propertyPaths);\r
+ }\r
+\r
+ public boolean delete(Object entity) {\r
+ return CdmStore.getAgentService().delete((AgentBase) entity) != null; \r
+ }\r
+\r
+ public boolean save(Object entity) {\r
+ return CdmStore.getAgentService().saveOrUpdate((AgentBase) entity) != null;\r
+ }\r
}
\ No newline at end of file
+++ /dev/null
-// $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.input;\r
-\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
-\r
-import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- * @param <T>\r
- */\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
- public static final String QUERY_CHANGED = "query_changed";\r
- \r
- static public BulkEditorInput NewInstance(String inputType) {\r
- \r
- if (ReferenceEditorInput.getID().equals(inputType)) {\r
- return new ReferenceEditorInput();\r
- }\r
-\r
- if (NameEditorInput.getID().equals(inputType)) {\r
- return new NameEditorInput();\r
- }\r
-\r
- if (AgentEditorInput.getID().equals(inputType)) {\r
- return new AgentEditorInput();\r
- }\r
- \r
- return null;\r
- }\r
-\r
- private IBulkEditorQuery query;\r
- \r
- /* (non-Javadoc)\r
- * @see org.eclipse.ui.IEditorInput#exists()\r
- */\r
- public boolean exists() {\r
- // TODO Auto-generated method stub\r
- return false;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.ui.IEditorInput#getImageDescriptor()\r
- */\r
- public ImageDescriptor getImageDescriptor() {\r
- // TODO Auto-generated method stub\r
- return null;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.ui.IEditorInput#getPersistable()\r
- */\r
- public IPersistableElement getPersistable() {\r
- return null;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)\r
- */\r
- @SuppressWarnings("unchecked")\r
- public Object getAdapter(Class adapter) {\r
- return null;\r
- }\r
-\r
- /**\r
- * @param bulkEditorQuery\r
- */\r
- public void setQuery(IBulkEditorQuery bulkEditorQuery) {\r
- \r
- this.query = bulkEditorQuery;\r
- \r
- if (query != null) {\r
- firePropertyChange(QUERY_CHANGED, null, null);\r
- }\r
- }\r
- \r
- public IBulkEditorQuery getQuery() {\r
- return query;\r
- }\r
- \r
- public boolean isMergingEnabled() {\r
- return false;\r
- }\r
-\r
- /**\r
- * @param markerType\r
- * @return\r
- */\r
- public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {\r
- return false;\r
- }\r
-}
\ No newline at end of file
\r
package eu.etaxonomy.taxeditor.bulkeditor.input;\r
\r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
import org.apache.log4j.Logger;\r
\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
/**\r
* @author p.ciardelli\r
* @created 20.08.2009\r
* @version 1.0\r
*/\r
-public class NameEditorInput extends BulkEditorInput {\r
+public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {\r
private static final Logger logger = Logger\r
.getLogger(NameEditorInput.class);\r
\r
\r
public static final String ID = "bulkeditor.input.name";\r
\r
- public static BulkEditorInput getInstance() {\r
+ public static AbstractBulkEditorInput getInstance() {\r
if (instance == null) {\r
instance = new NameEditorInput();\r
}\r
public boolean isMergingEnabled() {\r
return false;\r
}\r
+\r
+ @Override\r
+ public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
+ return CdmStore.findNames(configurator);\r
+ }\r
+\r
+ @Override\r
+ public TaxonNameBase loadEntity(UUID uuid) {\r
+ List<String> propertyPaths = Arrays.asList(new String[]{}); \r
+ return CdmStore.getNameService().load(uuid, propertyPaths);\r
+ }\r
+\r
+ public boolean delete(Object entity) {\r
+ return CdmStore.getNameService().delete((TaxonNameBase) entity) != null;\r
+ }\r
+\r
+ public boolean save(Object entity) {\r
+ return CdmStore.getNameService().saveOrUpdate((TaxonNameBase) entity) != null;\r
+ }\r
+\r
}\r
*/\r
package eu.etaxonomy.taxeditor.bulkeditor.input;\r
\r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
\r
\r
/**\r
* @created 25.06.2009\r
* @version 1.0\r
*/\r
-public class ReferenceEditorInput extends BulkEditorInput {\r
+public class ReferenceEditorInput extends AbstractBulkEditorInput<ReferenceBase> {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 3806243517765126749L;\r
\r
public static final String ID = "bulkeditor.input.reference";\r
\r
/**\r
* @return\r
*/\r
- public static BulkEditorInput getInstance() {\r
+ public static AbstractBulkEditorInput getInstance() {\r
if (instance == null) {\r
instance = new ReferenceEditorInput();\r
}\r
}\r
return super.isMarkerTypeEditingEnabled(markerType);\r
}\r
+\r
+ // Entity persistence\r
+ \r
+ @Override\r
+ public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
+ return CdmStore.findReferences(configurator);\r
+ }\r
+\r
+ @Override\r
+ public ReferenceBase loadEntity(UUID entityUuid) {\r
+ List<String> propertyPaths = Arrays.asList(new String[]{"*", "inReference.*", "authorTeam.*"}); \r
+ return CdmStore.getReferenceService().load(entityUuid, propertyPaths);\r
+ }\r
+\r
+ public boolean delete(Object entity) {\r
+ return CdmStore.getReferenceService().delete((ReferenceBase) entity) != null;\r
+ }\r
+\r
+ public boolean save(Object entity) {\r
+ return CdmStore.getReferenceService().saveOrUpdate((ReferenceBase) entity) != null;\r
+ }\r
}
\ No newline at end of file
public void start(BundleContext context) throws Exception {\r
super.start(context);\r
plugin = this; \r
+ \r
}\r
\r
/*\r
import java.util.Collections;\r
import java.util.Comparator;\r
import java.util.List;\r
+import java.util.Set;\r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.core.runtime.jobs.Job;\r
import org.eclipse.jface.operation.IRunnableWithProgress;\r
import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
+import org.eclipse.jface.viewers.StructuredSelection;\r
import org.eclipse.jface.viewers.TableViewer;\r
import org.eclipse.jface.viewers.TableViewerColumn;\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.ui.IEditorPart;\r
-import org.eclipse.ui.IWorkbench;\r
-import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.ISelectionListener;\r
+import org.eclipse.ui.ISelectionService;\r
+import org.eclipse.ui.IWorkbenchPart;\r
import org.eclipse.ui.part.ViewPart;\r
-import org.eclipse.ui.progress.IProgressService;\r
\r
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;\r
import eu.etaxonomy.taxeditor.model.DescriptionHelper;\r
-import eu.etaxonomy.taxeditor.propertysheet.AgentBasePropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.authors.AuthorTeamPropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.authors.PersonPropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.name.NonViralNamePropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
+import eu.etaxonomy.taxeditor.model.LineSelection;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
\r
/**\r
* @created 08.07.2009\r
* @version 1.0\r
*/\r
-public class ReferencingObjectsView extends ViewPart {\r
+public class ReferencingObjectsView extends ViewPart implements ISelectionListener{\r
private static final Logger logger = Logger\r
.getLogger(ReferencingObjectsView.class);\r
\r
- public static final String ID = "taxeditor-bulkeditor.referencingobjectsview";\r
-\r
- private List<CdmBase> referencingObjects;\r
- private CdmBase referencedObject;\r
+ public static final String ID = "eu.etaxonomy.taxeditor.bulkeditor.referencingobjectsview";\r
\r
private TableViewer referencingObjectsViewer;\r
\r
+ private ISelectionService selectionService;\r
+\r
+ private CdmBase referencedObject;\r
+\r
+ private ArrayList<CdmBase> referencingObjects;\r
+\r
\r
public ReferencingObjectsView() {}\r
\r
*/\r
@Override\r
public void createPartControl(Composite parent) {\r
+ selectionService = getSite().getWorkbenchWindow().getSelectionService();\r
+ selectionService.addSelectionListener(this);\r
+ \r
createReferencingObjectsViewer(parent);\r
}\r
\r
/**\r
* \r
*/\r
- public void updateReferencingObjects() {\r
- IEditorPart editor = getSite().getPage().getActiveEditor();\r
- ISelection selection = editor.getEditorSite().getSelectionProvider()\r
- .getSelection();\r
-\r
- if ((selection != null) && selection instanceof LineSelection) {\r
- final Object entity = ((IStructuredSelection) selection).getFirstElement();\r
+ public void updateReferencingObjects(final IdentifiableEntity entity) {\r
+// IEditorPart editor = getSite().getPage().getActiveEditor();\r
+// ISelection selection = editor.getEditorSite().getSelectionProvider()\r
+// .getSelection();\r
+//\r
+// if ((selection != null) && selection instanceof LineSelection) {\r
+// final Object entity = ((IStructuredSelection) selection).getFirstElement();\r
\r
- IWorkbench wb = PlatformUI.getWorkbench();\r
- IProgressService ps = wb.getProgressService();\r
- try {\r
- ps.busyCursorWhile(new IRunnableWithProgress() {\r
- public void run(IProgressMonitor pm) {\r
- doUpdateReferencingObjects(entity);\r
- }\r
- });\r
- } catch (InvocationTargetException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (InterruptedException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
+ Job job = new Job("Update Referencing Objects") {\r
+ \r
+ @Override\r
+ protected IStatus run(IProgressMonitor monitor) {\r
+ monitor.beginTask("Calculating referencing objects", 10);\r
+ ConversationHolder conversation = CdmStore.createConversation();\r
+ conversation.bind();\r
+ monitor.worked(3);\r
+ doUpdateReferencingObjects(entity);\r
+ monitor.done();\r
+ conversation.close();\r
+ return Status.OK_STATUS;\r
}\r
- }\r
+ };\r
+ \r
+ IRunnableWithProgress runnable = new IRunnableWithProgress() {\r
+ \r
+ public void run(IProgressMonitor monitor) throws InvocationTargetException,\r
+ InterruptedException {\r
+ monitor.beginTask("Calculating referencing objects", 10);\r
+ ConversationHolder conversation = CdmStore.createConversation();\r
+ conversation.bind();\r
+ monitor.worked(3);\r
+ doUpdateReferencingObjects(entity);\r
+ monitor.done();\r
+ conversation.close();\r
+ }\r
+ };\r
+ \r
+// BulkEditorUtil.busyCursorWhile(runnable);\r
+ \r
+// BulkEditorUtil.runAsynchroneously(runnable);\r
+ \r
+ job.schedule();\r
+ \r
updateView();\r
}\r
\r
private void doUpdateReferencingObjects(Object entity) {\r
- CdmStore.NewTransactionalConversation().bind();\r
try {\r
- referencedObject = getReferencedObject(entity);\r
- if (referencedObject != null) {\r
- referencingObjects = new ArrayList<CdmBase>(CdmStore.getCommonService().getReferencingObjects(referencedObject));\r
- Collections.sort(referencingObjects, new ReferencingClassComparator());\r
+ if(entity instanceof CdmBase){\r
+ referencedObject = (CdmBase) entity;\r
+ Set<CdmBase> setOfReferencingObjects = CdmStore.getCommonService().getReferencingObjects(referencedObject);\r
+ \r
+ referencingObjects = new ArrayList<CdmBase>(setOfReferencingObjects);\r
+ \r
+ Collections.sort(referencingObjects, new ReferencingClassComparator());\r
}\r
} catch (Exception e) {\r
logger.error("Error retrieving referencing objects", e);\r
return classCompare;\r
}\r
}\r
- \r
}\r
\r
/**\r
referencingObjectsViewer.setInput(referencingObjects);\r
setContentDescription("'" + referencedObject + "' is referenced by:");\r
}\r
- \r
- public CdmBase getReferencedObject(Object entity) {\r
- if (entity instanceof ReferencePropertySource) {\r
- return ((ReferencePropertySource) entity).getReference();\r
+\r
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
+ if(! (part instanceof BulkEditor)){\r
+ return;\r
}\r
- if (entity instanceof NonViralNamePropertySource) {\r
- return ((NonViralNamePropertySource) entity).getName();\r
+ \r
+ if(! (selection instanceof LineSelection)){\r
+ return;\r
}\r
- if (entity instanceof AuthorTeamPropertySource) {\r
- return ((AuthorTeamPropertySource) entity).getAuthorTeam(); \r
+ LineSelection lineSelection = (LineSelection) selection;\r
+ \r
+ if(lineSelection.size() != 1){\r
+ return;\r
}\r
- if (entity instanceof PersonPropertySource) {\r
- return ((PersonPropertySource) entity).getPerson();\r
+ \r
+ if(! (lineSelection.getFirstElement() instanceof IdentifiableEntity)){\r
+ return;\r
}\r
- return null;\r
+ \r
+ updateReferencingObjects((IdentifiableEntity) lineSelection.getFirstElement());\r
}\r
+ \r
+ @Override\r
+ public void dispose() {\r
+ selectionService.removePostSelectionListener(this);\r
+ super.dispose();\r
+ }\r
+ \r
}\r