X-Git-Url: http://secure.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/widget/ComboViewer.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/widget/ComboViewer.java new file mode 100644 index 0000000..7dd692a --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/widget/ComboViewer.java @@ -0,0 +1,79 @@ +package com.quantum.view.widget; + +import org.eclipse.jface.viewers.ContentViewer; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredContentProvider; +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.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +/** + *
A Combo viewer. + * + *
In Eclipse version 3.0, a standard JFace ComboViewer class exists. + * + * @author BC Holmes + */ +public class ComboViewer extends ContentViewer { + + private Combo combo; + + private Object[] objects = new Object[0]; + + public ComboViewer(Composite parent) { + this.combo = new Combo(parent, SWT.SIMPLE | SWT.DROP_DOWN | SWT.READ_ONLY); + this.combo.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent event) { + ComboViewer.this.fireSelectionChanged(new SelectionChangedEvent( + ComboViewer.this, getSelection()) ); + } + }); + } + + public Control getControl() { + return this.combo; + } + + public ISelection getSelection() { + int index = this.combo.getSelectionIndex(); + + return (this.objects == null || index >= this.objects.length || index < 0) + ? new StructuredSelection() + : new StructuredSelection(this.objects[index]); + } + + protected void inputChanged(Object input, Object oldInput) { + super.inputChanged(input, oldInput); + + if (input == null) { + this.objects = new Object[0]; + } else { + this.objects = ((IStructuredContentProvider) getContentProvider()).getElements(input); + for (int i = 0, length = this.objects == null ? 0 : this.objects.length; i < length; i++) { + String label = ((ILabelProvider) getLabelProvider()).getText(this.objects[i]); + this.combo.add(label); + } + } + } + public void refresh() { + } + + public void setSelection(ISelection selection, boolean reveal) { + if (selection != null && selection instanceof IStructuredSelection) { + Object object = ((IStructuredSelection) selection).getFirstElement(); + for (int i = 0, length = this.objects == null ? 0 : this.objects.length; + object != null && i < length; i++) { + if (this.objects[i] == object) { + this.combo.select(i); + } + } + } + } +} \ No newline at end of file