Polytomous keys may be viewed as list as well
authorn.hoffmann <n.hoffmann@localhost>
Mon, 18 Apr 2011 13:31:47 +0000 (13:31 +0000)
committern.hoffmann <n.hoffmann@localhost>
Mon, 18 Apr 2011 13:31:47 +0000 (13:31 +0000)
.gitattributes
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListLabelProvider.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListViewer.java [deleted file]

index 7752fbabacd20ab85a54f5e469d7996d43a43e8b..2bb3c7adb0131530cdaa06f5cbbfaf50163f1bb7 100644 (file)
@@ -351,7 +351,8 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/po
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyLabelProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListContentProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java -text
-eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListViewer.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListLabelProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/CreateNodeHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/CreateNodeOperation.java -text
index 72817060075053739c0db58630f2c2b4b6d27fe2..45b14a240a83ff55339641828811931a6bec2192 100644 (file)
@@ -1,41 +1,83 @@
 // $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;
 
-import org.eclipse.jface.viewers.IContentProvider;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
+import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+
 /**
  * @author n.hoffmann
  * @created Apr 4, 2011
  * @version 1.0
  */
-public class PolytomousKeyListContentProvider implements IContentProvider {
+public class PolytomousKeyListContentProvider implements
+               IStructuredContentProvider {
 
-       /* (non-Javadoc)
+       /*
+        * (non-Javadoc)
+        * 
         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
         */
        @Override
        public void dispose() {
-               // TODO Auto-generated method stub
-
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface
+        * .viewers.Viewer, java.lang.Object, java.lang.Object)
         */
        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-               // TODO Auto-generated method stub
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java
+        * .lang.Object)
+        */
+       @Override
+       public Object[] getElements(Object inputElement) {
+               if (inputElement instanceof PolytomousKey) {
+                       List result = new ArrayList();
+
+                       PolytomousKeyNode root = ((PolytomousKey) inputElement).getRoot();
 
+                       // result.add(root);
+                       // result.addAll(root.getChildren());
+                       getChildren(result, root);
+                       return result.toArray();
+               }
+               // else if (inputElement instanceof PolytomousKeyNode) {
+               // return ((PolytomousKeyNode) inputElement).getChildren().toArray();
+               // }
+
+               return null;
        }
 
+       private void getChildren(List result, PolytomousKeyNode node) {
+               result.add(node);
+
+               for (PolytomousKeyNode internalNode : node.getChildren()) {
+                       getChildren(result, internalNode);
+               }
+       }
 }
index 71eaa62e92c1086097eb843a67f0a1dfdb0092a1..921bbe9fc68bb46e6c3b94d80b6ee972894b6cdc 100644 (file)
 package eu.etaxonomy.taxeditor.editor.key.polytomous;
 
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;
@@ -20,7 +31,10 @@ 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.description.PolytomousKey;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
 
 /**
@@ -31,12 +45,66 @@ import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
 public class PolytomousKeyListEditor extends EditorPart implements
                IConversationEnabled {
 
+       private class LinkListener extends MouseAdapter {
+               /*
+                * (non-Javadoc)
+                * 
+                * @see
+                * org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events
+                * .MouseEvent)
+                */
+               @Override
+               public void mouseUp(MouseEvent event) {
+
+                       Table table = (Table) event.widget;
+                       // Determine where the mouse was clicked
+                       Point pt = new Point(event.x, event.y);
+
+                       final TableItem item = table.getItem(pt);
+                       if (item != null) {
+                               // Determine which column was selected
+                               int column = -1;
+                               for (int i = 0, n = table.getColumnCount(); i < n; i++) {
+                                       Rectangle rect = item.getBounds(i);
+                                       if (rect.contains(pt)) {
+                                               // This is the selected column
+                                               column = i;
+                                               break;
+                                       }
+                               }
+                               if (column == 3) {
+                                       PolytomousKeyNode node = (PolytomousKeyNode) item.getData();
+                                       Object linkData = getItemLinkData(node);
+                                       if (linkData instanceof PolytomousKeyNode) {
+                                               viewer.setSelection(new StructuredSelection(linkData),
+                                                               true);
+                                       } else if (linkData instanceof Taxon) {
+                                               try {
+                                                       EditorUtil.openTaxonBase(((Taxon) linkData)
+                                                                       .getUuid());
+                                               } catch (PartInitException e) {
+                                                       EditorUtil.error(getClass(), e);
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               /**
+                * @return
+                */
+               private Object getItemLinkData(PolytomousKeyNode node) {
+                       return node.getChildren().isEmpty() ? node.getTaxon() : node
+                                       .getChildAt(0);
+               }
+       }
+
        public static final String ID = "eu.etaxonomy.taxeditor.editor.key.polytomous.list";
 
        private CdmFormFactory formFactory;
        private Composite container;
 
-       private PolytomousKeyListViewer viewer;
+       private TableViewer viewer;
 
        /*
         * (non-Javadoc)
@@ -127,14 +195,48 @@ public class PolytomousKeyListEditor extends EditorPart implements
         */
        @Override
        public void createPartControl(Composite parent) {
-               container = formFactory.createComposite(parent);
 
-               viewer = new PolytomousKeyListViewer(container);
+               FillLayout fillLayout = new FillLayout();
+               fillLayout.marginWidth = 0;
+               fillLayout.marginHeight = 0;
+               fillLayout.type = SWT.VERTICAL;
+               parent.setLayout(fillLayout);
+
+               viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
+                               | SWT.V_SCROLL | SWT.FULL_SELECTION);
+               getSite().setSelectionProvider(viewer);
+
+               createColumns(viewer);
+               viewer.getControl().addMouseListener(new LinkListener());
+               viewer.setContentProvider(new PolytomousKeyListContentProvider());
+               viewer.setLabelProvider(new PolytomousKeyListLabelProvider());
+
+               // viewer.getControl().setLayoutData(CdmFormFactory.FILL());
+
                PolytomousKey key = ((PolytomousKeyEditorInput) getEditorInput())
                                .getKey();
+
                viewer.setInput(key);
        }
 
+       // This will create the columns for the table
+       private void createColumns(TableViewer viewer) {
+               Table table = viewer.getTable();
+               String[] titles = { "Node Number", "Question", "Statement", "Link" };
+               int[] bounds = { 50, 200, 200, 100 };
+
+               for (int i = 0; i < titles.length; i++) {
+                       TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
+                       column.getColumn().setText(titles[i]);
+                       column.getColumn().setWidth(bounds[i]);
+                       column.getColumn().setResizable(true);
+                       column.getColumn().setMoveable(true);
+               }
+               table.setHeaderVisible(true);
+               table.setLinesVisible(false);
+
+       }
+
        /*
         * (non-Javadoc)
         * 
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListItem.java
new file mode 100644 (file)
index 0000000..4487c32
--- /dev/null
@@ -0,0 +1,277 @@
+// $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 org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.forms.IFormPart;
+import org.eclipse.ui.forms.IManagedForm;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.description.KeyStatement;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.forms.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 13, 2011
+ * @version 1.0
+ */
+public class PolytomousKeyListItem extends AbstractCdmFormElement implements
+               IFormPart {
+
+       private boolean dirty;
+       private final PolytomousKeyNode entity;
+
+       private SelectionListener linkSelectionListener;
+
+       /**
+        * @param formFactory
+        * @param layoutComposite
+        */
+       protected PolytomousKeyListItem(CdmFormFactory formFactory,
+                       Composite layoutComposite, PolytomousKeyNode entity) {
+               super(formFactory, layoutComposite);
+
+               // layoutComposite.setBackground(Display.getDefault().getSystemColor(
+               // SWT.COLOR_CYAN));
+
+               this.entity = (PolytomousKeyNode) HibernateProxyHelper.deproxy(entity);
+
+               Label label_nodeNumber = new Label(getLayoutComposite(), SWT.NULL);
+               label_nodeNumber.setText(getItemNumber());
+
+               Label label_question = new Label(getLayoutComposite(), SWT.NULL);
+               label_question.setText(getItemQuestion());
+
+               Label label_statement = new Label(getLayoutComposite(), SWT.NULL);
+               label_statement.setText(getItemStatement());
+               label_statement.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
+
+               Link link = new Link(getLayoutComposite(), SWT.NONE);
+               link.setText("<a>" + getItemLink() + "</a>");
+               link.setData(getItemLinkData());
+               link.addSelectionListener(getLinkSelectionListener());
+
+               // Label label_link = new Label(getLayoutComposite(), SWT.NULL);
+               // label_link.setText(link);
+
+       }
+
+       /**
+        * @return
+        */
+       private SelectionListener getLinkSelectionListener() {
+               if (linkSelectionListener == null) {
+                       linkSelectionListener = new SelectionAdapter() {
+                               /*
+                                * (non-Javadoc)
+                                * 
+                                * @see
+                                * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org
+                                * .eclipse.swt.events.SelectionEvent)
+                                */
+                               @Override
+                               public void widgetSelected(SelectionEvent e) {
+                                       Object data = e.widget.getData();
+
+                                       if (data instanceof Taxon) {
+                                               try {
+                                                       EditorUtil.openTaxonBase(((Taxon) data).getUuid());
+                                               } catch (PartInitException e1) {
+                                                       // TODO Auto-generated catch block
+                                                       e1.printStackTrace();
+                                               }
+                                       }
+                               }
+                       };
+               }
+               return linkSelectionListener;
+       }
+
+       private String getItemNumber() {
+               if (isParentRoot()) {
+                       return "root";
+               } else {
+                       PolytomousKeyNode parent = getParent();
+                       String itemNumber = parent.getNodeNumber() != null ? parent
+                                       .getNodeNumber().toString() : "NaN";
+
+                       int index = parent.getChildren().indexOf(entity);
+
+                       for (int i = 0; i < index; i++) {
+                               itemNumber += "'";
+                       }
+
+                       return itemNumber;
+               }
+       }
+
+       private String getItemQuestion() {
+               if (isParentRoot()) {
+                       return "";
+               } else {
+                       KeyStatement question = getParent().getQuestion();
+                       return question != null ? question.getLabelText(CdmStore
+                                       .getDefaultLanguage()) : "";
+               }
+
+       }
+
+       private String getItemStatement() {
+               KeyStatement statement = entity.getStatement();
+               return statement != null ? CdmUtils.Nz(statement.getLabelText(CdmStore
+                               .getDefaultLanguage())) : "No statement";
+       }
+
+       private String getItemLink() {
+               String taxonString = entity.getTaxon() != null ? entity.getTaxon()
+                               .getName().getTitleCache() : "Taxon empty";
+
+               return entity.getChildren().isEmpty() ? taxonString : entity
+                               .getNodeNumber().toString();
+       }
+
+       /**
+        * @return
+        */
+       private Object getItemLinkData() {
+               return entity.getChildren().isEmpty() ? entity.getTaxon() : entity
+                               .getChildAt(0);
+       }
+
+       private PolytomousKeyNode getParent() {
+               return entity.getParent();
+       }
+
+       private boolean isParentRoot() {
+               return getParent() == null;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm
+        * )
+        */
+       @Override
+       public void initialize(IManagedForm form) {
+               // TODO Auto-generated method stub
+
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.eclipse.ui.forms.IFormPart#isDirty()
+        */
+       @Override
+       public boolean isDirty() {
+               return dirty;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
+        */
+       @Override
+       public void commit(boolean onSave) {
+               // TODO Auto-generated method stub
+
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
+        */
+       @Override
+       public boolean setFormInput(Object input) {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.eclipse.ui.forms.IFormPart#setFocus()
+        */
+       @Override
+       public void setFocus() {
+               // TODO Auto-generated method stub
+
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.eclipse.ui.forms.IFormPart#isStale()
+        */
+       @Override
+       public boolean isStale() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.eclipse.ui.forms.IFormPart#refresh()
+        */
+       @Override
+       public void refresh() {
+               // TODO Auto-generated method stub
+
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see eu.etaxonomy.taxeditor.ui.forms.ISelectable#setSelected(boolean)
+        */
+       @Override
+       public void setSelected(boolean selected) {
+               // TODO Auto-generated method stub
+
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see org.eclipse.ui.forms.IFormPart#dispose()
+        */
+       @Override
+       public void dispose() {
+               // TODO Auto-generated method stub
+
+       }
+
+       /**
+        * @return the entity
+        */
+       public PolytomousKeyNode getEntity() {
+               return entity;
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListLabelProvider.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListLabelProvider.java
new file mode 100644 (file)
index 0000000..df810b2
--- /dev/null
@@ -0,0 +1,120 @@
+// $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 org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.StyledCellLabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.description.KeyStatement;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author n.hoffmann
+ * @created Apr 18, 2011
+ * @version 1.0
+ */
+public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider
+               implements ITableLabelProvider {
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang
+        * .Object, int)
+        */
+       @Override
+       public Image getColumnImage(Object element, int columnIndex) {
+               return null;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
+        * .Object, int)
+        */
+       @Override
+       public String getColumnText(Object element, int columnIndex) {
+               if (element instanceof PolytomousKeyNode) {
+
+                       PolytomousKeyNode node = (PolytomousKeyNode) element;
+
+                       switch (columnIndex) {
+                       case 0:
+                               return getItemNumber(node);
+                       case 1:
+                               return getItemQuestion(node);
+                       case 2:
+                               return getItemStatement(node);
+                       case 3:
+                               return getItemLink(node);
+                       }
+               }
+               return null;
+       }
+
+       private String getItemNumber(PolytomousKeyNode node) {
+               if (isParentRoot(node)) {
+                       return "root";
+               } else {
+                       PolytomousKeyNode parent = getParent(node);
+                       String itemNumber = parent.getNodeNumber() != null ? parent
+                                       .getNodeNumber().toString() : "NaN";
+
+                       int index = parent.getChildren().indexOf(node);
+
+                       for (int i = 0; i < index; i++) {
+                               itemNumber += "'";
+                       }
+
+                       return itemNumber;
+               }
+       }
+
+       private String getItemQuestion(PolytomousKeyNode node) {
+               if (isParentRoot(node)) {
+                       return "";
+               } else {
+                       KeyStatement question = getParent(node).getQuestion();
+                       return question != null ? question.getLabelText(CdmStore
+                                       .getDefaultLanguage()) : "";
+               }
+
+       }
+
+       private String getItemStatement(PolytomousKeyNode node) {
+               KeyStatement statement = node.getStatement();
+               return statement != null ? CdmUtils.Nz(statement.getLabelText(CdmStore
+                               .getDefaultLanguage())) : "No statement";
+       }
+
+       private String getItemLink(PolytomousKeyNode node) {
+               String taxonString = node.getTaxon() != null ? node.getTaxon()
+                               .getName().getTitleCache() : "Taxon empty";
+
+               return node.getChildren().isEmpty() ? taxonString : node
+                               .getNodeNumber().toString();
+       }
+
+       private PolytomousKeyNode getParent(PolytomousKeyNode node) {
+               return node.getParent();
+       }
+
+       private boolean isParentRoot(PolytomousKeyNode node) {
+               return getParent(node) == null;
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListViewer.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListViewer.java
deleted file mode 100644 (file)
index 5d83fe1..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-// $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 org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-
-import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
-
-/**
- * @author n.hoffmann
- * @created Apr 4, 2011
- * @version 1.0
- */
-public class PolytomousKeyListViewer extends Viewer {
-
-       private Object input;
-       private ISelection selection;
-
-       private Control control;
-
-       private final CdmFormFactory formFactory;
-
-       private final ScrolledForm form;
-
-       public PolytomousKeyListViewer(Composite parent) {
-               formFactory = new CdmFormFactory(parent.getDisplay());
-               form = formFactory.createScrolledForm(parent);
-               form.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see org.eclipse.jface.viewers.Viewer#getControl()
-        */
-       @Override
-       public Control getControl() {
-               return control;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see org.eclipse.jface.viewers.Viewer#getInput()
-        */
-       @Override
-       public Object getInput() {
-               return input;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see org.eclipse.jface.viewers.Viewer#getSelection()
-        */
-       @Override
-       public ISelection getSelection() {
-               return selection;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see org.eclipse.jface.viewers.Viewer#refresh()
-        */
-       @Override
-       public void refresh() {
-
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see org.eclipse.jface.viewers.Viewer#setInput(java.lang.Object)
-        */
-       @Override
-       public void setInput(Object input) {
-               this.input = input;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see
-        * org.eclipse.jface.viewers.Viewer#setSelection(org.eclipse.jface.viewers
-        * .ISelection, boolean)
-        */
-       @Override
-       public void setSelection(ISelection selection, boolean reveal) {
-               this.selection = selection;
-       }
-
-}