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); } }