From: Klaus H. <kha...@us...> - 2004-06-25 18:17:32
|
Update of /cvsroot/phpeclipse/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22514/src/com/quantum/view Modified Files: JDBCDriverTableViewer.java CopyAction.java SQLQueryView.java Added Files: SchemaSelectionControl.java Log Message: latest quantum sources 2.3.2 Index: CopyAction.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/CopyAction.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CopyAction.java 16 Apr 2004 19:15:49 -0000 1.1 --- CopyAction.java 25 Jun 2004 18:16:46 -0000 1.2 *************** *** 16,24 **** public final class CopyAction extends Action { - private final TableView view; private final Table table; public CopyAction(TableView view, Table table) { super(); - this.view = view; this.table = table; } --- 16,22 ---- --- NEW FILE: SchemaSelectionControl.java --- package com.quantum.view; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; 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 com.quantum.Messages; import com.quantum.QuantumPlugin; import com.quantum.model.Bookmark; import com.quantum.model.ConnectionException; import com.quantum.model.NotConnectedException; import com.quantum.model.Schema; import com.quantum.ui.dialog.ExceptionDisplayDialog; import com.quantum.ui.dialog.SimpleSelectionDialog; import com.quantum.util.connection.ConnectionUtil; 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; /** * @author BC */ public class SchemaSelectionControl extends Composite { 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 final Bookmark bookmarkForConnection; private ConnectionUtil connectionUtil = new ConnectionUtil(); private Set schemas = Collections.synchronizedSet(new HashSet()); private TableViewer schemaTable; private Button useAllSchemasButton; private int schemaRule; private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); private Button useUsernameAsSchemaButton; private Button useSelectedSchemasButton; private Button removeButton; private Button addButton; /** * @param parent * @param style */ public SchemaSelectionControl(Composite parent, Bookmark bookmarkForConnection) { super(parent, SWT.NONE); this.bookmarkForConnection = bookmarkForConnection; Schema[] schemas = bookmarkForConnection.getSchemaSelections(); this.schemas.addAll(Arrays.asList(schemas)); this.schemaRule = this.bookmarkForConnection.getSchemaRule(); createContents(); } protected void createContents() { GridLayout layout = new GridLayout(); layout.numColumns = 1; setLayout(layout); GridData data = new GridData(GridData.FILL_BOTH); setLayoutData(data); this.useAllSchemasButton = new Button(this, SWT.RADIO); this.useAllSchemasButton.setText(Messages.getString(getClass(), "useAllSchemas")); //$NON-NLS-1$ this.useAllSchemasButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); this.useAllSchemasButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { setSchemaRule(Bookmark.SCHEMA_RULE_USE_ALL); updateControls(); } }); this.useUsernameAsSchemaButton = new Button(this, SWT.RADIO); this.useUsernameAsSchemaButton.setText(Messages.getString(getClass(), "useUsernameAsSchema")); //$NON-NLS-1$ this.useUsernameAsSchemaButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); this.useUsernameAsSchemaButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { setSchemaRule(Bookmark.SCHEMA_RULE_USE_DEFAULT); updateControls(); } }); this.useSelectedSchemasButton = new Button(this, SWT.RADIO); this.useSelectedSchemasButton.setText(Messages.getString(getClass(), "useSelectedSchemas")); //$NON-NLS-1$ this.useSelectedSchemasButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); this.useSelectedSchemasButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { setSchemaRule(Bookmark.SCHEMA_RULE_USE_SELECTED); updateControls(); } }); Composite composite = new Composite(this, SWT.NONE); layout = new GridLayout(); layout.numColumns = 2; composite.setLayout(layout); data = new GridData(GridData.FILL_BOTH); 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(GridData.FILL_BOTH); this.schemaTable.getTable().setLayoutData(data); this.schemaTable.setLabelProvider(new LabelProviderImpl()); this.schemaTable.setContentProvider(new ContentProviderImpl()); this.schemaTable.setInput(this.schemas); createButtonArea(composite); updateControls(); } private void updateControls() { this.useAllSchemasButton.setSelection(this.schemaRule == Bookmark.SCHEMA_RULE_USE_ALL); this.useUsernameAsSchemaButton.setSelection(this.schemaRule == Bookmark.SCHEMA_RULE_USE_DEFAULT); boolean enabled = (this.schemaRule != Bookmark.SCHEMA_RULE_USE_ALL && this.schemaRule != Bookmark.SCHEMA_RULE_USE_DEFAULT); this.useSelectedSchemasButton.setSelection(enabled); this.schemaTable.getControl().setEnabled(enabled); this.addButton.setEnabled(enabled); this.removeButton.setEnabled( enabled && !this.schemaTable.getSelection().isEmpty()); } private void createButtonArea(Composite composite) { Composite buttonArea = new Composite(composite, SWT.NONE); GridLayout layout = new GridLayout(); layout.numColumns = 1; buttonArea.setLayout(layout); GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING); buttonArea.setLayoutData(data); this.addButton = new Button(buttonArea, SWT.NULL); this.addButton.setText("Add"); data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); 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(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); this.removeButton.setLayoutData(data); this.removeButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { removeSchema(SchemaSelectionControl.this.schemaTable.getSelection()); } }); schemaTable.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { updateControls(); } }); } private void addSchema() { Bookmark bookmark = getBookmark(); boolean isAlreadyConnected = bookmark.isConnected(); if (!isAlreadyConnected) { boolean confirmed = MessageDialog.openConfirm(getShell(), Messages.getString(getClass(), "connectTitle"), Messages.getString(getClass(), "connectMessage")); if (confirmed) { this.connectionUtil.connect(bookmark, getShell()); } } try { if (bookmark.isConnected()) { List schemaList = getAllUnselectedSchemas(bookmark); SimpleSelectionDialog dialog = new SimpleSelectionDialog( getShell(), Messages.getString(getClass(), "addSchemaDialog"), schemaList.toArray(), QuantumPlugin.getImage("schema.gif"), true); int result = dialog.open(); if (result == SimpleSelectionDialog.OK && !dialog.getSelection().isEmpty()) { for (Iterator i = dialog.getSelection().iterator(); i.hasNext();) { this.schemas.add(i.next()); } refreshTable(); this.propertyChangeSupport.firePropertyChange("schemas", null, getSchemas()); } if (!isAlreadyConnected) { bookmark.disconnect(); } } } catch (ConnectionException e) { ExceptionDisplayDialog.openError(getShell(), null, null, e); } catch (SQLException e) { ExceptionDisplayDialog.openError(getShell(), null, null, e); } } /** * @param bookmark * @return * @throws NotConnectedException * @throws SQLException */ private List getAllUnselectedSchemas(Bookmark bookmark) throws NotConnectedException, SQLException { Schema[] schemas = bookmark.getDatabase().getSchemas(); List schemaList = new ArrayList(Arrays.asList(schemas)); schemaList.removeAll(this.schemas); Collections.sort(schemaList); return schemaList; } 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(); this.propertyChangeSupport.firePropertyChange("schemas", null, getSchemas()); } private Bookmark getBookmark() { return this.bookmarkForConnection; } private void refreshTable() { this.schemaTable.refresh(); } public Schema[] getSchemas() { return (Schema[]) this.schemas.toArray(new Schema[this.schemas.size()]); } public void setSchemas(Schema[] schemas) { this.schemas.clear(); this.schemas.addAll(Arrays.asList(schemas)); updateControls(); refreshTable(); this.propertyChangeSupport.firePropertyChange("schemas", null, getSchemas()); } public void addPropertyChangeListener(PropertyChangeListener arg0) { this.propertyChangeSupport.addPropertyChangeListener(arg0); } public void removePropertyChangeListener(PropertyChangeListener arg0) { this.propertyChangeSupport.removePropertyChangeListener(arg0); } public int getSchemaRule() { return this.schemaRule; } public void setSchemaRule(int schemaRule) { if (schemaRule != this.schemaRule) { int original = this.schemaRule; this.schemaRule = schemaRule; updateControls(); refreshTable(); this.propertyChangeSupport.firePropertyChange( "schemaRule", original, schemaRule); } } } Index: SQLQueryView.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/SQLQueryView.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SQLQueryView.java 16 Apr 2004 19:15:49 -0000 1.1 --- SQLQueryView.java 25 Jun 2004 18:16:46 -0000 1.2 *************** *** 8,11 **** --- 8,13 ---- import org.eclipse.jface.action.Action; + import org.eclipse.jface.action.IToolBarManager; + import org.eclipse.jface.action.Separator; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ExtendedModifyEvent; *************** *** 16,25 **** import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Color; - import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; - import org.eclipse.swt.widgets.Label; - import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; --- 18,24 ---- *************** *** 39,52 **** import com.quantum.sql.parser.SQLLexx; import com.quantum.sql.parser.Token; import com.quantum.view.bookmark.BookmarkNode; import com.quantum.view.bookmark.BookmarkView; public class SQLQueryView extends ViewPart { private ExecuteAction executeAction; private ImportQueryAction importQueryAction; private ExportQueryAction exportQueryAction; - private Label statusImage; - private Label status; - private ProgressBar progress; private StyledText widget; private ToolItem autoCommitItem; --- 38,86 ---- import com.quantum.sql.parser.SQLLexx; import com.quantum.sql.parser.Token; + import com.quantum.util.versioning.VersioningHelper; import com.quantum.view.bookmark.BookmarkNode; import com.quantum.view.bookmark.BookmarkView; public class SQLQueryView extends ViewPart { + private class ClearAction extends Action { + + public ClearAction() { + setImageDescriptor(QuantumPlugin.getImageDescriptor("clear.gif")); + setToolTipText(Messages.getString("sqlqueryview.clear")); + } + + public void run() { + setQuery(""); + } + } + + private class AutoCommitPreferenceAction extends Action { + + public AutoCommitPreferenceAction() { + super(Messages.getString("SQLQueryView.AutoCommit"), SWT.CHECK); + setToolTipText(Messages.getString("SQLQueryView.AutoCommit")); + setImageDescriptor(QuantumPlugin.getImageDescriptor("autocommit.gif")); + } + + public void run() { + Connection connection = null; + try { + // Get the connection + connection = getBookmark().getConnection(); + // If connected (else will throw exception and jump out) switchs the state of the + // autoCommit option of the JDBC driver + MultiSQLServer.getInstance().setAutoCommit( connection, isChecked()); + } catch (NotConnectedException e) { + //Doesn't matter + } + // Update the bookmark and the buttons + updateAutoCommitState(getBookmark(), connection); + } + } + + private ExecuteAction executeAction; private ImportQueryAction importQueryAction; private ExportQueryAction exportQueryAction; private StyledText widget; private ToolItem autoCommitItem; *************** *** 58,63 **** private Color NUMERIC; private Color DEFAULT; ! private long parseTime = 0; ! private long fullTime = 0; public SQLQueryView() { super(); --- 92,97 ---- private Color NUMERIC; private Color DEFAULT; ! private AutoCommitPreferenceAction autoCommitPreferenceAction; ! public SQLQueryView() { super(); *************** *** 66,80 **** String title = "Quantum SQL Query Editor"; - BookmarkNode bookmarkNode = null; Bookmark bookmark = null; Connection con = null; if (BookmarkView.getInstance() != null ) { ! bookmarkNode = BookmarkView.getInstance().getCurrentBookmark(); } - if (bookmarkNode != null) - bookmark = bookmarkNode.getBookmark(); if (bookmark != null) { title = bookmark.getName() + " (" + title + ")"; ! setTitle( title ); try { con = bookmark.getConnection(); --- 100,112 ---- String title = "Quantum SQL Query Editor"; Bookmark bookmark = null; Connection con = null; if (BookmarkView.getInstance() != null ) { ! bookmark = getBookmark(); } if (bookmark != null) { title = bookmark.getName() + " (" + title + ")"; ! VersioningHelper.setPartName(this, title); ! // setPartName("fred"); try { con = bookmark.getConnection(); *************** *** 89,92 **** --- 121,135 ---- } + /** + * @return + */ + private Bookmark getBookmark() { + if (BookmarkView.getInstance() != null ) { + BookmarkNode node = BookmarkView.getInstance().getCurrentBookmark(); + return node == null ? null : node.getBookmark(); + } else { + return null; + } + } public static SQLQueryView getInstance() { return (SQLQueryView) QuantumPlugin.getDefault().getView("com.quantum.view.sqlqueryview"); *************** *** 96,99 **** --- 139,143 ---- public void createPartControl(org.eclipse.swt.widgets.Composite parent) { initActions(); + KEYWORD = new Color(parent.getShell().getDisplay(), 126, 0, 75); STRING_LITERAL = new Color(parent.getShell().getDisplay(), 0, 0, 255); *************** *** 107,153 **** main.setLayout(layout); ToolBar toolbar = new ToolBar(main, SWT.HORIZONTAL); - ToolItem item = new ToolItem(toolbar, SWT.PUSH); - item.setImage(QuantumPlugin.getImage("play.gif")); //$NON-NLS-1$ - item.setToolTipText(Messages.getString("sqlqueryview.executeQuery")); //$NON-NLS-1$ - item.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - public void widgetSelected(SelectionEvent e) { - executeAction.run(); - } - }); - item = new ToolItem(toolbar, SWT.SEPARATOR); - item = new ToolItem(toolbar, SWT.PUSH); - item.setImage(QuantumPlugin.getImage("import.gif")); //$NON-NLS-1$ - item.setToolTipText(Messages.getString("sqlqueryview.importQuery")); //$NON-NLS-1$ - item.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - public void widgetSelected(SelectionEvent e) { - importQueryAction.run(); - } - }); - item = new ToolItem(toolbar, SWT.PUSH); - item.setImage(QuantumPlugin.getImage("export.gif")); //$NON-NLS-1$ - item.setToolTipText(Messages.getString("sqlqueryview.exportQuery")); //$NON-NLS-1$ - item.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - public void widgetSelected(SelectionEvent e) { - exportQueryAction.run(); - } - }); - item = new ToolItem(toolbar, SWT.PUSH); - item.setImage(QuantumPlugin.getImage("clear.gif")); //$NON-NLS-1$ - item.setToolTipText(Messages.getString("sqlqueryview.clear")); //$NON-NLS-1$ - item.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - public void widgetSelected(SelectionEvent e) { - setQuery(""); //$NON-NLS-1$ - } - }); - - item = new ToolItem(toolbar, SWT.SEPARATOR); commitItem = new ToolItem(toolbar, SWT.PUSH); --- 151,154 ---- *************** *** 209,215 **** } }); ! BookmarkNode node = BookmarkView.getInstance().getCurrentBookmark(); ! if (node == null) autoCommitItem.setSelection(true); ! else autoCommitItem.setSelection(node.getBookmark().isAutoCommit()); if (autoCommitItem.getSelection()) { commitItem.setEnabled(false); --- 210,226 ---- } }); ! ! // TODO: BCH -- this is causing some problems during start-up ! Bookmark bookmark = null; ! try { ! bookmark = getBookmark(); ! } catch (NullPointerException e) { ! } ! ! if (bookmark == null) { ! autoCommitItem.setSelection(true); ! } else { ! autoCommitItem.setSelection(bookmark.isAutoCommit()); ! } if (autoCommitItem.getSelection()) { commitItem.setEnabled(false); *************** *** 237,266 **** widget.setLayoutData(gridData); - Composite bottomStatus = new Composite(main, SWT.NONE); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.grabExcessHorizontalSpace = true; - bottomStatus.setLayoutData(gridData); - - GridLayout horizontal = new GridLayout(3, false); - layout.horizontalSpacing = 0; - layout.verticalSpacing = 0; - layout.marginHeight = 0; - layout.marginWidth = 0; - bottomStatus.setLayout(horizontal); - - statusImage = new Label(bottomStatus, SWT.NONE); - status = new Label(bottomStatus, SWT.NONE); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.grabExcessHorizontalSpace = true; - status.setLayoutData(gridData); - - progress = new ProgressBar(bottomStatus, SWT.HORIZONTAL); - - status.setText(Messages.getString("sqlqueryview.done")); //$NON-NLS-1$ - statusImage.setImage(QuantumPlugin.getImage("success.gif")); //$NON-NLS-1$ - progress.setMinimum(0); - IKeyBindingService keyBindingService = getSite().getKeyBindingService(); // TODO: check the version numbers for this method --- 248,251 ---- *************** *** 276,287 **** * to reflect the situation in the connection */ ! protected void updateAutoCommitState(Bookmark bookmark, Connection con) { boolean autoCommit = true; // Calculate the state of the autoCommit option ! if (con != null) { // If we have a connection, the autoCommit state is that of the connection try { ! autoCommit = con.getAutoCommit(); } catch (SQLException e) { // Doesn't matter, we take default --- 261,272 ---- * to reflect the situation in the connection */ ! protected void updateAutoCommitState(Bookmark bookmark, Connection connection) { boolean autoCommit = true; // Calculate the state of the autoCommit option ! if (connection != null) { // If we have a connection, the autoCommit state is that of the connection try { ! autoCommit = connection.getAutoCommit(); } catch (SQLException e) { // Doesn't matter, we take default *************** *** 295,298 **** --- 280,284 ---- // Set the state of the buttons to the correct autoCommit state autoCommitItem.setSelection(autoCommit); + this.autoCommitPreferenceAction.setChecked(autoCommit); if (autoCommitItem.getSelection()) { commitItem.setEnabled(false); *************** *** 303,330 **** } } - public void setProgress(int increment, int max) { - progress.setMaximum(max); - progress.setSelection(increment); - } - private void initActions() { executeAction = new ExecuteAction(); executeAction.init(this); - importQueryAction = new ImportQueryAction(); - importQueryAction.init(this); - exportQueryAction = new ExportQueryAction(); - exportQueryAction.init(this); - } ! public void setStatus(String text) { ! statusImage.setImage(null); ! status.setText(text); } - public void setStatus(Image img, String text) { - statusImage.setImage(img); - status.setText(text); - } - public String getQuery() { return widget.getText(); --- 289,316 ---- } } private void initActions() { + executeAction = new ExecuteAction(); executeAction.init(this); ! IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager(); ! toolBar.add(this.executeAction); ! // toolBar.add(this.importQueryAction); ! // toolBar.add(this.exportQueryAction); ! ! toolBar.add(new ClearAction()); ! ! IActionBars actionBars = getViewSite().getActionBars(); ! this.importQueryAction = new ImportQueryAction(); ! this.importQueryAction.init(this); ! actionBars.getMenuManager().add(this.importQueryAction); ! this.exportQueryAction = new ExportQueryAction(); ! this.exportQueryAction.init(this); ! actionBars.getMenuManager().add(this.exportQueryAction); ! actionBars.getMenuManager().add(new Separator()); ! this.autoCommitPreferenceAction = new AutoCommitPreferenceAction(); ! actionBars.getMenuManager().add(this.autoCommitPreferenceAction); } public String getQuery() { return widget.getText(); *************** *** 405,411 **** //int dirtyEnd = request.start + request.length; StyleRange styleRange; - long startTime = System.currentTimeMillis(); Vector tokens = SQLLexx.parse(text); - long subTime = System.currentTimeMillis(); Vector styles = new Vector(); int min = Integer.MAX_VALUE; --- 391,395 ---- *************** *** 463,469 **** setStyles(ranges, min, max - min); } - long endTime = System.currentTimeMillis(); - parseTime = subTime - startTime; - fullTime = endTime - startTime; } catch (NoSuchElementException e) { // ignore a missing request --- 447,450 ---- Index: JDBCDriverTableViewer.java =================================================================== RCS file: /cvsroot/phpeclipse/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/JDBCDriverTableViewer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** JDBCDriverTableViewer.java 8 Jun 2004 19:53:13 -0000 1.1 --- JDBCDriverTableViewer.java 25 Jun 2004 18:16:46 -0000 1.2 *************** *** 3,9 **** --- 3,22 ---- import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; + import java.util.ArrayList; + import java.util.Collections; + import java.util.Iterator; + import java.util.List; + import org.eclipse.jface.viewers.ILabelProviderListener; + import org.eclipse.jface.viewers.ISelection; + import org.eclipse.jface.viewers.ISelectionChangedListener; + import org.eclipse.jface.viewers.ISelectionProvider; + import org.eclipse.jface.viewers.IStructuredContentProvider; + 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.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; *************** *** 12,15 **** --- 25,30 ---- import com.quantum.Messages; + import com.quantum.QuantumPlugin; + import com.quantum.adapters.AdapterFactory; import com.quantum.model.BookmarkCollection; import com.quantum.model.JDBCDriver; *************** *** 19,44 **** * @author BC */ ! public class JDBCDriverTableViewer implements PropertyChangeListener { private TableViewer tableViewer; public JDBCDriverTableViewer(Composite container) { Table table = new Table(container, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER); table.setHeaderVisible(true); ! for (int i = 0, length = 4; i < length; i++) { TableColumn column = new TableColumn(table, SWT.NONE); column.setText(Messages.getString(getClass(), "driverColumn" + i)); } ! for (int i = 0, length = 4; i < length; i++) { table.getColumn(i).pack(); } this.tableViewer = new TableViewer(table); ! this.tableViewer.setContentProvider(new JDBCDriverContentProvider()); ! this.tableViewer.setLabelProvider(new JDBCDriverLabelProvider()); ! this.tableViewer.setColumnProperties(new String[] { "name", "className", "version", "jarFileName" }); this.tableViewer.setInput(BookmarkCollection.getInstance()); BookmarkCollection.getInstance().addPropertyChangeListener(this); registerWithAllDrivers(); --- 34,122 ---- * @author BC */ ! public class JDBCDriverTableViewer implements PropertyChangeListener, ISelectionProvider { + public class LabelProviderImpl implements ITableLabelProvider { + public Image getColumnImage(Object element, int columnIndex) { + if (columnIndex == 0) { + return QuantumPlugin.getImage("driver.gif"); + } else { + return null; + } + } + public String getColumnText(Object element, int columnIndex) { + String result = null; + switch (columnIndex) { + case 0: + result = ((JDBCDriver) element).getName(); + break; + case 1: + result = ((JDBCDriver) element).getClassName(); + break; + case 2: + String type = ((JDBCDriver) element).getType(); + result = AdapterFactory.getInstance().getAdapter(type).getDisplayName(); + break; + case 3: + result = ((JDBCDriver) element).getVersion(); + break; + case 4: + result = ((JDBCDriver) element).getJarFileName(); + break; + default: + } + return result == null ? "" : result; + } + public void addListener(ILabelProviderListener listener) { + } + public void dispose() { + } + public boolean isLabelProperty(Object element, String property) { + return false; + } + public void removeListener(ILabelProviderListener listener) { + } + } + + public class ContentProviderImpl implements IStructuredContentProvider { + public void dispose() { + } + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + public Object[] getElements(Object inputElement) { + if (inputElement == BookmarkCollection.getInstance()) { + return BookmarkCollection.getInstance().getJDBCDrivers(); + } else { + return null; + } + } + } + private TableViewer tableViewer; + private List listeners = Collections.synchronizedList(new ArrayList()); public JDBCDriverTableViewer(Composite container) { Table table = new Table(container, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER); table.setHeaderVisible(true); ! for (int i = 0, length = 5; i < length; i++) { TableColumn column = new TableColumn(table, SWT.NONE); column.setText(Messages.getString(getClass(), "driverColumn" + i)); } ! for (int i = 0, length = table.getColumnCount(); i < length; i++) { table.getColumn(i).pack(); } this.tableViewer = new TableViewer(table); ! this.tableViewer.setContentProvider(new ContentProviderImpl()); ! this.tableViewer.setLabelProvider(new LabelProviderImpl()); ! this.tableViewer.setColumnProperties(new String[] { "name", "className", "driverType", "version", "jarFileName" }); this.tableViewer.setInput(BookmarkCollection.getInstance()); + this.tableViewer.addSelectionChangedListener(new ISelectionChangedListener(){ + public void selectionChanged(SelectionChangedEvent event) { + fireSelectionChangedEvent(event.getSelection()); + } + }); + BookmarkCollection.getInstance().addPropertyChangeListener(this); registerWithAllDrivers(); *************** *** 50,53 **** --- 128,132 ---- JDBCDriver[] drivers = BookmarkCollection.getInstance().getJDBCDrivers(); for (int i = 0, length = drivers == null ? 0 : drivers.length; i < length; i++) { + drivers[i].removePropertyChangeListener(this); drivers[i].addPropertyChangeListener(this); } *************** *** 59,71 **** return this.tableViewer.getControl(); } - /* (non-Javadoc) - * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent) - */ public void propertyChange(PropertyChangeEvent event) { if ("drivers".equals(event.getPropertyName())) { registerWithAllDrivers(); ! this.tableViewer.refresh(); } else if (event.getSource() instanceof JDBCDriver) { ! this.tableViewer.refresh(event.getSource()); } } --- 138,151 ---- return this.tableViewer.getControl(); } public void propertyChange(PropertyChangeEvent event) { if ("drivers".equals(event.getPropertyName())) { registerWithAllDrivers(); ! if (!this.tableViewer.getControl().isDisposed()) { ! this.tableViewer.refresh(); ! } } else if (event.getSource() instanceof JDBCDriver) { ! if (!this.tableViewer.getControl().isDisposed()) { ! this.tableViewer.refresh(event.getSource()); ! } } } *************** *** 78,80 **** --- 158,182 ---- BookmarkCollection.getInstance().removePropertyChangeListener(this); } + public void addSelectionChangedListener(ISelectionChangedListener listener) { + if (!this.listeners.contains(listener)) { + this.listeners.add(listener); + } + } + public ISelection getSelection() { + return this.tableViewer == null ? null : this.tableViewer.getSelection(); + } + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + this.listeners.remove(listener); + } + public void setSelection(ISelection selection) { + } + /** + * @param selection + */ + protected void fireSelectionChangedEvent(ISelection selection) { + for (Iterator i = this.listeners.iterator(); selection != null && i.hasNext();) { + ISelectionChangedListener listener = (ISelectionChangedListener) i.next(); + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + } } |