merged fixes from branch
authorn.hoffmann <n.hoffmann@localhost>
Thu, 19 Aug 2010 11:17:59 +0000 (11:17 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 19 Aug 2010 11:17:59 +0000 (11:17 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/AbstractGroupedContainer.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/ConceptContainer.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/MisapplicationContainer.java

index c03c99baf5d8e4f9c2a04d553964acb2be3b4a30..fae4b35765943eaf07a8bcafb414bae86c4e4c91 100644 (file)
@@ -160,7 +160,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        \r
        protected TaxonNameEditor editor;\r
        \r
-       protected NameViewer textViewer;\r
+       protected NameViewer nameViewer;\r
        \r
        private AbstractGroup<T> group;\r
        \r
@@ -184,7 +184,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                this.group = group;     \r
                group.add(this);\r
                \r
-               setData( (T) HibernateProxyHelper.deproxy(taxonBase));\r
+               setData(taxonBase);\r
                \r
                createControl();\r
                \r
@@ -194,11 +194,11 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
 \r
                setMenu(editor.getMenu());\r
                \r
-               setDraggableControl(textViewer.getRulerControl());\r
+               setDraggableControl(new Control[]{getControl(), getNameViewer().getRulerControl()});\r
                \r
                createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
                \r
-               parseHandler = ParseHandler.NewInstance(textViewer.getTextWidget(), taxonBase.getName());\r
+               parseHandler = ParseHandler.NewInstance(getNameViewer().getTextWidget(), taxonBase.getName());\r
                \r
                initializeComposite();\r
                \r
@@ -247,13 +247,13 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        }\r
        \r
        private void addListener(){\r
-               textViewer.getTextWidget().addModifyListener(nameCompositeModifyListener);\r
-               textViewer.getTextWidget().addFocusListener(nameCompositeFocusListener);\r
+               getNameViewer().getTextWidget().addModifyListener(nameCompositeModifyListener);\r
+               getNameViewer().getTextWidget().addFocusListener(nameCompositeFocusListener);\r
        }\r
        \r
        private void removeListener(){\r
-               textViewer.getTextWidget().removeModifyListener(nameCompositeModifyListener);\r
-               textViewer.getTextWidget().removeFocusListener(nameCompositeFocusListener);\r
+               getNameViewer().getTextWidget().removeModifyListener(nameCompositeModifyListener);\r
+               getNameViewer().getTextWidget().removeFocusListener(nameCompositeFocusListener);\r
        }\r
                \r
        /**\r
@@ -309,15 +309,15 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                if (text.length() == 0) {\r
                        initEmptyText();\r
                } else {\r
-                       textViewer.setText(text);\r
+                       getNameViewer().setText(text);\r
                        placeCursor();\r
                }\r
                calculateErrors();\r
        }\r
        \r
        synchronized protected void calculateErrors() {\r
-               textViewer.clearErrors();\r
-               textViewer.setShowParsingErrors(getName());\r
+               getNameViewer().clearErrors();\r
+               getNameViewer().setShowParsingErrors(getName());\r
        }\r
 \r
        protected void handleSplitText(String text) {\r
@@ -344,7 +344,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                        initEmptyText();\r
                } else {\r
                        removeListener();\r
-                       textViewer.getTextWidget().setText(text);\r
+                       getNameViewer().getTextWidget().setText(text);\r
                        addListener();\r
                }\r
                \r
@@ -365,16 +365,16 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                if (freetextEditingAllowed()) {\r
                        \r
                        // set editable\r
-                       textViewer.getTextWidget().setEditable(true);\r
+                       getNameViewer().getTextWidget().setEditable(true);\r
                        \r
                        // restore foreground font color again\r
-                       textViewer.getTextWidget().setForeground(control.getForeground());\r
+                       getNameViewer().getTextWidget().setForeground(control.getForeground());\r
                } else {\r
                        // set non-editable\r
-                       textViewer.getTextWidget().setEditable(false);\r
+                       getNameViewer().getTextWidget().setEditable(false);\r
                        \r
                        // grey out text as a non-editable indicator\r
-                       textViewer.getTextWidget().setForeground(not_editable_color);\r
+                       getNameViewer().getTextWidget().setForeground(not_editable_color);\r
                }\r
        }\r
 \r
@@ -517,7 +517,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
 \r
        public void persistName(){\r
                if(isDirty()){\r
-                       logger.warn("Found dirty composite: " + this + ". Name: " + textViewer.getTextWidget().getText());\r
+                       logger.warn("Found dirty composite: " + this + ". Name: " + getNameViewer().getTextWidget().getText());\r
                        getTaxonBase().setName(parseHandler.parseAndResolveDuplicates());\r
                        \r
                        getTaxonBase().setTitleCache((getTaxonBase().generateTitle()));\r
@@ -548,7 +548,6 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                \r
                control.setLayout(layout);\r
                \r
-               setBackground(EditorUtil.getColor(Resources.COLOR_COMPOSITE_BACKGROUND));\r
        }\r
        \r
        public Composite getControl(){\r
@@ -556,16 +555,12 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        }\r
        \r
        protected void createLineWrapSupport() {\r
-               if (textViewer instanceof NameViewer) {\r
-                       new LineWrapSupport(textViewer, editor.getManagedForm());\r
-               } else {\r
-                       logger.warn("Can't create line wrap support because textViewer has not been initialized.");\r
-               }\r
+               new LineWrapSupport(getNameViewer(), editor.getManagedForm());\r
        }\r
        \r
        \r
        protected void createTextViewer() {\r
-               textViewer = new NameViewer(control);\r
+               nameViewer = new NameViewer(control);\r
                \r
                focusListener = new FocusAdapter() {\r
                        public void focusGained(FocusEvent e) {\r
@@ -573,43 +568,28 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                                        container.colorSelected(NOT_SELECTED);\r
                                }\r
                                editor.getManagedForm().setInput(AbstractGroupedContainer.this);\r
-//                             setSelected();\r
                                placeCursor();\r
                                colorSelected(SELECTED_FOCUS);\r
-                               logger.warn("TextViewer gained focus: " + AbstractGroupedContainer.this);\r
                        }\r
-                       public void focusLost(FocusEvent e) {\r
-//                             colorSelected(NOT_SELECTED);\r
-                               logger.warn("TextViewer lost focus: " + AbstractGroupedContainer.this);\r
-                               logger.warn("------------");\r
-                       };\r
                };\r
-               textViewer.getTextWidget().addFocusListener(focusListener);\r
+               nameViewer.getTextWidget().addFocusListener(focusListener);\r
                \r
 //             \r
                MouseAdapter mouseListener = new MouseAdapter() {\r
                        public void mouseDown(MouseEvent e) {\r
                                storeCursor();\r
-//                             setFocus();             \r
-                               \r
-//                             logger.warn("mouseDown");\r
-//                             logger.warn(textViewer.getCursorPosition());\r
                        }\r
                };\r
                control.addMouseListener(mouseListener);\r
-               textViewer.getRulerControl().addMouseListener(mouseListener);\r
-               textViewer.getTextWidget().addMouseListener(mouseListener);\r
+               nameViewer.getRulerControl().addMouseListener(mouseListener);\r
+               nameViewer.getTextWidget().addMouseListener(mouseListener);\r
        }\r
        \r
        /**\r
         * @param icon\r
         */\r
        public void setIcon(Image icon) {\r
-               if (textViewer instanceof NameViewer) {\r
-                       textViewer.setIcon(icon);\r
-               } else {\r
-                       logger.warn("Can't set icon because textViewer has not been initialized.");\r
-               }\r
+               getNameViewer().setIcon(icon);\r
        }\r
        \r
        /**\r
@@ -631,7 +611,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         * @return\r
         */\r
        public void setSelected() {\r
-               textViewer.getTextWidget().setFocus();\r
+               getNameViewer().getTextWidget().setFocus();\r
        }\r
        \r
        public boolean isSelected(){\r
@@ -691,24 +671,21 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                        child.setBackground(color);\r
                }\r
                \r
-               if(textViewer != null){\r
-                       textViewer.setBackground(color);\r
-               }\r
+               getNameViewer().setBackground(color);\r
        }\r
 \r
        /* (non-Javadoc)\r
         * @see org.eclipse.swt.widgets.Control#setFont(org.eclipse.swt.graphics.Font)\r
         */\r
        public void setFont(Font font) {\r
-               if (textViewer != null) {\r
-                       textViewer.getTextWidget().setFont(font);\r
-               } else {\r
-                       logger.warn("Can't set font because textViewer has not been initalized.");\r
-               }\r
+               getNameViewer().getTextWidget().setFont(font);\r
        }\r
        \r
-       public TextViewer getTextViewer() {\r
-               return textViewer;\r
+       public NameViewer getNameViewer() {\r
+               if (nameViewer == null){\r
+                       throw new RuntimeException("The Name Viewer is corrupt for Name Container: " + getTaxonBase().getName().getTitleCache());\r
+               }\r
+               return nameViewer;\r
        }\r
        \r
        /**\r
@@ -720,10 +697,10 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         */\r
        public void createEmptyViewerPrompt(final String prompt) {\r
                \r
-               Assert.isNotNull(textViewer);\r
+               Assert.isNotNull(getNameViewer());\r
                 \r
-               final StyledText textControl = textViewer.getTextWidget();\r
-               final IDocument document = textViewer.getDocument();\r
+               final StyledText textControl = getNameViewer().getTextWidget();\r
+               final IDocument document = getNameViewer().getDocument();\r
                \r
                setFocusListener(new FocusListener() {\r
 \r
@@ -755,9 +732,9 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
 \r
        protected void initEmptyText() {\r
                Font defaultFont = EditorUtil.getFont(Resources.FONT_DEFAULT_PROMPT);\r
-               textViewer.getTextWidget().setFont(defaultFont);\r
+               getNameViewer().getTextWidget().setFont(defaultFont);\r
                \r
-               textViewer.getDocument().set(getEmptyTextPrompt());\r
+               getNameViewer().getDocument().set(getEmptyTextPrompt());\r
                placeCursor();\r
        }\r
 \r
@@ -783,47 +760,35 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        public void setMenu (Menu menu) {\r
                control.setMenu(menu);\r
                \r
-               if (textViewer != null) {\r
-                       textViewer.setMenu(menu);\r
-               }\r
+               getNameViewer().setMenu(menu);\r
        }\r
        \r
-       private Control draggableControl;\r
-       private DragSource dragSource;\r
+       private Control[] draggableControls;\r
        \r
-       protected void setDraggableControl(Control control) {\r
-               draggableControl = control;\r
-       }\r
-\r
-       public DragSource getDragSource() {\r
-               return dragSource;\r
+       protected void setDraggableControl(Control[] controls) {\r
+               draggableControls = controls;\r
        }\r
        \r
        public void setIsDraggable(boolean draggable) {\r
 \r
                if (draggable) {\r
 \r
-                       if (dragSource != null) {\r
-                               // Already initialized\r
-                               return;\r
-                       }\r
-\r
-                       if (draggableControl == null) {\r
+                       if (draggableControls == null) {\r
                                throw new NullPointerException(\r
-                                               "Draggable control must be set to add draggability");\r
+                                               "Draggable controls must be set to add draggability");\r
                        }\r
                        \r
                        Transfer[] types = new Transfer[] { CdmDataTransfer.getInstance() };                    \r
                        int operations = DND.DROP_MOVE;\r
 \r
-                       dragSource = new DragSource(draggableControl, operations);\r
-                       dragSource.setTransfer(types);\r
-                       \r
-                       dragSource.addDragListener(new NameEditorDragListener(this));\r
-                       dragSource.setDragSourceEffect(new NameEditorDragSourceEffect(control));\r
-               } else {\r
-                       dragSource = null;\r
-               }\r
+                       for(Control draggableControl : draggableControls){\r
+                               DragSource dragSource = new DragSource(draggableControl, operations);\r
+                               dragSource.setTransfer(types);\r
+                               \r
+                               dragSource.addDragListener(new NameEditorDragListener(this));\r
+                               dragSource.setDragSourceEffect(new NameEditorDragSourceEffect(control));\r
+                       }\r
+               } \r
        }\r
 \r
        private String nonEditableText;\r
@@ -875,7 +840,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                        nonEditableInfoLabel = editor.getToolkit().createLabel(control, "");\r
                        TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP);\r
                        // Set indent to viewer ruler's width \r
-                       if (textViewer != null && textViewer.getRulerControl() != null) {\r
+                       if (getNameViewer().getRulerControl() != null) {\r
                                // TODO right justify\r
                                layoutData.indent = NameViewer.RULER_WIDTH;\r
                        }\r
@@ -904,7 +869,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        }\r
        \r
        public void setData(T data){\r
-               this.data = data;\r
+               this.data =  (T) HibernateProxyHelper.deproxy(data);\r
        }\r
 \r
        /**\r
@@ -913,19 +878,15 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         * the method handleSplitText().\r
         */\r
        protected void createLineBreakListener() {\r
-               if (textViewer != null) {\r
-                       lineBreakListener = new LineBreakListener() {\r
-                               @Override\r
-                               public void handleSplitText(String text) {\r
-                                       AbstractGroupedContainer.this.handleSplitText(text);    \r
-                               }\r
-                       };\r
-                       \r
-                       textViewer.getTextWidget().addVerifyListener(lineBreakListener);\r
-                       textViewer.getTextWidget().addKeyListener(lineBreakListener);\r
-               } else {\r
-                       logger.warn("Can't create line break listener because textViewer has not been initalized.");\r
-               }\r
+               lineBreakListener = new LineBreakListener() {\r
+                       @Override\r
+                       public void handleSplitText(String text) {\r
+                               AbstractGroupedContainer.this.handleSplitText(text);    \r
+                       }\r
+               };\r
+               \r
+               getNameViewer().getTextWidget().addVerifyListener(lineBreakListener);\r
+               getNameViewer().getTextWidget().addKeyListener(lineBreakListener);\r
        }\r
                \r
        abstract class LabelEllipsisListener extends ControlAdapter {\r
@@ -951,7 +912,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        }\r
 \r
        public void storeCursor() {\r
-               this.cursorPosition = textViewer.getCursorPosition();\r
+               this.cursorPosition = getNameViewer().getCursorPosition();\r
        }\r
        \r
        /**\r
@@ -960,9 +921,9 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         */\r
        public void placeCursor(){\r
                if(cursorPosition == 0){\r
-                       textViewer.setCursorToEOL();\r
+                       getNameViewer().setCursorToEOL();\r
                }else{\r
-                       textViewer.setCursorPosition(cursorPosition);\r
+                       getNameViewer().setCursorPosition(cursorPosition);\r
                }\r
        }\r
 \r
index 60c29b6599b0d750f8627d58ef677f8bf2ac33f4..a9d6dcc58da2882bc9c8bc4fdad5a6ddeed320d9 100644 (file)
@@ -99,7 +99,7 @@ public class ConceptContainer extends AbstractGroupedContainer<Taxon> {
        protected void calculateErrors() {\r
                super.calculateErrors();\r
                \r
-               textViewer.setShowSecError(getTaxonBase());\r
+               nameViewer.setShowSecError(getTaxonBase());\r
        }\r
        \r
        @Override\r
index 843a48df8a467620b55b66d2693976665f7aea8d..3b8b4b8e5854ec6f950eda8b27e58d6bd4436550 100644 (file)
@@ -67,7 +67,7 @@ public class MisapplicationContainer extends AbstractGroupedContainer<Taxon> {
        protected void calculateErrors() {\r
                super.calculateErrors();\r
                \r
-               textViewer.setShowSecError(getMisappliedName());\r
+               nameViewer.setShowSecError(getMisappliedName());\r
        }\r
        \r
 \r