synchronized from quantum plugin
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / view / JDBCDriverTableViewer.java
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 (file)
index 0000000..05cd697
--- /dev/null
@@ -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);
+       }
+}