com.dlsc.flexgantt.swing.layer
Class LayerContainerScrollPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JScrollPane
                  extended by com.dlsc.flexgantt.swing.layer.LayerContainerScrollPane
All Implemented Interfaces:
IDatelineModelListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.ScrollPaneConstants

public class LayerContainerScrollPane
extends javax.swing.JScrollPane
implements IDatelineModelListener, java.beans.PropertyChangeListener

A scrollpane customized for use with a layer container and a timeline. The scrollpane implements various listeners to react to changes in the dateline model, or the Gantt chart. The scrollpane uses a primary flag, which tells the scrollpane whether it is used to display the timeline or not (more generally: whether it is the scrollpane that is used at the top of the Gantt chart).

Since:
1.0
Author:
Dirk Lemmermann
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JScrollPane
javax.swing.JScrollPane.AccessibleJScrollPane, javax.swing.JScrollPane.ScrollBar
 
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
 
Fields inherited from class javax.swing.JScrollPane
columnHeader, horizontalScrollBar, horizontalScrollBarPolicy, lowerLeft, lowerRight, rowHeader, upperLeft, upperRight, verticalScrollBar, verticalScrollBarPolicy, viewport
 
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 javax.swing.ScrollPaneConstants
COLUMN_HEADER, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_POLICY, LOWER_LEADING_CORNER, LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, LOWER_TRAILING_CORNER, ROW_HEADER, UPPER_LEADING_CORNER, UPPER_LEFT_CORNER, UPPER_RIGHT_CORNER, UPPER_TRAILING_CORNER, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, VERTICAL_SCROLLBAR_POLICY, VIEWPORT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
LayerContainerScrollPane(LayerContainer lc, LayerContainerRowHeader rowHeader, Timeline timeline, boolean primary)
          Constructs a new layer container scrollpane.
 
Method Summary
 void datelineModelChanged(DatelineModelEvent e)
          The listener's callback method that gets invoked when the model's time span or time zone changes.
 void datelineModelWillChange(DatelineModelEvent evt)
          The listener's callback method that gets invoked when the model's time span or time zone will change.
 AbstractGanttChart getGanttChart()
           
 javax.swing.JComponent getGridControl()
          Returns the grid control panel that gets displayed at the bottom of the layer container to the left of the horizontal scrollbar (if the scrollbar is visible).
 LayerContainer getLayerContainer()
          Returns the layer container wrapped by the scrollpane.
 LayerContainerRowHeader getLayerContainerRowHeader()
           
 java.awt.Dimension getMinimumSize()
          The scrollpane's minimum size depends on the row header, the column header or the horizontal scrollpane.
 Timeline getTimeline()
          Returns the timeline that is displayed as the column header view if the scrollpane is the primary one.
 boolean isPrimary()
          Returns TRUE if the scrollpane is the primary scrollpane (displays the timeline and navigation control).
 void propertyChange(java.beans.PropertyChangeEvent evt)
           
 
Methods inherited from class javax.swing.JScrollPane
createHorizontalScrollBar, createVerticalScrollBar, createViewport, getAccessibleContext, getColumnHeader, getCorner, getHorizontalScrollBar, getHorizontalScrollBarPolicy, getRowHeader, getUI, getUIClassID, getVerticalScrollBar, getVerticalScrollBarPolicy, getViewport, getViewportBorder, getViewportBorderBounds, isValidateRoot, isWheelScrollingEnabled, paramString, setColumnHeader, setColumnHeaderView, setComponentOrientation, setCorner, setHorizontalScrollBar, setHorizontalScrollBarPolicy, setLayout, setRowHeader, setRowHeaderView, setUI, setVerticalScrollBar, setVerticalScrollBarPolicy, setViewport, setViewportBorder, setViewportView, setWheelScrollingEnabled, 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, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, 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, 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, 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
 

Constructor Detail

LayerContainerScrollPane

public LayerContainerScrollPane(LayerContainer lc,
                                LayerContainerRowHeader rowHeader,
                                Timeline timeline,
                                boolean primary)
Constructs a new layer container scrollpane.

Parameters:
lc - the layer container that serves as a viewport view
rowHeader - the row header shown to the left of the layer container
timeline - the timeline that will be added as a column header view
primary - a flag indicating whether this scrollpane is the primary one (will be used at the top of the Gantt chart and displays the timeline and navigation control)
Since:
1.0
Method Detail

getLayerContainer

public LayerContainer getLayerContainer()
Returns the layer container wrapped by the scrollpane.

Returns:
the layer container
Since:
1.0

isPrimary

public boolean isPrimary()
Returns TRUE if the scrollpane is the primary scrollpane (displays the timeline and navigation control).

Returns:
TRUE if the scrollpane is the primary layer container scrollpane
Since:
1.0

getMinimumSize

public java.awt.Dimension getMinimumSize()
The scrollpane's minimum size depends on the row header, the column header or the horizontal scrollpane. If the scrollpane is the primary scrollpane then the minimum height is equal to the height of the timeline. If the scrollpane is not the primary one, then the minimum height is equal to the preferred height of the horizontal scrollbar. The minimum width is always equal to the preferred width of the vertical scrollbar. These constraints ensure that the timeline and the scrollbars are always visible.

Overrides:
getMinimumSize in class javax.swing.JComponent
Since:
1.0
See Also:
JComponent.getMinimumSize()

getTimeline

public Timeline getTimeline()
Returns the timeline that is displayed as the column header view if the scrollpane is the primary one.

Returns:
the scrollpane's timeline (if scrollpane is the primary one)
Since:
1.0

datelineModelWillChange

public void datelineModelWillChange(DatelineModelEvent evt)
Description copied from interface: IDatelineModelListener
The listener's callback method that gets invoked when the model's time span or time zone will change.

Specified by:
datelineModelWillChange in interface IDatelineModelListener
Parameters:
evt - the event that occured on the dateline

datelineModelChanged

public void datelineModelChanged(DatelineModelEvent e)
Description copied from interface: IDatelineModelListener
The listener's callback method that gets invoked when the model's time span or time zone changes.

Specified by:
datelineModelChanged in interface IDatelineModelListener
Parameters:
e - the event that occured on the dateline

getGridControl

public javax.swing.JComponent getGridControl()
Returns the grid control panel that gets displayed at the bottom of the layer container to the left of the horizontal scrollbar (if the scrollbar is visible). The grid control panel gets used to change the granularity of the virutal grid that gets used during drag & drop operations.

Returns:
the grid control panel
Since:
1.0

getLayerContainerRowHeader

public LayerContainerRowHeader getLayerContainerRowHeader()
Returns:
the rowHeader
Since:
1.0

getGanttChart

public AbstractGanttChart getGanttChart()
Returns:
the ganttChart
Since:
1.0

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)
Specified by:
propertyChange in interface java.beans.PropertyChangeListener