de.jaret.util.ui.timebars.swt.renderer
Class DefaultHierarchyRenderer

java.lang.Object
  extended by de.jaret.util.ui.timebars.swt.renderer.RendererBase
      extended by de.jaret.util.ui.timebars.swt.renderer.DefaultHierarchyRenderer
All Implemented Interfaces:
HierarchyRenderer

public class DefaultHierarchyRenderer
extends RendererBase
implements HierarchyRenderer

Default implementation of a HierarchyRenderer. Can draw +/-/o for nodes or any configured image. Uses label providers (regsiters for row implementing class) for labels and icons (icons replace standard node symbol).

Version:
$Id: DefaultHierarchyRenderer.java 800 2008-12-27 22:27:33Z kliem $
Author:
Peter Kliem

Field Summary
protected  boolean _drawIcons
          true for enabling drawing of icons.
protected  boolean _drawLabels
          true for enabling label drawing.
protected  boolean _drawTreeLines
          if true, tree lines will be drawn.
protected  boolean _fixedLevelWidth
          if true the level indentation is fixed.
protected  java.util.Map<java.lang.Class<? extends TimeBarRow>,org.eclipse.jface.viewers.ILabelProvider> _labelProviderMap
          label providers for labels and icons.
protected  java.lang.String _leafRscName
          path of the leaf image ressource.
protected  int _levelWidth
          level width for fixed level width drawing.
protected  java.lang.String _minusRscName
          path of the minus image ressource.
protected  java.lang.String _plusRscName
          path of the plus image ressource.
protected  int _signInsets
          actual value for the signinstes.
protected  int _size
          actual size of the symbols.
protected static int DEFAULT_LEVEL_WIDTH
          defaut level width.
protected static int DEFAULT_SIZE
          size of the plus/minus signs.
protected static int LABELGAP
          gap between tree and the label/icon provided by a label provider.
protected static java.lang.String LEAF
          key for image registry.
protected static java.lang.String MINUS
          key for image registry.
protected static java.lang.String PLUS
          key for image registry.
protected static int SYMBOLINSETS
          insets for painting the +/. symbol.
 
Fields inherited from class de.jaret.util.ui.timebars.swt.renderer.RendererBase
_printer, _scaleX, _scaleY
 
Constructor Summary
DefaultHierarchyRenderer()
          Default constructor.
DefaultHierarchyRenderer(org.eclipse.swt.printing.Printer printer)
          Create for a printer.
 
Method Summary
 HierarchyRenderer createPrintRenderer(org.eclipse.swt.printing.Printer printer)
          Create a similar renderer for printing.
 void dispose()
          Dispose the renderer.
 void draw(org.eclipse.swt.graphics.GC gc, org.eclipse.swt.graphics.Rectangle drawingArea, TimeBarViewerDelegate tbv, TimeBarRow row, boolean selected, boolean expanded, boolean leaf, int level, int depth, boolean printing)
          Drwa one hierarchy element.
protected  void drawCollapsed(org.eclipse.swt.graphics.GC gc, int size, int x, int y)
          Draw the collapsed symbol.
protected  void drawExpanded(org.eclipse.swt.graphics.GC gc, int size, int x, int y)
          Draw the expanded symbol.
protected  void drawLeaf(org.eclipse.swt.graphics.GC gc, int size, int x, int y)
          Draw the leaf symbol.
protected  void drawLeafSymbol(org.eclipse.swt.graphics.GC gc, int size, int x, int y)
          Draw the leaf symbol.
protected  void drawMinus(org.eclipse.swt.graphics.GC gc, int size, int x, int y)
          Draw the minus sign.
protected  void drawPlus(org.eclipse.swt.graphics.GC gc, int size, int x, int y)
          Draw the plus sign.
 boolean getDrawIcons()
           
 boolean getDrawLabels()
           
 boolean getDrawTreeLines()
          Retrieve whether tree lines shoul dbe drawn.
 boolean getFixedLevelWidth()
          Retrieve whether level indentation is done with a fixed width or variable.
 org.eclipse.jface.viewers.ILabelProvider getLabelProvider()
          Get the default label provider to use for label texts and icons (TimeBarRow.class).
protected  org.eclipse.jface.viewers.ILabelProvider getLabelProvider(java.lang.Class<? extends TimeBarRow> clazz)
          Retrieve a label provider for a given class.
 int getLevelWidth()
          Retrieve the width for each level (only applicable if fixed level width is used).
 int getPreferredWidth()
          Return the preferred width for the hierachy display.
 int getSize()
          Retrieve the squae size of the symbols.
 java.lang.String getToolTipText(TimeBarNode node, org.eclipse.swt.graphics.Rectangle drawingArea, int x, int y)
          Retrieve the tooltip for a position inside the header.
 boolean isInHierarchySelectionArea(TimeBarViewer tbv, TimeBarNode node, org.eclipse.swt.graphics.Rectangle drawingArea, int xx, int yy)
          Check whether a position should trigger a row selection.
 boolean isInToggleArea(TimeBarViewerInterface tbv, TimeBarNode node, org.eclipse.swt.graphics.Rectangle drawingArea, int xx, int yy)
          Check whether a position in the header should be active for folding/expanding.
 void registerLabelProvider(java.lang.Class<? extends TimeBarRow> clazz, org.eclipse.jface.viewers.ILabelProvider labelProvider)
          Register a label provider for a class.
 void setDrawIcons(boolean drawIcons)
           
 void setDrawLabels(boolean drawLabels)
           
 void setDrawTreeLines(boolean drawTreeLines)
          Set whether connecting lines in the tree should be drawn.
 void setFixedLevelWidth(boolean fixedLevelWidth)
          Set method of level indentation.
 void setImageDescriptors(org.eclipse.jface.resource.ImageDescriptor plus, org.eclipse.jface.resource.ImageDescriptor minus, org.eclipse.jface.resource.ImageDescriptor leaf)
          Set image descriptors for the symbols.
 void setLabelProvider(org.eclipse.jface.viewers.ILabelProvider labelProvider)
          Set the default label provider to use for label texts and icons (TimeBarRow.class).
protected  void setLabelProviderMap(java.util.Map<java.lang.Class<? extends TimeBarRow>,org.eclipse.jface.viewers.ILabelProvider> map)
          Set the complete label provider map (internal use).
 void setLevelWidth(int levelWidth)
           
 void setRscNames(java.lang.String plusRscPath, java.lang.String minusRscPath, java.lang.String leafRscPath)
          Set the paths for images to use a symbols.
 void setSize(int size)
          Set the size of the symbols.
 
Methods inherited from class de.jaret.util.ui.timebars.swt.renderer.RendererBase
drawFocus, getDefaultLineWidth, getPrinter, getScaleX, getScaleY, scaleX, scaleY
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SIZE

protected static final int DEFAULT_SIZE
size of the plus/minus signs.

See Also:
Constant Field Values

SYMBOLINSETS

protected static final int SYMBOLINSETS
insets for painting the +/. symbol.

See Also:
Constant Field Values

DEFAULT_LEVEL_WIDTH

protected static final int DEFAULT_LEVEL_WIDTH
defaut level width.

See Also:
Constant Field Values

LABELGAP

protected static final int LABELGAP
gap between tree and the label/icon provided by a label provider.

See Also:
Constant Field Values

_size

protected int _size
actual size of the symbols.


_signInsets

protected int _signInsets
actual value for the signinstes.


_drawTreeLines

protected boolean _drawTreeLines
if true, tree lines will be drawn.


_levelWidth

protected int _levelWidth
level width for fixed level width drawing.


_fixedLevelWidth

protected boolean _fixedLevelWidth
if true the level indentation is fixed.


_drawIcons

protected boolean _drawIcons
true for enabling drawing of icons.


_drawLabels

protected boolean _drawLabels
true for enabling label drawing.


_labelProviderMap

protected java.util.Map<java.lang.Class<? extends TimeBarRow>,org.eclipse.jface.viewers.ILabelProvider> _labelProviderMap
label providers for labels and icons.


PLUS

protected static final java.lang.String PLUS
key for image registry.

See Also:
Constant Field Values

MINUS

protected static final java.lang.String MINUS
key for image registry.

See Also:
Constant Field Values

LEAF

protected static final java.lang.String LEAF
key for image registry.

See Also:
Constant Field Values

_plusRscName

protected java.lang.String _plusRscName
path of the plus image ressource.


_minusRscName

protected java.lang.String _minusRscName
path of the minus image ressource.


_leafRscName

protected java.lang.String _leafRscName
path of the leaf image ressource.

Constructor Detail

DefaultHierarchyRenderer

public DefaultHierarchyRenderer(org.eclipse.swt.printing.Printer printer)
Create for a printer.

Parameters:
printer - printer device

DefaultHierarchyRenderer

public DefaultHierarchyRenderer()
Default constructor.

Method Detail

draw

public void draw(org.eclipse.swt.graphics.GC gc,
                 org.eclipse.swt.graphics.Rectangle drawingArea,
                 TimeBarViewerDelegate tbv,
                 TimeBarRow row,
                 boolean selected,
                 boolean expanded,
                 boolean leaf,
                 int level,
                 int depth,
                 boolean printing)
Drwa one hierarchy element.

Specified by:
draw in interface HierarchyRenderer
Parameters:
gc - GC to draw with
drawingArea - rectangle to draw within
tbv - TimeBarViewerDelegate for supporting information
row - the row (node) for which the hierarchy should be painted
selected - wehether the row is selscted or not
expanded - expanded status of the row
leaf - if true the row is a leaf
level - level in the tree of the current element
depth - depth of the tree. If the depth is not known a value of -1 will indicate this fact.
printing - falg indicate the current paint operation is for a printer

drawCollapsed

protected void drawCollapsed(org.eclipse.swt.graphics.GC gc,
                             int size,
                             int x,
                             int y)
Draw the collapsed symbol.

Parameters:
gc - GC
size - size
x - left x
y - upper y

drawExpanded

protected void drawExpanded(org.eclipse.swt.graphics.GC gc,
                            int size,
                            int x,
                            int y)
Draw the expanded symbol.

Parameters:
gc - GC
size - size
x - left x
y - upper y

drawLeafSymbol

protected void drawLeafSymbol(org.eclipse.swt.graphics.GC gc,
                              int size,
                              int x,
                              int y)
Draw the leaf symbol.

Parameters:
gc - GC
size - size
x - left x
y - upper y

drawPlus

protected void drawPlus(org.eclipse.swt.graphics.GC gc,
                        int size,
                        int x,
                        int y)
Draw the plus sign.

Parameters:
gc - GC
size - size
x - left x
y - upper y

drawMinus

protected void drawMinus(org.eclipse.swt.graphics.GC gc,
                         int size,
                         int x,
                         int y)
Draw the minus sign.

Parameters:
gc - GC
size - size
x - left x
y - upper y

drawLeaf

protected void drawLeaf(org.eclipse.swt.graphics.GC gc,
                        int size,
                        int x,
                        int y)
Draw the leaf symbol.

Parameters:
gc - GC
size - size
x - left x
y - upper y

getToolTipText

public java.lang.String getToolTipText(TimeBarNode node,
                                       org.eclipse.swt.graphics.Rectangle drawingArea,
                                       int x,
                                       int y)
Retrieve the tooltip for a position inside the header.

Specified by:
getToolTipText in interface HierarchyRenderer
Parameters:
node - TimeBarNode that the hierarchy element has been painted for
drawingArea - area in which the header has been drawn
x - x of the position in question
y - of the position in question
Returns:
the tooltip for the position or null

isInToggleArea

public boolean isInToggleArea(TimeBarViewerInterface tbv,
                              TimeBarNode node,
                              org.eclipse.swt.graphics.Rectangle drawingArea,
                              int xx,
                              int yy)
Check whether a position in the header should be active for folding/expanding.

Specified by:
isInToggleArea in interface HierarchyRenderer
Parameters:
tbv - TimeBarViewer
node - node
drawingArea - area in which the header has been drawn
xx - x of the position in question
yy - y of the position in question
Returns:
true if this position hits an active part leeding to a fold/unfold operation.

isInHierarchySelectionArea

public boolean isInHierarchySelectionArea(TimeBarViewer tbv,
                                          TimeBarNode node,
                                          org.eclipse.swt.graphics.Rectangle drawingArea,
                                          int xx,
                                          int yy)
Check whether a position should trigger a row selection.

Specified by:
isInHierarchySelectionArea in interface HierarchyRenderer
Parameters:
tbv - the asking viewer
node - node
drawingArea - drawingarea
xx - x coordinate
yy - y coordinate
Returns:
true if the position should trigger the selection

getPreferredWidth

public int getPreferredWidth()
Return the preferred width for the hierachy display.

Specified by:
getPreferredWidth in interface HierarchyRenderer
Returns:
preferred with or -1 for "don't care"

dispose

public void dispose()
Dispose the renderer. Should free up any resources locked.

Specified by:
dispose in interface HierarchyRenderer

getFixedLevelWidth

public boolean getFixedLevelWidth()
Retrieve whether level indentation is done with a fixed width or variable.

Returns:
true if the renderer uses a fixed width for the level indentation

setFixedLevelWidth

public void setFixedLevelWidth(boolean fixedLevelWidth)
Set method of level indentation.

Parameters:
fixedLevelWidth - true for the use of a fixed indent for the levels

getLabelProvider

public org.eclipse.jface.viewers.ILabelProvider getLabelProvider()
Get the default label provider to use for label texts and icons (TimeBarRow.class).

Returns:
Returns the labelProvider.

setLabelProvider

public void setLabelProvider(org.eclipse.jface.viewers.ILabelProvider labelProvider)
Set the default label provider to use for label texts and icons (TimeBarRow.class).

Parameters:
labelProvider - The labelProvider to set.

registerLabelProvider

public void registerLabelProvider(java.lang.Class<? extends TimeBarRow> clazz,
                                  org.eclipse.jface.viewers.ILabelProvider labelProvider)
Register a label provider for a class.

Parameters:
clazz - time bar row implementing clas or extendin ginterface
labelProvider - label provider

setLabelProviderMap

protected void setLabelProviderMap(java.util.Map<java.lang.Class<? extends TimeBarRow>,org.eclipse.jface.viewers.ILabelProvider> map)
Set the complete label provider map (internal use).

Parameters:
map - map of the label providers

getLabelProvider

protected org.eclipse.jface.viewers.ILabelProvider getLabelProvider(java.lang.Class<? extends TimeBarRow> clazz)
Retrieve a label provider for a given class. Checks all interfaces and all superclasses.

Parameters:
clazz - class in question
Returns:
label provider or null

getLevelWidth

public int getLevelWidth()
Retrieve the width for each level (only applicable if fixed level width is used).

Returns:
Returns the levelWidth.

setLevelWidth

public void setLevelWidth(int levelWidth)
Parameters:
levelWidth - The levelWidth to set.

getDrawIcons

public boolean getDrawIcons()
Returns:
Returns the drawIcons.

setDrawIcons

public void setDrawIcons(boolean drawIcons)
Parameters:
drawIcons - The drawIcons to set.

getDrawLabels

public boolean getDrawLabels()
Returns:
Returns the drawLabels.

setDrawLabels

public void setDrawLabels(boolean drawLabels)
Parameters:
drawLabels - The drawLabels to set.

createPrintRenderer

public HierarchyRenderer createPrintRenderer(org.eclipse.swt.printing.Printer printer)
Create a similar renderer for printing. The creation should copy settings made to the producing renderer.

Specified by:
createPrintRenderer in interface HierarchyRenderer
Parameters:
printer - Printer device
Returns:
a configured renderer for printing.

setRscNames

public void setRscNames(java.lang.String plusRscPath,
                        java.lang.String minusRscPath,
                        java.lang.String leafRscPath)
Set the paths for images to use a symbols. If set the will be used instead of the generic +/-/o symbols. Please note that the resources are loaded bay getResourceAsStream whicj can be problematic when using it in a multi class loader environment like eclipse rcp. Use the setImageDescriptors method instead.

Parameters:
plusRscPath - ressource path for the collapsed symbol
minusRscPath - ressource path for the expanded symbol
leafRscPath - ressource path for the leaf symbol

setImageDescriptors

public void setImageDescriptors(org.eclipse.jface.resource.ImageDescriptor plus,
                                org.eclipse.jface.resource.ImageDescriptor minus,
                                org.eclipse.jface.resource.ImageDescriptor leaf)
Set image descriptors for the symbols.

Parameters:
plus - image descriptor for the plus sign
minus - image descriptor for the minus sign
leaf - image descriptor for the leaf sign

getSize

public int getSize()
Retrieve the squae size of the symbols. Images will be scaled.

Returns:
size

setSize

public void setSize(int size)
Set the size of the symbols.

Parameters:
size - size in pixel

getDrawTreeLines

public boolean getDrawTreeLines()
Retrieve whether tree lines shoul dbe drawn.

Returns:
true if the tree lines should be drawn

setDrawTreeLines

public void setDrawTreeLines(boolean drawTreeLines)
Set whether connecting lines in the tree should be drawn.

Parameters:
drawTreeLines - true if tree lines should be drawn


Copyright © 2012. All Rights Reserved.