--- /dev/null
+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);
+ }
+}