001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package com.sun.midp.lcdui;
028:
029: import com.sun.midp.events.EventTypes;
030: import com.sun.midp.events.Event;
031:
032: import com.sun.midp.log.Logging;
033: import com.sun.midp.log.LogChannels;
034:
035: import javax.microedition.lcdui.Displayable;
036: import javax.microedition.lcdui.Item;
037:
038: /**
039: * An subclass for "synthetic" LCDUI events. These events are generated by
040: * LCDUI for its own purposes, and they include events whose type codes are
041: * SCREEN_CHANGE_EVENT, CALL_SERIALLY_EVENT, INVALIDATE_EVENT and ITEM_EVENT.
042: * Events generated by the
043: * system, such as keystrokes and commands, are not considered to be synthetic
044: * events because they represent some actual user action.
045: *
046: * TBD: Class need to be PUIBLIC only
047: * if LCDUIEvent will be needed outside of the package
048: */
049: class LCDUIEvent extends Event {
050: /** Item for the item changed event. */
051: Item changedItem = null;
052: /** Next screen. */
053: Displayable nextScreen = null;
054: /** Target display of the event. */
055: DisplayEventConsumer display;
056: /** True if the display has be put in the foreground. */
057: boolean hasForeground;
058:
059: /**
060: * The event's minor code. For events of type ITEM_EVENT, the minor code
061: * is either ITEM_STATE_CHANGED or ITEM_SIZE_REFRESH.
062: */
063: int minorCode;
064:
065: /** Constant specifying that an ITEM_EVENT indicates a state change. */
066: static final int ITEM_STATE_CHANGED = 0;
067: /** Constant specifying that an ITEM_EVENT requests a size refresh. */
068: static final int ITEM_SIZE_REFRESH = 1;
069:
070: /**
071: * Construct an event that has no parameters.
072: *
073: * @param type event ID type
074: */
075: private LCDUIEvent(int type) {
076: super (type);
077: }
078:
079: /**
080: * Create a basic LCDUI event.
081: *
082: * @param d Target Display
083: * @param type event ID type
084: *
085: * @return initialized event
086: */
087: static LCDUIEvent createBasicEvent(DisplayEventConsumer d, int type) {
088: LCDUIEvent event = new LCDUIEvent(type);
089:
090: if (Logging.TRACE_ENABLED) {
091: if (d == null) {
092: Logging.report(Logging.ERROR, LogChannels.LC_CORE,
093: "Event created with a null display target");
094: }
095: }
096:
097: event.display = d;
098: return event;
099: }
100:
101: /**
102: * Create an item state changed event.
103: *
104: * @param src the Item src to the event
105: * @param minor the minor code
106: *
107: * @return initialized event
108: */
109: static LCDUIEvent createItemEvent(Item src, int minor) {
110: LCDUIEvent e = new LCDUIEvent(EventTypes.ITEM_EVENT);
111: e.changedItem = src;
112: e.minorCode = minor;
113: return e;
114: }
115:
116: /**
117: * Create a screen repaint event.
118: *
119: * @param display parent Display of the Displayable
120: * @return initialized event
121: */
122: static LCDUIEvent createScreenRepaintEvent(
123: DisplayEventConsumer display) {
124: LCDUIEvent e = new LCDUIEvent(EventTypes.SCREEN_REPAINT_EVENT);
125: e.display = display;
126: return e;
127: }
128:
129: /**
130: * Create a screen change event.
131: *
132: * @param parent parent Display of the Displayable
133: * @param d The Displayable to change the current screen to
134: *
135: * @return initialized event
136: */
137: static LCDUIEvent createScreenChangeEvent(
138: DisplayEventConsumer parent, Displayable d) {
139: LCDUIEvent e = new LCDUIEvent(EventTypes.SCREEN_CHANGE_EVENT);
140: e.display = parent;
141: e.nextScreen = d;
142: return e;
143: }
144:
145: }
|