package org.nightlabs.jfire.department.ui.prop; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.nightlabs.jfire.base.ui.edit.IEntryEditor; import org.nightlabs.jfire.base.ui.prop.edit.AbstractDataFieldEditor; import org.nightlabs.jfire.department.prop.DepartmentDataField; import org.nightlabs.jfire.department.ui.DepartmentComboComposite; import org.nightlabs.jfire.prop.IStruct; import org.nightlabs.util.Util; public class DepartmentDataFieldEditor extends AbstractDataFieldEditor<DepartmentDataField> { public DepartmentDataFieldEditor(IStruct struct, DepartmentDataField data) { super(struct, data); } @Override public void doRefresh() { // update the UI (propertySet => UI) departmentComboComposite.setSelectedDepartment(getDataField().getDepartment()); } private DepartmentComboComposite departmentComboComposite; @Override public Control createControl(Composite parent) { departmentComboComposite = new DepartmentComboComposite(parent); departmentComboComposite.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { if (!Util.equals(departmentComboComposite.getSelectedDepartment(), getDataField().getDepartment())) getModifyListener().modifyData(); } }); return departmentComboComposite; } @Override public Control getControl() { return departmentComboComposite; } @Override public void updatePropertySet() { // update the property set (UI => property set) getDataField().setDepartment(departmentComboComposite.getSelectedDepartment()); } @Override protected IEntryEditor getEntryViewer() { return departmentComboComposite; } }