|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjavax.swing.tree.DefaultTreeModel
eu.beesoft.gaia.swing.TreeTableModel
eu.beesoft.gantt.GanttModel
public abstract class GanttModel
Model for JGantt
component. It supports data binding and object lazy
loading.
You need implement these methods:
createObject(TimelineObject, int, UndoStep)
- to create your
domain objectsdeleteObject(TimelineObject, UndoStep)
- to delete your domain
objectsmoveObject(TimelineObject, TimelineObject, int, UndoStep)
- to
move your domain objects in the hierarchy
If you want to paint in the chart component some texts (if you use
LabelLayer
), you need override these methods:
getLabel(TimelineObject)
- to obtain "label" text painted behind
object's time linegetTooltipText(TimelineObject)
- to get text displayed in
tooltip when mouse is over node
Data binding is implemented by Miner
class. All you need to do is to
set property name to gantt column (via GanttColumn.setBinding(String)
). Then methods getValueAt() and setValueAt() can work fully automatically.
If your domain objects are not suitable for data binding, override methods
getValueAt() and setValueAt(). You can also subclass Miner class and set it
to GanttModel by method setMiner(Miner)
.
Lazy loading is one of the interesting features of this model. We employ here
the possibilities of ExplorableTreeNode
, which is an ancestor of
GanttNode
. When node is expanded and was not explored still, method
explore(GanttNode)
is invoked. Override this method to loading
children of your domain object.
Field Summary |
---|
Fields inherited from class javax.swing.tree.DefaultTreeModel |
---|
asksAllowsChildren, listenerList, root |
Constructor Summary | |
---|---|
GanttModel()
Creates a new instance of GanttModel. |
Method Summary | |
---|---|
abstract TimelineObject |
createObject(TimelineObject parent,
int index,
UndoStep undo)
Creates a new domain object and adds it as child to parent
(you don't need to care about treetable nodes). |
abstract boolean |
deleteObject(TimelineObject object,
UndoStep undo)
Removes given object from its parent on domain objects level
(you don't need to care about treetable nodes). |
void |
explore(GanttNode node)
This method is called by GanttNode in lazy loading mode. |
JGantt |
getGantt()
Returns a JGantt instance for this model. |
GanttNode |
getGanttNode(TimelineObject userObject)
Returns GanttNode which uses given userObject as its
user object. |
java.lang.String |
getChartHeaderText(java.util.Date date,
TimeUnit timeUnit,
boolean isMajorHeader)
Returns text for drawing in chart header - name of month, week number, and so on. |
java.lang.String |
getLabel(TimelineObject object)
Returns label text for given object . |
Miner |
getMiner()
Returns the current instance of Miner used by this GanttModel. |
java.lang.String |
getTooltipText(TimelineObject object)
Returns tooltip text for given object . |
java.lang.Object |
getValueAt(TreeTableNode node,
int column)
Returns value from given node and for given
column . |
boolean |
isUpdateMode()
Returns true if model is in update mode. |
boolean |
isWeekend(java.util.Date date)
Returns true if given date is saturday or sunday. |
abstract boolean |
moveObject(TimelineObject object,
TimelineObject newContainer,
int newIndex,
UndoStep undo)
Moves given object on domain objects level (you don't need
to care about treetable nodes). |
void |
nodeChanged(javax.swing.tree.TreeNode node)
Listener method to receive informations about node representation in the tree. |
void |
setMiner(Miner miner)
Sets a new instance of Miner for use by this GanttModel. |
void |
setRoot(javax.swing.tree.TreeNode node)
Sets a new root node for this model. |
void |
setRootObject(TimelineObject object)
Sets a new root node with a given object as its user-object
for this model . |
void |
setUpdateMode(boolean updateMode)
Sets value for update mode. |
void |
setValueAt(TreeTableNode node,
int column,
java.lang.Object value)
Sets given value to the user object in the node
and column . |
Methods inherited from class eu.beesoft.gaia.swing.TreeTableModel |
---|
getColumnClass, getColumnCount, getColumnName, isCellEditable, isLeaf |
Methods inherited from class javax.swing.tree.DefaultTreeModel |
---|
addTreeModelListener, asksAllowsChildren, fireTreeNodesChanged, fireTreeNodesInserted, fireTreeNodesRemoved, fireTreeStructureChanged, getChild, getChildCount, getIndexOfChild, getListeners, getPathToRoot, getPathToRoot, getRoot, getTreeModelListeners, insertNodeInto, nodesChanged, nodeStructureChanged, nodesWereInserted, nodesWereRemoved, reload, reload, removeNodeFromParent, removeTreeModelListener, setAsksAllowsChildren, valueForPathChanged |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public GanttModel()
Miner
instance.
Method Detail |
---|
public JGantt getGantt()
JGantt
instance for this model.
public Miner getMiner()
Miner
used by this GanttModel.
public void setMiner(Miner miner)
Miner
for use by this GanttModel. The
Miner class is designated to obtain property value on method or field
level from any object. You can subclass Miner class to reach your
requirements.
miner
- - instance of Miner to setpublic void setRoot(javax.swing.tree.TreeNode node)
GanttNode
or null.
setRoot
in class TreeTableModel
node
- - root node for this modelpublic void setRootObject(TimelineObject object)
object
as its user-object
for this model .
object
- - user object for new root nodepublic void explore(GanttNode node)
GanttNode
in lazy loading mode.
In this implementation does nothing. You must override it to give it some functionality.
In the typical implementation:
node
node
node
- - node to explorepublic java.lang.Object getValueAt(TreeTableNode node, int column)
node
and for given
column
.
If the JGantt
is not fully initialized yet, it returns null. If
column = 0, returns node
.
Otherwise this method uses reflection and data binding via Miner
class to get property value from node user object. If no binding set, it
returns null. See comment to method setMiner(Miner)
.
If you don't want to use reflection to get value from user object, override this method for your needs.
getValueAt
in class TreeTableModel
node
- - the node whose value is to be queriedcolumn
- - the column whose value is to be queried
public void setValueAt(TreeTableNode node, int column, java.lang.Object value)
value
to the user object in the node
and column
.
Does nothing,if:
JGantt
is not fully initialized yetsetMiner(Miner)
for more...
Otherwise this method uses reflection and data binding via Miner
class to set value to the property of node's user object.
If you don't want to use reflection to set value to the user object, override this method for your needs.
setValueAt
in class TreeTableModel
node
- - the node whose value is to be queriedcolumn
- - the column whose value is to be queriedvalue
- - value to assign to cellpublic boolean isUpdateMode()
public void setUpdateMode(boolean updateMode)
updateMode
- the updateMode to setpublic void nodeChanged(javax.swing.tree.TreeNode node)
ChartComponent
.
nodeChanged
in class javax.swing.tree.DefaultTreeModel
node
- - the changed nodepublic GanttNode getGanttNode(TimelineObject userObject)
GanttNode
which uses given userObject
as its
user object.
userObject
- - user object of wanted gantt nodepublic boolean isWeekend(java.util.Date date)
date
is saturday or sunday.
date
- - Date to examine
public abstract TimelineObject createObject(TimelineObject parent, int index, UndoStep undo)
parent
(you don't need to care about treetable nodes). Register all modified
objects to undo
before any change.
parent
- - the parent of the created objectindex
- - index in the parent children list, where to insert created
objectundo
- - register for undo / redo operations
public abstract boolean deleteObject(TimelineObject object, UndoStep undo)
object
from its parent on domain objects level
(you don't need to care about treetable nodes). Register object, its
parent and all modified objects to undo
before any change.
object
- - object to removeundo
- - register for undo / redo operations
public abstract boolean moveObject(TimelineObject object, TimelineObject newContainer, int newIndex, UndoStep undo)
object
on domain objects level (you don't need
to care about treetable nodes). Register all modified objects to
undo
before any change.
object
- - object to movenewContainer
- - new parent for object (may be the same as current)newIndex
- - index in the new parent children list, where to move objectundo
- - register for undo / redo operations
public java.lang.String getChartHeaderText(java.util.Date date, TimeUnit timeUnit, boolean isMajorHeader)
date
- - date to process (date related to the header column)timeUnit
- - TimeUnit
constant used for headerisMajorHeader
- - true if text is required for major header, false for minor
header
public java.lang.String getLabel(TimelineObject object)
object
. This text uses
LabelLayer
to paint additional info to timeline object.
Typically, for task is name of the assignee probably the best result.
object
- - object to get label text about
public java.lang.String getTooltipText(TimelineObject object)
object
.
object
- - object to get tooltip text about
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |