package org.eclipse.nebula.snippets.datechooser; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.Calendar; import java.util.Date; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.Realm; import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.nebula.widgets.datechooser.DateChooserCombo; import org.eclipse.nebula.widgets.datechooser.DateChooserComboObservableValue; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; /** * Snippet for DateChooserCombo : DataBinding */ public class DateChooserComboDataBindingSnippet { static class Person { String name; Date birthday; private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); public String getName() { return name; } public void setName(String name) { propertyChangeSupport.firePropertyChange("name", this.name, this.name = name); } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { propertyChangeSupport.firePropertyChange("birthday", this.birthday, this.birthday = birthday); } public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(propertyName, listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(listener); } } public static void main(String[] args) { final Display display = Display.getDefault(); Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() { public void run() { DateChooserComboDataBindingSnippet snippet = new DateChooserComboDataBindingSnippet(); Shell shell = snippet.createShell(); shell.open(); while ( ! shell.isDisposed() ) { if (!display.readAndDispatch()) display.sleep(); } } }); } private Shell createShell() { Display display = Display.getDefault(); Shell shell = new Shell(display); shell.setSize(300, 200); GridLayoutFactory.swtDefaults().numColumns(2).applyTo(shell); Calendar cal = Calendar.getInstance(); cal.set(1950, 3, 20, 0, 0, 0); final Person person = new Person(); person.setName("Bugs Bunny"); person.setBirthday(cal.getTime()); new Label(shell, SWT.NONE).setText("Name:"); final Text text = new Text(shell, SWT.BORDER); GridDataFactory.swtDefaults().hint(200, SWT.DEFAULT).applyTo(text); new Label(shell, SWT.NONE).setText("Birthday:"); final DateChooserCombo combo = new DateChooserCombo(shell, SWT.BORDER); GridDataFactory.swtDefaults().hint(110, SWT.DEFAULT).applyTo(combo); Button bunnyButton = new Button(shell, SWT.NONE); bunnyButton.setText("Reset model"); GridDataFactory.swtDefaults().align(SWT.END, SWT.CENTER).span(2, 1) .hint(100, SWT.DEFAULT).applyTo(bunnyButton); bunnyButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Calendar cal = Calendar.getInstance(); cal.set(1950, 3, 20, 0, 0, 0); person.setName("Bugs Bunny"); person.setBirthday(cal.getTime()); } }); Button modelButton = new Button(shell, SWT.NONE); modelButton.setText("Display model"); GridDataFactory.swtDefaults().align(SWT.END, SWT.CENTER).span(2, 1) .hint(100, SWT.DEFAULT).applyTo(modelButton); final Label model = new Label(shell, SWT.NONE); GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).span(2, 1).applyTo(model); modelButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { model.setText(person.getName() + " - " + person.getBirthday()); } }); DataBindingContext context = new DataBindingContext(); context.bindValue(SWTObservables.observeText(text, SWT.Modify), BeansObservables.observeValue(person, "name"), null, null); context.bindValue(new DateChooserComboObservableValue(combo, SWT.Modify), BeansObservables.observeValue(person, "birthday"), null, null); return shell; } }