|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectde.enough.polish.ui.Item
de.enough.polish.ui.Gauge
public class Gauge
Implements a graphical display, such as a bar graph, of an integer
value. The Gauge contains a current value
that lies between zero and the maximum value, inclusive.
The application can control the current value and maximum value.
The range of values specified by the application may be larger than
the number of distinct visual states possible on the device, so
more than one value may have the same visual representation.
For example, consider a Gauge object that has a
range of values from zero to 99, running on a device
that displays the Gauge's approximate value using a
set of one to ten bars. The device might show one bar for values
zero through nine, two bars for values ten through 19,
three bars for values 20 through 29, and
so forth.
A Gauge may be interactive or
non-interactive. Applications may set or retrieve the
Gauge's value at any time regardless of the
interaction mode. The implementation may change the visual
appearance of the bar graph depending on whether the object is
created in interactive mode.
In interactive mode, the user is allowed to modify the value. The user will always have the means to change the value up or down by one and may also have the means to change the value in greater increments. The user is prohibited from moving the value outside the established range. The expected behavior is that the application sets the initial value and then allows the user to modify the value thereafter. However, the application is not prohibited from modifying the value even while the user is interacting with it.
In many cases the only means for the user to modify the value will be to press a button to increase or decrease the value by one unit at a time. Therefore, applications should specify a range of no more than a few dozen values.
In non-interactive mode, the user is prohibited from modifying
the value. Non-interactive mode is used to provide feedback to the
user on the state of a long-running operation. One expected use of
the non-interactive mode is as a "progress indicator" or
"activity indicator" to give the user some feedback
during a long-running operation. The application may update the
value periodically using the setValue() method.
A non-interactive Gauge can have a definite or
indefinite range. If a Gauge has definite range, it
will have an integer value between zero and the maximum value set
by the application, inclusive. The implementation will provide a
graphical representation of this value such as described above.
A non-interactive Gauge that has indefinite range
will exist in one of four states: continuous-idle,
incremental-idle, continuous-running, or incremental-updating.
These states are intended to indicate to the user that some level
of activity is occurring. With incremental-updating, progress can
be indicated to the user even though there is no known endpoint to
the activity. With continuous-running, there is no progress that
gets reported to the user and there is no known endpoint;
continuous-running is merely a busy state indicator. The
implementation should use a graphical display that shows this
appropriately. The implementation may use different graphics for
indefinite continuous gauges and indefinite incremental gauges.
Because of this, separate idle states exist for each mode. For
example, the implementation might show an hourglass or spinning
watch in the continuous-running state, but show an animation with
different states, like a beach ball or candy-striped bar, in the
incremental-updating state.
In the continuous-idle or incremental-idle state, the
Gauge indicates that no activity is occurring. In the
incremental-updating state, the Gauge indicates
activity, but its graphical representation should be updated only
when the application requests an update with a call to
setValue(). In the continuous-running state, the
Gauge indicates activity by showing an animation that
runs continuously, without update requests from the
application.
The values CONTINUOUS_IDLE,
INCREMENTAL_IDLE, CONTINUOUS_RUNNING, and
INCREMENTAL_UPDATING have their special meaning only
when the Gauge is non-interactive and has been set to
have indefinite range. They are treated as ordinary values if the
Gauge is interactive or if it has been set to have a
definite range.
An application using the Gauge as a progress
indicator should typically also attach a STOP
command to the container containing the Gauge to allow
the user to halt the operation in progress.
As mentioned above, a non-interactive Gauge may be
used to give user feedback during a long-running operation. If the
application can observe the progress of the operation as it
proceeds to an endpoint known in advance, then the application
should use a non-interactive Gauge with a definite
range. For example, consider an application that is downloading a
file known to be 20 kilobytes in size. The
application could set the Gauge's maximum value to be
20 and set its value to the number of kilobytes
downloaded so far. The user will be presented with a
Gauge that shows the portion of the task completed at
any given time.
If, on the other hand, the application is downloading a file of
unknown size, it should use a non-interactive Gauge
with indefinite range. Ideally, the application should call
setValue(INCREMENTAL_UPDATING) periodically, perhaps
each time its input buffer has filled. This will give the user an
indication of the rate at which progress is occurring.
Finally, if the application is performing an operation but has
no means of detecting progress, it should set a non-interactive
Gauge to have indefinite range and set its value to
CONTINUOUS_RUNNING or CONTINUOUS_IDLE as
appropriate. For example, if the application has issued a request
to a network server and is about to block waiting for the server to
respond, it should set the Gauge's state to
CONTINUOUS_RUNNING before awaiting the response, and it
should set the state to CONTINUOUS_IDLE after it has
received the response.
| Field Summary | |
|---|---|
static int |
CONTINUOUS_IDLE
The value representing the continuous-idle state of a non-interactive Gauge with indefinite range. |
static int |
CONTINUOUS_RUNNING
The value representing the continuous-running state of a non-interactive Gauge with indefinite range. |
static int |
INCREMENTAL_IDLE
The value representing the incremental-idle state of a non-interactive Gauge with indefinite range. |
static int |
INCREMENTAL_UPDATING
The value representing the incremental-updating state of a non-interactive Gauge with indefinite range. |
static int |
INDEFINITE
A special value used for the maximum value in order to indicate that the Gauge has indefinite range. |
| Constructor Summary | |
|---|---|
Gauge(java.lang.String label,
boolean interactive,
int maxValue,
int initialValue)
Creates a new Gauge object with the given
label, in interactive or non-interactive mode, with the given
maximum and initial values. |
|
Gauge(java.lang.String label,
boolean interactive,
int maxValue,
int initialValue,
Style style)
Creates a new Gauge object with the given
label, in interactive or non-interactive mode, with the given
maximum and initial values. |
|
| Method Summary | |
|---|---|
boolean |
animate()
Animates this item. |
protected java.lang.String |
createCssSelector()
Retrieves the CSS selector for this item. |
int |
getMaxValue()
Gets the maximum value of this Gauge object. |
int |
getValue()
Gets the current value of this Gauge object. |
protected boolean |
handleKeyPressed(int keyCode,
int gameAction)
Handles the key-pressed event. |
protected boolean |
handlePointerPressed(int x,
int y)
Handles the event when a pointer has been pressed at the specified position. |
protected void |
hideNotify()
Called by the system to notify the item that it is now completely invisible, when it previously had been at least partially visible. |
protected void |
initContent(int firstLineWidth,
int lineWidth)
Initialises this item. |
boolean |
isInteractive()
Tells whether the user is allowed to change the value of the Gauge. |
void |
paintContent(int x,
int y,
int leftBorder,
int rightBorder,
javax.microedition.lcdui.Graphics g)
Paints the content of this item. |
void |
setImage(java.lang.String name,
javax.microedition.lcdui.Image image)
sets the image which has been loaded in the background. |
void |
setMaxValue(int maxValue)
Sets the maximum value of this Gauge object. |
void |
setStyle(Style style)
Sets the style of this item. |
void |
setValue(int value)
Sets the current value of this Gauge object. |
protected void |
showNotify()
Called by the system to notify the item that it is now at least partially visible, when it previously had been completely invisible. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final int INDEFINITE
Gauge has indefinite range. This value may be
used as the maxValue
parameter to the constructor, the parameter passed to
setMaxValue(), and
as the return value of getMaxValue().
The value of INDEFINITE is -1.
public static final int CONTINUOUS_IDLE
Gauge with indefinite range. In
the continuous-idle state, the gauge shows a graphic
indicating that no work is in progress.
This value has special meaning only for non-interactive gauges with indefinite range. It is treated as an ordinary value for interactive gauges and for non-interactive gauges with definite range.
The value of CONTINUOUS_IDLE is
0.
public static final int INCREMENTAL_IDLE
Gauge with indefinite range. In
the incremental-idle state, the gauge shows a graphic
indicating that no work is in progress.
This value has special meaning only for non-interactive gauges with indefinite range. It is treated as an ordinary value for interactive gauges and for non-interactive gauges with definite range.
The value of INCREMENTAL_IDLE is
1.
public static final int CONTINUOUS_RUNNING
Gauge with indefinite range. In
the continuous-running state, the gauge shows a
continually-updating animation sequence that indicates that
work is in progress. Once the application sets a gauge into
the continuous-running state, the animation should proceed
without further requests from the application.
This value has special meaning only for non-interactive gauges with indefinite range. It is treated as an ordinary value for interactive gauges and for non-interactive gauges with definite range.
The value of CONTINUOUS_RUNNING is
2.
public static final int INCREMENTAL_UPDATING
Gauge with indefinite range. In
the incremental-updating state, the gauge shows a graphic
indicating that work is in progress, typically one frame of an
animation sequence. The graphic should be updated to the next
frame in the sequence only when the application calls
setValue(INCREMENTAL_UPDATING).
This value has special meaning only for non-interactive gauges with indefinite range. It is treated as an ordinary value for interactive gauges and for non-interactive gauges with definite range.
The value of INCREMENTAL_UPDATING is
3.
| Constructor Detail |
|---|
public Gauge(java.lang.String label,
boolean interactive,
int maxValue,
int initialValue)
Gauge object with the given
label, in interactive or non-interactive mode, with the given
maximum and initial values. In interactive mode (where
interactive is true) the maximum
value must be greater than zero, otherwise an exception is
thrown. In non-interactive mode (where
interactive is false) the maximum
value must be greater than zero or equal to the special value
INDEFINITE, otherwise an exception is thrown.
If the maximum value is greater than zero, the gauge has
definite range. In this case the initial value must be within
the range zero to maxValue, inclusive. If the
initial value is less than zero, the value is set to zero. If
the initial value is greater than maxValue, it is
set to maxValue.
If interactive is false and the
maximum value is INDEFINITE, this creates a
non-interactive gauge with indefinite range. The initial value
must be one of CONTINUOUS_IDLE,
INCREMENTAL_IDLE, CONTINUOUS_RUNNING,
or INCREMENTAL_UPDATING.
label - the Gauge's labelinteractive - tells whether the user can change the valuemaxValue - the maximum value, or INDEFINITEinitialValue - the initial value in the range [0..maxValue], or one of CONTINUOUS_IDLE, INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or INCREMENTAL_UPDATING if maxValue is INDEFINITE.
java.lang.IllegalArgumentException - if maxValue is not positive for interactive gauges
or if maxValue is neither positive nor INDEFINITE for non-interactive gauges
or if initialValue is not one of CONTINUOUS_IDLE, INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or INCREMENTAL_UPDATING for a non-interactive gauge with indefinite rangeINDEFINITE,
CONTINUOUS_IDLE,
INCREMENTAL_IDLE,
CONTINUOUS_RUNNING,
INCREMENTAL_UPDATING
public Gauge(java.lang.String label,
boolean interactive,
int maxValue,
int initialValue,
Style style)
Gauge object with the given
label, in interactive or non-interactive mode, with the given
maximum and initial values. In interactive mode (where
interactive is true) the maximum
value must be greater than zero, otherwise an exception is
thrown. In non-interactive mode (where
interactive is false) the maximum
value must be greater than zero or equal to the special value
INDEFINITE, otherwise an exception is thrown.
If the maximum value is greater than zero, the gauge has
definite range. In this case the initial value must be within
the range zero to maxValue, inclusive. If the
initial value is less than zero, the value is set to zero. If
the initial value is greater than maxValue, it is
set to maxValue.
If interactive is false and the
maximum value is INDEFINITE, this creates a
non-interactive gauge with indefinite range. The initial value
must be one of CONTINUOUS_IDLE,
INCREMENTAL_IDLE, CONTINUOUS_RUNNING,
or INCREMENTAL_UPDATING.
label - the Gauge's labelinteractive - tells whether the user can change the valuemaxValue - the maximum value, or INDEFINITEinitialValue - the initial value in the range [0..maxValue], or one of CONTINUOUS_IDLE, INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or INCREMENTAL_UPDATING if maxValue is INDEFINITE.style - the CSS style for this item
java.lang.IllegalArgumentException - if maxValue is not positive for interactive gauges
or if maxValue is neither positive nor INDEFINITE for non-interactive gauges
or if initialValue is not one of CONTINUOUS_IDLE, INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or INCREMENTAL_UPDATING for a non-interactive gauge with indefinite rangeINDEFINITE,
CONTINUOUS_IDLE,
INCREMENTAL_IDLE,
CONTINUOUS_RUNNING,
INCREMENTAL_UPDATING| Method Detail |
|---|
public void setValue(int value)
Gauge object.
If the gauge is interactive, or if it is non-interactive with definite range, the following rules apply. If the value is less than zero, zero is used. If the current value is greater than the maximum value, the current value is set to be equal to the maximum value.
If this Gauge object is a non-interactive
gauge with indefinite
range, then value must be one of CONTINUOUS_IDLE,
INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or
INCREMENTAL_UPDATING.
Other values will cause an exception to be thrown.
value - the new value
java.lang.IllegalArgumentException - if value is not one of CONTINUOUS_IDLE, INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or INCREMENTAL_UPDATING for non-interactive gauges with indefinite rangeINDEFINITE,
CONTINUOUS_IDLE,
INCREMENTAL_IDLE,
CONTINUOUS_RUNNING,
INCREMENTAL_UPDATINGpublic int getValue()
Gauge object.
If this Gauge object is a non-interactive
gauge with indefinite
range, the value returned will be one of CONTINUOUS_IDLE,
INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or
INCREMENTAL_UPDATING. Otherwise, it will be an integer
between zero and the gauge's maximum value, inclusive.
INDEFINITE,
CONTINUOUS_IDLE,
INCREMENTAL_IDLE,
CONTINUOUS_RUNNING,
INCREMENTAL_UPDATINGpublic void setMaxValue(int maxValue)
Gauge object.
For interactive gauges, the new maximum value must be greater than
zero, otherwise an exception is thrown. For non-interactive gauges,
the new maximum value must be greater than zero or equal to the special
value INDEFINITE, otherwise an exception is thrown.
If the new maximum value is greater than zero, this provides the gauge with a definite range. If the gauge previously had a definite range, and if the current value is greater than new maximum value, the current value is set to be equal to the new maximum value. If the gauge previously had a definite range, and if the current value is less than or equal to the new maximum value, the current value is left unchanged.
If the new maximum value is greater than zero, and if the gauge had
previously had indefinite range, this new maximum value provides it
with a definite range. Its graphical representation must change
accordingly, the previous state of CONTINUOUS_IDLE,
INCREMENTAL_IDLE, CONTINUOUS_RUNNING, or
INCREMENTAL_UPDATING is ignored, and the current value
is set to zero.
If this gauge is non-interactive and the new maximum value is
INDEFINITE, this gives the gauge indefinite range.
If the gauge
previously had a definite range, its graphical representation must
change accordingly, the previous value is ignored, and the current
state is set to CONTINUOUS_IDLE. If the gauge previously
had an indefinite range, setting the maximum value to
INDEFINITE will have no effect.
maxValue - the new maximum value
java.lang.IllegalArgumentException - if maxValue is invalidINDEFINITE,
getMaxValue()public int getMaxValue()
Gauge object.
If this gauge is interactive, the maximum value will be a positive
integer. If this gauge is non-interactive, the maximum value will be a
positive integer (indicating that the gauge has definite range)
or the special value INDEFINITE (indicating that
the gauge has indefinite range).
INDEFINITE,
setMaxValue(int)public boolean isInteractive()
Gauge.
public void paintContent(int x,
int y,
int leftBorder,
int rightBorder,
javax.microedition.lcdui.Graphics g)
Item
paintContent in class Itemx - the left start positiony - the upper start positionleftBorder - the left border, nothing must be painted left of this positionrightBorder - the right border, nothing must be painted right of this positiong - the Graphics on which this item should be painted.
protected void initContent(int firstLineWidth,
int lineWidth)
Item
initContent in class ItemfirstLineWidth - the maximum width of the first linelineWidth - the maximum width of any following linesItem.contentWidth,
Item.contentHeight,
Item.preferredWidth,
Item.preferredHeightprotected java.lang.String createCssSelector()
Item
createCssSelector in class Itempublic void setStyle(Style style)
Item
setStyle in class Itemstyle - the new style for this item.
public void setImage(java.lang.String name,
javax.microedition.lcdui.Image image)
ImageConsumer
setImage in interface ImageConsumername - the name of the image.
This allows the image-consumer to differentiate between several images.image - the image which was loaded in the background thread.
protected boolean handleKeyPressed(int keyCode,
int gameAction)
Item
handleKeyPressed in class ItemkeyCode - the code of the pressed key, e.g. Canvas.KEY_NUM2gameAction - the corresponding game-action, e.g. Canvas.UP
protected boolean handlePointerPressed(int x,
int y)
Item
handlePointerPressed in class Itemx - the x position of the pointer pressing relative to this item's left positiony - the y position of the pointer pressing relative to this item's top position
this method is used for determining whether the event belongs to this item,
for a helper method for determining whether the event took place into the actual content area,
Item.handleKeyPressed(int, int),
for calculating the horizontal position relative to the content (relX - contentX),
for calculating the vertical position relative to the content (relY - contentY)public boolean animate()
Item
animate in class ItemItem.animate(long, ClippingRegion)protected void hideNotify()
Itempaint() calls will be made on this item
until after a showNotify() has been called again.
The default implementation of this method sets the isShown field to false and calls hideNotify on style elements.
hideNotify in class Itemprotected void showNotify()
Itempaint() calls after
showNotify() has been called.
The default implementation of this method sets the isShown field to true and calls showNotify on style elements.
showNotify in class Item
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||