fixes #1041
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / forms / selectioncomposites / AbstractSelectionComposite.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.forms.selectioncomposites;
5
6 import org.eclipse.jface.util.IPropertyChangeListener;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.events.SelectionEvent;
9 import org.eclipse.swt.events.SelectionListener;
10 import org.eclipse.swt.layout.GridData;
11 import org.eclipse.swt.layout.GridLayout;
12 import org.eclipse.swt.widgets.Button;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Label;
15 import org.eclipse.swt.widgets.Text;
16
17 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
18 import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
19
20 /**
21 *
22 * @author n.hoffmann
23 * @created Nov 17, 2009
24 * @version 1.0
25 * @param <T>
26 */
27 public abstract class AbstractSelectionComposite<T extends IdentifiableEntity> extends AbstractFormComposite implements SelectionListener{
28
29 protected T selection;
30
31 protected Label label;
32 protected Text text;
33 protected Button button;
34
35 /**
36 * @param parent
37 * @param style
38 */
39 public AbstractSelectionComposite(Composite parent, String labelString, T selection, IPropertyChangeListener listener, int style) {
40 super(parent, listener, style);
41
42 this.selection = selection;
43
44 this.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
45 GridLayout layout = (GridLayout) this.getLayout();
46 layout.numColumns = 2;
47
48 if(labelString != null){
49 label = toolkit.createLabel(this, labelString, SWT.WRAP);
50 GridData labelData = new GridData();
51 labelData.horizontalSpan = 2;
52 label.setLayoutData(labelData);
53 }
54
55 text = toolkit.createText(this, "", SWT.BORDER | SWT.WRAP);
56 text.setEditable(false);
57 text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
58
59 button = toolkit.createButton(this, "Browse", SWT.PUSH);
60 button.addSelectionListener(this);
61
62 updateText();
63 }
64
65 /* (non-Javadoc)
66 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
67 */
68 public void widgetDefaultSelected(SelectionEvent e) {
69 // do nothing
70 }
71
72 /* (non-Javadoc)
73 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
74 */
75 public void widgetSelected(SelectionEvent e) {
76 firePropertyChangeEvent(null);
77 }
78
79 /**
80 * Return the selected object
81 *
82 * @return
83 */
84 public T getSelection(){
85 return selection;
86 }
87
88 /**
89 *
90 * @param selection
91 */
92 public void setSelection(T selection){
93 this.selection = selection;
94 updateText();
95 }
96
97 protected void updateText(){
98 if(selection != null)
99 text.setText(selection.getTitleCache());
100 }
101 }