3 * Copyright (C) 2013 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.ui
.campanula
.basicFields
;
12 import org
.eclipse
.swt
.SWT
;
13 import org
.eclipse
.swt
.events
.KeyAdapter
;
14 import org
.eclipse
.swt
.events
.KeyEvent
;
15 import org
.eclipse
.swt
.events
.ModifyEvent
;
16 import org
.eclipse
.swt
.events
.ModifyListener
;
17 import org
.eclipse
.swt
.graphics
.Color
;
18 import org
.eclipse
.swt
.widgets
.Control
;
19 import org
.eclipse
.swt
.widgets
.Listener
;
20 import org
.eclipse
.swt
.widgets
.Text
;
21 import org
.eclipse
.wb
.swt
.SWTResourceManager
;
23 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
24 import eu
.etaxonomy
.taxeditor
.preference
.Resources
;
25 import eu
.etaxonomy
.taxeditor
.ui
.campanula
.compatibility
.ICdmFormElement
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.AbstractCdmFormElement
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
28 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
29 import eu
.etaxonomy
.taxeditor
.ui
.element
.IEnableableFormElement
;
30 import eu
.etaxonomy
.taxeditor
.ui
.element
.ISelectable
;
37 public class TextFieldController
extends AbstractCdmFormElement
implements ModifyListener
, IEnableableFormElement
, ISelectable
{
41 /** Constant <code>MAX_HEIGHT=0</code> */
42 public static final int MAX_HEIGHT
= 0;
43 /** Constant <code>SINGLE=-1</code> */
44 public static final int SINGLE
= -1;
47 * Create the composite.
53 public TextFieldController(Text controlledText
, CdmFormFactory formFactory
, ICdmFormElement parentFormElement
, String initialText
, Integer textHeight
) {
54 super(formFactory
, parentFormElement
);
55 setBackground(SWTResourceManager
.getColor(SWT
.COLOR_WHITE
));
59 setPropertyChangeListeners(formFactory
.getPropertyChangeListeners());
60 formFactory
.addPropertyChangeListener(this);
62 initialText
= initialText
==null?
"":initialText
;
64 // int scrollStyle = textHeight == null ? SWT.NULL : (SWT.V_SCROLL | SWT.MULTI);
66 // int combinedStyle = style | SWT.BORDER | scrollStyle;
68 // // SWT.PASSWORD does not work when SWT.WRAP is set.
69 // if (style != SWT.PASSWORD) {
70 // combinedStyle = combinedStyle | SWT.WRAP;
74 this.text
= controlledText
;
75 // TableWrapData twd_text_1 = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP);
76 // twd_text_1.grabHorizontal = true;
78 // text.setLayoutData(twd_text_1);
82 if (textHeight
== null) {
83 text
.addKeyListener(new KeyAdapter() {
85 public void keyPressed(KeyEvent e
) {
86 if (e
.character
== SWT
.CR
) {
87 // Don't accept carriage returns as input when in single
90 } else if (e
.character
== SWT
.TAB
) {
91 // traverse is not working for wrapped text widgets so
92 // we reintroduce it here
94 TextFieldController
.this.text
.traverse(SWT
.TRAVERSE_TAB_NEXT
);
100 // if (textHeight != null && textHeight > 0) {
101 // TableWrapData layoutData = LayoutConstants.FILL();
102 // (layoutData).heightHint = textHeight;
103 // text.setLayoutData(layoutData);
106 text
.addModifyListener(this);
113 * Get the text of this composites text composite
115 * @return a {@link java.lang.String} object.
117 public String
getText() {
118 return text
.getText();
122 * Set the text of this composites text composite
125 * a {@link java.lang.String} object.
127 public void setText(String string
) {
128 Listener
[] listeners
= text
.getListeners(SWT
.Modify
);
130 for (Listener listener
: listeners
) {
131 text
.removeListener(SWT
.Modify
, listener
);
134 text
.setText(CdmUtils
.Nz(string
));
136 for (Listener listener
: listeners
) {
137 text
.addListener(SWT
.Modify
, listener
);
145 * org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events
150 public void modifyText(ModifyEvent e
) {
151 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e
));
156 public void setEnabled(boolean enabled
) {
157 text
.setEnabled(enabled
);
158 String symbolicName
= enabled ? Resources
.COLOR_FONT_DEFAULT
: Resources
.COLOR_TEXT_DISABLED
;
159 text
.setForeground(getColor(symbolicName
));
164 public void setIrrelevant(boolean irrelevant
) {
165 String colorId
= irrelevant ? Resources
.COLOR_COMPOSITE_IRRELEVANT
: Resources
.COLOR_COMPOSITE_BACKGROUND
;
167 Color color
= getColor(colorId
);
168 text
.setBackground(color
);
172 public void setSelected(boolean selected
) {
173 setBackground(selected ? SELECTED
: getPersistentBackground());
179 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#setFocus()
184 public void setFocus() {
193 * @return a {@link org.eclipse.swt.widgets.Control} object.
195 public Control
getMainControl() {
207 public void setTextLimit(int limit
) {
208 text
.setTextLimit(limit
);