- implemented/adapted MVC pattern for TextWithLabelElement and EnumTermCombo element
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityCompositeViewer.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityRow.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityTableHeader.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/AbstractCdmComposite.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/DerivedUnitGeneralDetailElementMVC.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/GeographicPointElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermComboController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/interfaces/CdmCompositeController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/interfaces/ICdmComposite.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/IOpenUrlEnabled.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlContentProvider.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlLabelProvider.java -text
* {@link eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement}
* object.
*/
- public void adapt(AbstractCdmFormElement formElement) {
+ public void adapt(ICdmFormElement formElement) {
formElement.setPropertyChangeListeners(propertyChangeListeners);
}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.ui.mvc;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.mvc.interfaces.ICdmComposite;
+import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
+
+/**
+ * @author pplitzner
+ * @date 11.02.2014
+ *
+ */
+public abstract class AbstractCdmComposite extends Composite implements ICdmComposite {
+
+ protected CdmCompositeController controller;
+
+ /**
+ * @param parent
+ * @param style
+ */
+ public AbstractCdmComposite(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ protected void initChildController(CdmFormFactory formFactory, ICdmFormElement parentElement){
+ Control[] children = this.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ if(children[i] instanceof ICdmComposite){
+ ICdmComposite cdmComposite = (ICdmComposite)children[i];
+ cdmComposite.initController(formFactory, parentElement);
+ formFactory.adapt(cdmComposite.getController());
+ parentElement.addElement(cdmComposite.getController());
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmComposite#initController(eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
+ */
+ @Override
+ public void initController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
+ initInternalController(formFactory, parentElement);
+ initChildController(formFactory, parentElement);
+ }
+
+ /**
+ * @param formFactory
+ * @param parentElement
+ * @return
+ */
+ protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement);
+
+ @Override
+ public CdmCompositeController getController(){
+ return controller;
+ }
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.ui.mvc;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.mvc.combo.EnumTermCombo;
+import eu.etaxonomy.taxeditor.ui.mvc.element.TextWithLabelElement;
+
+/**
+ * @author pplitzner
+ * @date 14.04.2014
+ *
+ */
+public class DerivedUnitGeneralDetailElementMVC extends AbstractCdmComposite {
+
+ private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+ private final TextWithLabelElement textWithLabelElement;
+ private final EnumTermCombo enumTermCombo;
+
+ /**
+ * Create the composite.
+ * @param parent
+ * @param style
+ */
+ public DerivedUnitGeneralDetailElementMVC(Composite parent, int style) {
+ super(parent, style);
+ addDisposeListener(new DisposeListener() {
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ toolkit.dispose();
+ }
+ });
+ toolkit.adapt(this);
+ toolkit.paintBordersFor(this);
+ {
+ TableWrapLayout tableWrapLayout = new TableWrapLayout();
+ tableWrapLayout.numColumns = 2;
+ setLayout(tableWrapLayout);
+ }
+
+ Label lblTitleCache = toolkit.createLabel(this, "Title Cache", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblSpecorobstype = toolkit.createLabel(this, "Spec./Obs. Type", SWT.NONE);
+
+ enumTermCombo = new EnumTermCombo(this, SWT.NONE, SpecimenOrObservationType.class);
+ TableWrapData twd_enumTermCombo = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+ twd_enumTermCombo.grabHorizontal = true;
+ enumTermCombo.setLayoutData(twd_enumTermCombo);
+ toolkit.adapt(enumTermCombo);
+ toolkit.paintBordersFor(enumTermCombo);
+
+ Label lblCountry = toolkit.createLabel(this, "Country", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblLocality = toolkit.createLabel(this, "Locality", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ GeographicPointElement geographicPointElement = new GeographicPointElement(this, SWT.NONE);
+ geographicPointElement.setLayoutData(new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 2));
+ toolkit.adapt(geographicPointElement);
+ toolkit.paintBordersFor(geographicPointElement);
+
+ Label lblElevation = toolkit.createLabel(this, "Elevation", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblDate = toolkit.createLabel(this, "Date", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblCollector = toolkit.createLabel(this, "Collector", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblCollectingNumber = toolkit.createLabel(this, "Collecting Number", SWT.NONE);
+
+ TextWithLabelElement textWithLabelElement_1 = new TextWithLabelElement(this, (String) null, (Integer) null, 0);
+ toolkit.adapt(textWithLabelElement_1);
+ toolkit.paintBordersFor(textWithLabelElement_1);
+
+ Label lblCollection = toolkit.createLabel(this, "Collection", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblAccessionNumber = toolkit.createLabel(this, "Accession Number", SWT.NONE);
+
+ textWithLabelElement = new TextWithLabelElement(this, (String) null, (Integer) null, 0);
+ TableWrapLayout tableWrapLayout = (TableWrapLayout) textWithLabelElement.getLayout();
+ tableWrapLayout.verticalSpacing = 0;
+ tableWrapLayout.topMargin = 0;
+ tableWrapLayout.horizontalSpacing = 0;
+ tableWrapLayout.bottomMargin = 0;
+ TableWrapData twd_textWithLabelElement = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+ twd_textWithLabelElement.align = TableWrapData.FILL;
+ twd_textWithLabelElement.grabHorizontal = true;
+ textWithLabelElement.setLayoutData(twd_textWithLabelElement);
+ toolkit.adapt(textWithLabelElement);
+ toolkit.paintBordersFor(textWithLabelElement);
+
+ }
+
+ public TextWithLabelElement getTextWithLabelElement() {
+ return textWithLabelElement;
+ }
+ public EnumTermCombo getEnumTermCombo() {
+ return enumTermCombo;
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmComposite#initController(java.lang.Object, eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
+ */
+ @Override
+ public void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
+ // empty on purpose
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.ui.mvc;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.mvc.element.TextWithLabelElement;
+
+/**
+ * @author pplitzner
+ * @date 15.04.2014
+ *
+ */
+public class GeographicPointElement extends AbstractCdmComposite {
+
+ private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+
+ /**
+ * Create the composite.
+ * @param parent
+ * @param style
+ */
+ public GeographicPointElement(Composite parent, int style) {
+ super(parent, style);
+ addDisposeListener(new DisposeListener() {
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ toolkit.dispose();
+ }
+ });
+ toolkit.adapt(this);
+ toolkit.paintBordersFor(this);
+ {
+ TableWrapLayout tableWrapLayout = new TableWrapLayout();
+ tableWrapLayout.verticalSpacing = 0;
+ tableWrapLayout.topMargin = 0;
+ tableWrapLayout.rightMargin = 0;
+ tableWrapLayout.leftMargin = 0;
+ tableWrapLayout.bottomMargin = 0;
+ tableWrapLayout.horizontalSpacing = 0;
+ tableWrapLayout.numColumns = 2;
+ setLayout(tableWrapLayout);
+ }
+
+ Label lblLatitude = toolkit.createLabel(this, "Latitude", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblLongitude = toolkit.createLabel(this, "Longitude", SWT.NONE);
+ new Label(this, SWT.NONE);
+
+ Label lblErrorRadius = toolkit.createLabel(this, "Error Radius", SWT.NONE);
+
+ TextWithLabelElement textWithLabelElement = new TextWithLabelElement(this, (String) null, (Integer) null, 0);
+ TableWrapData twd_textWithLabelElement = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+ twd_textWithLabelElement.grabHorizontal = true;
+ textWithLabelElement.setLayoutData(twd_textWithLabelElement);
+ toolkit.adapt(textWithLabelElement);
+ toolkit.paintBordersFor(textWithLabelElement);
+
+ Label lblReferenceSystem = toolkit.createLabel(this, "Reference System", SWT.NONE);
+
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite#initInternalController(eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
+ */
+ @Override
+ protected void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
+
+ }
+
+}
import eu.etaxonomy.cdm.model.common.IEnumTerm;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
/**
* @author pplitzner
* @date 29.01.2014
*
*/
-public class EnumTermCombo extends Combo{
+public class EnumTermCombo extends AbstractCdmComposite {
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
private final Combo combo;
-// private final Label label;
+
+ private final Class<? extends IEnumTerm<?>> enumType;
/**
* Create the composite.
* @param parent
* @param style
*/
- public EnumTermCombo(Composite parent, int style) {
+ public EnumTermCombo(Composite parent, int style, Class<? extends IEnumTerm<?>> enumType) {
super(parent, style);
+ this.enumType = enumType;
addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
toolkit.paintBordersFor(this);
{
TableWrapLayout tableWrapLayout = new TableWrapLayout();
+ tableWrapLayout.verticalSpacing = 0;
+ tableWrapLayout.topMargin = 0;
+ tableWrapLayout.horizontalSpacing = 0;
+ tableWrapLayout.bottomMargin = 0;
tableWrapLayout.rightMargin = 0;
tableWrapLayout.leftMargin = 0;
- tableWrapLayout.numColumns = 2;
setLayout(tableWrapLayout);
}
-// label = toolkit.createLabel(this, "New Label", SWT.NONE);
-// TableWrapData twd_label = new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1);
-// twd_label.align = TableWrapData.LEFT;
-// label.setLayoutData(twd_label);
-
combo = new Combo(this, SWT.READ_ONLY);
combo.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
toolkit.adapt(combo);
public Combo getCombo() {
return combo;
}
-// public Label getLabel() {
-// return label;
-// }
-
- public <T extends IEnumTerm<T>> EnumTermComboController<T> initController(Class<T> enumType, CdmFormFactory formFactory, ICdmFormElement parentElement){
- return new EnumTermComboController<T>(this, formFactory, parentElement, enumType, 0);
-// CdmCompositeControllerFactory.createController(this, entity, formFactory, parentElement);
-// Control[] children = this.getChildren();
-// for (int i = 0; i < children.length; i++) {
-// if(children[i] instanceof CdmComposite){
-// return ((CdmComposite)children[i]).initController(entity, formFactory, parentElement);
-// }
-// }
-// return null;
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmComposite#initController(java.lang.Object, eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement)
+ */
+ @Override
+ protected void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement) {
+ controller = new EnumTermComboController(combo, formFactory, parentElement, enumType, SWT.NONE);
}
+
}
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
/**
* @author pplitzner
*
*/
public class EnumTermComboController<T extends IEnumTerm<T>> extends AbstractCdmFormElement implements SelectionListener,
-IEnableableFormElement, ISelectable {
+IEnableableFormElement, ISelectable, CdmCompositeController {
private static CdmEnumDataHolder[] cdmEnumDataHolders = {
new CdmEnumDataHolder<NomenclaturalCode>(){
this.enumType = enumType;
// create combo
this.combo = combo;
-// combo.setParent(getLayoutComposite());
-// combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
addControl(combo);
-// combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
populateTypes();
combo.addSelectionListener(this);
-// formFactory.adapt(this);
-// parentElement.addElement(this);
}
private String getDefaultLabelString() {
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.ui.mvc.element;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
+
+/**
+ * @author pplitzner
+ * @date 11.02.2014
+ *
+ */
+public class TextWithLabelElement extends AbstractCdmComposite {
+
+ private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+ private final Text text;
+ private final String initialText;
+ private final Integer textHeight;
+
+ /**
+ * Create the composite.
+ * @param parent
+ * @param style
+ */
+ public TextWithLabelElement(Composite parent, String initialText, Integer textHeight, int style) {
+ super(parent, SWT.BORDER);
+ this.initialText = initialText;
+ this.textHeight = textHeight;
+ addDisposeListener(new DisposeListener() {
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ toolkit.dispose();
+ }
+ });
+ toolkit.adapt(this);
+ toolkit.paintBordersFor(this);
+ {
+ TableWrapLayout tableWrapLayout = new TableWrapLayout();
+ tableWrapLayout.verticalSpacing = 0;
+ tableWrapLayout.topMargin = 0;
+ tableWrapLayout.horizontalSpacing = 0;
+ tableWrapLayout.bottomMargin = 0;
+ tableWrapLayout.rightMargin = 0;
+ tableWrapLayout.leftMargin = 0;
+ setLayout(tableWrapLayout);
+ }
+
+ text = new Text(this, SWT.WRAP);
+ text.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ toolkit.adapt(text, true, true);
+
+ }
+
+ public Text getText() {
+ return text;
+ }
+
+ @Override
+ protected void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement){
+ controller = new TextWithLabelElementController(this, formFactory, parentElement, this.initialText, this.textHeight, SWT.NONE);
+ }
+}
--- /dev/null
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.ui.mvc.element;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController;
+
+/**
+ * <p>
+ * TextWithLabelElement class.
+ * </p>
+ *
+ * @author n.hoffmann
+ * @version $Id: $
+ */
+public class TextWithLabelElementController extends AbstractCdmFormElement implements ModifyListener, IEnableableFormElement,
+ ISelectable, CdmCompositeController {
+
+ protected Text text;
+// private Label label;
+
+ /** Constant <code>MAX_HEIGHT=0</code> */
+ public static final int MAX_HEIGHT = 0;
+ /** Constant <code>SINGLE=-1</code> */
+ public static final int SINGLE = -1;
+
+ /**
+ * <p>
+ * Constructor for TextWithLabelElement.
+ * </p>
+ *
+ * @param formFactory
+ * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+ * object.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param initialText
+ * a {@link java.lang.String} object.
+ * @param textHeight
+ * a {@link java.lang.Integer} object.
+ * @param style
+ * a int.
+ * @wbp.parser.entryPoint
+ */
+ public TextWithLabelElementController(TextWithLabelElement textWithLabelElement, CdmFormFactory formFactory, ICdmFormElement parentElement,
+ String initialText, Integer textHeight, int style) {
+ super(formFactory, parentElement);
+
+ int scrollStyle = textHeight == null ? SWT.NULL : (SWT.V_SCROLL | SWT.MULTI);
+
+ int combinedStyle = style | SWT.BORDER | scrollStyle;
+
+ // SWT.PASSWORD does not work when SWT.WRAP is set.
+ if (style != SWT.PASSWORD) {
+ combinedStyle = combinedStyle | SWT.WRAP;
+ }
+
+ text = textWithLabelElement.getText();
+
+ addControl(text);
+
+ if (textHeight == null) {
+ text.addKeyListener(new KeyAdapter() {
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if (e.character == SWT.CR) {
+ // Don't accept carriage returns as input when in single
+ // line mode
+ e.doit = false;
+ } else if (e.character == SWT.TAB) {
+ // traverse is not working for wrapped text widgets so
+ // we reintroduce it here
+ e.doit = false;
+ TextWithLabelElementController.this.text.traverse(SWT.TRAVERSE_TAB_NEXT);
+ }
+ }
+ });
+ }
+
+ text.addModifyListener(this);
+ }
+
+ /**
+ * Get the text of this composites text composite
+ *
+ * @return a {@link java.lang.String} object.
+ */
+ public String getText() {
+ return text.getText();
+ }
+
+ /**
+ * Set the text of this composites text composite
+ *
+ * @param string
+ * a {@link java.lang.String} object.
+ */
+ public void setText(String string) {
+ Listener[] listeners = text.getListeners(SWT.Modify);
+
+ for (Listener listener : listeners) {
+ text.removeListener(SWT.Modify, listener);
+ }
+
+ text.setText(CdmUtils.Nz(string));
+
+ for (Listener listener : listeners) {
+ text.addListener(SWT.Modify, listener);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events
+ * .ModifyEvent)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void modifyText(ModifyEvent e) {
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setEnabled(boolean enabled) {
+ text.setEnabled(enabled);
+ String symbolicName = enabled ? Resources.COLOR_FONT_DEFAULT : Resources.COLOR_TEXT_DISABLED;
+ text.setForeground(getColor(symbolicName));
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
+ */
+ @Override
+ public boolean isEnabled() {
+ return text.isEnabled();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setIrrelevant(boolean irrelevant) {
+ String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_COMPOSITE_BACKGROUND;
+
+ Color color = getColor(colorId);
+ text.setBackground(color);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setBackground(Color color) {
+// if (label != null) {
+// label.setBackground(color);
+// }
+ }
+
+ @Override
+ public void setSelected(boolean selected) {
+ setBackground(selected ? SELECTED : getPersistentBackground());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#setFocus()
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void setFocus() {
+ text.setFocus();
+ }
+
+ /**
+ * <p>
+ * getMainControl
+ * </p>
+ *
+ * @return a {@link org.eclipse.swt.widgets.Control} object.
+ */
+ public Control getMainControl() {
+ return text;
+ }
+
+ /**
+ * <p>
+ * setTextLimit
+ * </p>
+ *
+ * @param limit
+ * a int.
+ */
+ public void setTextLimit(int limit) {
+ text.setTextLimit(limit);
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.ui.mvc.interfaces;
+
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+
+/**
+ * CdmCompositeController implement the interaction logic for CdmComposites.
+ * They also serve as a compatibility bridge between the current GUI structure
+ * based on {@link ICdmFormElement} and a refactored structure using the MVC pattern.
+ * @author pplitzner
+ * @date 11.02.2014
+ *
+ */
+public interface CdmCompositeController extends ICdmFormElement{
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 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.ui.mvc.interfaces;
+
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+
+/**
+ * A composite for visualizing CDM objects. ICdmComposites are mere GUI composites but
+ * they initialize a controller which contains the interaction logic.
+ * @author pplitzner
+ * @date 11.02.2014
+ *
+ */
+public interface ICdmComposite {
+
+ /**
+ * Initializes the {@link CdmCompositeController} of this composite.
+ * @param formFactory the factory used for the GUI element
+ * @param parentElement the parent {@link ICdmFormElement}
+ */
+ public void initController(CdmFormFactory formFactory, ICdmFormElement parentElement);
+
+ /**
+ * Returns the {@link CdmCompositeController} of this composite.
+ * @return
+ */
+ public CdmCompositeController getController();
+
+}