ca.sqlpower.architect.swingui
Class DBTree

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTree
                  extended by ca.sqlpower.architect.swingui.DBTree
All Implemented Interfaces:
java.awt.dnd.DragSourceListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.Scrollable

public class DBTree
extends javax.swing.JTree
implements java.awt.dnd.DragSourceListener

See Also:
Serialized Form

Nested Class Summary
protected  class DBTree.AddDBCSAction
          When invoked, this action adds the DBCS that was given in the constructor to the DBTree's model.
protected  class DBTree.CompareToCurrentAction
           
protected  class DBTree.DBCSPropertiesAction
          The DBCSPropertiesAction responds to the "Properties" item in the popup menu.
static class DBTree.DBTreeDragGestureListener
          Exports the SQLObject which was under the pointer in a DBTree when the drag gesture started.
protected  class DBTree.NewDBCSAction
          When invoked, this action creates a new DBCS, sets the panelHoldsNewDBCS flag, and pops up the propDialog to edit the new DBCS.
protected  class DBTree.RemoveDBCSAction
          The RemoveDBCSAction removes the currently-selected database connection from the project.
protected  class DBTree.SelectAllChildTablesAction
          Adds to selection all child tables of the current table
protected  class DBTree.SetConnAsTargetDB
           
protected  class DBTree.ShowInPlayPenAction
           
 
Nested classes/interfaces inherited from class javax.swing.JTree
javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  javax.swing.Action collapseAllAction
           
protected  javax.swing.JMenu dbcsMenu
           
protected  DBTree.DBCSPropertiesAction dbcsPropertiesAction
           
protected  java.awt.dnd.DragSource ds
           
protected  javax.swing.Action expandAllAction
           
protected  DBTree.NewDBCSAction newDBCSAction
           
protected  boolean panelHoldsNewDBCS
          This is set to true when the SPDataSourcePanel is editting a new connection spec.
protected  javax.swing.JPopupMenu popup
           
protected  DBTree.RemoveDBCSAction removeDBCSAction
           
protected  DBTree.SelectAllChildTablesAction selectAllChildTablesAction
           
protected  DBTree.SetConnAsTargetDB setConnAsTargetDB
           
protected  DBTree.ShowInPlayPenAction showInPlayPenAction
           
protected  ca.sqlpower.swingui.SPDataSourcePanel spDataSourcePanel
           
 
Fields inherited from class javax.swing.JTree
ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DBTree(ArchitectSwingSession session)
           
 
Method Summary
 void clearNonPlayPenSelections()
          Removes all selections of objects that are not represented on the playpen.
 boolean dbcsAlreadyExists(ca.sqlpower.sql.SPDataSource spec)
          Before adding a new connection to the SwingUIProject, check to see if it exists as a connection in the project (which means they're in this tree's model).
 void dragDropEnd(java.awt.dnd.DragSourceDropEvent dsde)
           
 void dragEnter(java.awt.dnd.DragSourceDragEvent dsde)
           
 void dragExit(java.awt.dnd.DragSourceEvent dse)
           
 void dragOver(java.awt.dnd.DragSourceDragEvent dsde)
           
 void dropActionChanged(java.awt.dnd.DragSourceDragEvent dsde)
           
 void expandPath(javax.swing.tree.TreePath tp)
           
 java.util.List getDatabaseList()
          Returns a list of all the databases in this DBTree's model.
 ca.sqlpower.sql.SPDataSource getDuplicateDbcs(ca.sqlpower.sql.SPDataSource spec)
          Pass in a spec, and look for a duplicate in the list of DBCS objects in User Settings.
 int getRowForNode(SQLObject node)
           
 javax.swing.tree.TreePath getTreePathForNode(SQLObject obj)
          Returns the TreePath built from the getParent() of the given SQLObject.
protected  boolean isTargetDatabaseChild(javax.swing.tree.TreePath tp)
          Checks to see if the given tree path contains the playpen SQLDatabase.
protected  boolean isTargetDatabaseNode(javax.swing.tree.TreePath tp)
          Checks to see if the SQLDatabase reference from the the DBTree is the same as the one held by the PlayPen.
protected  javax.swing.JPopupMenu refreshMenu(javax.swing.tree.TreePath p)
          Creates a context sensitive menu for managing Database Connections.
 javax.swing.JMenu setupDBCSMenu()
          Returns a new updated connections menu.
 void setupKeyboardActions()
           
 
Methods inherited from class javax.swing.JTree
addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ds

protected java.awt.dnd.DragSource ds

popup

protected javax.swing.JPopupMenu popup

dbcsMenu

protected javax.swing.JMenu dbcsMenu

spDataSourcePanel

protected ca.sqlpower.swingui.SPDataSourcePanel spDataSourcePanel

newDBCSAction

protected DBTree.NewDBCSAction newDBCSAction

dbcsPropertiesAction

protected DBTree.DBCSPropertiesAction dbcsPropertiesAction

removeDBCSAction

protected DBTree.RemoveDBCSAction removeDBCSAction

showInPlayPenAction

protected DBTree.ShowInPlayPenAction showInPlayPenAction

collapseAllAction

protected javax.swing.Action collapseAllAction

expandAllAction

protected javax.swing.Action expandAllAction

setConnAsTargetDB

protected DBTree.SetConnAsTargetDB setConnAsTargetDB

selectAllChildTablesAction

protected DBTree.SelectAllChildTablesAction selectAllChildTablesAction

panelHoldsNewDBCS

protected boolean panelHoldsNewDBCS
This is set to true when the SPDataSourcePanel is editting a new connection spec. The dialog's "ok" and "cancel" button handlers need to do different things for new and existing specs.

Constructor Detail

DBTree

public DBTree(ArchitectSwingSession session)
       throws ArchitectException
Throws:
ArchitectException
Method Detail

getDatabaseList

public java.util.List getDatabaseList()
Returns a list of all the databases in this DBTree's model.


dbcsAlreadyExists

public boolean dbcsAlreadyExists(ca.sqlpower.sql.SPDataSource spec)
                          throws ArchitectException
Before adding a new connection to the SwingUIProject, check to see if it exists as a connection in the project (which means they're in this tree's model).

Throws:
ArchitectException

getDuplicateDbcs

public ca.sqlpower.sql.SPDataSource getDuplicateDbcs(ca.sqlpower.sql.SPDataSource spec)
Pass in a spec, and look for a duplicate in the list of DBCS objects in User Settings. If we find one, return a handle to it. If we don't find one, return null.


getRowForNode

public int getRowForNode(SQLObject node)

expandPath

public void expandPath(javax.swing.tree.TreePath tp)
Overrides:
expandPath in class javax.swing.JTree

dragEnter

public void dragEnter(java.awt.dnd.DragSourceDragEvent dsde)
Specified by:
dragEnter in interface java.awt.dnd.DragSourceListener

dragOver

public void dragOver(java.awt.dnd.DragSourceDragEvent dsde)
Specified by:
dragOver in interface java.awt.dnd.DragSourceListener

dropActionChanged

public void dropActionChanged(java.awt.dnd.DragSourceDragEvent dsde)
Specified by:
dropActionChanged in interface java.awt.dnd.DragSourceListener

dragExit

public void dragExit(java.awt.dnd.DragSourceEvent dse)
Specified by:
dragExit in interface java.awt.dnd.DragSourceListener

dragDropEnd

public void dragDropEnd(java.awt.dnd.DragSourceDropEvent dsde)
Specified by:
dragDropEnd in interface java.awt.dnd.DragSourceListener

refreshMenu

protected javax.swing.JPopupMenu refreshMenu(javax.swing.tree.TreePath p)
Creates a context sensitive menu for managing Database Connections. There are several modes of operations:
  1. click on target database. the user can modify the properties manually, or select a target from the ones defined in user settings. If there is nothing defined, then that option is disabled.
  2. click on an DBCS reference in the DBTree. Bring up the dialog that allows the user to modify this connection.
  3. click on the background of the DBTree. Allow the user to select DBCS from a list, or create a new DBCS from scratch (which will be added to the User Settings list of DBCS objects).
  4. click on a schema in the tree. Allow the user to quickly compare the contents of the playpen with the selected schema.

FIXME: add in column, table, exported key, imported keys menus; you can figure out where the click came from by checking the TreePath.


isTargetDatabaseNode

protected boolean isTargetDatabaseNode(javax.swing.tree.TreePath tp)
Checks to see if the SQLDatabase reference from the the DBTree is the same as the one held by the PlayPen. If it is, we are looking at the Target Database.


isTargetDatabaseChild

protected boolean isTargetDatabaseChild(javax.swing.tree.TreePath tp)
Checks to see if the given tree path contains the playpen SQLDatabase.

Returns:
True if tp contains the playpen (target) database. Note that this is not stritcly limited to children of the target database: it will return true if tp ends at the target database node itself.

setupKeyboardActions

public void setupKeyboardActions()

clearNonPlayPenSelections

public void clearNonPlayPenSelections()
Removes all selections of objects that are not represented on the playpen.


getTreePathForNode

public javax.swing.tree.TreePath getTreePathForNode(SQLObject obj)
Returns the TreePath built from the getParent() of the given SQLObject.

Parameters:
obj - SQLObject to build TreePath upon.
Returns:
TreePath for given object.

setupDBCSMenu

public javax.swing.JMenu setupDBCSMenu()
Returns a new updated connections menu.



Copyright © 2003-2007 SQL Power Group Inc. www.sqlpower.ca