Gantt 2.3

com.ontimize.gantt.chart
Class GanttChartComponent

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended bycom.ontimize.gantt.chart.GanttChartComponent
All Implemented Interfaces:
java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.Scrollable, java.io.Serializable, javax.swing.event.TreeExpansionListener, javax.swing.event.TreeModelListener

public class GanttChartComponent
extends javax.swing.JComponent
implements javax.swing.Scrollable, javax.swing.event.TreeModelListener, javax.swing.event.TreeExpansionListener

This class implements a Gantt Chart representation. All chart representations are managed from here task colors, work packages drawings or date ranges to draw.

Notes:

Render to draw work packages (phases and tasks) is DefaultTaskRenderer, but it is configurable with method setTaskRenderer(TaskRenderer). Moreover, model for tasks is defined by TaskModel class.

Author:
Imatia Innovation
See Also:
Serialized Form

Nested Class Summary
protected  class GanttChartComponent.MouseHandler
           
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  int arrowWidth
           
protected  java.awt.Color borderTaskColor
           
protected static java.lang.String COMPLETED
           
protected  java.awt.Color currentDateLineColor
           
static long DAY_IN_MILLIS
           
static java.awt.Color defaultMilestoneColor
           
protected  java.text.SimpleDateFormat df
           
protected  boolean editable
           
protected static java.lang.String END_DATE_TOOLTIP
           
protected  long endDate
           
protected  java.awt.Color evenColor
           
protected  GanttHeader ganttHeader
           
protected  java.awt.Color intertaskLineColor
           
protected  java.awt.Color lineColor
           
protected  GanttChartComponent.MouseHandler mhandler
           
protected  java.awt.Color oddColor
           
protected  java.awt.Color parentTaskBGColor
           
protected  int parentTaskHeightPixels
           
protected  double pixelsByDayPref
           
protected  RelationBuilder relationbuilder
           
protected  RelationPaintManager relationPaintManager
           
protected  TaskRenderer renderer
           
protected static java.lang.String START_DATE_TOOLTIP
           
protected  long startDate
           
protected  java.awt.Color taskBGColor
           
protected  java.awt.Color taskCompleteColor
           
protected  int taskCompleteMargin
           
protected  java.awt.Color taskFGColor
           
protected  javax.swing.event.EventListenerList taskListenerList
           
protected  TaskModel taskModel
           
protected  TitleTaskRenderer titleRenderer
           
protected  java.lang.String tooltipText
           
protected  javax.swing.JTree tree
           
 
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
GanttChartComponent(TaskModel taskModel, javax.swing.JTree tree)
           
 
Method Summary
 void addNotify()
           
 void addTaskListener(TaskListener l)
           
 void checkBounds()
           
 void clear()
           
protected  void configureEnclosingScrollPane()
           
protected  int countTasks()
           
protected  int countTotalChildren(Task node)
           
protected  int countVisibleChildren(Task node)
           
protected  int countVisibleTasks()
           
protected  void fireTaskChange(TaskEvent taskEvent)
           
 long getEndDate()
           
 java.awt.Component getGanttHeader()
           
protected  int getMaxDescriptionSize(Task node)
           
 long[] getMinimumBounds()
           
 javax.swing.tree.TreeModel getModel()
           
 double getPixelsByDay()
           
protected  int getPreferredChartWidth()
           
 java.awt.Dimension getPreferredScrollableViewportSize()
           
 java.awt.Dimension getPreferredSize()
           
 RelationBuilder getRelationBuilder()
           
protected  int getRowForTask(java.util.Hashtable keysValues)
           
protected  int getRowForTask(int id)
           
 int getRowForTask(Task tr)
           
 int getScrollableBlockIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
           
 boolean getScrollableTracksViewportHeight()
           
 boolean getScrollableTracksViewportWidth()
           
 int getScrollableUnitIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
           
 long getStartDate()
           
protected  Task getTask(int id)
           
 Task getTaskAt(java.awt.event.MouseEvent e)
           
protected  int getTaskCount()
           
 int getTaskHeight()
           
 int getTaskHeightPixels()
           
 Task getTaskInRow(int row)
           
 int getTaskMargin()
           
 TaskRenderer getTaskRenderer()
           
protected  java.util.ArrayList getTasks()
           
protected  void getTasks(Task task, java.util.ArrayList l)
           
 java.lang.String getTooltipText()
           
 java.lang.String getToolTipText(java.awt.event.MouseEvent e)
           
protected  void installMouseHandler()
           
 boolean isEditable()
           
protected  boolean isExpanded(Task task)
           
protected  long maxEndDate(Task node)
           
protected  long minStartDate(Task node)
           
protected  void paintBackground(java.awt.Graphics g)
           
 void paintComponent(java.awt.Graphics g)
           
protected  void paintCurrentDate(java.awt.Graphics g)
           
 void paintPercentComplete(java.awt.Graphics g, Task t)
           
 void paintRelations(java.awt.Graphics g)
           
protected  int paintRelations(java.awt.Graphics g, Task task, int hoffset)
           
protected  void paintTasks(java.awt.Graphics g)
           
protected  int paintTasks(java.awt.Graphics g, Task task, int hoffset)
           
 int pixelEnd(Task t)
           
 int pixelStart(Task t)
           
protected  long pixelsToTime(int pixels)
           
protected  long pixelsToTime(int pixels, long elapsed)
           
protected  long pixelsToTimeDiff(int pixels)
           
protected  int pixelTime(long time)
           
protected  int pixelWidth(Task t)
           
protected  void recalculateBounds()
          recalculateBounds
 void removeTaskListener(TaskListener l)
           
 void repaint()
           
 void seeAllBounds()
           
 void setEditable(boolean editable)
           
 void setJTree(javax.swing.JTree tree)
           
 void setModel(TaskModel newModel)
           
 void setPixelsByDay(double p)
           
 void setRelationBuilder(RelationBuilder relationbuilder)
           
 void setTaskHeight(int height)
           
 void setTaskHeightPixels(int taskHeightPixels)
           
 void setTaskMargin(int taskMargin)
           
 void setTaskRenderer(TaskRenderer renderer)
           
 void setTimeBounds(long start, long end)
           
 void setTooltipText(java.lang.String tooltipText)
           
 void treeCollapsed(javax.swing.event.TreeExpansionEvent event)
           
 void treeExpanded(javax.swing.event.TreeExpansionEvent event)
           
 void treeNodesChanged(javax.swing.event.TreeModelEvent e)
           
 void treeNodesInserted(javax.swing.event.TreeModelEvent e)
           
 void treeNodesRemoved(javax.swing.event.TreeModelEvent e)
           
 void treeStructureChanged(javax.swing.event.TreeModelEvent e)
           
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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

taskModel

protected TaskModel taskModel

tree

protected javax.swing.JTree tree

relationPaintManager

protected RelationPaintManager relationPaintManager

oddColor

protected java.awt.Color oddColor

evenColor

protected java.awt.Color evenColor

taskBGColor

protected java.awt.Color taskBGColor

parentTaskBGColor

protected java.awt.Color parentTaskBGColor

taskFGColor

protected java.awt.Color taskFGColor

taskCompleteColor

protected java.awt.Color taskCompleteColor

defaultMilestoneColor

public static java.awt.Color defaultMilestoneColor

intertaskLineColor

protected java.awt.Color intertaskLineColor

currentDateLineColor

protected java.awt.Color currentDateLineColor

borderTaskColor

protected java.awt.Color borderTaskColor

lineColor

protected java.awt.Color lineColor

parentTaskHeightPixels

protected int parentTaskHeightPixels

taskCompleteMargin

protected int taskCompleteMargin

startDate

protected long startDate

endDate

protected long endDate

pixelsByDayPref

protected double pixelsByDayPref

arrowWidth

protected int arrowWidth

tooltipText

protected java.lang.String tooltipText

ganttHeader

protected GanttHeader ganttHeader

relationbuilder

protected RelationBuilder relationbuilder

df

protected java.text.SimpleDateFormat df

editable

protected boolean editable

DAY_IN_MILLIS

public static final long DAY_IN_MILLIS
See Also:
Constant Field Values

START_DATE_TOOLTIP

protected static final java.lang.String START_DATE_TOOLTIP
See Also:
Constant Field Values

END_DATE_TOOLTIP

protected static final java.lang.String END_DATE_TOOLTIP
See Also:
Constant Field Values

COMPLETED

protected static final java.lang.String COMPLETED
See Also:
Constant Field Values

mhandler

protected GanttChartComponent.MouseHandler mhandler

renderer

protected TaskRenderer renderer

titleRenderer

protected TitleTaskRenderer titleRenderer

taskListenerList

protected javax.swing.event.EventListenerList taskListenerList
Constructor Detail

GanttChartComponent

public GanttChartComponent(TaskModel taskModel,
                           javax.swing.JTree tree)
Method Detail

installMouseHandler

protected void installMouseHandler()

getToolTipText

public java.lang.String getToolTipText(java.awt.event.MouseEvent e)

getTaskHeight

public int getTaskHeight()

setTaskHeight

public void setTaskHeight(int height)

getTaskAt

public Task getTaskAt(java.awt.event.MouseEvent e)

addNotify

public void addNotify()

configureEnclosingScrollPane

protected void configureEnclosingScrollPane()

getGanttHeader

public java.awt.Component getGanttHeader()

setJTree

public void setJTree(javax.swing.JTree tree)

setModel

public void setModel(TaskModel newModel)

setEditable

public void setEditable(boolean editable)

isEditable

public boolean isEditable()

getModel

public javax.swing.tree.TreeModel getModel()

recalculateBounds

protected void recalculateBounds()
recalculateBounds


setPixelsByDay

public void setPixelsByDay(double p)

getPixelsByDay

public double getPixelsByDay()

setTimeBounds

public void setTimeBounds(long start,
                          long end)

seeAllBounds

public void seeAllBounds()

clear

public void clear()

getStartDate

public long getStartDate()

getEndDate

public long getEndDate()

getTooltipText

public java.lang.String getTooltipText()

setTooltipText

public void setTooltipText(java.lang.String tooltipText)

minStartDate

protected long minStartDate(Task node)

maxEndDate

protected long maxEndDate(Task node)

getMaxDescriptionSize

protected int getMaxDescriptionSize(Task node)

paintComponent

public void paintComponent(java.awt.Graphics g)

countVisibleChildren

protected int countVisibleChildren(Task node)

countTotalChildren

protected int countTotalChildren(Task node)

countVisibleTasks

protected int countVisibleTasks()

countTasks

protected int countTasks()

getPreferredChartWidth

protected int getPreferredChartWidth()

pixelsToTime

protected long pixelsToTime(int pixels,
                            long elapsed)

pixelsToTime

protected long pixelsToTime(int pixels)

pixelsToTimeDiff

protected long pixelsToTimeDiff(int pixels)

getPreferredSize

public java.awt.Dimension getPreferredSize()

paintBackground

protected void paintBackground(java.awt.Graphics g)

getRowForTask

public int getRowForTask(Task tr)

getRowForTask

protected int getRowForTask(int id)

getRowForTask

protected int getRowForTask(java.util.Hashtable keysValues)

getTaskInRow

public Task getTaskInRow(int row)

getTask

protected Task getTask(int id)

getTaskCount

protected int getTaskCount()

paintCurrentDate

protected void paintCurrentDate(java.awt.Graphics g)

paintTasks

protected void paintTasks(java.awt.Graphics g)

paintRelations

public void paintRelations(java.awt.Graphics g)

paintRelations

protected int paintRelations(java.awt.Graphics g,
                             Task task,
                             int hoffset)

getTasks

protected java.util.ArrayList getTasks()

getTasks

protected void getTasks(Task task,
                        java.util.ArrayList l)

isExpanded

protected boolean isExpanded(Task task)

paintTasks

protected int paintTasks(java.awt.Graphics g,
                         Task task,
                         int hoffset)

paintPercentComplete

public void paintPercentComplete(java.awt.Graphics g,
                                 Task t)

pixelWidth

protected int pixelWidth(Task t)

pixelStart

public int pixelStart(Task t)

pixelEnd

public int pixelEnd(Task t)

pixelTime

protected int pixelTime(long time)

getScrollableTracksViewportHeight

public boolean getScrollableTracksViewportHeight()
Specified by:
getScrollableTracksViewportHeight in interface javax.swing.Scrollable

getScrollableTracksViewportWidth

public boolean getScrollableTracksViewportWidth()
Specified by:
getScrollableTracksViewportWidth in interface javax.swing.Scrollable

getPreferredScrollableViewportSize

public java.awt.Dimension getPreferredScrollableViewportSize()
Specified by:
getPreferredScrollableViewportSize in interface javax.swing.Scrollable

getScrollableBlockIncrement

public int getScrollableBlockIncrement(java.awt.Rectangle visibleRect,
                                       int orientation,
                                       int direction)
Specified by:
getScrollableBlockIncrement in interface javax.swing.Scrollable

getScrollableUnitIncrement

public int getScrollableUnitIncrement(java.awt.Rectangle visibleRect,
                                      int orientation,
                                      int direction)
Specified by:
getScrollableUnitIncrement in interface javax.swing.Scrollable

treeNodesChanged

public void treeNodesChanged(javax.swing.event.TreeModelEvent e)
Specified by:
treeNodesChanged in interface javax.swing.event.TreeModelListener

treeNodesInserted

public void treeNodesInserted(javax.swing.event.TreeModelEvent e)
Specified by:
treeNodesInserted in interface javax.swing.event.TreeModelListener

treeNodesRemoved

public void treeNodesRemoved(javax.swing.event.TreeModelEvent e)
Specified by:
treeNodesRemoved in interface javax.swing.event.TreeModelListener

treeStructureChanged

public void treeStructureChanged(javax.swing.event.TreeModelEvent e)
Specified by:
treeStructureChanged in interface javax.swing.event.TreeModelListener

treeCollapsed

public void treeCollapsed(javax.swing.event.TreeExpansionEvent event)
Specified by:
treeCollapsed in interface javax.swing.event.TreeExpansionListener

treeExpanded

public void treeExpanded(javax.swing.event.TreeExpansionEvent event)
Specified by:
treeExpanded in interface javax.swing.event.TreeExpansionListener

getTaskRenderer

public TaskRenderer getTaskRenderer()

setTaskRenderer

public void setTaskRenderer(TaskRenderer renderer)

getMinimumBounds

public long[] getMinimumBounds()

checkBounds

public void checkBounds()

addTaskListener

public void addTaskListener(TaskListener l)

removeTaskListener

public void removeTaskListener(TaskListener l)

fireTaskChange

protected void fireTaskChange(TaskEvent taskEvent)

setRelationBuilder

public void setRelationBuilder(RelationBuilder relationbuilder)

getRelationBuilder

public RelationBuilder getRelationBuilder()

setTaskHeightPixels

public void setTaskHeightPixels(int taskHeightPixels)

getTaskHeightPixels

public int getTaskHeightPixels()

setTaskMargin

public void setTaskMargin(int taskMargin)

getTaskMargin

public int getTaskMargin()

repaint

public void repaint()

Gantt