Description composites now use the NameViewer ruler and are implemented exactly like...
authorp.ciardelli <p.ciardelli@localhost>
Fri, 6 Feb 2009 10:45:26 +0000 (10:45 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Fri, 6 Feb 2009 10:45:26 +0000 (10:45 +0000)
.gitattributes
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorDetailsPage.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupedComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IFavoritesDraggable.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParentDataAdapter.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionElementComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionComposite.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/ConceptComposite.java

index b686d3cda2fc02442482f08822251d66e609983e..dc49456e9c56a060cdc94449a6025da5f398a902 100644 (file)
@@ -451,7 +451,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/datasource/Reg
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditor.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ContextMenu.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorDetailsPage.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EmptyEditorView.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EmptyTextViewerPrompt.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ErrorAnnotation.java -text
@@ -459,10 +458,8 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/FreeTex
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupCompositeLabel.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/GroupedComposite.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IFavoritesDraggable.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IFreeTextElementFactory.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IHasPropertySource.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParentDataAdapter.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineBreakListener.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSupport.java -text
@@ -480,7 +477,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/descrip
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionGroupComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/IDescriptionEditorCompositeRepository.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionEditor.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/AcceptedNameComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/CdmParserController.java -text
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorDetailsPage.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EditorDetailsPage.java
deleted file mode 100644 (file)
index bbb1a1b..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-package eu.etaxonomy.taxeditor.editor;\r
-\r
-import org.eclipse.core.databinding.DataBindingContext;\r
-import org.eclipse.core.databinding.beans.BeansObservables;\r
-import org.eclipse.jface.databinding.swt.SWTObservables;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.KeyListener;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Control;\r
-import org.eclipse.swt.widgets.Text;\r
-import org.eclipse.ui.forms.IDetailsPage;\r
-import org.eclipse.ui.forms.IManagedForm;\r
-import org.eclipse.ui.forms.events.ExpansionAdapter;\r
-import org.eclipse.ui.forms.events.ExpansionEvent;\r
-import org.eclipse.ui.forms.widgets.ColumnLayout;\r
-import org.eclipse.ui.forms.widgets.FormToolkit;\r
-import org.eclipse.ui.forms.widgets.ScrolledForm;\r
-import org.eclipse.ui.forms.widgets.Section;\r
-\r
-/**\r
- * The abstract class for details, i.e. form-based editing.\r
- * \r
- * Implementing classes should add section and input fields in\r
- *  selectionChanged(). Content elements are null before this.\r
- *  \r
- * Sections can be wiped clean to be re-built with disposeSectionContent(section),\r
- *  for instance, when a TaxonName changes its rank and a name consists of different\r
- *  parts. \r
- * \r
- * @author p.ciardelli\r
- *\r
- */\r
-public abstract class EditorDetailsPage implements IDetailsPage {\r
-\r
-       private FormToolkit toolkit;\r
-       private ScrolledForm form;\r
-       private IManagedForm mform;\r
-       private Composite detailsComposite;\r
-       private DataBindingContext bindingContext = new DataBindingContext();\r
-       \r
-       public void createContents(Composite parent) {  \r
-               \r
-               detailsComposite = parent;\r
-               toolkit = mform.getToolkit();\r
-               \r
-               ColumnLayout layout = new ColumnLayout();\r
-               layout.topMargin = 0;\r
-               layout.bottomMargin = 5;\r
-               layout.leftMargin = 10;\r
-               layout.rightMargin = 10;\r
-               layout.horizontalSpacing = 10;\r
-               layout.verticalSpacing = 10;\r
-               layout.maxNumColumns = 4;\r
-               layout.minNumColumns = 1;                               \r
-               parent.setLayout(layout);       \r
-       }\r
-\r
-       protected Section createSection(String title) {\r
-               final Section section = toolkit.createSection(detailsComposite, \r
-                               Section.TWISTIE | Section.TITLE_BAR | Section.EXPANDED);\r
-               section.marginWidth = 10;\r
-               section.setText(title); //$NON-NLS-1$           \r
-               \r
-               createClient(section);\r
-               \r
-               section.addExpansionListener(new ExpansionAdapter() {\r
-                       public void expansionStateChanged(ExpansionEvent e) {\r
-                               form.reflow(false);\r
-                       }\r
-               });\r
-               \r
-               return section;\r
-       }\r
-       \r
-       private void createClient(Section section) {\r
-\r
-               Composite client = toolkit.createComposite(section);\r
-               GridLayout gridlayout = new GridLayout();\r
-               gridlayout.marginWidth = gridlayout.marginHeight = 5;\r
-               gridlayout.numColumns = 2;\r
-               client.setLayout(gridlayout);\r
-               section.setClient(client);\r
-               \r
-               toolkit.paintBordersFor(client);\r
-       }\r
-       \r
-       protected Control createInputField(Section section, String label, \r
-                       Object bindObject, String bindField) {\r
-               \r
-               Composite client = (Composite) section.getClient();\r
-               toolkit.createLabel(client, label); //$NON-NLS-1$\r
-               Text text = toolkit.createText(client, "", SWT.SINGLE );\r
-               text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); //$NON-NLS-1$\r
-               text.setData(FormToolkit.TEXT_BORDER);\r
-               \r
-               text.addKeyListener(new KeyListener() {\r
-\r
-                       public void keyPressed(KeyEvent e) {\r
-                       }\r
-\r
-                       public void keyReleased(KeyEvent e) {\r
-                               showObject();\r
-                       }\r
-                       \r
-               });\r
-               \r
-               if (!(bindObject == null)) {\r
-                       bindingContext.bindValue(\r
-                                       SWTObservables.observeText(text, SWT.Modify),\r
-                                       BeansObservables.observeValue(bindObject, bindField),\r
-                                       null, null);\r
-               }\r
-               return text;\r
-       }\r
-\r
-\r
-       abstract public void showObject();\r
-       \r
-       protected void disposeSectionContent(Section section) {\r
-               section.getClient().dispose();\r
-               createClient(section);\r
-       }\r
-       \r
-       public void initialize(IManagedForm mform) {\r
-               this.mform = mform;\r
-       }\r
-}
\ No newline at end of file
index 2ada6db57d811e01b2337a332b91ae38bafcad87..c42c1cfe4eae6e6da8b599800a97c9809f4d73b7 100644 (file)
@@ -218,8 +218,6 @@ abstract public class GroupedComposite extends Composite implements IHasProperty
                        public void focusLost(FocusEvent e) {\r
                                if (document.getLength() == 0) {\r
                                        initEmptyText();\r
-                               } else {\r
-//                                     managedForm.reflow(true);\r
                                }\r
                        }\r
                        \r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IFavoritesDraggable.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IFavoritesDraggable.java
deleted file mode 100644 (file)
index 96ada13..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package eu.etaxonomy.taxeditor.editor;\r
-\r
-import org.eclipse.swt.graphics.Image;\r
-\r
-public interface IFavoritesDraggable {\r
-       public Image getIcon();\r
-       public String getLabel();\r
-       public Object getObject();\r
-}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParentDataAdapter.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParentDataAdapter.java
deleted file mode 100644 (file)
index 5354bac..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package eu.etaxonomy.taxeditor.editor;\r
-\r
-public interface IParentDataAdapter {\r
-       public void adaptParentData();\r
-}\r
index 853af63847b9ce86ab5b38b0491cafe34329d4f8..ada7e6e08f146cb3f4ac73c590a383533ab1fc15 100644 (file)
@@ -12,19 +12,17 @@ package eu.etaxonomy.taxeditor.editor.description;
 import org.apache.log4j.Logger;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.commands.operations.IUndoableOperation;\r
-import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.resource.ImageDescriptor;\r
-import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.source.SourceViewer;\r
-import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.events.FocusAdapter;\r
 import org.eclipse.swt.events.FocusEvent;\r
+import org.eclipse.swt.graphics.Color;\r
 import org.eclipse.swt.graphics.Font;\r
 import org.eclipse.swt.graphics.Image;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.forms.IManagedForm;\r
 import org.eclipse.ui.forms.widgets.TableWrapData;\r
+import org.eclipse.ui.forms.widgets.TableWrapLayout;\r
 import org.eclipse.ui.views.properties.IPropertySource;\r
 \r
 import eu.etaxonomy.cdm.model.common.Language;\r
@@ -38,6 +36,7 @@ import eu.etaxonomy.taxeditor.editor.ContextMenu;
 import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
 import eu.etaxonomy.taxeditor.editor.LineWrapSupport;\r
 import eu.etaxonomy.taxeditor.editor.ParseListener;\r
+import eu.etaxonomy.taxeditor.editor.name.NameViewer;\r
 import eu.etaxonomy.taxeditor.operations.description.RemoveElementOperation;\r
 import eu.etaxonomy.taxeditor.propertysheet.description.DescriptionElementPropertySource;\r
 \r
@@ -56,11 +55,6 @@ public class DescriptionElementComposite extends GroupedComposite {
        public static final String COMMON_TAXON_NAME = "common_taxon_name";\r
        public static final String DISTRIBUTION = "distribution";\r
 \r
-       /**\r
-        * ************ INDENTATIONS ************\r
-        */\r
-//     public static final int ACCEPTED_INDENT = 0;\r
-\r
        /**\r
         * ************ FONTS ************\r
         */\r
@@ -73,31 +67,12 @@ public class DescriptionElementComposite extends GroupedComposite {
        public static final Image BLACK_SQUARE_ICON = TaxEditorPlugin.getDefault()\r
                        .getImage(ITaxEditorConstants.BLACK_SQUARE_ICON);\r
 \r
-       /**\r
-        * ************ TRANSFORMATIONS ************\r
-        */\r
-//     public static final String ADD_GROUP_BASIONYM = "add_group_basionym";\r
-\r
-       /**\r
-        * ************ MENU ACTIONS ************\r
-        */\r
-       public Action CHANGE_TAXON_TO_SYNONYM_ACTION;\r
-\r
        private DescriptionElementBase element;\r
 \r
        private IUndoContext undoContext;\r
 \r
        private static final String EMPTY_NAME_PROMPT = "Click to add descriptive element text";\r
 \r
-       /**\r
-        * The constructor for a <code>DescriptionElementComposite</code>. Takes a parent \r
-        * <code>Composite</code> on which to create itself, and an <code>IManagedForm</code> for \r
-        * <code>Composite</code> life cycle methods, i.e. drawing borders, creating other \r
-        * <code>Composite</code>s, creating line wrap support, etc.\r
-        * \r
-        * @param parent\r
-        * @param managedForm\r
-        */\r
        public DescriptionElementComposite(Composite parent, IManagedForm managedForm, \r
                        DescriptionElementBase element) {\r
                super(parent, managedForm);\r
@@ -109,52 +84,58 @@ public class DescriptionElementComposite extends GroupedComposite {
                createTextViewer();\r
                createBorderSupport();\r
                createLineWrapSupport();\r
-\r
-               setData(element);\r
-               transform(null);\r
                \r
                createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
                setFocus();\r
+               \r
+               setIsDraggable(false);\r
+               setIcon(BLACK_SQUARE_ICON);\r
+               setFont(getViewerFont());\r
+\r
+               createMenu();\r
+               \r
+               initTextViewer();\r
        }\r
 \r
-       public DescriptionElementBase getElement() {\r
-               return element;\r
+       protected void createContent() {\r
+               // Stolen from NameComposite\r
+               setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+               TableWrapLayout layout = new TableWrapLayout();\r
+               layout.leftMargin = 0;\r
+               layout.topMargin = 0;\r
+               layout.bottomMargin = 0;\r
+               layout.verticalSpacing = 0;\r
+               setLayout(layout);\r
+               \r
+               Color groupBackgroundColor = TaxEditorPlugin.getDefault().\r
+                               getColor(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR);\r
+               setBackground(groupBackgroundColor);\r
        }\r
        \r
-       protected void createLineWrapSupport() {\r
-               new LineWrapSupport(getTextViewer(), managedForm);\r
+       public void setIcon(Image icon) {\r
+               // Adapted from NameComposite\r
+               if (getTextViewer() instanceof NameViewer) {\r
+                       ((NameViewer) getTextViewer()).setIcon(icon);\r
+               }\r
        }\r
-\r
-       /**\r
-        * All cosmetic - non-data-related, i.e. icons, fonts, etc. -\r
-        * transformations take place in this method.\r
-        * \r
-        * @param transformation\r
-        */\r
-       public void transform(String transformation) {\r
-               setIsDraggable(true);\r
-               setFont(ELEMENT_FONT);\r
-               setIcon(BLACK_SQUARE_ICON);\r
+       \r
+       protected ContextMenu createContextMenu() {\r
+               // Adapted from NameComposite\r
                \r
-               createMenu();\r
-\r
-               managedForm.getForm().getBody().layout();\r
-       }\r
-\r
-       /**\r
-        * Override of Composite.setData() which passes data along to\r
-        * DescriptionElementComposite's TextViewer where appropriate.\r
-        * \r
-        * @see org.eclipse.swt.widgets.Widget#setData(java.lang.Object)\r
-        */\r
-       public void setData(Object data) {\r
-               super.setData(data);\r
+               NameViewer nameViewer = (NameViewer) getTextViewer();\r
                \r
-               Assert.isTrue((data instanceof DescriptionElementBase), \r
-                               "DescriptionElementComposite's data field must contain a DescriptionElementBase object");       \r
+               if (nameViewer != null) {\r
+                       ContextMenu contextMenu = new ContextMenu(nameViewer.getRulerControl());\r
+                       nameViewer.getTextWidget().setMenu(contextMenu.getMenu());\r
+                       return contextMenu;\r
+               } else {\r
+                       logger.warn("Can't create menu because nameViewer has not been initalized.");\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       private void initTextViewer() {\r
                \r
-               DescriptionElementBase element = (DescriptionElementBase) data;\r
-\r
                String text = null;\r
                if (element instanceof TextData) {\r
                        text = ((TextData) element).getText(Language.DEFAULT());\r
@@ -166,21 +147,25 @@ public class DescriptionElementComposite extends GroupedComposite {
                getTextViewer().getTextWidget().setText(text);\r
        }\r
 \r
+       public DescriptionElementBase getElement() {\r
+               return element;\r
+       }\r
+       \r
+       protected void createLineWrapSupport() {\r
+               new LineWrapSupport(getTextViewer(), managedForm);\r
+       }\r
+\r
+\r
+\r
        private void createTextViewer() {\r
-               this.textViewer = new SourceViewer(this, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
-               this.textViewer.setDocument(new Document(""));\r
-               this.textViewer.getTextWidget().setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+               this.textViewer = new NameViewer(this);\r
                this.textViewer.getTextWidget().addModifyListener(new ParseListener() {\r
 \r
                        @Override\r
                        public void parse(String text) {\r
-                               Assert.isTrue((getData() instanceof DescriptionElementBase), \r
-                                               "DescriptionElementComposite's data field must contain a DescriptionElementBase object");\r
-                               \r
-                               DescriptionElementBase element = (DescriptionElementBase) getData();\r
                                \r
-                               if (element instanceof TextData) {\r
-                                       ((TextData) element).putText(text, Language.DEFAULT());\r
+                               if (getElement() instanceof TextData) {\r
+                                       ((TextData) getElement()).putText(text, Language.DEFAULT());\r
                                }\r
                                \r
                                setDirty(true);\r
@@ -194,7 +179,7 @@ public class DescriptionElementComposite extends GroupedComposite {
        }\r
 \r
        private void createMenu() {\r
-               ContextMenu contextMenu = new ContextMenu(getDraggableLabel());\r
+               ContextMenu contextMenu = createContextMenu();\r
                \r
                // Delete this description element\r
                String text = "Delete description element";\r
@@ -210,39 +195,14 @@ public class DescriptionElementComposite extends GroupedComposite {
                        }\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 DescriptionFeatureGroupComposite)) {\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
 \r
        @Override\r
        public IPropertySource getPropertySource() {\r
-               return new DescriptionElementPropertySource((DescriptionElementBase) getData());\r
+               return new DescriptionElementPropertySource(getElement());\r
        }\r
 \r
        @Override\r
        protected Font getViewerFont() {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
+               return ELEMENT_FONT;\r
        }\r
 }
\ No newline at end of file
index d4061dfda7e5cebae45bed272469a436ba6040f3..090572f0a6836a244dd0446389fe8f0e924ccb75 100644 (file)
@@ -12,21 +12,16 @@ package eu.etaxonomy.taxeditor.editor.description;
 import org.apache.log4j.Logger;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.commands.operations.IUndoableOperation;\r
-import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.action.IMenuListener;\r
 import org.eclipse.jface.action.IMenuManager;\r
 import org.eclipse.jface.action.MenuManager;\r
-import org.eclipse.jface.text.Document;\r
-import org.eclipse.jface.text.source.SourceViewer;\r
-import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.events.FocusAdapter;\r
 import org.eclipse.swt.events.FocusEvent;\r
 import org.eclipse.swt.graphics.Font;\r
 import org.eclipse.swt.graphics.Image;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.forms.IManagedForm;\r
-import org.eclipse.ui.forms.widgets.TableWrapData;\r
 import org.eclipse.ui.views.properties.IPropertySource;\r
 \r
 import eu.etaxonomy.cdm.model.description.Feature;\r
@@ -38,6 +33,7 @@ import eu.etaxonomy.taxeditor.controller.GlobalController;
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.editor.GroupedComposite;\r
 import eu.etaxonomy.taxeditor.editor.ParseListener;\r
+import eu.etaxonomy.taxeditor.editor.name.NameViewer;\r
 import eu.etaxonomy.taxeditor.operations.description.AddElementOperation;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.propertysheet.description.TaxonDescriptionPropertySource;\r
@@ -78,37 +74,51 @@ public class DescriptionLabelComposite extends GroupedComposite {
                \r
                this.undoContext = EditorController.getUndoContext(taxon);\r
                \r
-               createLabelViewer();\r
+               createTextViewer();\r
                createBorderSupport();\r
                createLineWrapSupport();\r
 \r
-               setData(description);\r
-               transform(null);\r
-\r
                createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
                setFocus();\r
+               \r
+               setIsDraggable(false);\r
+               setFont(DESCRIPTION_LABEL_FONT);\r
+               setIcon(DESCRIPTION_LABEL_ICON);\r
+               \r
+               createMenu();\r
+               \r
+               initTextViewer();\r
+       }\r
+\r
+       private void initTextViewer() {\r
+               String text = getDescription().getTitleCache();\r
+               getTextViewer().getTextWidget().setText(text);\r
        }\r
 \r
        public TaxonDescription getDescription() {\r
                return description;\r
        }\r
-       \r
-       public void transform(String transformation) {\r
-               setIsDraggable(false);\r
-               setFont(DESCRIPTION_LABEL_FONT);\r
-               setIcon(DESCRIPTION_LABEL_ICON);\r
                \r
-               createMenu();\r
-       }       \r
+       public void setIcon(Image icon) {\r
+               // Adapted from NameComposite\r
+               if (getTextViewer() instanceof NameViewer) {\r
+                       ((NameViewer) getTextViewer()).setIcon(icon);\r
+               }\r
+       }\r
        \r
-       public void setData(Object data) {\r
-               super.setData(data);\r
+       protected ContextMenu createContextMenu() {\r
+               // Adapted from NameComposite\r
                \r
-               Assert.isTrue((data instanceof TaxonDescription), \r
-                               "DescriptionLabelComposite's data field must contain a TaxonDescription object");\r
+               NameViewer nameViewer = (NameViewer) getTextViewer();\r
                \r
-               String label = ((TaxonDescription) data).getTitleCache();\r
-               getTextViewer().getTextWidget().setText(label);\r
+               if (nameViewer != null) {\r
+                       ContextMenu contextMenu = new ContextMenu(nameViewer.getRulerControl());\r
+                       nameViewer.getTextWidget().setMenu(contextMenu.getMenu());\r
+                       return contextMenu;\r
+               } else {\r
+                       logger.warn("Can't create menu because nameViewer has not been initalized.");\r
+                       return null;\r
+               }\r
        }\r
        \r
        private void createMenu() {\r
@@ -140,18 +150,13 @@ public class DescriptionLabelComposite extends GroupedComposite {
                contextMenu.addSubmenu(featuresMenu);\r
        }\r
 \r
-       private void createLabelViewer() {              \r
-               this.textViewer = new SourceViewer(this, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
-               this.textViewer.setDocument(new Document(""));\r
-               this.textViewer.getTextWidget().setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+       private void createTextViewer() {\r
+               this.textViewer = new NameViewer(this);\r
                this.textViewer.getTextWidget().addModifyListener(new ParseListener() {\r
 \r
                        @Override\r
                        public void parse(String text) {\r
-                               Assert.isTrue((getData() instanceof TaxonDescription), \r
-                                               "DescriptionLabelComposite's data field must contain a TaxonDescription object");\r
-                               \r
-                               ((TaxonDescription) getData()).setTitleCache(text);\r
+                               getDescription().setTitleCache(text);\r
                                setDirty(true);\r
                        }\r
                        \r
@@ -165,7 +170,7 @@ public class DescriptionLabelComposite extends GroupedComposite {
 \r
        @Override\r
        public IPropertySource getPropertySource() {\r
-               return new TaxonDescriptionPropertySource((TaxonDescription) getData());\r
+               return new TaxonDescriptionPropertySource(getDescription());\r
        }\r
 \r
        @Override\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionComposite.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionComposite.java
deleted file mode 100644 (file)
index 9540440..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.taxeditor.editor.description;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.widgets.Composite;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 08.09.2008\r
- * @version 1.0\r
- */\r
-public class TaxonDescriptionComposite extends Composite {\r
-       private static final Logger logger = Logger\r
-                       .getLogger(TaxonDescriptionComposite.class);\r
-\r
-       TaxonDescriptionComposite(Composite parent) {\r
-               super(parent, SWT.NONE);\r
-\r
-               // TODO take all formatting info out of GroupComposite,\r
-               //      EditorGroupComposite, merge this class with one of those\r
-               \r
-               \r
-       }\r
-\r
-}
\ No newline at end of file
index 2b2afda707b4aee9fe07531ec093db205cfe313f..8290390a4280994bb734ac72aac1de5821d8e565 100644 (file)
 package eu.etaxonomy.taxeditor.editor.name;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.eclipse.core.commands.operations.IUndoContext;\r
-import org.eclipse.core.commands.operations.IUndoableOperation;\r
-import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.action.MenuManager;\r
-import org.eclipse.jface.resource.ImageDescriptor;\r
 import org.eclipse.swt.graphics.Font;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.forms.IManagedForm;\r
@@ -24,17 +20,10 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
 import eu.etaxonomy.taxeditor.actions.name.ChangeConceptRelationAction;\r
-import eu.etaxonomy.taxeditor.actions.name.CreateConceptRelationAction;\r
 import eu.etaxonomy.taxeditor.actions.name.RemoveConceptAction;\r
-import eu.etaxonomy.taxeditor.controller.EditorController;\r
-import eu.etaxonomy.taxeditor.controller.GlobalController;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
-import eu.etaxonomy.taxeditor.operations.name.RemoveConceptRelationOperation;\r
-import eu.etaxonomy.taxeditor.operations.name.RemoveMisappliedNameOperation;\r
 import eu.etaxonomy.taxeditor.propertysheet.name.TaxonBasePropertySource;\r
 \r
 /**\r
@@ -144,6 +133,11 @@ public class ConceptComposite extends NameComposite {
                return relatedTaxon.getName();\r
        }\r
        \r
+       protected void calculateErrors() {\r
+               super.calculateErrors();\r
+               \r
+               nameViewer.setShowSecError(relatedTaxon);\r
+       }\r
 }\r
 \r
 \r