|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object
|
+--net.rim.device.api.ui.Field
|
+--net.rim.device.api.ui.Manager
|
+--net.rim.device.api.ui.Screen
Base class for all screens.
Each UiEngine presents an interface to the user by pushing
screens onto its display stack, and popping them off when interaction with
the managed fields on that screen is finished.
Delegate manager
Each screen object has a delegate manager, the single Manager object
directly controlled by the screen to handle layout and scrolling for the
entire screen.
styles
Screen does not accept Field.FOCUSABLE_MASK,
Field.EDITABLE_MASK.
| Field Summary | ||
static long |
DEFAULT_CLOSE
If specified, screen will provide a close action. |
|
static long |
DEFAULT_MENU
If specified, screen will provide a default menu. |
|
| Fields inherited from class net.rim.device.api.ui.Manager |
BOTTOMMOST, DOWNWARD, HORIZONTAL_SCROLL, HORIZONTAL_SCROLL_MASK, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_MASK, LEAVE_BLANK_SPACE, LEFTMOST, LEFTWARD, NO_HORIZONTAL_SCROLL, NO_HORIZONTAL_SCROLLBAR, NO_SCROLL_RESET, NO_VERTICAL_SCROLL, NO_VERTICAL_SCROLLBAR, QUANTA_FONT, RIGHTMOST, RIGHTWARD, TOPMOST, UPWARD, VERTICAL_SCROLL, VERTICAL_SCROLL_MASK, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_MASK |
| Fields inherited from class net.rim.device.api.ui.Field |
EDITABLE, EDITABLE_MASK, FIELD_BOTTOM, FIELD_HALIGN_MASK, FIELD_HCENTER, FIELD_LEFT, FIELD_RIGHT, FIELD_TOP, FIELD_VALIGN_MASK, FIELD_VCENTER, FOCUSABLE, FOCUSABLE_MASK, HIGHLIGHT_FOCUS, HIGHLIGHT_SELECT, NON_FOCUSABLE, READONLY, USE_ALL_HEIGHT, USE_ALL_WIDTH |
| Constructor Summary | ||
Screen(Manager delegate)
Constructs a screen with provided delegate manager. |
||
Screen(Manager delegate,
long style)
Constructs specific type of screen with provided delegate manager. |
||
| Method Summary | ||
void |
add(Field field)
Adds a field to this screen's manager. |
|
void |
addKeyListener(KeyListener listener)
Registers a key event listener for this screen. |
|
void |
addTrackwheelListener(TrackwheelListener listener)
Registers a trackwheel event listener for this screen. |
|
void |
close()
Closes the screen. |
|
void |
delete(Field field)
Deletes a field from this screen's manager. |
|
void |
deleteRange(int start,
int count)
Deletes a range of fields from this screen's manager. |
|
void |
doLayout()
Lays out all controlled fields. |
|
void |
doPaint()
Paints the screen. |
|
void |
ensureRegionVisible(Field field,
int x,
int y,
int width,
int height)
Attempts to make your provided region visible. |
|
Manager |
getDelegate()
Retrieves this screen's delegate manager. |
|
Field |
getField(int index)
Retrieves controlled field with specified index. |
|
int |
getFieldAtLocation(int x,
int y)
Retrieves index of field under provided point. |
|
int |
getFieldCount()
Retrieves the number of controlled fields. |
|
Field |
getFieldWithFocus()
Retrieves controlled field with focus. |
|
int |
getFieldWithFocusIndex()
Retrieves index of controlled field with focus. |
|
void |
getFocusRect(XYRect rect)
Retrieves current extent of the focus. |
|
Graphics |
getGraphics()
Retrieves the graphics context for this screen. |
|
Field |
getLeafFieldWithFocus()
Retrieves leaf field with focus. |
|
UiEngine |
getUiEngine()
Retrieves UiEngine that owns the display. |
|
void |
insert(Field field,
int index)
Inserts a field to this screen's manager. |
|
void |
invalidate(int x,
int y,
int width,
int height)
Invalidates a region of this screen. |
|
void |
invalidateLayout()
Invalidates this screen's layout (including all controlled fields). |
|
boolean |
isDirty()
Determines if this screen is dirty. |
|
boolean |
isDisplayed()
Determine if this screen is currently in use. |
|
boolean |
isFocusable()
Verify that the delegate manager accepts the focus. |
|
boolean |
isGlobalStatus()
Determines if this is a global status screen. |
|
boolean |
isMuddy()
Determines if this screen is muddy. |
|
boolean |
isSelecting()
Determines if this screen has the focus. |
|
protected boolean |
keyChar(char c,
int status,
int time)
Delegates key generation event to the controlled field with focus. |
|
protected boolean |
keyCharUnhandled(char key,
int status,
int time)
Invoked when a keyChar event is unhandled. |
|
protected boolean |
keyControl(char c,
int status,
int time)
Delegates key generation event to the controlled field with focus. |
|
protected boolean |
keyDown(int keycode,
int time)
Delegates key down event to controlled field with focus. |
|
protected boolean |
keyRepeat(int keycode,
int time)
Delegates key repeat event to controlled field with focus. |
|
protected boolean |
keyStatus(int keycode,
int time)
Sends key status event to the controlled field with focus. |
|
protected boolean |
keyUp(int keycode,
int time)
Delegates key up event to controlled field with focus. |
|
protected void |
layoutDelegate(int width,
int height)
Lays out this screen's delegate. |
|
protected void |
makeMenu(Menu menu,
int instance)
Called from onMenu to populate the menu. |
|
boolean |
onClose()
Indicates a close event has occurred. |
|
protected void |
onDisplay()
Invoked when this screen is pushed onto the display stack. |
|
protected void |
onExposed()
Invoked when this screen is revealed by a screen getting popped off the display stack. |
|
protected void |
onFocus(int direction)
Finds a controlled field to give the focus. |
|
boolean |
onMenu(int instance)
Called when a menu should be displayed. |
|
protected void |
onObscured()
Invoked when this screen is obscured by a new screen pushed on the display stack. |
|
protected boolean |
onSave()
Invoked when the screen should save its contents. |
|
protected boolean |
onSavePrompt()
Invoked when the screen should prompt to save its contents. |
|
protected void |
onUndisplay()
Invoked when this screen is popped off the display stack. |
|
protected void |
onUnfocus()
Removes focus from this screen. |
|
protected void |
paint(Graphics graphics)
Paints this manager's visible region. |
|
protected void |
paintBackground(Graphics graphics)
Paint this screen's background. |
|
void |
removeFocus()
Removes focus from this screen. |
|
void |
removeKeyListener(KeyListener listener)
Removes a key event listener from this screen. |
|
void |
removeTrackwheelListener(TrackwheelListener listener)
Removes a trackwheel event listener from this screen. |
|
void |
save()
Invoked when the screen should save its contents. |
|
boolean |
scroll(int direction)
Scrolls the focus in specified direction. |
|
void |
setDirty(boolean dirty)
Cleans or dirties all controlled fields. |
|
void |
setFocus()
Sets the focus to the delegate manager. |
|
boolean |
setFocus(Field field,
int x,
int y,
int status,
int time)
Sets focus to exact position in current screen. |
|
void |
setHorizontalQuantization(int horizontalQuanta)
Sets the horizontal quantization. |
|
protected void |
setPositionDelegate(int x,
int y)
Places this screen's delegate. |
|
void |
setVerticalQuantization(int verticalQuanta)
Sets the vertical quantization. |
|
protected boolean |
trackwheelClick(int status,
int time)
Delegates trackwheel click events. |
|
protected boolean |
trackwheelClickUnhandled(int status,
int time)
|
|
protected boolean |
trackwheelRoll(int amount,
int status,
int time)
Invoked when the trackwheel is rolled. |
|
protected boolean |
trackwheelUnclick(int status,
int time)
Delegates trackwheel unclick events. |
|
void |
updateDisplay()
Updates the display for this screen only. |
|
| Methods inherited from class net.rim.device.api.ui.Manager |
deleteAll, getHorizontalScroll, getVerticalScroll, getVirtualHeight, getVirtualWidth, getVisibleHeight, getVisibleWidth, invalidate, isDownArrowShown, isUpArrowShown, isValidLayout, layout, layoutChild, moveFocus, moveFocus, nextFocus, paintChild, setFocus, setHorizontalScroll, setPositionChild, setScrollListener, setVerticalScroll, setVirtualExtent, sublayout, subpaint |
| Methods inherited from class net.rim.device.api.ui.Field |
drawFocus, drawHighlightRegion, fieldChangeNotify, focusAdd, focusRemove, getChangeListener, getContextMenu, getCookie, getExtent, getFieldStyle, getFocusListener, getFont, getHeight, getIndex, getLeft, getManager, getOriginal, getPreferredHeight, getPreferredWidth, getScreen, getStyle, getTop, getWidth, isEditable, isPasteable, isSelectable, isSelectionCopyable, isSelectionCutable, isSelectionDeleteable, isVisible, makeContextMenu, onVisibilityChange, paste, select, selectionCopy, selectionCut, selectionDelete, setChangeListener, setCookie, setEditable, setExtent, setFocusListener, setFont, setMuddy, setPosition, updateLayout |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static final long DEFAULT_MENU
public static final long DEFAULT_CLOSE
| Constructor Detail |
public Screen(Manager delegate)
delegate - Manager this screen uses as layout delegate.public Screen(Manager delegate, long style)
Use this constructor to build a screen of a particular style.
delegate - Manager this screen uses as layout delegate.style - Style the screen uses for instantiation| Method Detail |
public void add(Field field)
Provided a field, this method invokes Manager.add(net.rim.device.api.ui.Field) on this
screen's delegate manager, prompting the manager to add the field.
field - Field to add.public final void addKeyListener(KeyListener listener)
listener - Key event listener to handle key events passed to this
screen.public final void addTrackwheelListener(TrackwheelListener listener)
listener - Trackwheel event listener to handle trackwheel events
pass to this screen.public void close()
public void delete(Field field)
This method invokes Manager.delete(net.rim.device.api.ui.Field) on this screen's delegate
manager to delete your provided field. Note that, after deletion, the
list of fields gets compacted.
field - Field to delete.
public void deleteRange(int start,
int count)
This method invokes Manager.deleteRange(int, int) on this screen's
delegate maanger to delete a range of fields. Note that, after deletion,
the list of fields gets compacted.
deleteRange in class Managerstart - Index of first field to delete.count - Number of fields to delete.public void doLayout()
This method is automatically invoked when a screen is pushed onto the display stack.
public void ensureRegionVisible(Field field, int x, int y, int width, int height)
Pass this method a field, and a region (extent), and this method attempts to scroll the screen to make as much of your region visible as possible.
If your region is smaller than the screen's visible extent, this method does as little work as possible to ensure the entire region appears on the screen.
If your region is larger than the screen's visible extent, this method produces the net effect of aligning the top left corner of your region with the top left corner of the screen's visible extent.
field - Field that contains your region.x - Left edge of the region.y - Top edge of the region.width - Width (in pixels) of the region.height - Height (in pixels) of the region.public final UiEngine getUiEngine()
public void invalidateLayout()
This method prompts this screen's delegate manager to invalidate this screen's layout.
IllegalStateException - If this method is called while the screen
is displayed.public final boolean isDisplayed()
This will return true iff this screen is on a display stack. Its position withing the stack does not matter; this function does not indicate visibility. A screen is deemed displayed as soon as it is pushed onto the display stack, and not displayed as soon as it is popped from the display stack.
For GlobalStatus screens, this indicates whether this screen is the current one displayed. Any GlobalStatus that has been queued or that has had its display preempted by a higher priority GlocbalStatus is deems not displayed.
public boolean isFocusable()
This method invokes Manager.isFocusable() on this screen's
delegate manager to determine whether the delegate manager (and thus the
screen) accepts the focus.
isFocusable in class Managerpublic boolean isGlobalStatus()
public final void doPaint()
Invoke this method to force a repaint of this screen, its delegate manager, and all owned fields.
public Manager getDelegate()
public int getFieldAtLocation(int x,
int y)
This method invokes Manager.getFieldAtLocation(int, int) on this
screen's delegate manager.
getFieldAtLocation in class Managerx - Distance from left edge of screen's extent.y - Distance from top edge of screen's extent.public void getFocusRect(XYRect rect)
getFocusRect in class Managerpublic Graphics getGraphics()
This method returns the graphics context for this screen, with
a clipping region on top of the graphics stack set to the screen's entire
extent.
Note: We recommend against direct use of this method; instead,
use the various invalidate methods. It may be used for direct
drawing to the display when the screen contains no fields.
The Graphics object returned by this call becomes invalid and should not be used after the end of the current UI event.
public void insert(Field field, int index)
Provided a field and an index, this method invokes
Manager.insert(Field,int) on this screen's delegate manager,
prompting the manager to insert the field at the specified position in
its list.
field - Field to insert.index - Position in manager's list of controlled fields at which to
insert new field.public boolean isDirty()
This method invokes Manager.isDirty() on this screen's delegate
manager.
setDirty(boolean) was invoked (which is also passed on to the delegate
manager).public boolean isMuddy()
This method invokes Manager.isMuddy() on this screen's delegate
manager.
public boolean isSelecting()
This method invokes Manager.isSelecting() on this screen's
delegate manager.
isSelecting in class Manager
protected boolean keyChar(char c,
int status,
int time)
This method invokes Manager.keyChar(char, int, int) on this screen's delegate
manager.
c - Character generated.status - Modifier key status.time - Ticks since device reset.
protected boolean keyCharUnhandled(char key,
int status,
int time)
Subclasses should override this event to provide custom handling of keyChar events that remain unhandled by any of their controlled fields.
key - Character generated.status - Modifier key status.time - Ticks since device reset.
protected boolean keyControl(char c,
int status,
int time)
This method invokes Manager.keyControl(char, int, int) on this screen's delegate
manager.
keyControl in class Managerc - Character generated.status - Modifier key status.time - Ticks since device reset.
protected boolean keyDown(int keycode,
int time)
This method invokes Manager.keyDown(int, int) on this screen's delegate
manager.
keycode - Key scan code of the key pressed, ignoring any effects of
modifier keys.time - Ticks since device reset.
protected boolean keyUp(int keycode,
int time)
This method invokes Manager.keyUp(int, int) on this screen's delegate
manager.
keycode - Key scan code of the key released, ignoring any effects of
modifier keys.time - Ticks since device reset.
protected boolean keyRepeat(int keycode,
int time)
This method invokes Manager.keyRepeat(int, int) on this screen's
delegate manager.
keycode - Key scan code of key to repeat, ignoring any effects of
modifier keys.time - Ticks since device reset.
protected final void layoutDelegate(int width,
int height)
width - Amount of available horizontal space.height - Amount of available vertical space.protected void makeMenu(Menu menu, int instance)
menu - Menu to which items should be added.instance - The instance of the desired menu. If your screen supports
only one menu, this may be ignored. By default, it is 0.onMenu(int)public boolean onClose()
The default implementation is activated by specifying DEFAULT_CLOSE. It will call onSavePrompt if the screen is dirty, then call close() if sucessful.
protected void onDisplay()
This method is invoked by the system after this screen is pushed onto the stack and layout has been done, but before any painting occurs.
If no controlled field has the focus, this method attempts to assign the focus to the first field that will accept it, starting with the first field in the delegate manager's field list. Additionally, this method makes the focus visible, and resets scrolling to 0 if possible (ensuring the focussed region stays on the screen).
The complimenting callback is onUndisplay().
protected void onExposed()
Subclasses of screen should override this method for special handling.
The complimenting callback is onObscured().
onObscured(),
onDisplay(),
Field.onVisibilityChange(boolean)protected void onFocus(int direction)
This method invokes Manager.onFocus(int) on this screen's delegate
manager, thus starting with the delegate manager's controlled field list,
looking for a field to give the focus. This method passes the focus to
the first found field that accepts it.
direction - If 1, start at the top of the delegate manager's field
list and search foward. If -1, start at the bottom of the delegate
manager's field list and search backward.public boolean onMenu(int instance)
If the DEFAULT_MENU style is specified, this will create a menu and call makeMenu(Menu). Then menu.show() will be called, and MenuItem.run() will be used to activate the selected item.
instance - The instance of the desired menu. If your screen supports
only one menu, this may be ignored. By default, it is 0.protected void onObscured()
Subclasses of screen should override this method for special handling.
The complimenting callback is onExposed().
protected boolean onSave()
protected boolean onSavePrompt()
The default implementation is empty. Overriding classes should provide a dialog and call onSave if the user has chosen to save. If the return is true, the framwork will calll onClose.
MainScreen.onSavePrompt()protected void onUndisplay()
Subclasses of screen should override this method for special handling.
The complimenting callback is onDisplay().
onDisplay(),
onObscured(),
Field.onVisibilityChange(boolean)protected void onUnfocus()
This method invokes Manager.onUnfocus() on this screen's
delegate manager to remove the focus from this screen.
protected void paint(Graphics graphics)
Manager Invoke this method to prompt this manager to paint
itself. if you extend manager to create a custom layout
manager, you may want to implement the
subpaint method, as this method invokes it.
This method also draws the focus indicator as required.
protected void paintBackground(Graphics graphics)
The system calls this method before painting begins in order to clear this screen's background, initializing your provided graphics context to this screen's extent.
By default, this method simple invokes Graphics.clear(); for
more complex handling, you should override this method in extending
classes.
graphics - Graphics context used to draw the background.
public void save()
throws IOException
public void invalidate(int x,
int y,
int width,
int height)
This method marks a region of this screen as needing a repaint. The repainting is handled later by the main event dispatch thread.
Note: Any thread can safely invoke this method, as long as no layout update or scrolling occurs.
invalidate in class Managerx - Left edge of the region in field coordinates.y - Top edge of the region in field coordinates.width - Width (in pixels) of the region.height - Height (in pixels) of the region.Field.invalidate(int,int,int,int)
protected boolean trackwheelRoll(int amount,
int status,
int time)
trackwheelRoll in class Manageramount - Number of scrolling positions: negative for an upwards roll,
and positive for a downwards roll.status - Modifier key status at time of roll.time - Ticks since device reset.
protected boolean trackwheelClick(int status,
int time)
This listener method passes on trackwheel click events to
this screen's delegate manager by invoking
Manager.trackwheelClick(int, int).
trackwheelClick in class Managerstatus - State of the modifier keys.time - Ticks since device reset.
protected boolean trackwheelClickUnhandled(int status,
int time)
protected boolean trackwheelUnclick(int status,
int time)
This listener method passes on trackwheel unclick events to
this screen's delegate manager by invoking
Manager.trackwheelUnclick(int, int).
trackwheelUnclick in class Managerstatus - State of the modifier keys.time - Ticks since device reset.public int getFieldCount()
This method invokes Manager.getFieldCount() on this screen's
delegate manager to retrieve the number of fields it controls.
getFieldCount in class Managerpublic Field getField(int index)
This method invokes Manager.getField(int) on this screen's
delegate manager to retrieve a particular field from its list.
index - Index of field to retrieve.IndexOutOfBoundsException - If index not valid.public Field getFieldWithFocus()
This method invokes Manager.getFieldWithFocus() on this
screen's delegate manager to retrieve the currently focussed field.
getFieldWithFocus in class Managerpublic int getFieldWithFocusIndex()
This method invokes Manager.getFieldWithFocusIndex() on this
screen's delegate manager to retrieve the currently focussed field.
getFieldWithFocusIndex in class Managerpublic Field getLeafFieldWithFocus()
This method invokes Manager.getLeafFieldWithFocus() on this
screen's delegate manager to retrieve the (bottom-most, non-manager) leaf
field that has the focus.
getLeafFieldWithFocus in class Managerpublic final void removeKeyListener(KeyListener listener)
listener - Key event listener to de-register for this screen.public final void removeTrackwheelListener(TrackwheelListener listener)
listener - Trackwheel event listener to de-register for this screen.public final boolean scroll(int direction)
The parameter passed to this method indicates the direction and amount of movement required:
To control vertical movement use Manager.UPWARD and Manager.DOWNWARD
to move the focus one screen up or down; use Manager.TOPMOST and
Manager.BOTTOMMOST. to move the focus all the way to the top edge or
bottom edge of the manager's region.
To control horizontal movement use Manager.LEFTWARD and
Manager.RIGHTWARD to move the focus one screen left or right; use
Manager.LEFTMOST and Manager.RIGHTMOST to move the focus all the way to
the left or right edge of the manager's region.
You can combine one vertical movement constant and one horizontal movement constant to effectively move the focus diagonally. However, this method performs the vertical movement first, and then the horizontal movement, in order to simulate diagonal motion.
Note: focus movement is constrained in all directions by the extent of this manager. If the focus is currently less than one screen from an edge of the manager's extent it must move towards, it stops at that edge. Also, this method scrolls the visible region of this manager as required to ensure the focus remains visible.
direction - Combination of constant values to indicate in which
direction, and how much, the focus is to move.public void setDirty(boolean dirty)
This method invokes Manager.setDirty(boolean) on this screen's
delegate manager to clean (or dirty) all this screen's controlled fields.
dirty - True if dirtying the fields; false if cleaning them.public void setFocus()
This method assigns the focus to the delegate manager through
invoking Field.setFocus() on the delegete manager.
net.rim.device.api.ui.FieldIllegalStateException - If the field is not attached to a
screen or if called on a Field that does not accept the focus.public final boolean setFocus(Field field, int x, int y, int status, int time)
field - Field in which to place the focus.x - Distance from left edge of screen.y - Distance from top edge of screen.status - State of modifier keys.time - Ticks since device reset.IllegalArgumentException - if field does not belong to this screenpublic void setHorizontalQuantization(int horizontalQuanta)
The real horizontal size must be a multiple of your provided value.
setHorizontalQuantization in class ManagerhorizontalQuanta - Horizontal quantization in pixels.
protected final void setPositionDelegate(int x,
int y)
x - Left edge position for this screen's delegate.y - Top edge position for this screen's delegate.public void setVerticalQuantization(int verticalQuanta)
The real vertical szie must be a multiple of your provided value.
setVerticalQuantization in class ManagerverticalQuanta - Vertical quantization in pixels.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
Copyright 1999-2002 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.