AT: committing changes to the TaxEditor Post second round of code review
authora.theys <a.theys@localhost>
Thu, 21 Jun 2012 09:59:39 +0000 (09:59 +0000)
committera.theys <a.theys@localhost>
Thu, 21 Jun 2012 09:59:39 +0000 (09:59 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/UseObjectManager.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesViewPart.java

index ba64d65ad2c6ee2daf59f11e0897ff5a994276ce..c59c118254faaf05f7e9539f484bb9b38baee3e1 100644 (file)
@@ -2,8 +2,6 @@ package eu.etaxonomy.taxeditor.editor;
 \r
 import java.net.URI;\r
 import java.net.URISyntaxException;\r
-import java.util.List;\r
-import java.util.UUID;\r
 \r
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.ui.IMemento;\r
index 5e2e1ddfc75829ed1d7b3c1b392f4f2d7e9b5408..fce0faf8e592fc5ec687eb383a97af673547b092 100644 (file)
@@ -36,8 +36,8 @@ import eu.etaxonomy.taxeditor.store.TermStore;
  */
 public class DescriptiveContentProvider implements ITreeContentProvider {
        
-       private static final Object[] NO_CHILDREN = new Object[0];
-       private Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache;
+       protected static final Object[] NO_CHILDREN = new Object[0];
+       protected Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache;
        
        /**
         * <p>Constructor for DescriptiveContentProvider.</p>
@@ -131,7 +131,7 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
         * @param parentElement
         * @return
         */
-       private List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {
+       protected List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {
                Taxon taxon = parentElement.getTaxon();
                List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();
                for(DescriptionBase description : taxon.getDescriptions()){
index 759ba035a8506f7cbb36818a907a5e7580c5d00b..23d3665d91308c2efd17219cf51204e08a11a59b 100644 (file)
@@ -63,13 +63,13 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
        /** 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;
        
@@ -118,7 +118,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                return super.getInitialSelection();
        }
 
-       private void createToolbar() {
+       protected void createToolbar() {
                IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
                toolBarManager.add(showAllElementsAction);
                toolBarManager.add(hideAllElementsAction);
@@ -127,7 +127,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
        /*
         * TODO add to the views menu
         */
-       private void createMenu(){
+       protected void createMenu(){
                MenuManager menuManager = new MenuManager();
                menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
                
@@ -181,7 +181,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
         * @created May 28, 2010
         * @version 1.0
         */
-       private class ToggleDescriptionAction extends Action{
+       protected class ToggleDescriptionAction extends Action{
                private boolean expanded;
                
                public ToggleDescriptionAction(boolean expand){
index eceb609615d4255c10757d480547507e5c6826fc..b8b1f4d69f8a74977b81f1e7e683ee0ed49f50b5 100644 (file)
@@ -27,6 +27,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 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
@@ -39,10 +40,8 @@ import eu.etaxonomy.taxeditor.store.TermStore;
  * @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
@@ -51,86 +50,9 @@ public class UsesContentProvider implements ITreeContentProvider {
         * @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
@@ -138,7 +60,8 @@ public class UsesContentProvider implements ITreeContentProvider {
         * @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
@@ -159,36 +82,4 @@ public class UsesContentProvider implements ITreeContentProvider {
                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
index 6e204c213418d1aaf09a2aaa9947dddb658a4fb9..9fb18565629c7420662dcbedff6242078db8096e 100644 (file)
@@ -8,47 +8,17 @@
  */\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
@@ -57,17 +27,10 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
  * @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
@@ -99,115 +62,6 @@ public class UsesViewPart extends AbstractCdmEditorViewPart implements IPartCont
 \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
@@ -215,47 +69,6 @@ public class UsesViewPart extends AbstractCdmEditorViewPart implements IPartCont
                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