/** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.desc"{trunked}</code> */
public static final String ID = "eu.etaxonomy.taxeditor.editor.view.descriptive";
- private TreeViewer viewer;
+ protected TreeViewer viewer;
- private Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<TaxonDescription, FeatureNodeContainerTree>();
+ protected Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<TaxonDescription, FeatureNodeContainerTree>();
- private ToggleDescriptionAction showAllElementsAction;
+ protected ToggleDescriptionAction showAllElementsAction;
- private ToggleDescriptionAction hideAllElementsAction;
+ protected ToggleDescriptionAction hideAllElementsAction;
private int dndOperations = DND.DROP_COPY | DND.DROP_MOVE;
return super.getInitialSelection();
}
- private void createToolbar() {
+ protected void createToolbar() {
IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
toolBarManager.add(showAllElementsAction);
toolBarManager.add(hideAllElementsAction);
/*
* TODO add to the views menu
*/
- private void createMenu(){
+ protected void createMenu(){
MenuManager menuManager = new MenuManager();
menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
* @created May 28, 2010
* @version 1.0
*/
- private class ToggleDescriptionAction extends Action{
+ protected class ToggleDescriptionAction extends Action{
private boolean expanded;
public ToggleDescriptionAction(boolean expand){
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
import eu.etaxonomy.taxeditor.editor.UsageTermCollection;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveContentProvider;\r
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;\r
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
* @created mar 13, 2012\r
* @version 1.0\r
*/\r
-public class UsesContentProvider implements ITreeContentProvider {\r
+public class UsesContentProvider extends DescriptiveContentProvider 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
* @param featureNodeContainerCache a {@link java.util.Map} object.\r
*/\r
public UsesContentProvider(Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache) {\r
+ super(featureNodeContainerCache);\r
this.featureNodeContainerCache = featureNodeContainerCache;\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
* @param parentElement\r
* @return\r
*/\r
- private List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {\r
+ @Override\r
+ protected List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {\r
this.markerTypes.addAll(CdmStore.getTermManager().getPreferredTerms(MarkerType.class));\r
Taxon taxon = parentElement.getTaxon();\r
List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();\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
*/\r
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.IEditorInput;\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.taxeditor.bulkeditor.BulkEditor;\r
-import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
-import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;\r
-import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
-import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;\r
import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer;\r
-import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
-import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;\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
* @created mar 13, 2012\r
* @version 1.0\r
*/\r
-public class UsesViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData {\r
+public class UsesViewPart extends DescriptiveViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData {\r
\r
+ /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.uses"</code> */\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
- \r
/** {@inheritDoc} */\r
@Override\r
public void createViewer(Composite parent) {\r
\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
- private void createToolbar() {\r
- IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();\r
- toolBarManager.add(showAllElementsAction);\r
- toolBarManager.add(hideAllElementsAction);\r
- }\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
-\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 DefinedTermEditor){\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
- IEditorInput input = ((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
- \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
/** {@inheritDoc} */\r
@Override\r
public boolean postOperation(CdmBase objectAffectedByOperation) {\r
return super.postOperation(objectAffectedByOperation);\r
}\r
\r
- /** {@inheritDoc} */\r
- @Override\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
- /** {@inheritDoc} */\r
- @Override\r
- public Viewer getViewer() {\r
- return viewer;\r
- }\r
- \r
- /**\r
- * <p>onComplete</p>\r
- *\r
- * @return a boolean.\r
- */\r
- @Override\r
- public boolean onComplete() {\r
- return false;\r
- }\r
\r
}\r