1 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 29 public class DisguisedTextPersonDatatFieldEditor extends AbstractPersonDataFieldEditor { 30 31 public static class Factory extends AbstractPersonDataFieldEditorFactory { 32 33 public Class getTargetPersonDataFieldType() { 34 return TextPersonDataField.class; 35 } 36 37 public String getEditorType() { 38 return DisguisedPersonEditor.EDITORTYPE_FIELD_BASED_DISGUISED; 39 } 40 41 public Class getPersonDataFieldEditorClass() { 42 return DisguisedTextPersonDatatFieldEditor.class; 43 } 44 45 } 46 47 50 public DisguisedTextPersonDatatFieldEditor() { 51 super(); 52 } 53 54 private DisguisedTextEditorComposite composite; 55 58 public Control createControl(Composite parent) { 59 composite = new DisguisedTextEditorComposite(parent,this); 60 return composite; 61 } 62 63 private TextPersonDataField data; 64 67 public void doSetData(AbstractPersonDataField _data) { 68 if (! (_data instanceof TextPersonDataField)) 69 throw new IllegalArgumentException ("Argument data should be of type "+TextPersonDataField.class.getName()+" but was "+data.getClass().getName()); 70 this.data = (TextPersonDataField)_data; 71 setChanged(false); 72 } 74 75 public void refreshComposite() { 76 if (composite != null) 77 composite.refresh(); 78 } 79 80 public TextPersonDataField getData() { 81 return data; 82 } 83 84 87 public void doRefresh() { 88 refreshComposite(); 89 } 90 91 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(editor.getData().getPersonStructFieldID(),parent); 121 editorLabel = ldt.getLabelControl(); 122 editorText = ldt.getTextControl(); 123 editorText.addFocusListener(focusListener); 124 } 125 126 public String getText() { 127 return editorText.getText(); 128 } 129 130 public void refresh() { 131 String 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 148 public Control getControl() { 149 return composite; 150 } 151 152 } 153 | Popular Tags |