KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > person > edit > fieldbased > DisguisedTextPersonDatatFieldEditor


1 /*
2  * Created on Jan 9, 2005
3  * by alex
4  *
5  */

6 package com.nightlabs.ipanema.person.edit.fieldbased;
7
8 import org.eclipse.swt.SWT;
9 import org.eclipse.swt.events.FocusAdapter;
10 import org.eclipse.swt.events.FocusEvent;
11 import org.eclipse.swt.events.FocusListener;
12 import org.eclipse.swt.layout.GridData;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Control;
15 import org.eclipse.swt.widgets.Label;
16 import org.eclipse.swt.widgets.Text;
17
18 import com.nightlabs.ipanema.person.AbstractPersonDataField;
19 import com.nightlabs.ipanema.person.TextPersonDataField;
20 import com.nightlabs.ipanema.person.edit.AbstractPersonDataFieldEditor;
21 import com.nightlabs.ipanema.person.edit.AbstractPersonDataFieldEditorFactory;
22 import com.nightlabs.rcp.composite.DisguisedText;
23 import com.nightlabs.rcp.composite.DisguisedText.LabeledDisguisedText;
24
25 /**
26  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
27  *
28  */

29 public class DisguisedTextPersonDatatFieldEditor extends AbstractPersonDataFieldEditor {
30     
31     public static class Factory extends AbstractPersonDataFieldEditorFactory {
32
33         public Class JavaDoc getTargetPersonDataFieldType() {
34             return TextPersonDataField.class;
35         }
36
37         public String JavaDoc getEditorType() {
38             return DisguisedPersonEditor.EDITORTYPE_FIELD_BASED_DISGUISED;
39         }
40
41         public Class JavaDoc getPersonDataFieldEditorClass() {
42             return DisguisedTextPersonDatatFieldEditor.class;
43         }
44         
45     }
46
47     /**
48      *
49      */

50     public DisguisedTextPersonDatatFieldEditor() {
51         super();
52     }
53
54     private DisguisedTextEditorComposite composite;
55     /**
56      * @see com.nightlabs.ipanema.person.edit.PersonDataFieldEditor#createControl(org.eclipse.swt.widgets.Composite)
57      */

58     public Control createControl(Composite parent) {
59         composite = new DisguisedTextEditorComposite(parent,this);
60         return composite;
61     }
62
63     private TextPersonDataField data;
64     /**
65      * @see com.nightlabs.ipanema.person.edit.AbstractPersonDataFieldEditor#doSetData(com.nightlabs.ipanema.person.AbstractPersonDataField)
66      */

67     public void doSetData(AbstractPersonDataField _data) {
68         if (! (_data instanceof TextPersonDataField))
69             throw new IllegalArgumentException JavaDoc("Argument data should be of type "+TextPersonDataField.class.getName()+" but was "+data.getClass().getName());
70         this.data = (TextPersonDataField)_data;
71         setChanged(false);
72 // refreshComposite();
73
}
74     
75     public void refreshComposite() {
76         if (composite != null)
77             composite.refresh();
78     }
79     
80     public TextPersonDataField getData() {
81         return data;
82     }
83
84     /**
85      * @see com.nightlabs.ipanema.person.edit.AbstractPersonDataFieldEditor#doRefresh(com.nightlabs.ipanema.person.AbstractPersonDataField)
86      */

87     public void doRefresh() {
88         refreshComposite();
89     }
90
91     /**
92      * @see com.nightlabs.ipanema.person.edit.PersonDataFieldEditor#updatePerson()
93      */

94     public void updatePerson() {
95         data.setText(composite.getText());
96     }
97     
98     protected class DisguisedTextEditorComposite extends Composite {
99         
100         private Text editorText;
101         private Label editorLabel;
102         private DisguisedTextPersonDatatFieldEditor editor;
103         
104         private FocusListener focusListener = new FocusAdapter() {
105             public void focusLost(FocusEvent arg0) {
106                 editorText.setSelection(0,0);
107             }
108         };
109         
110         public DisguisedTextEditorComposite(Composite parent, DisguisedTextPersonDatatFieldEditor editor) {
111             super(parent,SWT.NONE);
112             this.editor = editor;
113             this.setSize(0,0);
114             GridData gd = new GridData();
115             gd.widthHint = 0;
116             gd.heightHint = 0;
117             this.setLayoutData(gd);
118 // LabeledDisguisedText ldt = DisguisedText.createLabeledText(getPersonStructField().getFieldName().getText(),parent);
119
// TODO: Reactivate above line
120
LabeledDisguisedText ldt = DisguisedText.createLabeledText(editor.getData().getPersonStructFieldID(),parent);
121             editorLabel = ldt.getLabelControl();
122             editorText = ldt.getTextControl();
123             editorText.addFocusListener(focusListener);
124         }
125         
126         public String JavaDoc getText() {
127             return editorText.getText();
128         }
129         
130         public void refresh() {
131             String JavaDoc editorText = editor.getData().getText();
132             if (editorText != null)
133                 this.editorText.setText(editorText);
134             else
135                 this.editorText.setText("");
136         }
137         
138         public void dispose() {
139             editorLabel.dispose();
140             editorText.dispose();
141             super.dispose();
142         }
143     }
144
145     /**
146      * @see com.nightlabs.ipanema.person.edit.PersonDataFieldEditor#getControl()
147      */

148     public Control getControl() {
149         return composite;
150     }
151
152 }
153
Popular Tags