taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.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/BulkEditorSourceViewerConfiguration.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/IBulkEditorSortMenuProvider.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DeleteObjectContributionItem.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/DynamicNewObjectMenu.java -text
taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/SetMarkerContributionItems.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/OpenBulkEditorHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/RemoveMergeCandidateHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagFalseHandler.java -text
+taxeditor-bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/SetMarkerFlagTrueHandler.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/handler/ToggleMergeCandidateHandler.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
-#Fri Oct 16 18:08:11 CEST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#Mon Oct 19 17:20:23 CEST 2009\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
+org.eclipse.jdt.core.compiler.compliance=1.5\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.5\r
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
+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,org.eclipse.jface.text;bundle-version="3.4.2",org.eclipse.ui.editors,org.eclipse.ui.ide,org.eclipse.core.resources;bundle-version="3.4.2",eu.etaxonomy.cdmlib;bundle-version="2.1.0",eu.etaxonomy.taxeditor.editor;bundle-version="2.0.0",eu.etaxonomy.taxeditor.store;bundle-version="2.0.0",org.eclipse.core.expressions
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
</command>\r
<command\r
commandId="bulkeditor.commands.setmergecandidate"\r
- label="Toggle Current Line as Candidate for Duplicate Removal"\r
+ label="Set as Candidate(s) for Duplicate Removal"\r
+ style="push">\r
+ <visibleWhen>\r
+ <reference\r
+ definitionId="isMergeEnabled">\r
+ </reference>\r
+ </visibleWhen>\r
+ </command>\r
+ <command\r
+ commandId="bulkeditor.commands.removemergecandidate"\r
+ label="Remove as Candidate(s) for Duplicate Removal"\r
style="push">\r
<visibleWhen>\r
<reference\r
name="Dynamic Delete Object">\r
</command>\r
<command\r
- defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.ToggleMergeCandidateHandler"\r
+ defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMergeCandidateHandler"\r
id="bulkeditor.commands.setmergecandidate"\r
- name="Toggle as Candidate for Group Merge">\r
+ name="Set as Candidate for Group Merge">\r
+ </command>\r
+ <command\r
+ defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.RemoveMergeCandidateHandler"\r
+ id="bulkeditor.commands.removemergecandidate"\r
+ name="Remove as Candidate for Group Merge">\r
</command>\r
</extension>\r
<extension\r
properties="isMergingEnabled"\r
type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">\r
</propertyTester>\r
- </extension> \r
- <!-- NAME EDITOR STUFF ONLY BELOW THIS POINT -->\r
- <!--extension\r
+ </extension>\r
+ <extension\r
point="org.eclipse.ui.menus">\r
- <menuContribution\r
- locationURI="menu:eu.etaxonomy.taxeditor.menu.showView">\r
- <command\r
- commandId="eu.etaxonomy.taxeditor.editor.command.showProblemsView"\r
- label="Problems View"\r
- style="push">\r
- </command>\r
- <command\r
- commandId="eu.etaxonomy.taxeditor.editor.commands.showNameRelationsView"\r
- label="Name Relations"\r
- style="push">\r
- </command> \r
- </menuContribution>\r
- <menuContribution\r
- locationURI="popup:#TaxonNameEditorContext">\r
- <command\r
- commandId="taxeditor-nameditor.command.changeToMisapplication"\r
- label="Change to Misapplication"\r
- style="push">\r
- </command>\r
+ <menuContribution\r
+ locationURI="popup:#BulkEditorContext?after=taxeditor-bulkeditor.separator2">\r
+ <dynamic\r
+ class="eu.etaxonomy.taxeditor.bulkeditor.command.SetMarkerContributionItems"\r
+ id="taxeditor-bulkeditor.dynamic1">\r
+ </dynamic>\r
</menuContribution>\r
- <menuContribution\r
- locationURI="popup:eu.etaxonomy.taxeditor.navigation.navigatorpopup">\r
- <command\r
- commandId="taxeditor-nameeditor.commands.opentaxon"\r
- label="Open Taxon"\r
- style="push">\r
- </command>\r
- </menuContribution>\r
</extension>\r
<extension\r
point="org.eclipse.ui.commands">\r
<command\r
- defaultHandler="eu.etaxonomy.taxeditor.nameditor.ShowProblemsHandler"\r
- id="eu.etaxonomy.taxeditor.editor.command.showProblemsView"\r
- name="Show Problems View">\r
- </command>\r
- <command\r
- defaultHandler="eu.etaxonomy.taxeditor.nameditor.ChangeToMisapplicationHandler"\r
- id="taxeditor-nameditor.command.changeToMisapplication"\r
- name="Change to Misapplication">\r
+ defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMarkerFlagTrueHandler"\r
+ id="taxeditor-bulkeditor.command.setMarkerFlagTrue"\r
+ name="Set Marker Flag True">\r
</command>\r
<command\r
- defaultHandler="eu.etaxonomy.taxeditor.nameditor.OpenTaxonNameEditorHandler"\r
- id="taxeditor-nameeditor.commands.opentaxon"\r
- name="Open Taxon Name Editor">\r
+ defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMarkerFlagFalseHandler"\r
+ id="taxeditor-bulkeditor.command.setMarkerFlagFalse"\r
+ name="Set Marker Flag False">\r
</command>\r
- <command\r
- defaultHandler="eu.etaxonomy.taxeditor.nameditor.OpenNameEditorHandler"\r
- id="taxeditor-nameeditor.commands.open"\r
- name="Open Name Editor">\r
- </command>\r
- </extension>\r
- <extension\r
- point="org.eclipse.ui.ide.markerResolution">\r
- <markerResolutionGenerator\r
- class="eu.etaxonomy.taxeditor.nameditor.MarkerResolutionGenerator"\r
- markerType="org.eclipse.core.resources.problemmarker">\r
- </markerResolutionGenerator>\r
- </extension>\r
- <extension\r
- point="org.eclipse.ui.perspectiveExtensions">\r
- <perspectiveExtension\r
- targetID="eu.etaxonomy.taxeditor.application.perspective">\r
- <view\r
- closeable="true"\r
- id="org.eclipse.ui.views.ContentOutline"\r
- minimized="false"\r
- moveable="true"\r
- ratio="0.7"\r
- relationship="right"\r
- relative="org.eclipse.ui.editorss"\r
- showTitle="false"\r
- visible="true">\r
- </view>\r
- </perspectiveExtension>\r
- </extension-->
+ </extension> \r
+<!-- start set marker -->\r
+
</plugin>\r
\r
return annotation;\r
}\r
+ \r
+ public void updateLineFromAnnotation(Object element, LineAnnotation annotation, String text) {\r
+ IAnnotationModel model = getAnnotationModel(element);\r
+ IDocument document = getDocument(element);\r
+ try {\r
+ if (model.getPosition(annotation) == null) {\r
+ return;\r
+ }\r
+ int offset = model.getPosition(annotation).getOffset(); \r
+ int line = document.getLineOfOffset(offset);\r
+ int lineLength = document.getLineLength(document.getLineOfOffset(offset));\r
+ if (document.getLineDelimiter(line) != null) {\r
+ lineLength -= document.getLineDelimiter(line).length();\r
+ }\r
+ document.replace(offset, lineLength, text);\r
+ } catch (BadLocationException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ }\r
\r
class EntityListenerImpl extends EntityListener {\r
\r
\r
annotation.setDirty(true);\r
\r
- IAnnotationModel model = getAnnotationModel(element);\r
- IDocument document = getDocument(element);\r
- \r
Object entity = annotation.getEntity();\r
String text;\r
if (lineDisplay.isEntityCacheEmpty(entity)) {\r
text = lineDisplay.getEmptyCacheMessage(entity);\r
} else {\r
text = lineDisplay.getText(entity);\r
- } \r
- try {\r
- if (model.getPosition(annotation) == null) {\r
- return;\r
- }\r
- int offset = model.getPosition(annotation).getOffset(); \r
- int line = document.getLineOfOffset(offset);\r
- int lineLength = document.getLineLength(document.getLineOfOffset(offset));\r
- if (document.getLineDelimiter(line) != null) {\r
- lineLength -= document.getLineDelimiter(line).length();\r
- }\r
- document.replace(offset, lineLength, text);\r
- } catch (BadLocationException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
}\r
+\r
+ updateLineFromAnnotation(element, annotation, text);\r
}\r
}\r
\r
\r
package eu.etaxonomy.taxeditor.annotatedlineeditor;\r
\r
+import org.eclipse.swt.custom.StyleRange;\r
import org.eclipse.swt.graphics.Font;\r
import org.eclipse.swt.graphics.Image;\r
\r
*/\r
String getText(Object entity);\r
\r
+ StyleRange[] getTextStyleRanges(Object entity);\r
+ \r
String getEmptyCacheMessage(Object entity);\r
\r
void setText(String text, Object entity);\r
\r
import java.beans.PropertyChangeEvent;\r
import java.beans.PropertyChangeListener;\r
+import java.util.Iterator;\r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.jface.action.IMenuManager;\r
import org.eclipse.jface.text.IDocument;\r
import org.eclipse.jface.text.source.Annotation;\r
import org.eclipse.jface.text.source.AnnotationModel;\r
+import org.eclipse.jface.text.source.IAnnotationModel;\r
import org.eclipse.jface.text.source.ISourceViewer;\r
import org.eclipse.jface.text.source.IVerticalRuler;\r
+import org.eclipse.jface.util.IPropertyChangeListener;\r
import org.eclipse.jface.window.Window;\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.custom.StyledText;\r
import org.eclipse.ui.IEditorInput;\r
import org.eclipse.ui.IEditorSite;\r
import org.eclipse.ui.PartInitException;\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.preference.PreferencesUtil;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
\r
/**\r
* @author p.ciardelli\r
*/\r
public BulkEditor() {\r
super(CdmStore.NewTransactionalConversation());\r
- \r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.editors.text.TextEditor#initializeEditor()\r
+ */\r
+ @Override\r
+ protected void initializeEditor() {\r
+ super.initializeEditor();\r
+ \r
/**\r
* see AbstractTextEditor javadoc for explanation of context menu ids\r
*/\r
setPersistenceService(new BulkEditorPersistenceService());\r
\r
setLineDisplayStrategy(new BulkEditorLineDisplay(this));\r
+ \r
+ setSourceViewerConfiguration(new BulkEditorViewerConfiguration(lineDisplayStrategy));\r
}\r
-\r
+ \r
/* (non-Javadoc)\r
* @see eu.etaxonomy.taxeditor.bulkeditor.ListEditor#createSourceViewer(org.eclipse.swt.widgets.Composite, org.eclipse.jface.text.source.IVerticalRuler, int)\r
*/\r
\r
BulkEditorSearchComposite searchBar = new BulkEditorSearchComposite(this, parent, SWT.NONE);\r
searchBar.getParent().setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));\r
+\r
+ if (isEditableMarkerTypes()) {\r
+ createMarkerEditing(parent);\r
+ }\r
\r
super.createPartControl(parent);\r
\r
// Set viewer composite to fill grid\r
for (Control control : parent.getChildren()) {\r
- if (control instanceof Composite && !(control instanceof BulkEditorSearchComposite)) {\r
+ if (control instanceof Composite && \r
+ !(control instanceof BulkEditorSearchComposite || control instanceof BulkEditorMarkerPreferenceComposite)) {\r
control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
}\r
}\r
}\r
\r
+ /**\r
+ * @param parent \r
+ * \r
+ */\r
+ private void createMarkerEditing(Composite parent) {\r
+ final BulkEditorMarkerPreferenceComposite markerPreferenceBar = \r
+ new BulkEditorMarkerPreferenceComposite((BulkEditorInput) getEditorInput(), parent, SWT.NONE);\r
+ PreferencesUtil.getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {\r
+ public void propertyChange(\r
+ org.eclipse.jface.util.PropertyChangeEvent event) {\r
+ if (event.getProperty().contains(PreferencesUtil.EDIT_MARKER_TYPE_PREFIX)) {\r
+ refreshLineDisplay();\r
+ }\r
+ }\r
+ });\r
+ }\r
+ \r
+ /**\r
+ * Can this input type edit any markers?\r
+ * \r
+ * @return\r
+ */\r
+ private boolean isEditableMarkerTypes() { \r
+ for (MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
+ if (((BulkEditorInput) getEditorInput()).isMarkerTypeEditingEnabled(markerType)) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ /**\r
+ * Refreshes text in all lines.\r
+ */\r
+ protected void refreshLineDisplay() {\r
+ IDocumentProvider provider = getDocumentProvider();\r
+ IEditorInput input = getEditorInput();\r
+ IAnnotationModel model = provider.getAnnotationModel(input);\r
+ Iterator iter = getDocumentProvider().getAnnotationModel(getEditorInput()).getAnnotationIterator();\r
+ while (iter.hasNext()) {\r
+ Object next = iter.next();\r
+ if (next instanceof LineAnnotation) {\r
+ LineAnnotation annotation = (LineAnnotation) next;\r
+ ((AnnotatedLineDocumentProvider) getDocumentProvider()).\r
+ updateLineFromAnnotation(getEditorInput(), annotation, lineDisplayStrategy.getText(annotation.getEntity()));\r
+ }\r
+ }\r
+ }\r
+\r
/* (non-Javadoc)\r
* @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#isEditable()\r
*/\r
* @param line\r
*/\r
public void toggleMergeCandidateAnnotation(int line) {\r
- // TODO merge this with duplicate code in SetMergeCandidateHandler\r
- \r
- // Set line as selection\r
- \r
- // call handler w handler service\r
\r
IDocument document = getSourceViewer().getDocument();\r
LineAnnotationModel model = \r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.jface.action.IStatusLineManager;\r
+import org.eclipse.jface.text.TextPresentation;\r
+import org.eclipse.jface.text.source.DefaultAnnotationHover;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.StyleRange;\r
import org.eclipse.swt.graphics.Font;\r
import org.eclipse.swt.graphics.Image;\r
import org.eclipse.swt.widgets.Display;\r
import eu.etaxonomy.cdm.model.agent.Institution;\r
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
// if (date != null) {\r
// text += " [" + date + "]";\r
// }\r
+ String markerText = null;\r
+ for (Marker marker : reference.getMarkers()) {\r
+ if (PreferencesUtil.getEditMarkerTypePreference(editor.getEditorInput(), marker.getMarkerType())) {\r
+ if (markerText == null) {\r
+ markerText = " [";\r
+ } else {\r
+ markerText += ", ";\r
+ }\r
+ markerText += marker.getMarkerType().getLabel() + " = " + marker.getFlag();\r
+ }\r
+ }\r
+ if (markerText != null) {\r
+ text += markerText + "]";\r
+ }\r
return text;\r
}\r
if (entity instanceof TaxonNameBase) {\r
}\r
return "";\r
}\r
+ \r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#addStyleRanges(java.lang.Object, org.eclipse.jface.text.TextPresentation)\r
+ */\r
+ public StyleRange[] getTextStyleRanges(Object entity) {\r
+ if (isEntityCacheEmpty(entity)) {\r
+ return new StyleRange[] { new StyleRange(0, getEmptyCacheMessage(entity).length(), \r
+ Display.getCurrent().getSystemColor(SWT.COLOR_GRAY), null) };\r
+ }\r
+ if (entity instanceof ReferenceBase) {\r
+ ReferenceBase reference = (ReferenceBase) HibernateProxyHelper.deproxy(entity);\r
+ return new StyleRange[] { new StyleRange(reference.getTitleCache().length(), getText(entity).length(), \r
+ Display.getCurrent().getSystemColor(SWT.COLOR_GRAY), null)};\r
+ }\r
+ if (entity instanceof AgentBase) {\r
+ return new StyleRange[] { new StyleRange(((AgentBase) entity).getTitleCache().length(), getText(entity).length(), \r
+ Display.getCurrent().getSystemColor(SWT.COLOR_GRAY), null)};\r
+ }\r
+ return new StyleRange[0];\r
+ }\r
\r
/* (non-Javadoc)\r
* @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#setText(java.lang.String, java.lang.Object)\r
* @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#addDisplayListener(java.lang.Object)\r
*/\r
public void addDisplayListener(Object entity, EntityListener listener) {\r
- if (entity instanceof ReferenceBase) {\r
-// ((ReferenceBase) entity).addPropertyChangeListener("titleCache", listener);\r
- ((ReferenceBase) entity).addPropertyChangeListener(listener);\r
- }\r
+ /* Note: all non-field specific listeners require that corresponding property sheets \r
+ * contain the following:\r
+ * \r
+ * \r
+ * public void setPropertyValue(Object id, Object value) {\r
+ * ...\r
+ * reference.firePropertyChange(new PropertyChangeEvent(reference, "", null, null));\r
+ * }\r
+ * \r
+ */\r
if (entity instanceof TaxonNameBase) {\r
- ((TaxonNameBase) entity).addPropertyChangeListener("titleCache", listener);\r
+ ((TaxonNameBase) entity).addPropertyChangeListener(listener);\r
}\r
if (entity instanceof AgentBase) {\r
((AgentBase) entity).addPropertyChangeListener(listener);\r
}\r
+ if (entity instanceof ReferenceBase) {\r
+// ((ReferenceBase) entity).addPropertyChangeListener("titleCache", listener);\r
+ ((ReferenceBase) entity).addPropertyChangeListener(listener);\r
+ }\r
}\r
\r
/* (non-Javadoc)\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.HashMap;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\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.preference.PreferencesUtil;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 17.08.2009\r
+ * @version 1.0\r
+ */\r
+public class BulkEditorMarkerPreferenceComposite extends Composite {\r
+ private static final Logger logger = Logger.getLogger(BulkEditorMarkerPreferenceComposite.class);\r
+ \r
+ private BulkEditorInput editorInput;\r
+ \r
+ Map<Button, MarkerType> markerTypeButtons = new HashMap<Button, MarkerType>();\r
+ \r
+ /**\r
+ * @param parent\r
+ * @param style\r
+ */\r
+ public BulkEditorMarkerPreferenceComposite(BulkEditorInput editorInput, Composite parent, int style) {\r
+ super(parent, style);\r
+ this.editorInput = editorInput;\r
+ createControl();\r
+ }\r
+\r
+ /**\r
+ * @param markerType \r
+ * @return \r
+ * \r
+ */\r
+ private boolean getEditMarkerPreference(MarkerType markerType) {\r
+ return PreferencesUtil.getEditMarkerTypePreference(editorInput, markerType);\r
+ }\r
+\r
+ private void setEditMarkerPreference(MarkerType markerType, boolean edit) {\r
+ PreferencesUtil.setEditMarkerTypePreference(editorInput, markerType, edit);\r
+ }\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
+ for (final MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
+ if (editorInput.isMarkerTypeEditingEnabled(markerType)) {\r
+ final Button button = new Button(this, SWT.CHECK);\r
+ button.setText("Edit " + markerType.getLabel() + " markers");\r
+ button.addSelectionListener(new SelectionAdapter() {\r
+ public void widgetSelected(SelectionEvent e) {\r
+ setEditMarkerPreference(markerType, button.getSelection());\r
+ }\r
+ });\r
+ button.setSelection(getEditMarkerPreference(markerType));\r
+ \r
+ markerTypeButtons.put(button, markerType);\r
+ }\r
+ }\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;\r
-\r
-import org.eclipse.jface.text.reconciler.IReconciler;\r
-import org.eclipse.jface.text.source.ISourceViewer;\r
-\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditorSourceViewerConfiguration;\r
-\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class BulkEditorSourceViewerConfiguration extends\r
- AnnotatedLineEditorSourceViewerConfiguration {\r
- \r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditorSourceViewerConfiguration#getReconciler(org.eclipse.jface.text.source.ISourceViewer)\r
- */\r
- public IReconciler getReconciler(ISourceViewer sourceViewer) {\r
- return 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;\r
+\r
+import java.util.Iterator;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.text.IDocument;\r
+import org.eclipse.jface.text.IRegion;\r
+import org.eclipse.jface.text.TextPresentation;\r
+import org.eclipse.jface.text.presentation.IPresentationReconciler;\r
+import org.eclipse.jface.text.presentation.PresentationReconciler;\r
+import org.eclipse.jface.text.source.ISourceViewer;\r
+import org.eclipse.jface.text.source.SourceViewerConfiguration;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.StyleRange;\r
+\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;\r
+import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;\r
+\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ */\r
+public class BulkEditorViewerConfiguration extends SourceViewerConfiguration {\r
+ private static final Logger logger = Logger\r
+ .getLogger(BulkEditorViewerConfiguration.class);\r
+ \r
+ private ILineDisplayStrategy lineDisplayStrategy;\r
+\r
+ /**\r
+ * @param lineDisplayStrategy\r
+ */\r
+ public BulkEditorViewerConfiguration(\r
+ ILineDisplayStrategy lineDisplayStrategy) {\r
+ this.lineDisplayStrategy = lineDisplayStrategy;\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getPresentationReconciler(org.eclipse.jface.text.source.ISourceViewer)\r
+ */\r
+ @Override\r
+ public IPresentationReconciler getPresentationReconciler(\r
+ final ISourceViewer sourceViewer) {\r
+ return new PresentationReconciler() {\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.text.presentation.PresentationReconciler#createPresentation(org.eclipse.jface.text.IRegion, org.eclipse.jface.text.IDocument)\r
+ */\r
+ @Override\r
+ protected TextPresentation createPresentation(IRegion damage,\r
+ IDocument document) {\r
+ \r
+ TextPresentation presentation = super.createPresentation(damage, document);\r
+ LineAnnotationModel model = (LineAnnotationModel) sourceViewer.getAnnotationModel();\r
+ \r
+ // Update all annotated lines in the damage zone\r
+ Iterator iter = model.getAnnotationIterator(damage.getOffset(), damage.getLength() + 1, true, true);\r
+ while (iter.hasNext()) {\r
+ Object next = iter.next();\r
+ if (next instanceof LineAnnotation) {\r
+ for (StyleRange styleRange : lineDisplayStrategy.getTextStyleRanges(((LineAnnotation) next).getEntity())) {\r
+ styleRange.start += model.getPosition((LineAnnotation) next).getOffset();\r
+ presentation.addStyleRange(styleRange);\r
+ }\r
+ }\r
+ }\r
+ \r
+ return presentation;\r
+ }\r
+ };\r
+ }\r
+ \r
+}
\ No newline at end of file
import org.eclipse.ui.IEditorInput;\r
\r
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.NameEditorInput;\r
+import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\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 NameEditorInput) {\r
- return false;\r
- } else {\r
- return true;\r
- } \r
+ if (input instanceof BulkEditorInput) {\r
+ return ((BulkEditorInput) input).isMergingEnabled();\r
+ }\r
}\r
+// if (("isPublishFlagEditingEnabled").equals(property)) {\r
+// IEditorInput input = bulkEditor.getEditorInput();\r
+// if (input instanceof NameEditorInput) {\r
+// return ((NameEditorInput) input).isPublishFlagEnabled();\r
+// }\r
+// }\r
return false;\r
}\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
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.command;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.ContributionItem;\r
+import org.eclipse.jface.action.IContributionItem;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.Menu;\r
+import org.eclipse.swt.widgets.MenuItem;\r
+import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.eclipse.ui.actions.CompoundContributionItem;\r
+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.preference.PreferencesUtil;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.10.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMarkerContributionItems extends CompoundContributionItem {\r
+ private static final Logger logger = Logger\r
+ .getLogger(SetMarkerContributionItems.class);\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()\r
+ */\r
+ @Override\r
+ protected IContributionItem[] getContributionItems() {\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
+ for (final MarkerType markerType : VocabularyStore.getNonTechnicalMarkerTypes()) {\r
+ if (input.isMarkerTypeEditingEnabled(markerType) && PreferencesUtil.getEditMarkerTypePreference(input, markerType)) {\r
+ contributions.add(new ContributionItem() {\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.Menu, int)\r
+ */\r
+ @Override\r
+ public void fill(Menu menu, int index) {\r
+ MenuItem subMenuItem = new MenuItem(menu, SWT.CASCADE, index);\r
+ subMenuItem.setText("Set Flag - \"" + markerType.getLabel() + "\"");\r
+ Menu subMenu = new Menu(menu.getShell(), SWT.DROP_DOWN);\r
+ subMenuItem.setMenu(subMenu);\r
+ \r
+ MenuItem trueItem = new MenuItem(subMenu, SWT.PUSH);\r
+ trueItem.setText("true");\r
+ trueItem.addSelectionListener(new SelectionAdapter() {\r
+ public void widgetSelected(SelectionEvent e) {\r
+ doSetFlagCommand(markerType, true);\r
+ } \r
+ });\r
+ \r
+ MenuItem falseItem = new MenuItem(subMenu, SWT.PUSH);\r
+ falseItem.setText("false");\r
+ falseItem.addSelectionListener(new SelectionAdapter() {\r
+ public void widgetSelected(SelectionEvent e) {\r
+ doSetFlagCommand(markerType, false);\r
+ } \r
+ });\r
+ }\r
+ });\r
+ }\r
+ }\r
+ }\r
+ return (IContributionItem[]) contributions.toArray(new IContributionItem[contributions.size()]);\r
+ }\r
+\r
+ private void doSetFlagCommand(MarkerType markerType, boolean flag) {\r
+ try {\r
+ IHandlerService handlerService = \r
+ (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);\r
+ Event event = new Event();\r
+ event.data = markerType;\r
+ if (flag) {\r
+ handlerService.executeCommand("taxeditor-bulkeditor.command.setMarkerFlagTrue", event);\r
+ } else {\r
+ handlerService.executeCommand("taxeditor-bulkeditor.command.setMarkerFlagFalse", event);\r
+ }\r
+ } catch (Exception e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ } \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.handler;\r
+\r
+import java.util.Iterator;\r
+\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.ui.handlers.HandlerUtil;\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
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ */\r
+public class RemoveMergeCandidateHandler extends AbstractHandler {\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+ */\r
+ public Object execute(ExecutionEvent event) throws ExecutionException {\r
+ \r
+ if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+ && HandlerUtil.getActiveEditor(event) instanceof BulkEditor) {\r
+ LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+ BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+ \r
+ LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+ if (model != null) {\r
+ Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+ while (iter.hasNext()) {\r
+ Object next = iter.next();\r
+ if (next instanceof LineAnnotation) {\r
+ model.changeAnnotationType(\r
+ (LineAnnotation) next, LineAnnotation.TYPE_GENERIC);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+// \r
+// \r
+// \r
+// IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
+// IEditorInput input = editor.getEditorInput();\r
+// \r
+// if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
+// \r
+// IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
+// LineAnnotationModel model = \r
+// (LineAnnotationModel) provider.getAnnotationModel(input);\r
+// IDocument document = provider.getDocument(input);\r
+// \r
+// ISelection selection = HandlerUtil.getActiveMenuSelection(event);\r
+// if (selection instanceof TextSelection) {\r
+// Annotation annotation = null;\r
+// \r
+// // Get annotation in current line\r
+// int line = ((TextSelection) selection).getStartLine();\r
+// annotation = model.getAnnotationAtLine(line, document);\r
+// \r
+// if (annotation != null) {\r
+// if (annotation.getType().equals(IBulkEditorConstants.TYPE_MERGE_CANDIDATE)) {\r
+// model.changeAnnotationType(\r
+// annotation, LineAnnotation.TYPE_GENERIC);\r
+// } else {\r
+// model.changeAnnotationType(\r
+// annotation, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
+// }\r
+// }\r
+// }\r
+// } \r
+ return 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
+\r
+package eu.etaxonomy.taxeditor.bulkeditor.handler;\r
+\r
+import java.beans.PropertyChangeEvent;\r
+import java.util.Iterator;\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.swt.widgets.Event;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Marker;\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
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.10.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMarkerFlagFalseHandler extends AbstractHandler {\r
+ private static final Logger logger = Logger\r
+ .getLogger(SetMarkerFlagFalseHandler.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
+ // TODO merge this w SetMarkerFlagTrueHandler\r
+ \r
+ Object data = ((Event) event.getTrigger()).data;\r
+ \r
+ if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+ && HandlerUtil.getActiveEditor(event) instanceof BulkEditor && data instanceof MarkerType) {\r
+ LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+ BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+ \r
+ LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+ if (model != null) {\r
+ Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+ while (iter.hasNext()) {\r
+ Object next = iter.next();\r
+ if (next instanceof LineAnnotation) {\r
+ Object entity = ((LineAnnotation) next).getEntity();\r
+ createOrUpdateMarker((AnnotatableEntity) entity, (MarkerType) data, false);\r
+ ((CdmBase) entity).firePropertyChange(new PropertyChangeEvent(entity, "", null, null));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * @param entity\r
+ * @param publish\r
+ * @param flag\r
+ */\r
+ private void createOrUpdateMarker(AnnotatableEntity entity,\r
+ MarkerType markerType, boolean flag) {\r
+ for (Marker marker : entity.getMarkers()) {\r
+ if (markerType.equals(marker.getMarkerType())) {\r
+ marker.setFlag(flag);\r
+ return;\r
+ }\r
+ }\r
+ entity.addMarker(Marker.NewInstance(markerType, flag));\r
+ }\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.bulkeditor.handler;\r
+\r
+import java.beans.PropertyChangeEvent;\r
+import java.util.Iterator;\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.swt.widgets.Event;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.model.common.AnnotatableEntity;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.Marker;\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
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 20.10.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMarkerFlagTrueHandler extends AbstractHandler {\r
+ private static final Logger logger = Logger\r
+ .getLogger(SetMarkerFlagTrueHandler.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
+ Object data = ((Event) event.getTrigger()).data;\r
+ \r
+ if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+ && HandlerUtil.getActiveEditor(event) instanceof BulkEditor && data instanceof MarkerType) {\r
+ LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+ BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+ \r
+ LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+ if (model != null) {\r
+ Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+ while (iter.hasNext()) {\r
+ Object next = iter.next();\r
+ if (next instanceof LineAnnotation) {\r
+ Object entity = ((LineAnnotation) next).getEntity();\r
+ createOrUpdateMarker((AnnotatableEntity) entity, (MarkerType) data, true);\r
+ ((CdmBase) entity).firePropertyChange(new PropertyChangeEvent(entity, "", null, null));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * @param entity\r
+ * @param publish\r
+ * @param b\r
+ */\r
+ private void createOrUpdateMarker(AnnotatableEntity entity,\r
+ MarkerType markerType, boolean flag) {\r
+ for (Marker marker : entity.getMarkers()) {\r
+ if (markerType.equals(marker.getMarkerType())) {\r
+ marker.setFlag(flag);\r
+ return;\r
+ }\r
+ }\r
+ entity.addMarker(Marker.NewInstance(markerType, flag));\r
+ }\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.handler;\r
+\r
+import java.util.Iterator;\r
+\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.ui.handlers.HandlerUtil;\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
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 25.06.2009\r
+ * @version 1.0\r
+ */\r
+public class SetMergeCandidateHandler extends AbstractHandler {\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+ */\r
+ public Object execute(ExecutionEvent event) throws ExecutionException {\r
+ \r
+ if (HandlerUtil.getCurrentSelection(event) instanceof LineSelection \r
+ && HandlerUtil.getActiveEditor(event) instanceof BulkEditor) {\r
+ LineSelection selection = (LineSelection) HandlerUtil.getCurrentSelection(event);\r
+ BulkEditor editor = (BulkEditor) HandlerUtil.getActiveEditor(event);\r
+ \r
+ LineAnnotationModel model = (LineAnnotationModel) editor.getDocumentProvider().getAnnotationModel(editor.getEditorInput());\r
+ if (model != null) {\r
+ Iterator iter = model.getAnnotationIterator(selection.getOffset(), selection.getLength(), true, true);\r
+ while (iter.hasNext()) {\r
+ Object next = iter.next();\r
+ if (next instanceof LineAnnotation) {\r
+ model.changeAnnotationType(\r
+ (LineAnnotation) next, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+// \r
+// \r
+// \r
+// IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
+// IEditorInput input = editor.getEditorInput();\r
+// \r
+// if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
+// \r
+// IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
+// LineAnnotationModel model = \r
+// (LineAnnotationModel) provider.getAnnotationModel(input);\r
+// IDocument document = provider.getDocument(input);\r
+// \r
+// ISelection selection = HandlerUtil.getActiveMenuSelection(event);\r
+// if (selection instanceof TextSelection) {\r
+// Annotation annotation = null;\r
+// \r
+// // Get annotation in current line\r
+// int line = ((TextSelection) selection).getStartLine();\r
+// annotation = model.getAnnotationAtLine(line, document);\r
+// \r
+// if (annotation != null) {\r
+// if (annotation.getType().equals(IBulkEditorConstants.TYPE_MERGE_CANDIDATE)) {\r
+// model.changeAnnotationType(\r
+// annotation, LineAnnotation.TYPE_GENERIC);\r
+// } else {\r
+// model.changeAnnotationType(\r
+// annotation, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
+// }\r
+// }\r
+// }\r
+// } \r
+ return 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.handler;\r
-\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.IDocument;\r
-import org.eclipse.jface.text.TextSelection;\r
-import org.eclipse.jface.text.source.Annotation;\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.ui.IEditorInput;\r
-import org.eclipse.ui.IEditorPart;\r
-import org.eclipse.ui.handlers.HandlerUtil;\r
-import org.eclipse.ui.texteditor.IDocumentProvider;\r
-\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.BulkEditor;\r
-import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 25.06.2009\r
- * @version 1.0\r
- */\r
-public class ToggleMergeCandidateHandler extends AbstractHandler {\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
- */\r
- public Object execute(ExecutionEvent event) throws ExecutionException {\r
- \r
- IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
- IEditorInput input = editor.getEditorInput();\r
- \r
- if (editor instanceof BulkEditor && input instanceof BulkEditorInput) {\r
- \r
- IDocumentProvider provider = ((AnnotatedLineEditor) editor).getDocumentProvider();\r
- LineAnnotationModel model = \r
- (LineAnnotationModel) provider.getAnnotationModel(input);\r
- IDocument document = provider.getDocument(input);\r
- \r
- ISelection selection = HandlerUtil.getActiveMenuSelection(event);\r
- if (selection instanceof TextSelection) {\r
- Annotation annotation = null;\r
- \r
- // Get annotation in current line\r
- int line = ((TextSelection) selection).getStartLine();\r
- annotation = model.getAnnotationAtLine(line, document);\r
- \r
- if (annotation != null) {\r
- if (annotation.getType().equals(IBulkEditorConstants.TYPE_MERGE_CANDIDATE)) {\r
- model.changeAnnotationType(\r
- annotation, LineAnnotation.TYPE_GENERIC);\r
- } else {\r
- model.changeAnnotationType(\r
- annotation, IBulkEditorConstants.TYPE_MERGE_CANDIDATE);\r
- }\r
- }\r
- }\r
- } \r
- return null;\r
- }\r
-}
\ No newline at end of file
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
return query;\r
}\r
\r
- abstract public boolean isMergingEnabled();\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 eu.etaxonomy.cdm.model.common.MarkerType;\r
+\r
\r
/**\r
* @author p.ciardelli\r
public boolean isMergingEnabled() {\r
return true;\r
}\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMarkerTypeEditingEnabled(eu.etaxonomy.cdm.model.common.MarkerType)\r
+ */\r
+ @Override\r
+ public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {\r
+ if (MarkerType.PUBLISH().equals(markerType)) {\r
+ return true;\r
+ }\r
+ return super.isMarkerTypeEditingEnabled(markerType);\r
+ }\r
}
\ No newline at end of file