X-Git-Url: http://secure.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/properties/SchemaPropertyPage.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/properties/SchemaPropertyPage.java index d812f59..049bcb8 100644 --- a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/properties/SchemaPropertyPage.java +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/properties/SchemaPropertyPage.java @@ -1,220 +1,19 @@ package com.quantum.properties; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.Vector; - -import com.quantum.QuantumPlugin; import com.quantum.model.Bookmark; import com.quantum.model.BookmarkHolder; -import com.quantum.model.ConnectionException; -import com.quantum.model.Schema; -import com.quantum.sql.SQLHelper; -import com.quantum.ui.dialog.ExceptionDisplayDialog; -import com.quantum.util.connection.ConnectionUtil; -import com.quantum.view.bookmark.AddSchemaDialog; +import com.quantum.view.SchemaSelectionControl; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.ISelection; -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.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -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.ui.dialogs.PropertyPage; public class SchemaPropertyPage extends PropertyPage { - - class ContentProviderImpl implements IStructuredContentProvider { - public Object[] getElements(Object inputElement) { - List list = new ArrayList((Collection) inputElement); - Collections.sort(list); - return list.toArray(); - } - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - } - - class LabelProviderImpl implements ITableLabelProvider { - - public Image getColumnImage(Object element, int columnIndex) { - if (columnIndex == 0) { - return QuantumPlugin.getImage("schema.gif"); - } else { - return null; - } - } - - public String getColumnText(Object element, int columnIndex) { - if (columnIndex == 0) { - return ((Schema) element).getDisplayName(); - } else { - return null; - } - } - - public void addListener(ILabelProviderListener listener) { - } - - public void dispose() { - } - - public boolean isLabelProperty(Object element, String property) { - return "displayName".equals(property); - } - - public void removeListener(ILabelProviderListener listener) { - } - } - - private Set schemas = Collections.synchronizedSet(new HashSet()); - private TableViewer schemaTable; - private Button addButton; - private Button removeButton; - - private ConnectionUtil connectionUtil = new ConnectionUtil(); + + private SchemaSelectionControl control; protected Control createContents(Composite parent) { - - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - composite.setLayout(layout); - GridData data = new GridData(); - composite.setLayoutData(data); - - this.schemaTable = new TableViewer(composite, - SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER); - - layout = new GridLayout(); - layout.marginWidth = 5; - layout.marginHeight = 5; - - this.schemaTable.getTable().setLayout(layout); - data = new GridData(); - data.heightHint = 200; - data.widthHint = 200; -// data.verticalSpan = 2; - this.schemaTable.getTable().setLayoutData(data); - this.schemaTable.setLabelProvider(new LabelProviderImpl()); - this.schemaTable.setContentProvider(new ContentProviderImpl()); - this.schemaTable.setInput(this.schemas); - - createButtonArea(composite); - - performDefaults(); - return composite; - } - - private void createButtonArea(Composite composite) { - GridLayout layout; - GridData data; - Composite buttonArea = new Composite(composite, SWT.NONE); - layout = new GridLayout(); - layout.numColumns = 1; - buttonArea.setLayout(layout); - data = new GridData(); - data.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING; - buttonArea.setLayoutData(data); - - this.addButton = new Button(buttonArea, SWT.NULL); - this.addButton.setText("Add"); - data = new GridData(); - data.horizontalAlignment = GridData.FILL_HORIZONTAL; - data.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING; - data.widthHint = 60; - this.addButton.setLayoutData(data); - this.addButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - addSchema(); - } - }); - - this.removeButton = new Button(buttonArea, SWT.NULL); - this.removeButton.setText("Remove"); - this.removeButton.setEnabled(false); - data = new GridData(); - data.horizontalAlignment = GridData.FILL_HORIZONTAL; - data.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING; - data.widthHint = 60; - this.removeButton.setLayoutData(data); - this.removeButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - removeSchema(SchemaPropertyPage.this.schemaTable.getSelection()); - } - }); - - this.schemaTable.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - SchemaPropertyPage.this.removeButton.setEnabled( - !event.getSelection().isEmpty()); - } - }); - } - - private void addSchema() { - Bookmark bookmark = getBookmark(); - boolean isAlreadyConnected = bookmark.isConnected(); - - if (!isAlreadyConnected) { - boolean confirmed = MessageDialog.openConfirm(getShell(), "Connect Required", - "We must connect to the database to retrieve schemas."); - if (confirmed) { - this.connectionUtil.connect(bookmark, getShell()); - } - } - - try { - if (bookmark.isConnected()) { - Vector schemas = SQLHelper.getSchemas(bookmark.getConnection()); - AddSchemaDialog dialog = new AddSchemaDialog(getShell(), schemas); - dialog.open(); - if (dialog.getSelectedSchemas() != null) { - Collection temp = dialog.getSelectedSchemas(); - for (Iterator i = temp.iterator(); i.hasNext();) { - String name = (String) i.next(); - this.schemas.add(new Schema(name)); - } - refreshTable(); - } - - if (!isAlreadyConnected) { - bookmark.disconnect(); - } - } - } catch (ConnectionException e) { - ExceptionDisplayDialog.openError(getShell(), null, null, e); - } - } - - private void removeSchema(ISelection selection) { - IStructuredSelection structuredSelection = (IStructuredSelection) selection; - for (Iterator i = structuredSelection.iterator(); i.hasNext();) { - Schema element = (Schema) i.next(); - this.schemas.remove(element); - } - refreshTable(); + return this.control = new SchemaSelectionControl(parent, getBookmark()); } private Bookmark getBookmark() { @@ -227,30 +26,16 @@ public class SchemaPropertyPage extends PropertyPage { * @see org.eclipse.jface.preference.PreferencePage#performApply() */ public boolean performOk() { - getBookmark().setSchemas((Schema[]) this.schemas.toArray( - new Schema[this.schemas.size()])); + Bookmark bookmark = getBookmark(); + bookmark.setSchemaSelections(this.control.getSchemas()); + bookmark.setSchemaRule(this.control.getSchemaRule()); return true; } - /* (non-Javadoc) - * @see org.eclipse.jface.preference.PreferencePage#performDefaults() - */ + protected void performDefaults() { super.performDefaults(); Bookmark bookmark = getBookmark(); - - this.schemas.clear(); - Schema[] schemas = bookmark.getSchemas(); - for (int i = 0, length = (schemas == null) ? 0 : schemas.length; - i < length; - i++) { - if (!schemas[i].isDefault()) { - this.schemas.add(schemas[i]); - } - } - refreshTable(); - } - - private void refreshTable() { - this.schemaTable.refresh(); + this.control.setSchemaRule(bookmark.getSchemaRule()); + this.control.setSchemas(bookmark.getSchemaSelections()); } } \ No newline at end of file