package org.objectstyle.wolips.eomodeler.editors.entity; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.objectstyle.wolips.eomodeler.core.model.EOEntity; import org.objectstyle.wolips.eomodeler.core.model.EOModel; import org.objectstyle.wolips.eomodeler.core.model.EOModelGroup; import org.objectstyle.wolips.eomodeler.editors.relationship.EOModelLabelProvider; import org.objectstyle.wolips.eomodeler.editors.relationship.EOModelListContentProvider; public class EntityPicker extends Composite { private ComboViewer _modelComboViewer; private ComboViewer _entityComboViewer; public EntityPicker(Composite parent, int style, boolean includePrototypes) { super(parent, style); GridLayout layout = new GridLayout(2, false); setLayout(layout); Combo modelCombo = new Combo(this, SWT.BORDER | SWT.FLAT | SWT.READ_ONLY); _modelComboViewer = new ComboViewer(modelCombo); _modelComboViewer.setLabelProvider(new EOModelLabelProvider()); _modelComboViewer.setContentProvider(new EOModelListContentProvider()); // GridData modelComboLayoutData = new // GridData(GridData.FILL_HORIZONTAL); // modelCombo.setLayoutData(modelComboLayoutData); _modelComboViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); EOModel selectedModel = (EOModel) selection.getFirstElement(); _entityComboViewer.setInput(selectedModel); if (_entityComboViewer.getCombo().getItemCount() > 0) { _entityComboViewer.setSelection(new StructuredSelection(_entityComboViewer.getElementAt(0))); } } }); Combo entityCombo = new Combo(this, SWT.BORDER | SWT.FLAT | SWT.READ_ONLY); _entityComboViewer = new ComboViewer(entityCombo); _entityComboViewer.setLabelProvider(new EOEntityLabelProvider()); _entityComboViewer.setContentProvider(new EOEntityListContentProvider(false, true, includePrototypes)); GridData entityComboLayoutData = new GridData(GridData.FILL_HORIZONTAL); entityCombo.setLayoutData(entityComboLayoutData); } public void setModelGroup(EOModelGroup modelGroup) { _modelComboViewer.setInput(modelGroup); } public void setModel(EOModel model) { if (model != null) { _modelComboViewer.setSelection(new StructuredSelection(model), true); _entityComboViewer.setSelection(new StructuredSelection()); } } public void setEntity(EOEntity entity) { if (entity != null) { _modelComboViewer.setSelection(new StructuredSelection(entity.getModel()), true); _entityComboViewer.setSelection(new StructuredSelection(entity), true); } else { _entityComboViewer.setSelection(new StructuredSelection()); } } public EOEntity getEntity() { return (EOEntity) ((IStructuredSelection) _entityComboViewer.getSelection()).getFirstElement(); } public void addSelectionChangedListener(ISelectionChangedListener listener) { _entityComboViewer.addSelectionChangedListener(listener); } public void removeSelectionChangedListener(ISelectionChangedListener listener) { _entityComboViewer.removeSelectionChangedListener(listener); } }