X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/BookmarkSelectionDialog.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/BookmarkSelectionDialog.java new file mode 100644 index 0000000..6707429 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/ui/dialog/BookmarkSelectionDialog.java @@ -0,0 +1,110 @@ +package com.quantum.ui.dialog; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; + +import com.quantum.Messages; +import com.quantum.model.Bookmark; +import com.quantum.model.BookmarkCollection; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.List; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Shell; + +/** + * @author BC + */ +public class BookmarkSelectionDialog extends Dialog { + + private List list; + private String selection = null; + private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); + + /** + * @param parentShell + */ + public BookmarkSelectionDialog(Shell parentShell) { + super(parentShell); + int style = getShellStyle() | SWT.TITLE; + setShellStyle(style); + } + + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText(Messages.getString("BookmarkSelectionDialog.title")); + } + + /** + * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) + */ + protected Control createDialogArea(Composite parent) { + + Composite composite = new Composite(parent, 0); + GridLayout layout = new GridLayout(); + composite.setLayout(layout); + layout.numColumns = 1; + layout.verticalSpacing = 1; + + Label label = new Label(composite, SWT.NULL); + label.setText(Messages.getString("BookmarkSelectionDialog.text")); + + this.list = new List(composite, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL); + Bookmark[] bookmarks = BookmarkCollection.getInstance().getBookmarks(); + + for (int i = 0, length = (bookmarks == null) ? 0 : bookmarks.length; i < length; i++) { + this.list.add(bookmarks[i].getName()); + if (i == 0) { + this.list.select(i); + setSelection(bookmarks[i].getName()); + } + } + + final List list = this.list; + list.addListener(SWT.Selection, new Listener() { + public void handleEvent (Event event) { + String[] selections = list.getSelection(); + if (selections != null && selections.length > 0) { + BookmarkSelectionDialog.this.setSelection(selections[0]); + } + } + }); + + GridData full = new GridData(); + full.horizontalAlignment = GridData.FILL; + full.verticalAlignment = GridData.FILL; + full.heightHint = convertHeightInCharsToPixels(3); + this.list.setLayoutData(full); + + return composite; + } + + /** + * @param listener + */ + public synchronized void addPropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.addPropertyChangeListener(listener); + } + + /** + * @param listener + */ + public synchronized void removePropertyChangeListener(PropertyChangeListener listener) { + this.propertyChangeSupport.removePropertyChangeListener(listener); + } + + private void setSelection(String selection) { + String original = this.selection; + if (this.selection == null || !this.selection.equals(selection)) { + this.selection = selection; + this.propertyChangeSupport.firePropertyChange("selection", original, this.selection); + } + } +}