X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/JDBCDriverTableViewer.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/JDBCDriverTableViewer.java new file mode 100644 index 0000000..05cd697 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/JDBCDriverTableViewer.java @@ -0,0 +1,80 @@ +package com.quantum.view; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; + +import com.quantum.Messages; +import com.quantum.model.BookmarkCollection; +import com.quantum.model.JDBCDriver; + + +/** + * @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(); + } + /** + * + */ + private void registerWithAllDrivers() { + JDBCDriver[] drivers = BookmarkCollection.getInstance().getJDBCDrivers(); + for (int i = 0, length = drivers == null ? 0 : drivers.length; i < length; i++) { + drivers[i].addPropertyChangeListener(this); + } + } + /** + * @return + */ + public Control getControl() { + 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()); + } + } + + public void dispose() { + JDBCDriver[] drivers = BookmarkCollection.getInstance().getJDBCDrivers(); + for (int i = 0, length = drivers == null ? 0 : drivers.length; i < length; i++) { + drivers[i].removePropertyChangeListener(this); + } + BookmarkCollection.getInstance().removePropertyChangeListener(this); + } +}