At long last, a solution to bug #525 annotation ruler disabling line wrap. See ticket...
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor / src / eu / etaxonomy / taxeditor / editor / EditorGroupComposite.java
index 1839e216f249eb15b53751e58ea09ef1cac4a911..92a117d6e5ed4c60105542356fa00bdcf2a60d91 100644 (file)
 package eu.etaxonomy.taxeditor.editor;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.forms.IManagedForm;\r
 \r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
 /** \r
- * Formats EditorGroupComposite with cosmetic and layout properties specific to the\r
+ * Formats <code>GroupComposite</code> with cosmetic and layout properties specific to the\r
  * Editor. This should be used to maintain a consistent look and feel for all Editor \r
- * freetext area group components, such as HomotypicalGroup.\r
+ * freetext area group components, such as <code>HomotypicalGroup</code>.\r
+ * <p>\r
+ * Its <code>IManagedForm</code> is required to have a <code>Taxon</code> in its \r
+ * own <code>getData()</code>.\r
+ * </p> \r
  * \r
  * @author p.ciardelli\r
  * @created 02.06.2008\r
@@ -25,7 +32,10 @@ import org.eclipse.ui.forms.IManagedForm;
 public class EditorGroupComposite extends GroupComposite {\r
        private static final Logger logger = Logger.getLogger(EditorGroupComposite.class);\r
        \r
-       IManagedForm managedForm;\r
+       private IManagedForm managedForm;\r
+       private Taxon taxon;\r
+\r
+       private CompositeBorderDecorator borderSupport;\r
        \r
        public EditorGroupComposite(Composite parent, IManagedForm managedForm, Object data) {\r
                this(parent, managedForm);\r
@@ -38,14 +48,31 @@ public class EditorGroupComposite extends GroupComposite {
 \r
                this.managedForm = managedForm;\r
                \r
+               Object formData = managedForm.getForm().getBody().getData();\r
+               Assert.isTrue(formData instanceof Taxon, \r
+                               "Managed form must have a Taxon in its data field.");\r
+               taxon = (Taxon) formData;\r
+               \r
                createBorderSupport();\r
        }\r
 \r
        private void createBorderSupport() {\r
-               new CompositeBorderDecorator(this, managedForm);\r
+               borderSupport = new CompositeBorderDecorator(this, managedForm);\r
+               addFocusListener(borderSupport);\r
        }\r
        \r
        public IManagedForm getManagedForm() {\r
                return managedForm;\r
        }\r
+       \r
+       public Taxon getTaxon() {\r
+               return taxon;\r
+       }\r
+       \r
+       public void dispose() {\r
+               \r
+               removeFocusListener(borderSupport);\r
+               \r
+               super.dispose();\r
+       }\r
 }
\ No newline at end of file