|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.havi.ui.HListGroupLook
public class HListGroupLook
The HListGroupLook
class is used by the HListGroup
component to display both the
HListGroup
itself (potentially
including a scrollbar component) and graphical or textual list
content held on the HListGroup
. This
look will be provided by the platform and the exact way in which it
is rendered will be platform dependent.
The HListGroupLook
class draws the HListGroup
and any look-specific borders around the component, and then
renders the content set on the HListGroup
. It uses the getListContent
method to
determine the content to render. The content of the HListGroup does
not depend on the interaction state.
HListGroupLook
should use the
following properties of HListGroup
to lay out and render the HListElement
content:
Item | Method | Purpose |
---|---|---|
Orientation | getOrientation | direction to lay out elements |
Content | getListContent | elements to display |
Scroll position | getScrollPosition | first element to draw |
Selection | isItemSelected | mark an element as selected |
Current item | getCurrentItem | highlight an element |
HListGroupLook
should draw a scrollbar as necessary when there are more HListElements
than can be displayed. It
is an implementation option to leave border space between each
element. The insets used for the element borders can be retrieved
using getElementInsets
Implementations of HListGroupLook
should use the appropriate methods on HListGroup
to determine which scaling and alignment modes to use
when rendering content. See the class description for HLook
for more details.
HListGroupLook
may support scalable graphical
content. As a minimum, all implementations must support the RESIZE_NONE
scaling mode for
graphical content, and all alignment modes for text content.
However, Note that HListGroupLook
behaves
slightly differently from other HAVi HLook
classes, as follows.
HListElement
,
based on the area allocated to that HListElement
rather than the entire area of the HListGroup
.
HListElement
within the area allocated to
that HListElement
rather than the
entire area of the HListGroup
.
Note that the results of applying the VALIGN_JUSTIFY
and HALIGN_JUSTIFY
alignment modes
to graphical content are defined to identical to VALIGN_CENTER
and HALIGN_CENTER
modes
respectively, as justification is meaningless in this context.
This is the default look that is used by HListGroup
.
Parameter | Description | Default value | Set method | Get method |
---|---|---|---|---|
None. |
Description | Default value | Set method | Get method |
---|---|---|---|
Element insets | null | getElementInsets |
--- |
HListGroup
,
HListElement
,
HVisible
,
HLook
,
HDefaultTextLayoutManager
Field Summary |
---|
Fields inherited from interface org.havi.ui.HAdjustableLook |
---|
ADJUST_BUTTON_LESS, ADJUST_BUTTON_MORE, ADJUST_NONE, ADJUST_PAGE_LESS, ADJUST_PAGE_MORE, ADJUST_THUMB |
Constructor Summary | |
---|---|
HListGroupLook()
Creates a HListGroupLook object. |
Method Summary | |
---|---|
void |
fillBackground(java.awt.Graphics g,
HVisible visible,
int state)
The HExtendedLook.fillBackground(java.awt.Graphics, org.havi.ui.HVisible, int) method
paints the component with its current background Color
according to the HVisible.setBackgroundMode(int)
method of HVisible . |
java.awt.Insets |
getElementInsets()
Retrieve the element insets for this instance of HListGroupLook . |
java.awt.Insets |
getInsets(HVisible hvisible)
Determines the insets of this HLook ,
which indicate the size of the border. |
java.awt.Dimension |
getMaximumSize(HVisible visible)
Returns the size to present all elements of the specified HVisible plus any additional dimensions that the
HListGroupLook requires for border decoration
etc. |
java.awt.Dimension |
getMinimumSize(HVisible visible)
Returns the size to present one element of the specified HVisible plus any additional dimensions that the
HListGroupLook requires for border decoration etc. |
int |
getNumVisible(HVisible visible)
Retrieve the number of visible elements for the specified component. |
java.awt.Dimension |
getPreferredSize(HVisible visible)
Gets the preferred size of the HVisible component
when drawn with this HListGroupLook . |
java.lang.Integer |
getValue(HOrientable component,
java.awt.Point pt)
Returns the value of the component which corresponds to the pointer position specified by pt. |
int |
hitTest(HOrientable component,
java.awt.Point pt)
Returns a value which indicates the pointer click position in the on-screen representation of the orientable component. |
boolean |
isOpaque(HVisible visible)
Returns true if the entire painted area of the HVisible when using this look is fully opaque,
i.e. the showLook method
guarantees that all pixels are painted in an opaque Color. |
void |
renderBorders(java.awt.Graphics g,
HVisible visible,
int state)
The HExtendedLook.renderBorders(java.awt.Graphics, org.havi.ui.HVisible, int) method
paints any implementation specific borders according to
the HVisible.setBordersEnabled(boolean) method of
HVisible . |
void |
renderVisible(java.awt.Graphics g,
HVisible visible,
int state)
The HExtendedLook.renderVisible(java.awt.Graphics, org.havi.ui.HVisible, int) method
paints any content or other data associated with the look's HVisible. |
void |
showLook(java.awt.Graphics g,
HVisible visible,
int state)
The showLook method is
the entry point for repainting the entire HVisible component. |
void |
widgetChanged(HVisible visible,
HChangeData[] changes)
Called by the HVisible whenever
its content, state, or any other data changes. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public HListGroupLook()
HListGroupLook
object. See the
class description for details of constructor parameters and
default values.
Method Detail |
---|
public void showLook(java.awt.Graphics g, HVisible visible, int state)
showLook
method is
the entry point for repainting the entire HVisible
component. This method delegates the
responsibility of drawing the component background, borders and any
HVisible
related data or content to the
fillBackground
,
renderVisible
and renderBorders
methods
respectively, subject to the clipping rectangle of the Graphics object
passed to it. This method shall call the methods
fillBackground
,
renderVisible
, and renderBorders
in that order
and shall not do any rendering itself.
The showLook
method should
not modify the clipRect (clipping rectangle) of the
Graphics
object that is passed to it in a way
which includes any area not part of that original clipRect. If any
modifications are made, the original clipRect shall be restored.
Any resources explicitly associated with an HExtendedLook
should be loaded by the HExtendedLook
during its creation, etc.
Note that the "standard" looks don't load content by default.
This method is called from the HVisible.paint(java.awt.Graphics)
method of HVisible
and must never be called from
elsewhere. Components wishing to redraw themselves should call
their repaint method in the usual way.
showLook
in interface HExtendedLook
showLook
in interface HLook
g
- the graphics context.visible
- the visible.state
- the state parameter indicates the state of the
visible, allowing the look to render the appropriate content
for that state. Note that some components (e.g. HStaticRange,
HRange, HRangeValue) do not use state-based content.public void fillBackground(java.awt.Graphics g, HVisible visible, int state)
HExtendedLook.fillBackground(java.awt.Graphics, org.havi.ui.HVisible, int)
method
paints the component with its current background Color
according to the HVisible.setBackgroundMode(int)
method of HVisible
.
This method is only called from showLook
within this
HExtendedLook
implementation. It's not the intention to call
this method directly from outside of the HExtendedLook
.
Regardless of the background mode, it is an implementation option for this method to render added decorations which may affect the look's transparency. This method shall not be used to render any HVisible related data or content associated with the HVisible. It is purely for background and decoration only.
The fillBackground
method should not modify the clipRect
(clipping rectangle) of the Graphics
object that is passed
to it in a way which includes any area not part of that original
clipRect. If any modifications are made, the original clipRect shall be
restored.
fillBackground
in interface HExtendedLook
g
- the graphics context.visible
- the visible.state
- the state parameter indicates the state of the visibleHLook.isOpaque(org.havi.ui.HVisible)
public void renderBorders(java.awt.Graphics g, HVisible visible, int state)
HExtendedLook.renderBorders(java.awt.Graphics, org.havi.ui.HVisible, int)
method
paints any implementation specific borders according to
the HVisible.setBordersEnabled(boolean)
method of
HVisible
. If borders are drawn, the border
decoration shall be rendered within the border area as returned by
getInsets
. The behavior of this method, when a subclass
overrides the method getInsets
is undefined, except
that it will never draw outside the border area as returned by
getInsets
.
This method is only called from showLook
within this
HExtendedLook
implementation. It's not the intention to call
this method directly from outside of the HExtendedLook
.
The HExtendedLook.renderBorders(java.awt.Graphics, org.havi.ui.HVisible, int)
method should not modify the clipRect (clipping rectangle) of the
Graphics
object that is passed to it in a way
which includes any area not part of that original clipRect. If any
modifications are made, the original clipRect shall be restored.
renderBorders
in interface HExtendedLook
g
- the graphics context.visible
- the visible.state
- the state parameter indicates the state of the visiblepublic void renderVisible(java.awt.Graphics g, HVisible visible, int state)
HExtendedLook.renderVisible(java.awt.Graphics, org.havi.ui.HVisible, int)
method
paints any content or other data associated with the look's HVisible. This
method shall not be used to render a background nor any other decoration.
Its purpose is purely to render content or other value data stored on
the HVisible.
This may be set via HVisible methods such as setTextContent
and setGraphicContent
. Rendering shall take place within the
bounds returned by the getInsets
method.
This method is only called from showLook
within this
HExtendedLook
implementation. It's not the intention to call
this method directly from outside of the HExtendedLook
.
For looks which draw content (e.g. HTextLook
, HGraphicLook
and HAnimateLook
),
if no content is associated with the component, this method does nothing.
The HExtendedLook.renderVisible(java.awt.Graphics, org.havi.ui.HVisible, int)
method should not modify the clipRect (clipping rectangle) of the
Graphics
object that is passed to it in a way
which includes any area not part of that original clipRect. If any
modifications are made, the original clipRect shall be restored.
The labels of the associated HListElement
s shall
be rendered by using the current text layout manager of the
HListGroup
. For each visible label is the
render()
method of HTextLayoutManager
called. The position and size per label are specified as insets
relatively to the bounds of HListGroup
. Note that
the bounds are independent of any borders of the
HListGroup
, but the insets have to include the
borders per element, if any. The look shall use the method
getLabelSize()
of HListGroup
to
determine the size for each label. If the returned dimension
object has DEFAULT_LABEL_WIDTH
for the width and/or
DEFAULT_LABEL_HEIGHT
for the height as values, then
this method shall use implementation specific value(s) as default(s)
for the missing dimension(s) instead. If
getTextLayoutManager()
returns null
,
then labels shall not be rendered.
If supported, scaling of icons shall reflect the resize mode of the
visible within the area of the respective list element. The look
shall use the method getIconSize()
of
HListGroup
to determine the size for each icon. If
the returned dimension object has DEFAULT_ICON_WIDTH
for the width and/or DEFAULT_ICON_HEIGHT
for the
height as values, then this method shall use implementation specific
value(s) as default(s) for the missing dimension(s) instead.
Except for the alignment of labels and sizes of labels and icons, it
is explicitly not defined, how this look arranges icons and labels
within the elements' areas. Additionally, it is an implementation
option to render labels and icons in other sizes than specified, if
the available size per element is smaller or larger than label and
icon size. It is also not defined, how the look presents the current
item and selected items, or the current selection mode. The
elements shall be layed out as specified by
getOrientation()
of the associated HListGroup
.
When the associated HListGroup
contains more elements than
presentable, the look shall make the user aware of that condition,
e.g. by displaying an additional scrollbar reflecting the current
scroll position. Again, the visible means by which this information
is conveyed is not defined and implementation dependent. It is an
implementation option for HListGroupLook
to draw
elements before the scroll position, in order to fill the
available space.
The behavior of this method, when a subclass overrides the methods
getInsets()
or getElementInsets()
, is
not defined. Application developers shall not assume that the
corresponding borders will appear as specified.
The HExtendedLook.renderVisible(java.awt.Graphics, org.havi.ui.HVisible, int)
method is
responsible for painting any implementation specific borders for
each HListElement as well as drawing of an additional scrollbar
if required.
renderVisible
in interface HExtendedLook
g
- the graphics context.visible
- the visible.state
- the state parameter indicates the state of the visiblepublic void widgetChanged(HVisible visible, HChangeData[] changes)
HVisible
whenever
its content, state, or any other data changes. See the class
description of HVisible
for more
information about the changes
parameter.
The implementation of this method should work out which
graphical areas of the HVisible
have changed and make any relevant calls to trigger the
repainting of those areas.
A minimum implementation of this method could simply call
visible.repaint()
widgetChanged
in interface HLook
visible
- the HVisible
which
has changedchanges
- an array containing hint data and associated hint
objects. If this argument is null
a full repaint
will be triggered.public java.awt.Dimension getMinimumSize(HVisible visible)
HVisible
plus any additional dimensions that the
HListGroupLook
requires for border decoration etc.
The extra space required for border decoration can be determined
from the getInsets()
and
getElementInsets()
methods. The behavior is
not defined for the case, when a subclass overrides these methods.
Application developers shall not assume any influence on the
returned dimensions.
The size per element shall be determined by calls to
getIconSize()
and getLabelSize()
of
HListGroup
. If any of the dimensions requests a
default as specified by DEFAULT_ICON_WIDTH
,
DEFAULT_ICON_HEIGHT
, DEFAULT_LABEL_WIDTH
and
DEFAULT_LABEL_HEIGHT
, then an implementation specific
default is used for the corresponding value(s).
getMinimumSize
in interface HLook
visible
- HVisible
to which this
HLook
is attached.
HLook
's
minimum size.HListGroup.setIconSize(java.awt.Dimension)
,
HListGroup.setLabelSize(java.awt.Dimension)
,
HVisible.getMinimumSize()
public java.awt.Dimension getPreferredSize(HVisible visible)
HVisible
component
when drawn with this HListGroupLook
.
If a default size for width and height was set with
HVisible.setDefaultSize()
, then the dimensions are
rounded down to the nearest element (minimum of one) according
to the orientation of the associated HListGroup
, and
any dimensions for border decorations etc. are added.
If no default size was set or only for one dimension (i.e. height is
NO_DEFAULT_HEIGHT
or width is
NO_DEFAULT_WIDTH
), then the unset dimension(s) shall
be sufficiently large to present five elements according to the
HListGroup
's orientation. Any dimensions for border
decoration etc. are added.
The extra space required for border decoration can be determined
from the getInsets()
and
getElementInsets()
methods. The behavior is not
defined for the case, when a subclass overrides these methods.
Application developers shall not assume any influence on the
returned dimensions.
The size per element shall be determined by calls to
getIconSize()
and getLabelSize()
of
HListGroup
. If any of the values requests a
default as specified by DEFAULT_ICON_WIDTH
,
DEFAULT_ICON_HEIGHT
,
DEFAULT_LABEL_WIDTH
and
DEFAULT_LABEL_HEIGHT
, then an implementation
specific default is used for the corresponding value(s).
getPreferredSize
in interface HLook
visible
- HVisible
to which this
HLook
is attached.
HVisible
when drawn with this
HListGroupLook
.HListGroup.setIconSize(java.awt.Dimension)
,
HListGroup.setLabelSize(java.awt.Dimension)
,
HVisible.getPreferredSize()
,
HVisible.setDefaultSize(java.awt.Dimension)
public java.awt.Dimension getMaximumSize(HVisible visible)
HVisible
plus any additional dimensions that the
HListGroupLook
requires for border decoration
etc. If no elements are present, a dimension object is returned
with width and height set to java.lang.Short.MAX_VALUE
.
The extra space required for border decoration can be determined
from the getInsets()
and
getElementInsets()
methods. The behavior is not
defined for the case, when a subclass overrides these methods.
Application developers shall not assume any influence on the
returned dimensions.
The size per element shall be determined by calls to
getIconSize()
and getLabelSize()
of
HListGroup
. If any of the values
requests a default as specified by DEFAULT_ICON_WIDTH
,
DEFAULT_ICON_HEIGHT
,
DEFAULT_LABEL_WIDTH
and
DEFAULT_LABEL_HEIGHT
,
then an implementation specific default is used for the
corresponding value(s).
getMaximumSize
in interface HLook
visible
- HVisible
to which this
HLook
is attached.
HListGroupLook
's maximum size.HListGroup.setIconSize(java.awt.Dimension)
,
HListGroup.setLabelSize(java.awt.Dimension)
,
HVisible.getMaximumSize()
public boolean isOpaque(HVisible visible)
HVisible
when using this look is fully opaque,
i.e. the showLook
method
guarantees that all pixels are painted in an opaque Color.
The default value is implementation specific and depends on the
background painting mode of the given HVisible
. The consequences of an invalid
overridden value are implementation specific.
isOpaque
in interface HLook
visible
- the visible to test
HVisible
using this look are fully
opaque, i.e. the showLook
method guarantees that all pixels are painted in an opaque
Color, otherwise false.public java.awt.Insets getInsets(HVisible hvisible)
HLook
,
which indicate the size of the border. This area is
reserved for the HLook
to use for
drawing borders around the associated HVisible
.
getInsets
in interface HLook
hvisible
- HVisible
to which
this HLook
is attached.
HLook
.public int hitTest(HOrientable component, java.awt.Point pt)
The behavior of this method in HListGroupLook
differs from the behavior of HAdjustableLook.hitTest()
in
that if the position belongs to an HListElement
of the associated HListGroup
, then this method will return the index of that
element. The HListGroup
shall interpret this index
as current item. If the value is ADJUST_THUMB
, then
the caller shall use getValue()
to retrieve the
actual scroll position corresponding to the specified pointer
position. The look will not change the appearance of that element
(eg. by highlighting it). Such a change may only occur due to a
call to widgetChanged(org.havi.ui.HVisible, org.havi.ui.HChangeData[])
.
Note that it is a valid implementation option to always return
ADJUST_NONE
.
hitTest
in interface HAdjustableLook
component
- - the HOrientable component for which the hit
position should be calculatedpt
- - the pointer click point relative to the upper-left corner
of the specified component.
ADJUST_NONE
, ADJUST_BUTTON_LESS
, ADJUST_PAGE_LESS
,
ADJUST_THUMB
,
ADJUST_PAGE_MORE
or ADJUST_BUTTON_MORE
, or a non-negative element index.public java.lang.Integer getValue(HOrientable component, java.awt.Point pt)
null
. A non-null
value
represents the scroll position of the associated
HListGroup
. The value shall never be less than
zero.
The look shall not reflect the value returned by this method visibly.
If the component uses the returned value, it will inform the look
by calling widgetChanged()
.
getValue
in interface HAdjustableLook
component
- an HOrientable
implemented by an HVisible
pt
- the position of the mouse-cursor relative to the
upper-left corner of the associated component
null
hitTest(org.havi.ui.HOrientable, java.awt.Point)
public java.awt.Insets getElementInsets()
HListGroupLook
. The element insets control the
amount of empty space left between the elements and the border
of the HListGroup component.
null
if insets are
not used by this implementation of HListGroupLook
.public int getNumVisible(HVisible visible)
This method should determine the number of list elements that would be completely visible should the specified component be drawn using this look.
visible
- the HVisible
to
obtain the number of visible elements for.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |