import org.eclipse.ui.operations.IWorkbenchOperationSupport;\r
import org.eclipse.ui.views.properties.PropertySheet;\r
\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
\r
private static Set<Feature> preferredFeatureSet;\r
private static Set<Rank> preferredRankSet;\r
+ private static IViewPart treeView;\r
\r
public static IViewPart getPropertySheet() {\r
for (IViewReference reference : getActivePage().getViewReferences()) {\r
* @return\r
*/ \r
public static TaxonomicTreeView getTreeView() {\r
- IViewPart view = getViewById(TaxonomicTreeView.ID);\r
- if (view == null || !(view instanceof TaxonomicTreeView)) {\r
- return null;\r
+ if (treeView == null) {\r
+ treeView = getViewById(TaxonomicTreeView.ID);\r
+ if (!(treeView instanceof TaxonomicTreeView)) {\r
+ treeView = null;\r
+ }\r
}\r
- return (TaxonomicTreeView) view;\r
+ return (TaxonomicTreeView) treeView;\r
}\r
\r
\r
throw new IllegalArgumentException(\r
"This action requires that the element composite's \"grandparent\" has a Description in its data field.");\r
}\r
-\r
operation = new DeleteElementOperation();\r
}\r
\r
throws ExecutionException {\r
\r
// Delete element from description\r
+ description.removeElement(descriptionElement);\r
\r
- \r
-// Action action = new DeleteMisappliedNameFromTaxonAction(misappliedName, taxon);\r
-// action.addPropertyChangeListener(new IPropertyChangeListener() {\r
-// @Override\r
-// public void propertyChange(PropertyChangeEvent event) {\r
-// if (event.getProperty().equals(\r
-// ITaxEditorConstants.MISAPPLIED_NAME)) {\r
-// elementComposite.dispose(); \r
-// }\r
-// }\r
-// }); \r
-// action.run();\r
+ // Dipose element composite\r
+ elementComposite.dispose();\r
\r
return Status.OK_STATUS;\r
}\r
private DropTarget target;\r
private DropTargetListener dropListener;\r
\r
+ /**\r
+ * Sets whether or not to dispose of this <code>Composite</code>\r
+ * when all its children have been disposed.\r
+ */\r
+ private boolean isDisposeEmpty;\r
+ \r
public GroupComposite(Composite parent) {\r
super(parent, SWT.NONE);\r
\r
}\r
}\r
}\r
+\r
+ public boolean isDisposeEmpty() {\r
+ return isDisposeEmpty;\r
+ }\r
+\r
+ public void setDisposeEmpty(boolean isDisposeEmpty) {\r
+ this.isDisposeEmpty = isDisposeEmpty;\r
+ }\r
}\r
grandParent = parent.getParent();\r
}\r
super.dispose();\r
- if (parent instanceof EditorGroupComposite\r
+ if (parent instanceof Composite\r
&& parent.getChildren().length == 0) {\r
parent.dispose();\r
}\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
import eu.etaxonomy.cdm.model.description.TextData;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.actions.ui.description.DeleteElementCompositeAction;\r
ContextMenu contextMenu = new ContextMenu(getDraggableLabel());\r
\r
// Delete this description element\r
-// Action deleteElementAction = new DeleteElementCompositeAction(\r
-// this, getTaxon());\r
-// contextMenu.addAction(deleteElementAction);\r
+ Action deleteElementAction = new DeleteElementCompositeAction(\r
+ this, getTaxon());\r
+ contextMenu.addAction(deleteElementAction);\r
\r
// Add new text \r
- } \r
+ }\r
+ \r
+ @Override\r
+ public void dispose() {\r
+ \r
+ Composite featureComponent = this.getParent();\r
+ \r
+ super.dispose();\r
+ \r
+ // If feature only has 1 child that is not DescriptionElementComposite,\r
+ // composite is empty\r
+ if (!(featureComponent instanceof FeatureGroupComposite)) {\r
+ return;\r
+ }\r
+ \r
+ if (featureComponent.getChildren().length == 1 &&\r
+ !(featureComponent.getChildren()[0] instanceof \r
+ DescriptionElementComposite)) {\r
+ Composite grandParent = featureComponent.getParent(); \r
+ featureComponent.dispose();\r
+ grandParent.layout();\r
+ }\r
+\r
+ managedForm.getForm().getBody().layout();\r
+ }\r
}
\ No newline at end of file