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
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
\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