[Squirrel-sql-commits] sql12/app/src/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttre
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
Update of /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9983/app/src/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree Modified Files: ObjectTree.java ObjectTreeModel.java ObjectTreePanel.java Added Files: ObjectTreeCellRenderer.java Log Message: Oliver Jehle's patch for Object Tree Filter, some enhancements Index: ObjectTreePanel.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreePanel.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** ObjectTreePanel.java 18 Jul 2005 20:07:00 -0000 1.23 --- ObjectTreePanel.java 25 Sep 2005 06:57:06 -0000 1.24 *************** *** 20,80 **** * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - import java.awt.BorderLayout; - import java.awt.Component; - import java.awt.Dimension; - import java.beans.PropertyChangeEvent; - import java.beans.PropertyChangeListener; - import java.util.HashMap; - import java.util.Iterator; - import java.util.Map; - - import javax.swing.*; - import javax.swing.event.ChangeEvent; - import javax.swing.event.ChangeListener; - import javax.swing.event.TreeModelListener; - import javax.swing.event.TreeSelectionEvent; - import javax.swing.event.TreeSelectionListener; - import javax.swing.tree.TreePath; - import javax.swing.tree.TreeNode; - - import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; - import net.sourceforge.squirrel_sql.fw.id.IIdentifier; - import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectType; - import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; - import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData; - import net.sourceforge.squirrel_sql.fw.util.log.ILogger; - import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; - import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetUpdateableTableModelListener; - import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.DatabaseObjectInfoTab; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.IObjectTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.CatalogsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.ConnectionStatusTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.DataTypesTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.KeywordsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.NumericFunctionsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.SchemasTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.StringFunctionsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.SystemFunctionsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.TableTypesTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.TimeDateFunctionsTab; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.procedure.ProcedureColumnsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ColumnPriviligesTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ColumnsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ContentsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ExportedKeysTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.ImportedKeysTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.IndexesTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.PrimaryKeyTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.RowCountTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.RowIDTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.TablePriviligesTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.VersionColumnsTab; import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties; import net.sourceforge.squirrel_sql.client.session.sqlfilter.SQLFilterClauses; import net.sourceforge.squirrel_sql.client.util.IdentifierFactory; /** * This is the panel for the Object Tree tab. --- 20,52 ---- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; + import net.sourceforge.squirrel_sql.client.session.action.FilterObjectsAction; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.DatabaseObjectInfoTab; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.IObjectTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.*; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.procedure.ProcedureColumnsTab; ! import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.table.*; import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties; import net.sourceforge.squirrel_sql.client.session.sqlfilter.SQLFilterClauses; import net.sourceforge.squirrel_sql.client.util.IdentifierFactory; + import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetUpdateableTableModelListener; + import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; + import net.sourceforge.squirrel_sql.fw.id.IIdentifier; + import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectType; + import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; + import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData; + import net.sourceforge.squirrel_sql.fw.util.log.ILogger; + import net.sourceforge.squirrel_sql.fw.util.log.LoggerController; + + import javax.swing.*; + import javax.swing.event.*; + import javax.swing.tree.TreePath; + import java.awt.*; + import java.beans.PropertyChangeEvent; + import java.beans.PropertyChangeListener; + import java.util.HashMap; + import java.util.Iterator; + import java.util.Map; /** * This is the panel for the Object Tree tab. *************** *** 203,207 **** // Register tabs to display in the details panel for UDT nodes. addDetailTab(DatabaseObjectType.UDT, new DatabaseObjectInfoTab()); ! } private void addDetailTabForTableLikeObjects(DatabaseObjectType type) --- 175,182 ---- // Register tabs to display in the details panel for UDT nodes. addDetailTab(DatabaseObjectType.UDT, new DatabaseObjectInfoTab()); ! ! ! addToPopup(DatabaseObjectType.SESSION, _session.getApplication().getActionCollection().get(FilterObjectsAction.class)); ! } private void addDetailTabForTableLikeObjects(DatabaseObjectType type) Index: ObjectTreeModel.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTreeModel.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ObjectTreeModel.java 18 Jul 2005 20:07:00 -0000 1.6 --- ObjectTreeModel.java 25 Sep 2005 06:57:06 -0000 1.7 *************** *** 325,342 **** } private static final class RootNode extends ObjectTreeNode ! { ! RootNode(ISession session) ! { ! super(session, createDbo(session)); ! } ! private static final IDatabaseObjectInfo createDbo(ISession session) ! { ! return new DatabaseObjectInfo(null, null, session.getAlias().getName(), ! DatabaseObjectType.SESSION, ! session.getSQLConnection().getSQLMetaData()); ! } ! } private static final class DatabaseObjectTypeComparator implements Comparator --- 325,347 ---- } + public boolean isRootNode(Object node) + { + return node instanceof RootNode; + } + private static final class RootNode extends ObjectTreeNode ! { ! RootNode(ISession session) ! { ! super(session, createDbo(session)); ! } ! private static final IDatabaseObjectInfo createDbo(ISession session) ! { ! return new DatabaseObjectInfo(null, null, session.getAlias().getName(), ! DatabaseObjectType.SESSION, ! session.getSQLConnection().getSQLMetaData()); ! } ! } private static final class DatabaseObjectTypeComparator implements Comparator Index: ObjectTree.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/ObjectTree.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ObjectTree.java 25 Sep 2005 02:56:14 -0000 1.15 --- ObjectTree.java 25 Sep 2005 06:57:06 -0000 1.16 *************** *** 20,23 **** --- 20,24 ---- import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; + import java.awt.*; import java.sql.SQLException; import java.util.ArrayList; *************** *** 40,43 **** --- 41,45 ---- import javax.swing.tree.TreePath; import javax.swing.tree.DefaultTreeCellRenderer; + import javax.swing.tree.TreeCellRenderer; import net.sourceforge.squirrel_sql.fw.gui.CursorChanger; *************** *** 176,179 **** --- 178,184 ---- } }); + + setCellRenderer(new ObjectTreeCellRenderer(_model, _session)); + } /** --- NEW FILE: ObjectTreeCellRenderer.java --- package net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties; import net.sourceforge.squirrel_sql.client.resources.SquirrelResources; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.*; import java.awt.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; public class ObjectTreeCellRenderer extends DefaultTreeCellRenderer { private ObjectTreeModel _model; private ISession _session; private JPanel _pnlFilterRootNodeRendererComponent; private JLabel _filterHint; GridBagConstraints _gbcLeft = new GridBagConstraints(0,0,1,1,1,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0); GridBagConstraints _gbcRight = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0); public ObjectTreeCellRenderer(ObjectTreeModel model, ISession session) { _model = model; _session = session; _session.getProperties().addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { onPropertyChanged(evt); } }); initFilter(); _pnlFilterRootNodeRendererComponent = new JPanel(new GridBagLayout()); } private void onPropertyChanged(PropertyChangeEvent evt) { if(SessionProperties.IPropertyNames.OBJECT_FILTER.equals(evt.getPropertyName())) { initFilter(); } } private void initFilter() { String filter = _session.getProperties().getObjectFilter(); if(null != filter && 0 < filter.trim().length()) { _filterHint = new JLabel("= " + filter); final SquirrelResources rsrc = _session.getApplication().getResources(); final ImageIcon icon = rsrc.getIcon("Filter"); _filterHint.setIcon(icon); } else { _filterHint = null; } _model.nodeChanged(_model.getRootObjectTreeNode()); } public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { JLabel ret = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); if(null != _filterHint && _model.isRootNode(value)) { _pnlFilterRootNodeRendererComponent.removeAll(); _pnlFilterRootNodeRendererComponent.setBackground(new Color(255,204,204)); _pnlFilterRootNodeRendererComponent.add(ret, _gbcLeft); _pnlFilterRootNodeRendererComponent.add(ret); _pnlFilterRootNodeRendererComponent.add(_filterHint, _gbcRight); _pnlFilterRootNodeRendererComponent.add(_filterHint); return _pnlFilterRootNodeRendererComponent; } else { return ret; } } } |