eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/TaxonomicEditorPlugin.java -text
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/BulkEditing.java -text
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/Default.java -text
+eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/PalmUses.java -text
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/PolytomousKey.java -text
eu.etaxonomy.taxeditor.application/src/main/java/eu/etaxonomy/taxeditor/perspective/Taxonomic.java -text
eu.etaxonomy.taxeditor.application/src/main/resources/log4j.properties -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/DeleteMediaOperation.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/MoveMediaInListOperation.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/RemoveImageFromDescriptionElementOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesContentProvider.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesLabelProvider.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesViewPart.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseRecordHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/DeleteUseHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateTaxonUseOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseRecordOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/DeleteTaxonUseOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/DeleteUseRecordOperation.java -text
eu.etaxonomy.taxeditor.editor/src/main/resources/TaonDescriptionEditor.screen -text
eu.etaxonomy.taxeditor.editor/src/main/resources/log4j.properties -text
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/Application.java -text
eu.etaxonomy.taxeditor.store/icons/icon.png -text
eu.etaxonomy.taxeditor.store/icons/import_wiz.gif -text
eu.etaxonomy.taxeditor.store/icons/large_image.gif -text
+eu.etaxonomy.taxeditor.store/icons/leaf_detail.png -text
eu.etaxonomy.taxeditor.store/icons/linkto_help.gif -text
eu.etaxonomy.taxeditor.store/icons/lockedstate.gif -text
eu.etaxonomy.taxeditor.store/icons/ma_12x12.gif -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/ExtensionTypeEditorInput.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/FeatureEditorInput.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/MarkerTypeEditorInput.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/ModifierEditorInput.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/NamedAreaEditorInput.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/NamedAreaLevelEditorInput.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/StateEditorInput.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/userecords/UseRecordDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/userecords/UseRecordDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/AbstractTermBaseDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/reporting/ReportingViewPart.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewPart.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewer.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/userecords/UseRecordsViewPart.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/userecords/UseRecordsViewer.java -text
eu.etaxonomy.taxeditor.store/src/main/resources/eu/etaxonomy/cdm/editorApplicationContext.xml -text
eu.etaxonomy.taxeditor.store/src/main/resources/log4j.properties -text
eu.etaxonomy.taxeditor.store/src/test/java/eu/etaxonomy/taxeditor/store/NameProtectTitleCacheTest.java -text
id="eu.etaxonomy.taxeditor.application.perspective.polytomous"\r
name="Polytomous Key">\r
</perspective>\r
+ <perspective\r
+ class="eu.etaxonomy.taxeditor.perspective.PalmUses"\r
+ id="eu.etaxonomy.taxeditor.application.perspective.palmuses"\r
+ name="Palm Uses">\r
+ </perspective>\r
+ \r
</extension>\r
<!--extension\r
point="org.eclipse.ui.views">\r
id="eu.etaxonomy.taxeditor.editor.forms.detailsView">\r
</showInPart>\r
</perspectiveExtension>\r
+ <perspectiveExtension\r
+ targetID="eu.etaxonomy.taxeditor.application.perspective.palmuses">\r
+ <showInPart\r
+ id="eu.etaxonomy.taxeditor.editor.forms.detailsView">\r
+ </showInPart>\r
+ </perspectiveExtension>\r
</extension>\r
<extension\r
point="org.eclipse.ui.menus">\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.perspective;\r
+\r
+import org.eclipse.ui.IPageLayout;\r
+\r
+\r
+\r
+import eu.etaxonomy.taxeditor.editor.view.uses.UsesViewPart;\r
+import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;\r
+import eu.etaxonomy.taxeditor.view.userecords.UseRecordsViewPart;\r
+\r
+/**\r
+ * @author a.theys\r
+ *\r
+ */\r
+public class PalmUses extends Default {\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.ui.IPerspectiveFactory#createInitialLayout(org.eclipse.ui.IPageLayout)\r
+ */\r
+ @Override\r
+ public void createInitialLayout(IPageLayout layout) {\r
+ layout.addView(TaxonNavigator.ID, IPageLayout.LEFT, 0.25f, layout.getEditorArea());\r
+ layout.addView(UseRecordsViewPart.ID, IPageLayout.RIGHT, 0.25f, layout.getEditorArea());\r
+ layout.addView(UsesViewPart.ID, IPageLayout.BOTTOM, 0.25f, layout.getEditorArea());\r
+ \r
+ // layout.addView(SupplementalDataViewPart.ID, IPageLayout.BOTTOM, 0.25f, DetailsViewPart.ID);\r
+ \r
+ createAdditionalFolder(layout, layout.getEditorArea());\r
+ }\r
+ \r
+\r
+}\r
+\r
eu.etaxonomy.taxeditor.editor.name,
eu.etaxonomy.taxeditor.editor.name.handler,
eu.etaxonomy.taxeditor.editor.view.descriptive,
- eu.etaxonomy.taxeditor.editor.view.media
+ eu.etaxonomy.taxeditor.editor.view.media,
+ eu.etaxonomy.taxeditor.editor.view.uses
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.expressions,
id="eu.etaxonomy.taxeditor.editor.view.descriptive"
name="Descriptive"
restorable="true">
+ </view>
+ <view
+ allowMultiple="false"
+ class="eu.etaxonomy.taxeditor.editor.view.uses.UsesViewPart"
+ icon="icons/leaf.png"
+ id="eu.etaxonomy.taxeditor.editor.view.uses"
+ name="Uses"
+ restorable="true">
</view>
<view
allowMultiple="false"
style="push">
</command>
</menuContribution>
+
+
+
+
+ <menuContribution
+ locationURI="popup:eu.etaxonomy.taxeditor.editor.view.uses">
+ <command
+ commandId="eu.etaxonomy.taxeditor.use.commands.adduse"
+ label="New Use"
+ style="push">
+ </command>
+ <command
+ commandId="eu.etaxonomy.taxeditor.editor.use.createUseRecord"
+ label="New Use Record"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ <or>
+ <reference
+ definitionId="isDescription">
+ </reference>
+ <reference
+ definitionId="isDescriptionElement">
+ </reference>
+ <reference
+ definitionId="isFeatureNodeContainer">
+ </reference>
+ </or>
+ </visibleWhen>
+ </command>
+ <separator
+ name="eu.etaxonomy.taxeditor.usesEditor.separator3"
+ visible="true">
+ </separator>
+ <separator
+ name="taxeditor-editor.separator1"
+ visible="true">
+ </separator>
+ <separator
+ name="eu.etaxonomy.taxeditor.taxonDescriptionEditor.separator.afterNew"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.edit.delete"
+ label="Delete"
+ style="push">
+ </command>
+ <separator
+ name="eu.etaxonomy.taxeditor.taxonDescriptionEditor.separator.afterDelete"
+ visible="true">
+ </separator>
+ <command
+ commandId="org.eclipse.ui.file.save"
+ label="Save"
+ style="push">
+ </command>
+ </menuContribution>
+
+
+
+
+
<menuContribution
locationURI="popup:eu.etaxonomy.taxeditor.editor.view.media">
<command
</with>
</activeWhen>
</handler>
+ <handler
+ class="eu.etaxonomy.taxeditor.editor.view.uses.handler.DeleteUseHandler"
+ commandId="org.eclipse.ui.edit.delete">
+ <activeWhen>
+ <with
+ variable="activePartId">
+ <equals
+ value="eu.etaxonomy.taxeditor.editor.view.uses">
+ </equals>
+ </with>
+ </activeWhen>
+ </handler>
</extension>
<extension
+ id="eu.etaxonomy.taxeditor.editor.use.createUseRecord"
name="Name Commands"
point="org.eclipse.ui.commands">
<category
id="eu.etaxonomy.taxeditor.description.commands.moveDescriptionElements"
name="Move Description Elements">
</command>
+ <category
+ id="eu.etaxonomy.taxeditor.editor.view.uses.command.category"
+ name="-- New Uses">
+ </category>
+ <command
+ categoryId="eu.etaxonomy.taxeditor.editor.view.uses.command.category"
+ defaultHandler="eu.etaxonomy.taxeditor.editor.view.uses.handler.CreateUseHandler"
+ id="eu.etaxonomy.taxeditor.use.commands.adduse"
+ name="New Use">
+ </command>
+ <command
+ categoryId="eu.etaxonomy.taxeditor.editor.view.uses.command.category"
+ defaultHandler="eu.etaxonomy.taxeditor.editor.view.uses.handler.CreateUseRecordHandler"
+ id="eu.etaxonomy.taxeditor.editor.use.createUseRecord"
+ name="New Use Record">
+ </command>
<category
id="eu.etaxonomy.taxeditor.editor.media.category"
name="-- Media">
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+import java.util.UUID;\r
+\r
+import org.eclipse.jface.viewers.ITreeContentProvider;\r
+import org.eclipse.jface.viewers.Viewer;\r
+\r
+import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.FeatureTree;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;\r
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.TermStore;\r
+\r
+public class UsesContentProvider implements ITreeContentProvider {\r
+\r
+ private static final Object[] NO_CHILDREN = new Object[0];\r
+ private Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache;\r
+ Set<MarkerType> markerTypes = new HashSet<MarkerType>();\r
+ \r
+ /**\r
+ * <p>Constructor for DescriptiveContentProvider.</p>\r
+ *\r
+ * @param featureNodeContainerCache a {@link java.util.Map} object.\r
+ */\r
+ public UsesContentProvider(Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache) {\r
+ //MarkerType markerType = (MarkerType)this.definedTermDao.findByUuid(UUID.fromString("b4b1b2ab-89a8-4ce6-8110-d60b8b1bc433")); //Marker "complete"\r
+ //this.markerTypes.addAll(CdmStore.getTermManager().getPreferredMarkerTypes());\r
+ this.featureNodeContainerCache = featureNodeContainerCache;\r
+ }\r
+ \r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)\r
+ */\r
+ /** {@inheritDoc} */\r
+ public Object[] getChildren(Object parentElement) {\r
+ if (parentElement instanceof TaxonEditorInput) {\r
+ return getDescriptions((TaxonEditorInput) parentElement).toArray(); \r
+ }\r
+ else if (parentElement instanceof TaxonDescription) {\r
+ if ( ! ((TaxonDescription) parentElement).isImageGallery()) {\r
+ TaxonDescription description = (TaxonDescription) parentElement;\r
+ \r
+ FeatureNodeContainerTree containerTree = getContainerTreeForDesription(description);\r
+ \r
+ return containerTree.getRoot().getChildren().toArray();\r
+ }\r
+ }\r
+ else if (parentElement instanceof FeatureNodeContainer){\r
+ FeatureNodeContainer container = (FeatureNodeContainer) parentElement;\r
+ if(container.isLeaf()){\r
+ return container.getDescriptionElements().toArray();\r
+ }else{\r
+ return container.getChildren().toArray();\r
+ }\r
+ }\r
+ \r
+ return NO_CHILDREN;\r
+ }\r
+ \r
+ private FeatureNodeContainerTree getContainerTreeForDesription(TaxonDescription description){\r
+ if(! featureNodeContainerCache.containsKey(description)){\r
+ FeatureNodeContainerTree containerTree = new FeatureNodeContainerTree(description, getFeatureTree(description));\r
+ featureNodeContainerCache.put(description, containerTree);\r
+ }\r
+ return featureNodeContainerCache.get(description);\r
+ }\r
+\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public boolean hasChildren(Object element) {\r
+ if (element instanceof TaxonDescription){\r
+ TaxonDescription description = (TaxonDescription) element;\r
+ FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);\r
+ if(containerTree != null && containerTree.getRoot() != null){\r
+ return containerTree.getRoot().getChildren().size() != 0;\r
+ }\r
+ } \r
+ return getChildren(element).length != 0;\r
+ }\r
+ \r
+ /**\r
+ * Retrieves the feature tree associated with the given description\r
+ * \r
+ * TODO as of now this is always the same thing because feature trees may not be associated \r
+ * to descriptions yet.\r
+ * \r
+ * @param description\r
+ * @return\r
+ */\r
+ private FeatureTree getFeatureTree(DescriptionBase description){\r
+ FeatureTree featureTree = null;\r
+ \r
+ // TODO change this to the feature tree associated with this taxon description\r
+ if (description.hasStructuredData()){ \r
+ featureTree = PreferencesUtil.getDefaultFeatureTreeForStructuredDescription();\r
+ }else{\r
+ featureTree = PreferencesUtil.getDefaultFeatureTreeForTextualDescription();\r
+ }\r
+ \r
+ // create a transient tree with all features if none was selected\r
+ if(featureTree == null){\r
+ featureTree = FeatureTree.NewInstance(TermStore.getTerms(Feature.class));\r
+ }\r
+ \r
+ return featureTree;\r
+ }\r
+\r
+ /**\r
+ * Get all descriptions associated with the given TaxonEditorInput\r
+ * \r
+ * @param parentElement\r
+ * @return\r
+ */\r
+ //CdmStore.getService(IDescriptionService.class).listTaxonDescriptions(input.getTaxonNode().getTaxon(), null, null, null, null, null, null)\r
+ private List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {\r
+ //this.markerTypes.addAll(CdmStore.getTermManager().getPreferredMarkerTypes());\r
+ this.markerTypes.addAll(CdmStore.getTermManager().getPreferredTerms(MarkerType.class));\r
+ Taxon taxon = parentElement.getTaxon();\r
+ Set<MarkerType> typesToDisdplay = new HashSet<MarkerType>();\r
+ List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();\r
+ List<TaxonDescription> usesDescriptions = new ArrayList<TaxonDescription>();\r
+ \r
+ /*for (MarkerType markerType : markerTypes) {\r
+ if (markerType.toString().equals("complete")) {\r
+ typesToDisdplay.add(markerType);\r
+ }\r
+ }*/\r
+ //usesDescriptions = CdmStore.getService(IDescriptionService.class).listTaxonDescriptions(taxon, null, null, typesToDisdplay, null, null, null);\r
+ //for(DescriptionBase description : CdmStore.getService(IDescriptionService.class).listTaxonDescriptions(taxon, null, null, typesToDisdplay, null, null, null)){\r
+ for(DescriptionBase description : taxon.getDescriptions()){\r
+ if(! description.isImageGallery()){\r
+ Set<Marker> descriptionMarkers = description.getMarkers();\r
+ if(descriptionMarkers != null) {\r
+ for (Marker marker: descriptionMarkers) {\r
+ //TODO Use the GetbyUUID method\r
+ if(marker.getMarkerType().getTitleCache().equals("use")) {\r
+ descriptions.add(description);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ } \r
+ return descriptions;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)\r
+ */\r
+ /** {@inheritDoc} */\r
+ public Object getParent(Object element) {\r
+ return null;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)\r
+ */\r
+ /** {@inheritDoc} */\r
+ public Object[] getElements(Object inputElement) {\r
+ return getChildren(inputElement);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()\r
+ */\r
+ /**\r
+ * <p>dispose</p>\r
+ */\r
+ public void dispose() {\r
+ featureNodeContainerCache.clear();\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)\r
+ */\r
+ /** {@inheritDoc} */\r
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {} \r
+\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses;\r
+\r
+import java.util.Arrays;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;\r
+\r
+import org.eclipse.jface.viewers.ColumnLabelProvider;\r
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;\r
+import org.eclipse.jface.viewers.StyledString;\r
+\r
+import eu.etaxonomy.cdm.api.service.DefaultCategoricalDescriptionBuilder;\r
+import eu.etaxonomy.cdm.api.service.DescriptionBuilder;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.description.CategoricalData;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Modifier;\r
+import eu.etaxonomy.cdm.model.description.State;\r
+import eu.etaxonomy.cdm.model.description.StateData;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+public class UsesLabelProvider extends ColumnLabelProvider implements\r
+ IStyledLabelProvider {\r
+ \r
+ private static DescriptionBuilder<CategoricalData> categoricalDescriptionBuilder = new DefaultCategoricalDescriptionBuilder();\r
+ public String getText(Object element) {\r
+ String text = "";\r
+ /*\r
+ * return DescriptionHelper.getLabel(element);\r
+ * \r
+ * for (Marker marker : element.getMarkers()) { if\r
+ * (marker.getMarkerType().getTitleCache().equals("use")) { return\r
+ * "Use: " + text; } }\r
+ */\r
+ if (element instanceof DescriptionBase) {\r
+ text = ((DescriptionBase) element).getTitleCache();\r
+ if (text == null || text.length() == 0) {\r
+ text = "Use: No label provided";\r
+ }\r
+ else {\r
+ text = "Use: " + text;\r
+ }\r
+ }\r
+ else if (element instanceof CategoricalData) {\r
+ //String text = "";\r
+ //TextData textData = categoricalDescriptionBuilder.build((CategoricalData) element, getLanguageList());\r
+ if (!((CategoricalData) element).getStates().isEmpty()) {\r
+ for (StateData statedata : ((CategoricalData) element).getStates()) {\r
+ if(statedata.getState() != null) {\r
+ text = text + statedata.getState().getTitleCache() + "; ";\r
+ }\r
+ /*else {\r
+ text = "No data provided";\r
+ }*/\r
+ }\r
+ }\r
+ \r
+ if (!((CategoricalData) element).getModifiers().isEmpty()) {\r
+ for (Modifier modifier : ((CategoricalData) element).getModifiers()) {\r
+ text = text + modifier.getTitleCache();\r
+ }\r
+ }\r
+\r
+ \r
+ //text = textData.getText(CdmStore.getDefaultLanguage());\r
+ if (text == null || text.length() == 0) {\r
+ text = "No data provided";\r
+ }\r
+ return text;\r
+ }\r
+ /*else if (element instanceof DescriptionElementBase) {\r
+ Map useRecordText = ((DescriptionElementBase) element).getModifyingText();\r
+ \r
+ \r
+ if (text == null || text.length() == 0) {\r
+ text = "Use Record: No label provided";\r
+ }\r
+ text = useRecordText.toString();\r
+ //text = "Something else";\r
+ }*/\r
+ else{\r
+ text = "Use Record";\r
+ }\r
+\r
+ return text;\r
+ }\r
+\r
+ @Override\r
+ public StyledString getStyledText(Object element) {\r
+ return new StyledString(this.getText(element),\r
+ StyledString.QUALIFIER_STYLER);\r
+ }\r
+ \r
+ private static List<Language> getLanguageList(){\r
+ return Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()});\r
+ }\r
+\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.action.GroupMarker;\r
+import org.eclipse.jface.action.IToolBarManager;\r
+import org.eclipse.jface.action.MenuManager;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.jface.viewers.StructuredSelection;\r
+import org.eclipse.jface.viewers.TreeViewer;\r
+import org.eclipse.jface.viewers.Viewer;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.dnd.DND;\r
+import org.eclipse.swt.dnd.Transfer;\r
+import org.eclipse.swt.graphics.ImageData;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Menu;\r
+import org.eclipse.swt.widgets.Tree;\r
+import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.IWorkbenchActionConstants;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
+import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
+import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;\r
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
+import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDragListener;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDropAdapter;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewerSorter;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;\r
+import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;\r
+import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;\r
+import eu.etaxonomy.taxeditor.model.ImageResources;\r
+import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;\r
+\r
+\r
+\r
+public class UsesViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData {\r
+ \r
+ public static final String ID = "eu.etaxonomy.taxeditor.editor.view.uses";\r
+ private TreeViewer viewer;\r
+ private Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<TaxonDescription, FeatureNodeContainerTree>();\r
+ private ToggleDescriptionAction showAllElementsAction;\r
+ private ToggleDescriptionAction hideAllElementsAction;\r
+\r
+ private int dndOperations = DND.DROP_COPY | DND.DROP_MOVE;\r
+ \r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public void createViewer(Composite parent) {\r
+ \r
+ viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL\r
+ | SWT.V_SCROLL | SWT.FULL_SELECTION));\r
+ \r
+ viewer.setContentProvider(new UsesContentProvider(featureNodeContainerCache)); \r
+ \r
+ //viewer.setInput(descService.listTaxonDescriptions(Taxon, null, null, null, null, null, null));\r
+ \r
+ viewer.setLabelProvider(new UsesLabelProvider());\r
+ \r
+ //viewer.setSorter(new DescriptiveViewerSorter());\r
+ \r
+ viewer.setAutoExpandLevel(2);\r
+ \r
+ \r
+ \r
+ Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };\r
+ /*viewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(\r
+ this));\r
+ viewer.addDropSupport(dndOperations, transfers,\r
+ new DescriptionElementDropAdapter(viewer));*/\r
+ \r
+ // Propagate selection from viewer\r
+ getSite().setSelectionProvider(viewer);\r
+ \r
+ showAllElementsAction = new ToggleDescriptionAction(false); \r
+ hideAllElementsAction = new ToggleDescriptionAction(true);\r
+ \r
+ // Add context menu to tree\r
+ createMenu();\r
+ \r
+ createToolbar();\r
+ \r
+ // set initial input\r
+// if(getEditor() != null){\r
+// viewer.setInput(getEditor().getEditorInput());\r
+// }\r
+ }\r
+ \r
+ private void createToolbar() {\r
+ IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();\r
+ toolBarManager.add(showAllElementsAction);\r
+ toolBarManager.add(hideAllElementsAction);\r
+ }\r
+ \r
+ private void createMenu(){\r
+ MenuManager menuManager = new MenuManager();\r
+ menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));\r
+ \r
+ getSite().registerContextMenu(menuManager, viewer);\r
+\r
+ // FIXME for some reason this is not working\r
+ menuManager.add(showAllElementsAction);\r
+ menuManager.add(hideAllElementsAction);\r
+ \r
+ Control control = viewer.getControl();\r
+ Menu menu = menuManager.createContextMenu(control);\r
+ \r
+ control.setMenu(menu); \r
+ }\r
+ \r
+ public void changed(Object object) {\r
+ for(FeatureNodeContainerTree containerTree : featureNodeContainerCache.values()){\r
+ containerTree.buildTree();\r
+ }\r
+ viewer.refresh();\r
+ \r
+ /*if(object instanceof DescriptionElementBase){\r
+ DescriptionElementBase descriptionElement = (DescriptionElementBase) object;\r
+ DescriptionBase description = descriptionElement.getInDescription();\r
+ FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);\r
+ \r
+ FeatureNodeContainer featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);\r
+ viewer.expandToLevel(featureNodeContainer, 1);\r
+ \r
+ }*/\r
+\r
+ if(object != null){\r
+ StructuredSelection selection = new StructuredSelection(object);\r
+ viewer.setSelection(selection, true);\r
+ }\r
+\r
+ super.changed(object);\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getInitialSelection()\r
+ */\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ protected ISelection getInitialSelection() {\r
+ if(getEditor() != null){\r
+ return new StructuredSelection(getEditor().getEditorInput());\r
+ } \r
+ \r
+ return super.getInitialSelection();\r
+ }\r
+ \r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public boolean postOperation(CdmBase objectAffectedByOperation) {\r
+ return super.postOperation(objectAffectedByOperation);\r
+ }\r
+ \r
+ @Override\r
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
+ if(EditorUtil.getActiveEditor() == null){\r
+ showEmptyPage();\r
+ return;\r
+ }\r
+ \r
+ if(part instanceof BulkEditor){\r
+ showEmptyPage();\r
+ return;\r
+ }\r
+ \r
+ if(part instanceof AbstractGraphKeyEditor){\r
+ showEmptyPage();\r
+ return;\r
+ }\r
+ \r
+ if(part instanceof MultiPageTaxonEditor){\r
+ if(! part.equals(this.part)){\r
+ TaxonEditorInput input = (TaxonEditorInput)((IEditorPart) part).getEditorInput();\r
+ featureNodeContainerCache.clear();\r
+ //showViewer(part, new StructuredSelection(CdmStore.getService(IDescriptionService.class).listTaxonDescriptions(input.getTaxonNode().getTaxon(), null, null, null, null, null, null)));\r
+ showViewer(part, new StructuredSelection(input));\r
+ }\r
+ showViewer();\r
+ }\r
+ \r
+ }\r
+\r
+ @Override\r
+ public boolean onComplete() {\r
+ return false;\r
+ }\r
+\r
+ /*@Override\r
+ public void showViewer(IWorkbenchPart part, IStructuredSelection selection) {\r
+ this.part = part; \r
+ \r
+ Object element = selection.getFirstElement();\r
+ \r
+ getViewer().setInput(descService.listTaxonDescriptions((Taxon) element, null, null, null, null, null, null));\r
+ \r
+ showViewer(); \r
+ }*/\r
+ \r
+ @Override\r
+ public Viewer getViewer() {\r
+ return viewer;\r
+ }\r
+ \r
+ private class ToggleDescriptionAction extends Action{\r
+ private boolean expanded;\r
+ \r
+ public ToggleDescriptionAction(boolean expand){\r
+ super(null, Action.AS_PUSH_BUTTON);\r
+ expanded = expand;\r
+ setImageAndTooltip();\r
+ }\r
+ \r
+ private void setImageAndTooltip(){\r
+ setImageDescriptor(new ImageDescriptor() {\r
+ @Override\r
+ public ImageData getImageData() {\r
+ setText(expanded ? "Collapse All" : "Expand All");\r
+ String resource = expanded ? ImageResources.COLLAPSE_ALL : ImageResources.EXPAND_ALL;\r
+ return ImageResources.getImage(resource).getImageData();\r
+ }\r
+ });\r
+ \r
+ String toolTipText = expanded ? "Collapse all" : "Show all descriptive data";\r
+ setToolTipText(toolTipText);\r
+ }\r
+ \r
+ @Override\r
+ public void run() {\r
+ if(expanded){\r
+ viewer.collapseAll();\r
+ }else{\r
+ viewer.expandAll();\r
+ }\r
+ setImageAndTooltip();\r
+ }\r
+ }\r
+\r
+ \r
+\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses.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.core.commands.common.NotDefinedException;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.forms.editor.FormEditor;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
+import eu.etaxonomy.taxeditor.editor.view.uses.operation.CreateTaxonUseOperation;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+\r
+public class CreateUseHandler extends AbstractHandler {\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
+ */\r
+ /** {@inheritDoc} */\r
+ public Object execute(ExecutionEvent event) throws ExecutionException {\r
+ IWorkbenchPart part = HandlerUtil.getActivePart(event);\r
+ IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part : null;\r
+ \r
+ \r
+ IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
+ if (editor instanceof FormEditor) {\r
+ editor = ((FormEditor) editor).getActiveEditor();\r
+ }\r
+ IEditorInput input = editor.getEditorInput();\r
+ if (input instanceof TaxonEditorInput) {\r
+ Taxon taxon = ((TaxonEditorInput) input).getTaxon(); \r
+ AbstractPostOperation operation;\r
+ try {\r
+ // TODO use undo context specific to editor\r
+ operation = new CreateTaxonUseOperation(event.getCommand().getName(), \r
+ EditorUtil.getUndoContext(), taxon, postOperationEnabled);\r
+ EditorUtil.executeOperation(operation);\r
+ } catch (NotDefinedException e) {\r
+ EditorUtil.warn(getClass(), "Command name not set.");\r
+ }\r
+ } \r
+ return null;\r
+ }\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses.handler;
+
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.description.CategoricalData;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TextData;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.uses.operation.CreateUseRecordOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class CreateUseRecordHandler extends AbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IWorkbenchPart part = HandlerUtil.getActivePart(event);
+ IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part
+ : null;
+
+ IEditorPart editor = HandlerUtil.getActiveEditor(event);
+ if (editor instanceof FormEditor) {
+ editor = ((FormEditor) editor).getActiveEditor();
+ }
+ IEditorInput input = editor.getEditorInput();
+ if (input instanceof TaxonEditorInput) {
+ Taxon taxon = ((TaxonEditorInput) input).getTaxon();
+
+ TaxonDescription description = null;
+
+ ISelection selection = HandlerUtil.getActiveMenuSelection(event);
+ if (selection instanceof ITreeSelection) {
+ TreePath[] paths = ((ITreeSelection) selection).getPaths();
+ Object firstSegment = paths[0].getFirstSegment();
+ if (firstSegment instanceof TaxonDescription) {
+ description = (TaxonDescription) firstSegment;
+ }
+ }else if (selection instanceof IStructuredSelection) {
+ Object selectedElement = ((IStructuredSelection) selection)
+ .getFirstElement();
+ if (selectedElement instanceof TaxonDescription){
+ description = (TaxonDescription) selectedElement;
+ }
+ }
+
+ if (description != null) {
+ //CategoricalData element = CategoricalData.NewInstance();
+ AbstractPostOperation operation = null;
+ try {
+ List<Feature> features = CdmStore.getTermManager().getPreferredTerms(Feature.class);
+ //TextData element = TextData.NewInstance();
+ /*TextData feature = TextData.NewInstance();
+ *Feature feature = (Feature) HibernateProxyHelper.deproxy(feature);*/
+ for (Feature feature : features) {
+ if(feature.getTitleCache().equals("Use Record")) {
+ feature.setSupportsCategoricalData(true);
+ //CategoricalData element = CategoricalData.NewInstance();
+ //element.setFeature(feature);
+ /*operation = new CreateUseRecordOperation(event
+ .getCommand().getName(),
+ EditorUtil.getUndoContext(), taxon,
+ description, feature, postOperationEnabled);*/
+ operation = new CreateUseRecordOperation(event
+ .getCommand().getName(),
+ EditorUtil.getUndoContext(), taxon,
+ description, feature, postOperationEnabled);
+
+ }
+ }
+ // TODO use undo context specific to editor
+
+ EditorUtil.executeOperation(operation);
+ } catch (NotDefinedException e) {
+ EditorUtil.warn(getClass(), "Command name not set");
+ }
+ } else {
+ EditorUtil.error(getClass(), new IllegalArgumentException("Could not determine the taxon description"));
+ return null;
+ }
+ }
+ return null;
+
+ }
+}
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses.handler;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\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.core.commands.common.NotDefinedException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.jface.viewers.IStructuredSelection;\r
+import org.eclipse.jface.viewers.TreePath;\r
+import org.eclipse.jface.viewers.TreeSelection;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.handlers.HandlerUtil;\r
+\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptionElementOperation;\r
+import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;\r
+import eu.etaxonomy.taxeditor.editor.view.uses.operation.DeleteTaxonUseOperation;\r
+import eu.etaxonomy.taxeditor.editor.view.uses.operation.DeleteUseRecordOperation;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+\r
+public class DeleteUseHandler extends AbstractHandler {\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * \r
+ * @see\r
+ * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.\r
+ * ExecutionEvent)\r
+ */\r
+ /** {@inheritDoc} */\r
+ public Object execute(ExecutionEvent event) throws ExecutionException {\r
+ IStructuredSelection selection = (IStructuredSelection) HandlerUtil\r
+ .getActiveSite(event).getSelectionProvider().getSelection();\r
+\r
+ IWorkbenchPart part = HandlerUtil.getActivePart(event);\r
+ IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part\r
+ : null;\r
+\r
+ try {\r
+ String label = event.getCommand().getName();\r
+\r
+ IUndoContext undoContext = EditorUtil.getUndoContext();\r
+\r
+ List<AbstractPostOperation> operations = new ArrayList<AbstractPostOperation>();\r
+\r
+ for (Object object : selection.toArray()) {\r
+\r
+ AbstractPostOperation operation = null;\r
+\r
+ // TaxonDescription\r
+ if (object instanceof TaxonDescription) {\r
+ operations.add(new DeleteTaxonUseOperation(label,\r
+ undoContext, (TaxonDescription) object,\r
+ postOperationEnabled));\r
+ }\r
+ // DescriptionElementBase\r
+ else if (object instanceof DescriptionElementBase) {\r
+ operations.add(new DeleteUseRecordOperation(label,\r
+ undoContext, (DescriptionElementBase) object,\r
+ postOperationEnabled));\r
+ } else if (object instanceof FeatureNodeContainer) {\r
+ List<DescriptionElementBase> descriptions = ((FeatureNodeContainer) object)\r
+ .getDescriptionElementsForEntireBranch();\r
+\r
+ for (DescriptionElementBase description : descriptions) {\r
+ operations.add(new DeleteUseRecordOperation(\r
+ label, undoContext, description,\r
+ postOperationEnabled));\r
+ }\r
+ }\r
+ // Media\r
+ else if (object instanceof Media) {\r
+ TreeSelection treeSelection = (TreeSelection) selection;\r
+\r
+ TreePath[] path = treeSelection.getPathsFor(object);\r
+\r
+ TaxonDescription imageGallery = (TaxonDescription) path[0]\r
+ .getFirstSegment();\r
+\r
+ operations\r
+ .add(new DeleteMediaOperation(label, undoContext,\r
+ imageGallery, (Media) object,\r
+ postOperationEnabled));\r
+ } else {\r
+ EditorUtil.error(getClass(),\r
+ "Selection is not valid for this delete handler",\r
+ null);\r
+ }\r
+ }\r
+\r
+ // execute all cumulated operations\r
+ for (AbstractPostOperation operation : operations) {\r
+ EditorUtil.executeOperation(operation);\r
+ }\r
+\r
+ } catch (NotDefinedException e) {\r
+ EditorUtil.warn(getClass(), "Command name not set.");\r
+ }\r
+\r
+ return null;\r
+ }\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses.operation;\r
+\r
+import java.util.HashSet;\r
+import java.util.Set;\r
+\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+\r
+public class CreateTaxonUseOperation extends AbstractPostOperation {\r
+ private TaxonDescription description;\r
+ private boolean isImageGallery;\r
+ private Set<MarkerType> markerTypes = new HashSet<MarkerType>();\r
+ private Marker marker;\r
+\r
+ /**\r
+ * <p>Constructor for CreateTaxonDescriptionOperation.</p>\r
+ *\r
+ * @param label a {@link java.lang.String} object.\r
+ * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.\r
+ * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.\r
+ * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.\r
+ */\r
+ public CreateTaxonUseOperation(String label, IUndoContext undoContext,\r
+ Taxon taxon, IPostOperationEnabled postOperationEnabled) {\r
+ this(label, undoContext, taxon, postOperationEnabled, false);\r
+ }\r
+\r
+ /**\r
+ * <p>Constructor for CreateTaxonDescriptionOperation.</p>\r
+ *\r
+ * @param label a {@link java.lang.String} object.\r
+ * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.\r
+ * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.\r
+ * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.\r
+ * @param isImageGallery a boolean.\r
+ */\r
+ public CreateTaxonUseOperation(String label, IUndoContext undoContext,\r
+ Taxon taxon, IPostOperationEnabled postOperationEnabled, boolean isImageGallery) {\r
+ super(label, undoContext, taxon, postOperationEnabled);\r
+ this.isImageGallery = isImageGallery;\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+ */\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ \r
+ description = TaxonDescription.NewInstance(taxon);\r
+ monitor.worked(20);\r
+ //this.markerTypes.addAll(CdmStore.getTermManager().getPreferredMarkerTypes());\r
+ this.markerTypes.addAll(CdmStore.getTermManager().getPreferredTerms(MarkerType.class));\r
+ Set<MarkerType> typesToDisdplay = new HashSet<MarkerType>();\r
+ for (MarkerType markerType : markerTypes) {\r
+ if (markerType.getTitleCache().equals("use")) {\r
+ marker = Marker.NewInstance(markerType, true);\r
+ description.addMarker(marker);\r
+ }\r
+ }\r
+ if(isImageGallery){\r
+ description.setImageGallery(isImageGallery);\r
+ // add the description element to hold the media elements for this image gallery\r
+ TextData element = TextData.NewInstance(Feature.IMAGE());\r
+ element.addMedia(Media.NewInstance());\r
+ description.addElement(element);\r
+ }\r
+ monitor.worked(40);\r
+\r
+ return postExecute(description);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+ */\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ \r
+ taxon.addDescription(description);\r
+ \r
+ return postExecute(description);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+ */\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+\r
+ taxon.removeDescription(description);\r
+ \r
+ return postExecute(null);\r
+ }\r
+}\r
+\r
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.model.description.CategoricalData;
+import eu.etaxonomy.cdm.model.description.CommonTaxonName;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Distribution;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.description.QuantitativeData;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonInteraction;
+import eu.etaxonomy.cdm.model.description.TextData;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+
+public class CreateUseRecordOperation extends AbstractPostOperation {
+
+ public static final String ID = "eu.etaxonomy.taxeditor.editor.use.createUseRecord";
+
+ private TaxonDescription description;
+ private Feature feature;
+ private DescriptionElementBase element;
+
+
+ /*public CreateUseRecordOperation(String label, IUndoContext undoContext,
+ Taxon taxon, TaxonDescription description, Feature feature, IPostOperationEnabled postOperationEnabled) {*/
+ public CreateUseRecordOperation(String label, IUndoContext undoContext,
+ Taxon taxon, TaxonDescription description, Feature feature, IPostOperationEnabled postOperationEnabled) {
+ super(label, undoContext, taxon, postOperationEnabled);
+
+ this.description = description;
+ this.feature = feature;
+ }
+
+ public CreateUseRecordOperation(String label,
+ IUndoContext undoContext, Taxon taxon,
+ TaxonDescription description, Feature feature,
+ DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {
+ /*public CreateUseRecordOperation(String label,
+ IUndoContext undoContext, Taxon taxon,
+ TaxonDescription description, Feature feature,
+ DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {*/
+
+ this(label, undoContext, taxon, description, feature, postOperationEnabled);
+ //this(label, undoContext, taxon, description, (CategoricalData) element, postOperationEnabled);
+
+ this.element = element;
+ }
+
+ @Override
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+ monitor.worked(20);
+ if (element == null) {
+ if (feature.isSupportsCommonTaxonName()) {
+ element = CommonTaxonName.NewInstance("", null);
+ }
+ else if (feature.isSupportsDistribution()) {
+ element = Distribution.NewInstance();
+ }
+ else if(feature.isSupportsTaxonInteraction()){
+ element = TaxonInteraction.NewInstance();
+ }
+ else if(feature.isSupportsIndividualAssociation()){
+ element = IndividualsAssociation.NewInstance();
+ }
+ else if(feature.isSupportsCategoricalData()){
+ element = CategoricalData.NewInstance();
+ }
+ else if(feature.isSupportsQuantitativeData()){
+ element = QuantitativeData.NewInstance();
+ }
+ else {
+ element = TextData.NewInstance();
+ }
+ }
+
+
+ element.setFeature(feature);
+ description.addElement(element);
+ monitor.worked(40);
+
+ return postExecute(element);
+ }
+
+ @Override
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+
+ description.addElement(element);
+
+ return postExecute(element);
+ }
+
+ @Override
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+ description.removeElement(element);
+
+ return postExecute(null);
+ }
+}
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses.operation;\r
+\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+\r
+public class DeleteTaxonUseOperation extends AbstractPostOperation {\r
+ \r
+ private TaxonDescription description;\r
+\r
+ /**\r
+ * <p>Constructor for DeleteTaxonDescriptionOperation.</p>\r
+ *\r
+ * @param label a {@link java.lang.String} object.\r
+ * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.\r
+ * @param description a {@link eu.etaxonomy.cdm.model.description.TaxonDescription} object.\r
+ * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.\r
+ */\r
+ public DeleteTaxonUseOperation(String label, IUndoContext undoContext,\r
+ TaxonDescription description, IPostOperationEnabled postOperationEnabled) {\r
+ super(label, undoContext, postOperationEnabled);\r
+ \r
+ this.description = description;\r
+ taxon = description.getTaxon();\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+ */\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+\r
+ monitor.worked(20);\r
+ taxon.removeDescription(description);\r
+ monitor.worked(40);\r
+\r
+ return postExecute(description);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+ */\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ return execute(monitor, info);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+ */\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+\r
+ taxon.addDescription(description);\r
+ \r
+ return postExecute(null);\r
+ }\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.uses.operation;\r
+\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
+\r
+public class DeleteUseRecordOperation extends AbstractPostOperation {\r
+ private DescriptionElementBase element;\r
+ private DescriptionBase description = null;\r
+ \r
+ \r
+ public DeleteUseRecordOperation(String label, IUndoContext undoContext,\r
+ DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {\r
+ super(label, undoContext, postOperationEnabled);\r
+ \r
+ this.element = element;\r
+ }\r
+\r
+\r
+ @Override\r
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ description = element.getInDescription();\r
+ \r
+ monitor.worked(20);\r
+ \r
+ // Remove element from description\r
+ if (description == null) {\r
+ StoreUtil.error(this.getClass(), "Couldn't find element's description!", null);\r
+ } else {\r
+ description.removeElement(element);\r
+ }\r
+ monitor.worked(40);\r
+\r
+ // Redraw editor if exists\r
+ return postExecute(null);\r
+ }\r
+\r
+\r
+ @Override\r
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+ return execute(monitor, info);\r
+ }\r
+\r
+\r
+ @Override\r
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+ throws ExecutionException {\r
+\r
+ description.addElement(element);\r
+ \r
+ return postExecute(element);\r
+ }\r
+ \r
+}\r
eu.etaxonomy.taxeditor.view.datasource,
eu.etaxonomy.taxeditor.view.datasource.handler,
eu.etaxonomy.taxeditor.view.detail,
- eu.etaxonomy.taxeditor.view.supplementaldata
+ eu.etaxonomy.taxeditor.view.supplementaldata,
+ eu.etaxonomy.taxeditor.view.userecords
Require-Bundle: org.eclipse.osgi,
org.eclipse.ui,
org.eclipse.jface.text,
id="eu.etaxonomy.taxeditor.view.detail"
name="Details"
restorable="true">
+ </view>
+ <view
+ class="eu.etaxonomy.taxeditor.view.userecords.UseRecordsViewPart"
+ icon="icons/leaf_detail.png"
+ id="eu.etaxonomy.taxeditor.view.userecords"
+ name="Use Records"
+ restorable="true">
</view>
</extension>
<extension
value="eu.etaxonomy.cdm.model.description.Feature">
</parameter>
</command>
+ <command
+ commandId="eu.etaxonomy.taxeditor.store.openDefinedTermEditor"
+ label="Modifier"
+ style="push">
+ <parameter
+ name="eu.etaxonomy.taxeditor.store.openDefinedTermEditor.parameter"
+ value="eu.etaxonomy.cdm.model.description.Modifier">
+ </parameter>
+ </command>
</menu>
</menuContribution>
<menuContribution
import eu.etaxonomy.cdm.model.common.ExtensionType;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.Modifier;\r
import eu.etaxonomy.cdm.model.description.State;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
if (clazz == State.class){\r
return new StateEditorInput();\r
}\r
+ if (clazz == Modifier.class){\r
+ return new ModifierEditorInput();\r
+ }\r
\r
return null;\r
}\r
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2009 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.editor.definedterm.input;
+
+import java.util.Arrays;
+import java.util.List;
+
+import eu.etaxonomy.cdm.model.description.Modifier;
+
+
+/**
+ * @author n.hoffmann
+ * @date Jan 24, 2012
+ *
+ */
+public class ModifierEditorInput extends AbstractDefinedTermEditorInput<Modifier> {
+
+ private List<String> termClasses = Arrays.asList(new String[]{
+ Modifier.class.getName()
+ });
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IEditorInput#getName()
+ */
+ @Override
+ public String getName() {
+ return "Modifier";
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.editor.definedterm.input.AbstractDefinedTermEditorInput#getTermClasses()
+ */
+ @Override
+ public List<String> getTermClasses() {
+ return termClasses;
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.editor.definedterm.input.AbstractDefinedTermEditorInput#createTermInstance()
+ */
+ @Override
+ public Modifier createTermInstance() {
+ return Modifier.NewInstance();
+ }
+
+}
\ No newline at end of file
import eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer;
import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
+import eu.etaxonomy.taxeditor.view.userecords.UseRecordsViewPart;
/**
* <p>
.reflow();
}
}
+
+ public static UseRecordsViewPart getUseRecordsView() {
+ return (UseRecordsViewPart) getView(UseRecordsViewPart.ID, false);
+ }
+
+ /**
+ * <p>
+ * refreshUseRecordsViewer
+ * </p>
+ */
+ public static void refreshUseRecordsViewer() {
+ if (getUseRecordsView() != null) {
+ ((AbstractCdmDataViewer) getUseRecordsView().getViewer()).refresh();
+ }
+ }
+
+ /**
+ * <p>
+ * reflowUseRecordsViewer
+ * </p>
+ */
+ public static void reflowUseRecordsViewer() {
+ if (getUseRecordsView() != null) {
+ ((AbstractCdmDataViewer) getUseRecordsView().getViewer()).reflow();
+ }
+ }
}
if (text == null || text.length() == 0) {
text = "No label provided";
}
+
return "Description: " + text;
}
}
if (selection != null && index == 0) {
- createTermNotInPreferredTerms(selection);
+ //createTermNotInPreferredTerms(selection);
+ selection = null;
}
combo.select(index);
import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
import eu.etaxonomy.taxeditor.ui.section.user.UserDetailElement;
import eu.etaxonomy.taxeditor.ui.section.user.UserDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailSection;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailSection;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailSection;
REFERENCED_ENTITY,
TERM_VOCABULARY,
NAMED_AREA,
- NAMED_AREA_LEVEL
+ NAMED_AREA_LEVEL,
+ USE_RECORD
}
public AbstractFormSection createDefinedTermDetailSection(Class definedTermClass,
section = new NamedAreaDetailSection(this, conversation, parentElement,
selectionProvider, style);
break;
+ case USE_RECORD:
+ section = new UseRecordDetailSection(this, conversation, parentElement,
+ selectionProvider, style);
+ break;
}
+
if (section == null) {
throw new RuntimeException(
case NAMED_AREA_LEVEL:
element = new DefinedTermDetailElement<NamedAreaLevel>(this, parentElement);
break;
+ case USE_RECORD:
+ //element = new UseRecordDetailElement(this, parentElement, style);
+ element = new UseRecordDetailElement(this, parentElement);
+ break;
}
if (element == null) {
detailDescription = formFactory.createMultilineTextWithLabel(this, "Label", 50, SWT.WRAP);
detailDescription.setText(entity.getTitleCache());
-// selection_featureTree = (FeatureTreeSelectionElement) formFactory.createSelectionElement(SelectionType.FEATURE_TREE, getConversationHolder(), formElement, "Feature Tree", null, style);
+ //selection_featureTree = (EntitySelectionElement<FeatureTree>) formFactory.createSelectionElement(FeatureTree.class, getConversationHolder(), formElement, "Feature Tree", null, style, 1);
+ selection_featureTree = formFactory.createSelectionElement(FeatureTree.class, getConversationHolder(), formElement, "Feature Tree", null, EntitySelectionElement.ALL, style);
+
}
/** {@inheritDoc} */
--- /dev/null
+package eu.etaxonomy.taxeditor.ui.section.userecords;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.events.SelectionListener;\r
+import org.eclipse.ui.forms.widgets.Section;\r
+\r
+import eu.etaxonomy.cdm.api.service.IService;\r
+import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.description.CategoricalData;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Modifier;\r
+import eu.etaxonomy.cdm.model.description.State;\r
+import eu.etaxonomy.cdm.model.description.StateData;\r
+import eu.etaxonomy.cdm.remote.controller.VocabularyController;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.TermManager;\r
+import eu.etaxonomy.taxeditor.store.TermStore;\r
+import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;\r
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
+import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;\r
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;\r
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;\r
+import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementDetailElement;\r
+import eu.etaxonomy.taxeditor.ui.section.description.StateDataSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement;\r
+\r
+//public class UseRecordDetailElement extends AbstractDetailedDescriptionDetailElement<CategoricalData> {\r
+public class UseRecordDetailElement extends\r
+ AbstractCdmDetailElement<CategoricalData> implements SelectionListener {\r
+\r
+ private static final Logger logger = Logger\r
+ .getLogger(DescriptionElementDetailElement.class);\r
+\r
+ // private CheckboxElement checkbox_orderRelevant;\r
+ private TermComboElement<State> combo_UseCategory;\r
+ private TermComboElement<State> combo_UseSubCategory;\r
+ private TermComboElement<Modifier> combo_PlantPart;\r
+ private TermComboElement<Modifier> combo_Country;\r
+ private TermComboElement<Modifier> combo_HumanGroup;\r
+ private TermComboElement<Modifier> combo_EthnicGroup;\r
+ // private AbstractDetailedDescriptionDetailElement detailElement;\r
+\r
+ /*\r
+ * public UseRecordDetailElement(CdmFormFactory formFactory, ICdmFormElement\r
+ * formElement, CategoricalData entity, int style) { super(formFactory,\r
+ * formElement, entity, style); }\r
+ */\r
+ /*\r
+ * public UseRecordDetailElement(CdmFormFactory formFactory, ICdmFormElement\r
+ * formElement, int style) {\r
+ */\r
+ public UseRecordDetailElement(CdmFormFactory formFactory,\r
+ ICdmFormElement formElement) {\r
+ super(formFactory, formElement);\r
+ }\r
+\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ protected void createControls(ICdmFormElement formElement,\r
+ CategoricalData entity, int style) {\r
+\r
+ // State state = State.NewInstance("Tato", "Toto", "Titi");\r
+ // checkbox_orderRelevant = formFactory.createCheckbox(formElement,\r
+ // "Order Relevant", entity.getOrderRelevant(), style);\r
+ combo_UseCategory = formFactory.createTermComboElement(State.class, this, "Use Category", null, style);\r
+ combo_UseCategory.addSelectionListener(this);\r
+ combo_UseSubCategory = formFactory.createTermComboElement(State.class, this, "Use SubCategory", null, style);\r
+ combo_Country = formFactory.createTermComboElement(Modifier.class, this, "Country", null, style);\r
+ combo_PlantPart = formFactory.createTermComboElement(Modifier.class, this, "Plant Part", null, style);\r
+ combo_HumanGroup = formFactory.createTermComboElement(Modifier.class, this, "Human Group", null, style);\r
+ combo_HumanGroup.addSelectionListener(this);\r
+ combo_EthnicGroup = formFactory.createTermComboElement(Modifier.class, this, "Ethnic Group", null, style);\r
+ \r
+\r
+ List<State> termsUseCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false));\r
+ combo_UseCategory.setTerms(termsUseCategory);\r
+ combo_UseCategory.setSelection(stateSelection("Use Category"));\r
+ \r
+ List<State> termsSubCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false), combo_UseCategory.getSelection());\r
+ \r
+ if (termsSubCategory != null) {\r
+ \r
+ combo_UseSubCategory.setTerms(termsSubCategory);\r
+ combo_UseSubCategory.setSelection(stateSelection("Use SubCategory"));\r
+ combo_UseSubCategory.setEnabled(true);\r
+ }\r
+ else {\r
+ combo_UseSubCategory.setEnabled(false);\r
+ }\r
+ \r
+ List<Modifier> plantPartsToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Plant Part");\r
+ combo_PlantPart.setTerms(plantPartsToAdd);\r
+ combo_PlantPart.setSelection(modifierSelection("Plant Part"));\r
+ \r
+ List<Modifier> countriesToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Country");\r
+ combo_Country.setTerms(countriesToAdd);\r
+ combo_Country.setSelection(modifierSelection("Country"));\r
+ \r
+ List<Modifier> humanGroupToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Human Group");\r
+ combo_HumanGroup.setTerms(humanGroupToAdd);\r
+ combo_HumanGroup.setSelection(modifierSelection("Human Group"));\r
+ \r
+ List<Modifier> ethnicGroupToAdd = setEthnicGroupComboTerms(TermStore.getTerms(Modifier.class, null, false), combo_HumanGroup.getSelection());\r
+ if (ethnicGroupToAdd != null) {\r
+ combo_EthnicGroup.setTerms(ethnicGroupToAdd);\r
+ combo_EthnicGroup.setSelection(modifierSelection("Ethnic Group"));\r
+ combo_EthnicGroup.setEnabled(true);\r
+ } else {\r
+ combo_EthnicGroup.setEnabled(false);\r
+ }\r
+\r
+ }\r
+\r
+ private Modifier modifierSelection(String comboCategory) {\r
+ if(!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if(marker.getMarkerType().getTitleCache().equals(comboCategory)) {\r
+ return modifier;\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ \r
+ }\r
+ } else {\r
+ return null;\r
+ }\r
+ return null;\r
+ \r
+ }\r
+ \r
+ private State stateSelection(String comboCategory) {\r
+ if (!getEntity().getStates().isEmpty()) {\r
+ for (StateData statedata : getEntity().getStates()) {\r
+ if (statedata.getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {\r
+ if(statedata.getModifyingText().get(CdmStore.getDefaultLanguage()).getText() == comboCategory) {\r
+ if(statedata.getState() !=null) {\r
+ return statedata.getState();\r
+ }\r
+ }\r
+ } \r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ return null;\r
+ \r
+ }\r
+ \r
+ private List<Modifier> setModifierComboTerms(List<Modifier> listOfTerms, String modType) {\r
+ List<Modifier> termsToAdd = new ArrayList<Modifier>();\r
+ for (Modifier term : listOfTerms) {\r
+\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(modType))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ else if ((term.getVocabulary() != null) && (term.getVocabulary().getTitleCache().equals(modType))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ }\r
+ \r
+ return termsToAdd;\r
+ }\r
+ \r
+ private Modifier plantPartSelection() {\r
+ /*if(!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if(marker.getMarkerType().getTitleCache().equals("Plant Part")) {\r
+ return modifier;\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ \r
+ }\r
+ } else {\r
+ return null;\r
+ }\r
+ return null;*/\r
+ //for testing purposes\r
+ int countMods = 0;\r
+ Modifier modiftoreturn = Modifier.NewInstance();\r
+ if (!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()){\r
+ if(countMods == 0) {\r
+ modiftoreturn = modifier;\r
+ }\r
+ countMods++;\r
+ }\r
+ return modiftoreturn;\r
+ }\r
+ return null;\r
+ \r
+ }\r
+ \r
+ private Modifier countrySelection() {\r
+ /*if(!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if(marker.getMarkerType().getTitleCache().equals("Country")) {\r
+ return modifier;\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ \r
+ }\r
+ } else {\r
+ return null;\r
+ }\r
+ return null;*/\r
+ //for testing purposes\r
+ int countMods = 0;\r
+ Modifier modiftoreturn = Modifier.NewInstance();\r
+ if (!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()){\r
+ if(countMods == 1) {\r
+ modiftoreturn = modifier;\r
+ }\r
+ countMods++;\r
+ }\r
+ return modiftoreturn;\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ private Modifier humanGroupSelection() {\r
+ /*if(!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if(marker.getMarkerType().getTitleCache().equals("Human Group")) {\r
+ return modifier;\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ \r
+ }\r
+ } else {\r
+ return null;\r
+ }\r
+ return null;*/\r
+ //for testing purposes\r
+ int countMods =0;\r
+ Modifier modiftoreturn = Modifier.NewInstance();\r
+ if (!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()){\r
+ if (countMods == 2) {\r
+ modiftoreturn = modifier;\r
+ }\r
+ countMods++;\r
+ }\r
+ return modiftoreturn;\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ private Modifier ethnicGroupSelection() {\r
+ /*if(!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if(marker.getMarkerType().getTitleCache().equals("Human Group")) {\r
+ return modifier;\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ \r
+ }\r
+ } else {\r
+ return null;\r
+ }\r
+ return null;*/\r
+ //for testing purposes\r
+ int countMods =0;\r
+ Modifier modiftoreturn = Modifier.NewInstance();\r
+ if (!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()){\r
+ if (countMods == 3) {\r
+ modiftoreturn = modifier;\r
+ }\r
+ countMods++;\r
+ }\r
+ return modiftoreturn;\r
+ }\r
+ return null;\r
+ }\r
+\r
+ private State useCategorySelection() {\r
+ /*if (!getEntity().getStates().isEmpty()) {\r
+ for (StateData statedata : getEntity().getStates()) {\r
+ if (statedata.getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {\r
+ if(statedata.getModifyingText().get(CdmStore.getDefaultLanguage()).getText() == "Use Category") {\r
+ if(statedata.getState() !=null) {\r
+ return statedata.getState();\r
+ }\r
+ }\r
+ } \r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ return null;*/\r
+ //for testing purposes\r
+ int countStates =0;\r
+ for (StateData state : getEntity().getStates()) {\r
+ if (countStates == 0) {\r
+ return state.getState();\r
+ }\r
+ countStates++;\r
+ }\r
+ return null;\r
+ }\r
+ \r
+\r
+ \r
+ private State useSubCategorySelection() {\r
+ /*if (!getEntity().getStates().isEmpty() && combo_UseCategory.getSelection() != null) {\r
+ for (StateData statedata : getEntity().getStates()) {\r
+ if (stateData.getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {\r
+ if(statedata.getModifyingText().get(CdmStore.getDefaultLanguage()).getText() == "Use SubCategory") {\r
+ if(statedata.getState() !=null) {\r
+ return statedata.getState();\r
+ }\r
+ \r
+ }\r
+ } \r
+ }\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ return null;*/\r
+ //for testing purposes\r
+ int countStates =0;\r
+ for (StateData state : getEntity().getStates()) {\r
+ if ((countStates == 1)) {\r
+ return state.getState();\r
+ }\r
+ countStates++;\r
+ }\r
+ return null;\r
+ \r
+ }\r
+\r
+ \r
+ \r
+ \r
+ private List<Modifier> setPlantPartsComboTerms(List<Modifier> listOfTerms) {\r
+ List<Modifier> termsToAdd = new ArrayList<Modifier>();\r
+ for (Modifier term : listOfTerms) {\r
+\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals("Plant Part"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ else if ((term.getVocabulary() != null) && (term.getVocabulary().getTitleCache().equals("Plant Part"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ }\r
+ \r
+ return termsToAdd;\r
+ }\r
+ \r
+ private List<Modifier> setCountryComboTerms(List <Modifier> listOfTerms) {\r
+ List<Modifier> termsToAdd = new ArrayList<Modifier>();\r
+ for (Modifier term : listOfTerms) {\r
+\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals("Country"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ else if ((term.getVocabulary() != null) && (term.getVocabulary().getTitleCache().equals("Country"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ }\r
+ \r
+ return termsToAdd;\r
+ }\r
+\r
+\r
+ private List<State> setUseCategoryComboTerms(List<State> listOfTerms) {\r
+ List<State> termsToAdd = new ArrayList<State>();\r
+ for (State term : listOfTerms) {\r
+\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals("Use Category"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ else if ((term.getVocabulary() !=null) && (term.getPartOf() == null) && (term.getVocabulary().getTitleCache().equals("Use Category"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ }\r
+ return termsToAdd;\r
+\r
+ }\r
+\r
+ private List<State> setUseCategoryComboTerms(List<State> listOfTerms,\r
+ State selectedUseCategory) {\r
+ List<State> termsToAdd = new ArrayList<State>();\r
+ if (combo_UseCategory.getSelection() != null) {\r
+ \r
+ for (State term : listOfTerms) {\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(selectedUseCategory.getTitleCache()))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ else if ((term.getVocabulary() !=null) && (term.getVocabulary().getTitleCache().equals(selectedUseCategory.getTitleCache()))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ \r
+ }\r
+ }\r
+ else if (!getEntity().getStates().isEmpty()) {\r
+ for (StateData stateData : getEntity().getStates()) {\r
+ if (stateData.getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {\r
+ if ((stateData.getState() != null) && (stateData.getModifyingText().get(CdmStore.getDefaultLanguage()).getText() == "Use Category")) {\r
+ for (State term : listOfTerms) {\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(stateData.getState().getTitleCache()))) {\r
+ termsToAdd.add(term);\r
+ } else if ((term.getVocabulary() != null) && (term.getVocabulary().getTitleCache().equals(stateData.getState().getTitleCache()))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ }\r
+ \r
+ }\r
+ }\r
+ }\r
+ \r
+ }\r
+ \r
+ else {\r
+ return null;\r
+ }\r
+\r
+ return termsToAdd;\r
+ }\r
+ \r
+ private List<Modifier> setEthnicGroupComboTerms(List<Modifier> listOfTerms,\r
+ Modifier selectedHumangroup) {\r
+ List<Modifier> termsToAdd = new ArrayList<Modifier>();\r
+ if (combo_HumanGroup.getSelection() != null) {\r
+ for (Modifier term : listOfTerms) {\r
+ \r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(selectedHumangroup.getTitleCache()))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ else if ((term.getVocabulary() != null) && (term.getVocabulary().getTitleCache().equals(selectedHumangroup.getTitleCache()))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ }\r
+ }\r
+ else if (!getEntity().getModifiers().isEmpty()) {\r
+ for (Modifier modifier : getEntity().getModifiers()) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if(marker.getMarkerType().getTitleCache().equals("Human Group")) {\r
+ for (Modifier term : listOfTerms) {\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(modifier.getTitleCache()))) {\r
+ termsToAdd.add(modifier);\r
+ } else if ((term.getVocabulary() != null) && (term.getVocabulary().getTitleCache().equals(modifier.getTitleCache()))) {\r
+ termsToAdd.add(modifier);\r
+ }\r
+ }\r
+ \r
+ }\r
+ }\r
+ }\r
+ }\r
+ } else {\r
+ return null;\r
+ }\r
+ \r
+ return termsToAdd;\r
+ }\r
+\r
+ \r
+ private List<Modifier> setHumanGroupComboTerms(List<Modifier> listOfTerms) {\r
+ List<Modifier> termsToAdd = new ArrayList<Modifier>();\r
+ for (Modifier term : listOfTerms) {\r
+\r
+ if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals("Human Group"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ else if ((term.getVocabulary() != null) && (term.getPartOf() == null) && (term.getVocabulary().getTitleCache().equals("Human Group"))) {\r
+ termsToAdd.add(term);\r
+ }\r
+ }\r
+ \r
+ return termsToAdd;\r
+ }\r
+\r
+\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public void handleEvent(Object eventSource) {\r
+ /*\r
+ * if(eventSource == checkbox_orderRelevant){\r
+ * getEntity().setOrderRelevant(checkbox_orderRelevant.getSelection());\r
+ * }\r
+ */\r
+ if (eventSource == combo_UseCategory) {\r
+ if (combo_UseCategory.getSelection() != null) {\r
+ boolean isChanged = false;\r
+ if (!getEntity().getStates().isEmpty()) {\r
+ for (StateData existingStateData : getEntity().getStates()) {\r
+ Map<Language, LanguageString> modifyingText = existingStateData\r
+ .getModifyingText();\r
+ \r
+ if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
+ if (modifyingText.get(CdmStore.getDefaultLanguage())\r
+ .getText() == "Use Category") {\r
+ getEntity().removeState(existingStateData);\r
+ StateData stateData = StateData.NewInstance(combo_UseCategory.getSelection());\r
+ stateData.setState(combo_UseCategory.getSelection());\r
+ //stateData.addModifyingText("Use Category", CdmStore.getDefaultLanguage());\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use Category");\r
+ getEntity().addState(stateData);\r
+ isChanged = true;\r
+ } \r
+ /*else {\r
+ StateData stateData = StateData\r
+ .NewInstance(combo_UseCategory.getSelection());\r
+ stateData.setState(combo_UseCategory.getSelection());\r
+ //stateData.addModifyingText("Use Category", CdmStore.getDefaultLanguage());\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use Category");\r
+ getEntity().addState(stateData);\r
+ }\r
+ \r
+ } else {\r
+ StateData stateData = StateData\r
+ .NewInstance(combo_UseCategory.getSelection());\r
+ stateData.setState(combo_UseCategory.getSelection());\r
+ //stateData.addModifyingText("Use Category", CdmStore.getDefaultLanguage());\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use Category");\r
+ getEntity().addState(stateData);\r
+ }*/\r
+ }\r
+ }\r
+ }\r
+ \r
+ \r
+ if (isChanged == false) {\r
+ StateData stateData = StateData\r
+ .NewInstance(combo_UseCategory.getSelection());\r
+ stateData.setState(combo_UseCategory.getSelection());\r
+ //stateData.addModifyingText("Use Category", CdmStore.getDefaultLanguage());\r
+ //LanguageString languageString = LanguageString.NewInstance("Use Category", CdmStore.getDefaultLanguage());\r
+ //IService object = (IService) CdmStore.getCurrentApplicationConfiguration().getBean(IService.class.getName());\r
+ //object.save(languageString);\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use Category");\r
+ getEntity().addState(stateData);\r
+ }\r
+ combo_UseSubCategory.setEnabled(true);\r
+ \r
+ }\r
+ }\r
+ if (eventSource == combo_UseSubCategory) {\r
+ if (combo_UseSubCategory.getSelection() != null) {\r
+ boolean isChanged = false;\r
+ if (!getEntity().getStates().isEmpty()) {\r
+ for (StateData existingStateData : getEntity().getStates()) {\r
+ Map<Language, LanguageString> modifyingText = existingStateData\r
+ .getModifyingText();\r
+ \r
+ if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
+ if (modifyingText.get(CdmStore.getDefaultLanguage())\r
+ .getText() == "Use SubCategory") {\r
+ getEntity().removeState(existingStateData);\r
+ StateData stateData = StateData.NewInstance(combo_UseSubCategory.getSelection());\r
+ stateData.setState(combo_UseSubCategory.getSelection());\r
+ //stateData.addModifyingText("Use SubCategory", CdmStore.getDefaultLanguage());\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use SubCategory");\r
+ getEntity().addState(stateData);\r
+ isChanged = true;\r
+ } \r
+ /*else {\r
+ StateData stateData = StateData\r
+ .NewInstance(combo_UseSubCategory.getSelection());\r
+ stateData.setState(combo_UseSubCategory.getSelection());\r
+ //stateData.addModifyingText("Use SubCategory", CdmStore.getDefaultLanguage());\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use SubCategory");\r
+ getEntity().addState(stateData);\r
+ }\r
+ \r
+ } else {\r
+ StateData stateData = StateData\r
+ .NewInstance(combo_UseSubCategory.getSelection());\r
+ stateData.setState(combo_UseSubCategory.getSelection());\r
+ //stateData.addModifyingText("Use SubCategory", CdmStore.getDefaultLanguage());\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
+ getEntity().addState(stateData);\r
+ }*/\r
+ }\r
+ }\r
+ }\r
+ \r
+ if (isChanged == false){\r
+ StateData stateData = StateData\r
+ .NewInstance(combo_UseSubCategory.getSelection());\r
+ stateData.setState(combo_UseSubCategory.getSelection());\r
+ //stateData.addModifyingText("Use SubCategory", CdmStore.getDefaultLanguage());\r
+ //LanguageString languageString = LanguageString.NewInstance("Use SubCategory", CdmStore.getDefaultLanguage());\r
+ //IService object = (IService) CdmStore.getCurrentApplicationConfiguration().getBean(IService.class.getName());\r
+ //object.save(languageString);\r
+ //stateData.putModifyingText(languageString);\r
+ stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
+ getEntity().addState(stateData);\r
+ }\r
+ \r
+ }\r
+ }\r
+ if (eventSource == combo_PlantPart) {\r
+ if (combo_PlantPart.getSelection() != null) {\r
+ boolean isChanged = false;\r
+ MarkerType markerType = MarkerType.NewInstance("Plant Part", "Plant Part", null);\r
+ Set<Modifier> modifiers = getEntity().getModifiers();\r
+ if(!modifiers.isEmpty()) {\r
+ for (Modifier modifier : modifiers) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if (marker.getMarkerType().getTitleCache().equals("Plant Part")) {\r
+ getEntity().removeModifier(modifier);\r
+ Modifier plantPart = combo_PlantPart.getSelection();\r
+ plantPart.addMarker(marker);\r
+ getEntity().addModifier(plantPart);\r
+ isChanged = true;\r
+ //getEntity().addModifier(combo_PlantPart.getSelection());\r
+ } \r
+ /*else {\r
+ \r
+ Marker markerPlantPart = Marker.NewInstance(markerType, false);\r
+ Modifier plantPart = combo_PlantPart.getSelection();\r
+ plantPart.addMarker(markerPlantPart);\r
+ getEntity().addModifier(plantPart);\r
+ //getEntity().addModifier(combo_PlantPart.getSelection());\r
+ }*/\r
+ \r
+ \r
+ }\r
+ \r
+ }\r
+ /*else {\r
+ //MarkerType markerType = MarkerType.NewInstance("Plant Part", "Plant Part", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier plantPart = combo_PlantPart.getSelection();\r
+ plantPart.addMarker(marker);\r
+ getEntity().addModifier(plantPart);\r
+ //getEntity().addModifier(combo_PlantPart.getSelection());\r
+ }*/\r
+ \r
+ } \r
+ }\r
+ if(isChanged == false) {\r
+ //MarkerType markerType = MarkerType.NewInstance("Plant Part", "Plant Part", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier plantPart = combo_PlantPart.getSelection();\r
+ plantPart.addMarker(marker);\r
+ getEntity().addModifier(plantPart);\r
+ //getEntity().addModifier(combo_PlantPart.getSelection());\r
+ }\r
+ }\r
+ }\r
+ if (eventSource == combo_Country) {\r
+ if (combo_Country.getSelection() != null) {\r
+ boolean isChanged = false;\r
+ MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
+ Set<Modifier> modifiers = getEntity().getModifiers();\r
+ if(!modifiers.isEmpty()) {\r
+ for (Modifier modifier : modifiers) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if (marker.getMarkerType().getTitleCache().equals("Country")) {\r
+ getEntity().removeModifier(modifier);\r
+ Modifier country = combo_Country.getSelection();\r
+ country.addMarker(marker);\r
+ getEntity().addModifier(country);\r
+ isChanged = true;\r
+ //getEntity().addModifier(combo_Country.getSelection());\r
+ } \r
+ /*else {\r
+ \r
+ Marker markerCountry = Marker.NewInstance(markerType, false);\r
+ Modifier country = combo_Country.getSelection();\r
+ country.addMarker(markerCountry);\r
+ getEntity().addModifier(country);\r
+ //getEntity().addModifier(combo_Country.getSelection());\r
+ }*/\r
+ \r
+ \r
+ }\r
+ \r
+ }\r
+ /*else {\r
+ //MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier country = combo_Country.getSelection();\r
+ country.addMarker(marker);\r
+ getEntity().addModifier(country);\r
+ //getEntity().addModifier(combo_Country.getSelection());\r
+ }*/\r
+ \r
+ } \r
+ }\r
+ if (isChanged == false) {\r
+ //MarkerType markerType = MarkerType.NewInstance("Country", "Country", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier country = combo_Country.getSelection();\r
+ country.addMarker(marker);\r
+ getEntity().addModifier(country);\r
+ //getEntity().addModifier(combo_Country.getSelection());\r
+ }\r
+ }\r
+ }\r
+ if (eventSource == combo_HumanGroup) {\r
+ if (combo_HumanGroup.getSelection() != null) {\r
+ boolean isChanged = false;\r
+ MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
+ Set<Modifier> modifiers = getEntity().getModifiers();\r
+ if(!modifiers.isEmpty()) {\r
+ for (Modifier modifier : modifiers) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if (marker.getMarkerType().getTitleCache().equals("Human Group")) {\r
+ getEntity().removeModifier(modifier);\r
+ Modifier humanGroup = combo_HumanGroup.getSelection();\r
+ humanGroup.addMarker(marker);\r
+ getEntity().addModifier(humanGroup);\r
+ isChanged = true;\r
+ //getEntity().addModifier(combo_HumanGroup.getSelection());\r
+ } \r
+ /*else {\r
+ \r
+ Marker markerHumanGroup = Marker.NewInstance(markerType, false);\r
+ Modifier humanGroup = combo_HumanGroup.getSelection();\r
+ humanGroup.addMarker(markerHumanGroup);\r
+ getEntity().addModifier(humanGroup);\r
+ //getEntity().addModifier(combo_HumanGroup.getSelection());\r
+ }*/\r
+ \r
+ \r
+ }\r
+ \r
+ }\r
+ /*else {\r
+ //MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier humanGroup = combo_HumanGroup.getSelection();\r
+ humanGroup.addMarker(marker);\r
+ getEntity().addModifier(humanGroup);\r
+ //getEntity().addModifier(combo_HumanGroup.getSelection());\r
+ }*/\r
+ \r
+ } \r
+ }\r
+ if(isChanged == false){\r
+ //MarkerType markerType = MarkerType.NewInstance("Human Group", "Human Group", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier humanGroup = combo_HumanGroup.getSelection();\r
+ humanGroup.addMarker(marker);\r
+ getEntity().addModifier(humanGroup);\r
+ //getEntity().addModifier(combo_HumanGroup.getSelection());\r
+ }\r
+ }\r
+ combo_EthnicGroup.setEnabled(true);\r
+ }\r
+ if (eventSource == combo_EthnicGroup) {\r
+ if (combo_EthnicGroup.getSelection() != null) {\r
+ boolean isChanged = false;\r
+ MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
+ Set<Modifier> modifiers = getEntity().getModifiers();\r
+ if(!modifiers.isEmpty()) {\r
+ for (Modifier modifier : modifiers) {\r
+ if (modifier.getMarkers() != null) {\r
+ for (Marker marker : modifier.getMarkers()) {\r
+ if (marker.getMarkerType().getTitleCache().equals("Ethnic Group")) {\r
+ getEntity().removeModifier(modifier);\r
+ Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+ ethnicGroup.addMarker(marker);\r
+ getEntity().addModifier(ethnicGroup);\r
+ isChanged = true;\r
+ //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+ } \r
+ /*else {\r
+ \r
+ Marker markerEthnicGroup = Marker.NewInstance(markerType, false);\r
+ Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+ ethnicGroup.addMarker(markerEthnicGroup);\r
+ getEntity().addModifier(ethnicGroup);\r
+ //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+ }*/\r
+ \r
+ \r
+ }\r
+ \r
+ }\r
+ /*else {\r
+ //MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+ ethnicGroup.addMarker(marker);\r
+ getEntity().addModifier(ethnicGroup);\r
+ //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+ }*/\r
+ \r
+ } \r
+ }\r
+ if(isChanged == false) {\r
+ //MarkerType markerType = MarkerType.NewInstance("Ethnic Group", "Ethnic Group", null);\r
+ Marker marker = Marker.NewInstance(markerType, false);\r
+ Modifier ethnicGroup = combo_EthnicGroup.getSelection();\r
+ ethnicGroup.addMarker(marker);\r
+ getEntity().addModifier(ethnicGroup);\r
+ //getEntity().addModifier(combo_EthnicGroup.getSelection());\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ \r
+\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public void setEntity(CategoricalData entity) {\r
+ // section_stateData.setEntity(entity);\r
+ super.setEntity(entity);\r
+ }\r
+\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ Object eventSource = e.getSource();\r
+ //This is causing an error on purpose fix the if statement below\r
+ \r
+ //e.getselection();\r
+ //if(eventSource == combo_UseCategory.getControls()) {\r
+ for (Object object: combo_UseCategory.getControls()) {\r
+ if (object == eventSource) {\r
+ State selectedUseCategory = combo_UseCategory.getSelection();\r
+ if (selectedUseCategory != null) {\r
+ if (!getEntity().getStates().isEmpty()) {\r
+ for (StateData existingStateData : getEntity().getStates()) {\r
+ Map<Language, LanguageString> modifyingText = existingStateData\r
+ .getModifyingText();\r
+ \r
+ if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
+ if (modifyingText.get(CdmStore.getDefaultLanguage())\r
+ .getText() == "Use SubCategory") {\r
+ getEntity().removeState(existingStateData);\r
+ combo_UseSubCategory.setSelected(false);\r
+ combo_UseSubCategory.getSelection();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ List<State> newSubCategories = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false),selectedUseCategory);\r
+ combo_UseSubCategory.setTerms(newSubCategories);\r
+ /*State emptyState = State.NewInstance();\r
+ combo_UseSubCategory.setSelection(emptyState);\r
+ combo_UseSubCategory.setSelection(newSubCategories.get(0));\r
+ combo_UseSubCategory.setSelection(null);*/\r
+ \r
+ //combo_UseSubCategory.setTerms(newSubCategories);\r
+ \r
+ }\r
+ }\r
+ }\r
+ for (Object object: combo_HumanGroup.getControls()) {\r
+ if (object == eventSource) {\r
+ Modifier selectedHumanGroup = combo_HumanGroup.getSelection();\r
+ if (selectedHumanGroup != null) {\r
+ combo_EthnicGroup.setTerms(setEthnicGroupComboTerms(TermStore.getTerms(Modifier.class, null, false), selectedHumanGroup));\r
+ }\r
+ }\r
+ }\r
+ /* \r
+ State selectedUseCategory = combo_UseCategory.getSelection();\r
+ if (selectedUseCategory != null) {\r
+ combo_UseSubCategory.setTerms(setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false),selectedUseCategory));\r
+\r
+ }\r
+ //}\r
+ if (eventSource == combo_HumanGroup) {\r
+ Modifier selectedHumanGroup = combo_HumanGroup.getSelection();\r
+ if (selectedHumanGroup != null) {\r
+ combo_EthnicGroup.setTerms(setEthnicGroupComboTerms(TermStore.getTerms(Modifier.class, null, false), selectedHumanGroup));\r
+ }\r
+ }\r
+ */\r
+\r
+ }\r
+\r
+ @Override\r
+ public void widgetDefaultSelected(SelectionEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.ui.section.userecords;\r
+\r
+import org.eclipse.jface.viewers.ISelectionProvider;\r
+\r
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;\r
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;\r
+\r
+public class UseRecordDetailSection extends AbstractCdmDetailSection<DescriptionElementBase> {\r
+ public UseRecordDetailSection(CdmFormFactory cdmFormFactory, ConversationHolder conversation,\r
+ ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {\r
+ super(cdmFormFactory, conversation, parentElement, selectionProvider, style);\r
+ }\r
+\r
+ @Override\r
+ protected DetailType getDetailType() {\r
+ return DetailType.USE_RECORD;\r
+ }\r
+\r
+ @Override\r
+ public String getHeading() {\r
+ return "Use Record";\r
+ }\r
+ \r
+ /** {@inheritDoc} */\r
+ @Override\r
+ protected void setSectionTitle() {\r
+ this.setText(getHeading() + ": " + getEntity().getFeature().getLabel(CdmStore.getDefaultLanguage()));\r
+ setTextClient(createToolbar());\r
+ }\r
+}\r
--- /dev/null
+package eu.etaxonomy.taxeditor.view.userecords;\r
+\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.jface.viewers.IStructuredSelection;\r
+import org.eclipse.jface.viewers.Viewer;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
+import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
+import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;\r
+import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;\r
+\r
+\r
+ public class UseRecordsViewPart extends AbstractCdmEditorViewPart implements IPartContentHasSupplementalData{\r
+ \r
+ public static String ID = "eu.etaxonomy.taxeditor.view.userecords";\r
+ private UseRecordsViewer viewer;\r
+ \r
+ @Override\r
+ public void createViewer(Composite parent) {\r
+ //selectionService.addPostSelectionListener(this);\r
+ \r
+ viewer = new UseRecordsViewer(parent, this);\r
+ getSite().setSelectionProvider(viewer);\r
+ \r
+ }\r
+ \r
+ @Override\r
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
+ if(StoreUtil.getActiveEditor() == null){\r
+ showEmptyPage();\r
+ return;\r
+ }\r
+ \r
+ if(part == this){\r
+ return;\r
+ }\r
+ \r
+ if(!(selection instanceof IStructuredSelection)){\r
+ return;\r
+ }\r
+ \r
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;\r
+ \r
+ if((part instanceof IEditorPart) || (part instanceof AbstractCdmViewPart)) {\r
+ if(structuredSelection.size() != 1){\r
+ showEmptyPage();\r
+ return;\r
+ }\r
+ \r
+ // do not show details for feature nodes TODO really? \r
+ if(structuredSelection.getFirstElement() instanceof FeatureNodeContainer){\r
+ // do show the map for distributions\r
+ Feature feature = ((FeatureNodeContainer) ((IStructuredSelection) selection).getFirstElement()).getFeature();\r
+ if(!feature.equals(Feature.DISTRIBUTION())){\r
+ showEmptyPage();\r
+ return;\r
+ }\r
+ }\r
+ \r
+ showViewer(part, structuredSelection);\r
+ }else{\r
+ showEmptyPage(); \r
+ } \r
+ \r
+ }\r
+ \r
+ @Override\r
+ public Viewer getViewer() {\r
+ return viewer;\r
+ }\r
+\r
+ /** {@inheritDoc} */\r
+ @Override\r
+ public void dispose() {\r
+ super.dispose();\r
+ selectionService.removePostSelectionListener(this);\r
+ }\r
+\r
+ /**\r
+ * <p>onComplete</p>\r
+ *\r
+ * @return a boolean.\r
+ */\r
+ public boolean onComplete() {\r
+ return true;\r
+ }\r
+\r
+ \r
+\r
+ \r
+\r
+ \r
+ }\r
--- /dev/null
+package eu.etaxonomy.taxeditor.view.userecords;\r
+\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.jface.viewers.SelectionChangedEvent;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.ui.forms.widgets.Section;\r
+\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.taxeditor.ui.element.RootElement;\r
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;\r
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType;\r
+import eu.etaxonomy.taxeditor.ui.section.description.DescribedSpecimenSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.DescriptionDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementMediaSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementSourceSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.DescriptionSourceSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.NaturalLanguageSection;\r
+import eu.etaxonomy.taxeditor.ui.section.description.ScopeSection;\r
+import eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusSection;\r
+import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;\r
+import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;\r
+import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessagesSection;\r
+import eu.etaxonomy.taxeditor.ui.section.taxon.TaxonBaseDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailSection;\r
+import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;\r
+import eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer;\r
+import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;\r
+\r
+\r
+\r
+\r
+\r
+public class UseRecordsViewer extends AbstractCdmDataViewer {\r
+\r
+ private ISelection selection;\r
+ \r
+ public UseRecordsViewer(Composite parent, AbstractCdmViewPart viewPart) {\r
+ super(parent, viewPart);\r
+ }\r
+ @Override\r
+ protected void showParts() {\r
+ if (getInput() instanceof TaxonBase) {\r
+ createTaxonSections(rootElement);\r
+\r
+ } else if (getInput() instanceof DescriptionBase) {\r
+ if (((DescriptionBase) getInput()).isImageGallery()) {\r
+ createImageGallerySection(rootElement);\r
+\r
+ } else {\r
+ createUseSection(rootElement);\r
+\r
+ }\r
+ } else if (getInput() instanceof DescriptionElementBase) {\r
+ createUseRecordSection(rootElement);\r
+\r
+ } else if (getInput() instanceof TermVocabulary) {\r
+ createTermVocabularySection(rootElement);\r
+\r
+ }\r
+ \r
+ /*if (getInput() instanceof TaxonBase) {\r
+ if (currentViewPart != VIEW_PART.TAXON) {\r
+ createTaxonSections(rootElement);\r
+ currentViewPart = VIEW_PART.TAXON;\r
+ }\r
+ } else if (getInput() instanceof Reference) {\r
+ if (currentViewPart != VIEW_PART.REFEERENCE) {\r
+ createReferenceSections(rootElement);\r
+ currentViewPart = VIEW_PART.REFEERENCE;\r
+ }\r
+ } else if (getInput() instanceof DescriptionBase) {\r
+ if (((DescriptionBase) getInput()).isImageGallery()) {\r
+ if (currentViewPart != VIEW_PART.IMAGE_GALLERY) {\r
+ createImageGallerySection(rootElement);\r
+ currentViewPart = VIEW_PART.IMAGE_GALLERY;\r
+ }\r
+ } else {\r
+ if (currentViewPart != VIEW_PART.DESCRIPTION) {\r
+ createDescriptionSection(rootElement);\r
+ currentViewPart = VIEW_PART.DESCRIPTION;\r
+ }\r
+ }\r
+ } else if (getInput() instanceof DescriptionElementBase) {\r
+ if (currentViewPart != VIEW_PART.DESCRIPTION_ELEMENT) {\r
+ createDescriptionElementSection(rootElement);\r
+ currentViewPart = VIEW_PART.DESCRIPTION_ELEMENT;\r
+ }\r
+ } else {\r
+ destroySections();\r
+ currentViewPart = VIEW_PART.EMPTY;\r
+ }\r
+ layout();\r
+ */\r
+ }\r
+ private void createTaxonSections(RootElement parent) {\r
+ destroySections();\r
+\r
+ TaxonBaseDetailSection taxonBaseDetailSection = (TaxonBaseDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.TAXONBASE,\r
+ getConversationHolder(), parent, this, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ NonViralNameDetailSection nonViralNameSection = (NonViralNameDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.NONVIRALNAME,\r
+ getConversationHolder(), parent, this, Section.TWISTIE\r
+ | Section.EXPANDED);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ NomenclaturalReferenceDetailSection referenceDetailSection = (NomenclaturalReferenceDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.NOMENCLATURALREFERENCE,\r
+ getConversationHolder(), parent, this, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ NomenclaturalStatusSection nomenclaturalStatusSection = (NomenclaturalStatusSection) formFactory\r
+ .createEntityDetailSection(\r
+ EntityDetailType.NOMENCLATURALSTATUS,\r
+ getConversationHolder(), parent, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ ProtologueSection protologSection = (ProtologueSection) formFactory\r
+ .createEntityDetailSection(EntityDetailType.PROTOLOG,\r
+ getConversationHolder(), parent, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ TypeDesignationSection typeDesignationSection = (TypeDesignationSection) formFactory\r
+ .createEntityDetailSection(EntityDetailType.TYPEDESIGNATION,\r
+ getConversationHolder(), parent, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ NameRelationshipDetailSection nameRelationshipSection = (NameRelationshipDetailSection) formFactory\r
+ .createEntityDetailSection(EntityDetailType.NAME_RELATIONSHIP,\r
+ getConversationHolder(), parent, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ ParsingMessagesSection parsingMessagesSection = (ParsingMessagesSection) formFactory\r
+ .createCdmDetailSection(DetailType.PARSINGMESSAGE,\r
+ getConversationHolder(), parent, this, Section.EXPANDED);\r
+\r
+ addPart(taxonBaseDetailSection);\r
+ addPart(nonViralNameSection);\r
+ addPart(nomenclaturalStatusSection);\r
+ addPart(protologSection);\r
+ addPart(referenceDetailSection);\r
+ addPart(typeDesignationSection);\r
+ addPart(nameRelationshipSection);\r
+ addPart(parsingMessagesSection);\r
+ }\r
+ \r
+ private void createTermVocabularySection(RootElement parent) {\r
+ destroySections();\r
+\r
+ TermVocabularyDetailSection termVocabularyDetailSection = (TermVocabularyDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.TERM_VOCABULARY,\r
+ getConversationHolder(), parent, this, Section.TWISTIE\r
+ | Section.EXPANDED);\r
+ addPart(termVocabularyDetailSection);\r
+ }\r
+ \r
+ private void createUseRecordSection(RootElement parent) {\r
+ destroySections();\r
+\r
+ UseRecordDetailSection descriptionUseRecordSection = (UseRecordDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.USE_RECORD,\r
+ getConversationHolder(), parent, this, Section.TWISTIE\r
+ | Section.EXPANDED);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+ \r
+ addPart(descriptionUseRecordSection);\r
+ \r
+ \r
+ }\r
+ \r
+ private void createUseSection(RootElement parent) {\r
+ destroySections();\r
+ DescriptionDetailSection descriptionDetailSection = (DescriptionDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.DESCRIPTION,\r
+ getConversationHolder(), parent, this, Section.TWISTIE\r
+ | Section.EXPANDED);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ /*NaturalLanguageSection naturalLanguageSection = (NaturalLanguageSection) formFactory\r
+ .createCdmDetailSection(DetailType.NATURAL_LANGUAGE,\r
+ getConversationHolder(), parent, this, Section.TWISTIE\r
+ | Section.EXPANDED);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ DescribedSpecimenSection describedSpecimenSection = (DescribedSpecimenSection) formFactory\r
+ .createEntityDetailSection(EntityDetailType.DESCRIBED_SPECIMEN,\r
+ getConversationHolder(), parent, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);*/\r
+\r
+ DescriptionSourceSection descriptionSourceSection = (DescriptionSourceSection) formFactory\r
+ .createEntityDetailSection(EntityDetailType.DESCRIPTIONSOURCE,\r
+ getConversationHolder(), parent, Section.TWISTIE);\r
+\r
+ /*formFactory.createHorizontalSeparator(parent, SWT.BORDER);\r
+\r
+ ScopeSection scopeSection = (ScopeSection) formFactory\r
+ .createEntityDetailSection(EntityDetailType.SCOPE,\r
+ getConversationHolder(), parent, Section.TWISTIE);\r
+\r
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);*/\r
+\r
+ addPart(descriptionDetailSection);\r
+ addPart(descriptionSourceSection);\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ private void createImageGallerySection(RootElement parent) {\r
+ destroySections();\r
+ DescriptionDetailSection descriptionDetailSection = (DescriptionDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.DESCRIPTION,\r
+ getConversationHolder(), parent, this, Section.TWISTIE\r
+ | Section.EXPANDED);\r
+\r
+ addPart(descriptionDetailSection);\r
+ }\r
+ \r
+ private void createReferenceSections(RootElement parent) {\r
+ destroySections();\r
+\r
+ ReferenceDetailSection referenceDetailSection = (ReferenceDetailSection) formFactory\r
+ .createCdmDetailSection(DetailType.REFERENCEBASE,\r
+ getConversationHolder(), parent, this, Section.TWISTIE\r
+ | Section.EXPANDED);\r
+\r
+ addPart(referenceDetailSection);\r
+ \r
+ }\r
+ @Override\r
+ public ISelection getSelection() {\r
+ return selection;\r
+ }\r
+ @Override\r
+ public void setSelection(ISelection selection, boolean reveal) {\r
+ this.selection = selection;\r
+ SelectionChangedEvent selectionChangedEvent = new SelectionChangedEvent(\r
+ this, selection);\r
+ fireSelectionChanged(selectionChangedEvent);\r
+ }\r
+\r
+}\r