X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/SimpleSelectionDialog.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/SimpleSelectionDialog.java index 311b217..ccb1a43 100644 --- a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/SimpleSelectionDialog.java +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/SimpleSelectionDialog.java @@ -1,15 +1,26 @@ package com.quantum.ui.dialog; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; @@ -27,7 +38,7 @@ public class SimpleSelectionDialog extends Dialog { } public String getColumnText(Object element, int columnIndex) { - return (String) element; + return element.toString(); } public void addListener(ILabelProviderListener listener) { @@ -61,19 +72,25 @@ public class SimpleSelectionDialog extends Dialog { private final String title; private TableViewer viewer; private final Image image; - private final String[] objects; + private final Object[] objects; - private String selectedElement = null; + private List selection = Collections.synchronizedList(new ArrayList()); + private final boolean multipleSelection; /** * @param parentShell */ - protected SimpleSelectionDialog(Shell parentShell, String title, - String[] objects, Image image) { + public SimpleSelectionDialog(Shell parentShell, String title, + Object[] objects, Image image) { + this(parentShell, title, objects, image, false); + } + public SimpleSelectionDialog(Shell parentShell, String title, + Object[] objects, Image image, boolean multipleSelection) { super(parentShell); this.title = title; this.objects = objects; this.image = image; + this.multipleSelection = multipleSelection; } protected void configureShell(Shell shell) { @@ -91,7 +108,11 @@ public class SimpleSelectionDialog extends Dialog { layout.numColumns = 1; layout.verticalSpacing = 1; - this.viewer = new TableViewer(composite); + int style = SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL; + if (this.multipleSelection) { + style |= SWT.MULTI; + } + this.viewer = new TableViewer(composite, style); GridData full = new GridData(GridData.FILL_HORIZONTAL); full.widthHint = 200; full.heightHint = 50; @@ -101,27 +122,37 @@ public class SimpleSelectionDialog extends Dialog { this.viewer.setContentProvider(new ContentProvider()); this.viewer.setInput(this); + + this.viewer.addSelectionChangedListener(new ISelectionChangedListener() { + + public void selectionChanged(SelectionChangedEvent event) { + Button okButton = getButton(IDialogConstants.OK_ID); + okButton.setEnabled(!event.getSelection().isEmpty()); + } + + }); return composite; } + protected void createButtonsForButtonBar(Composite parent) { + super.createButtonsForButtonBar(parent); + Button okButton = getButton(IDialogConstants.OK_ID); + okButton.setEnabled(false); + } protected void okPressed() { - IStructuredSelection selection = (IStructuredSelection) this.viewer.getSelection(); - this.selectedElement = (String) selection.getFirstElement(); + this.selection.clear(); + for (Iterator i = selection.iterator(); i.hasNext();) { + this.selection.add(i.next()); + } super.okPressed(); } /** * @return Returns the selectedElement. */ - public String getSelectedElement() { - return this.selectedElement; - } - /** - * @param selectedElement The selectedElement to set. - */ - public void setSelectedElement(String selectedElement) { - this.selectedElement = selectedElement; + public IStructuredSelection getSelection() { + return new StructuredSelection(this.selection); } }