From 4cc2aab399e626ea569cfd0bee343a8cb8ed174b Mon Sep 17 00:00:00 2001 From: "n.hoffmann" Date: Wed, 20 Apr 2011 14:34:07 +0000 Subject: [PATCH] Finalizing PolytomousKeyListEditor --- .gitattributes | 1 + eu.etaxonomy.taxeditor.editor/plugin.xml | 2 +- .../polytomous/IPolytomousKeyEditorPage.java | 22 +++++++ .../polytomous/PolytomousKeyGraphEditor.java | 4 +- .../polytomous/PolytomousKeyListEditor.java | 30 ++++++++- .../polytomous/handler/CreateNodeHandler.java | 45 ++++++++------ .../polytomous/handler/DeleteNodeHandler.java | 62 ++++++++++++++++--- .../operation/DeleteNodeOperation.java | 46 ++++++++------ .../key/PolytomousKeyNodeDetailElement.java | 14 ++--- 9 files changed, 170 insertions(+), 56 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java diff --git a/.gitattributes b/.gitattributes index 2bb3c7adb..3173a420e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -345,6 +345,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/Ab eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/AbstractIdentificationEditorInput.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/handler/ApplyLayoutHandler.java -text +eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyContentProvider.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyEditorInput.java -text eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java -text diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index 7313f74cf..ff49af451 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -592,7 +592,7 @@ + value="eu.etaxonomy.taxeditor.editor.key"> diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java new file mode 100644 index 000000000..6d0e84551 --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/IPolytomousKeyEditorPage.java @@ -0,0 +1,22 @@ +// $Id$ +/** + * Copyright (C) 2007 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.key.polytomous; + +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; + +/** + * @author n.hoffmann + * @created Apr 20, 2011 + * @version 1.0 + */ +public interface IPolytomousKeyEditorPage extends IPostOperationEnabled { + +} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java index 61a8dd249..0bdd36251 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyGraphEditor.java @@ -14,7 +14,9 @@ import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor; * @author n.hoffmann * */ -public class PolytomousKeyGraphEditor extends AbstractGraphKeyEditor { +public class PolytomousKeyGraphEditor extends + AbstractGraphKeyEditor implements + IPolytomousKeyEditorPage { public static final String ID = "eu.etaxonomy.taxeditor.editor.key.polytomous.graph"; diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java index 67236cfc1..fc252da03 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java @@ -37,6 +37,7 @@ import org.eclipse.ui.part.EditorPart; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.description.PolytomousKey; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.cdm.model.taxon.Taxon; @@ -50,7 +51,8 @@ import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider; * @version 1.0 */ public class PolytomousKeyListEditor extends EditorPart implements - IConversationEnabled, IDirtyMarkableSelectionProvider { + IConversationEnabled, IDirtyMarkableSelectionProvider, + IPolytomousKeyEditorPage { private class LinkListener extends MouseAdapter { /* @@ -292,4 +294,30 @@ public class PolytomousKeyListEditor extends EditorPart implements } + /* + * (non-Javadoc) + * + * @see + * eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#postOperation( + * eu.etaxonomy.cdm.model.common.CdmBase) + */ + @Override + public boolean postOperation(CdmBase objectAffectedByOperation) { + viewer.refresh(); + viewer.setSelection(new StructuredSelection(objectAffectedByOperation), + true); + return true; + } + + /* + * (non-Javadoc) + * + * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#onComplete() + */ + @Override + public boolean onComplete() { + // TODO Auto-generated method stub + return false; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/CreateNodeHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/CreateNodeHandler.java index 12fb3dc6d..d1d4a917d 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/CreateNodeHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/CreateNodeHandler.java @@ -14,45 +14,54 @@ import org.eclipse.ui.handlers.HandlerUtil; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.taxeditor.editor.EditorUtil; -import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyGraphEditor; +import eu.etaxonomy.taxeditor.editor.key.KeyEditor; +import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage; import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.CreateNodeOperation; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; /** * @author n.hoffmann - * + * */ public class CreateNodeHandler extends AbstractHandler { - /* (non-Javadoc) - * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands. + * ExecutionEvent) */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { - + IEditorPart editor = HandlerUtil.getActiveEditor(event); - - if(editor instanceof PolytomousKeyGraphEditor){ - PolytomousKeyGraphEditor keyEditor = (PolytomousKeyGraphEditor) editor; - - IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getActiveMenuSelection(event); - - if(selection.getFirstElement() instanceof PolytomousKeyNode){ + + if (editor instanceof KeyEditor) { + IPolytomousKeyEditorPage editorPage = (IPolytomousKeyEditorPage) ((KeyEditor) editor) + .getActiveEditor(); + + IStructuredSelection selection = (IStructuredSelection) HandlerUtil + .getActiveMenuSelection(event); + + if (selection.getFirstElement() instanceof PolytomousKeyNode) { try { String label = event.getCommand().getName(); IUndoContext undoContext = EditorUtil.getUndoContext(); - - PolytomousKeyNode keyNode = (PolytomousKeyNode) selection.getFirstElement(); - - AbstractPostOperation operation = new CreateNodeOperation(label, undoContext, keyNode, keyEditor); + + PolytomousKeyNode keyNode = (PolytomousKeyNode) selection + .getFirstElement(); + + AbstractPostOperation operation = new CreateNodeOperation( + label, undoContext, keyNode, editorPage); EditorUtil.executeOperation(operation); } catch (NotDefinedException e) { EditorUtil.warn(getClass(), "Command name not set."); } - + } } - + return null; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java index f67fdbb09..2926c7d1a 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java @@ -1,18 +1,30 @@ // $Id$ /** -* Copyright (C) 2007 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. -*/ + * Copyright (C) 2007 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.key.polytomous.handler; 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.core.commands.operations.IUndoContext; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; +import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.key.KeyEditor; +import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage; +import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.DeleteNodeOperation; +import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; /** * @author n.hoffmann @@ -21,12 +33,42 @@ import org.eclipse.core.commands.ExecutionException; */ public class DeleteNodeHandler extends AbstractHandler { - /* (non-Javadoc) - * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands. + * ExecutionEvent) */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { - // TODO Auto-generated method stub + IEditorPart editor = HandlerUtil.getActiveEditor(event); + + if (editor instanceof KeyEditor) { + IPolytomousKeyEditorPage editorPage = (IPolytomousKeyEditorPage) ((KeyEditor) editor) + .getActiveEditor(); + + IStructuredSelection selection = (IStructuredSelection) HandlerUtil + .getActiveMenuSelection(event); + + if (selection.getFirstElement() instanceof PolytomousKeyNode) { + try { + String label = event.getCommand().getName(); + IUndoContext undoContext = EditorUtil.getUndoContext(); + + PolytomousKeyNode keyNode = (PolytomousKeyNode) selection + .getFirstElement(); + + AbstractPostOperation operation = new DeleteNodeOperation( + label, undoContext, keyNode, editorPage); + EditorUtil.executeOperation(operation); + } catch (NotDefinedException e) { + EditorUtil.warn(getClass(), "Command name not set."); + } + + } + } + return null; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java index d4cc5ddb4..dc054de2e 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java @@ -9,51 +9,61 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import eu.etaxonomy.cdm.model.description.PolytomousKey; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; /** * @author n.hoffmann - * + * */ public class DeleteNodeOperation extends AbstractPostOperation { - private PolytomousKeyNode node; - private PolytomousKey key; + private final PolytomousKeyNode parent; + private final PolytomousKeyNode node; - public DeleteNodeOperation(String label, - IUndoContext undoContext, PolytomousKeyNode node, IPostOperationEnabled postOperationEnabled) { + public DeleteNodeOperation(String label, IUndoContext undoContext, + PolytomousKeyNode node, IPostOperationEnabled postOperationEnabled) { super(label, undoContext, postOperationEnabled); this.node = node; + this.parent = node.getParent(); } - /* (non-Javadoc) - * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse + * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) */ @Override public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - - key = node.getKey(); - - + + parent.removeChild(node); + return postExecute(null); } - /* (non-Javadoc) - * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse + * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) */ @Override public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - // TODO Auto-generated method stub - return null; + return execute(monitor, info); } - /* (non-Javadoc) - * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse + * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) */ @Override public IStatus undo(IProgressMonitor monitor, IAdaptable info) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java index b17833e5e..2b004eaa0 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java @@ -55,17 +55,17 @@ public class PolytomousKeyNodeDetailElement extends element_question = formFactory.createKeyStatementElement( formElement, "Question", parent.getQuestion(), 50, style); + + selection_feature = (FeatureSelectionElement) formFactory + .createSelectionElement(SelectionType.FEATURE, + getConversationHolder(), formElement, "Feature", + parent.getFeature(), + FeatureSelectionElement.DEFAULT, style); } element_statement = formFactory.createKeyStatementElement(formElement, "Statement", entity.getStatement(), 50, style); - selection_feature = (FeatureSelectionElement) formFactory - .createSelectionElement(SelectionType.FEATURE, - getConversationHolder(), formElement, "Feature", - entity.getFeature(), FeatureSelectionElement.DEFAULT, - style); - if (entity.isLeaf()) { selection_taxon = (TaxonSelectionElement) formFactory .createSelectionElement(SelectionType.TAXON, @@ -106,7 +106,7 @@ public class PolytomousKeyNodeDetailElement extends } else if (eventSource == element_statement) { getEntity().setStatement(element_statement.getKeyStatement()); } else if (eventSource == selection_feature) { - getEntity().setFeature(selection_feature.getEntity()); + getEntity().getParent().setFeature(selection_feature.getEntity()); } else if (eventSource == selection_taxon) { getEntity().setTaxon(selection_taxon.getEntity()); } else if (eventSource == selection_subkey) { -- 2.34.1