001: /*
002: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
004: *
005: * This program is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU General Public License version
007: * 2 only, as published by the Free Software Foundation.
008: *
009: * This program is distributed in the hope that it will be useful, but
010: * WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * General Public License version 2 for more details (a copy is
013: * included at /legal/license.txt).
014: *
015: * You should have received a copy of the GNU General Public License
016: * version 2 along with this work; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
018: * 02110-1301 USA
019: *
020: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
021: * Clara, CA 95054 or visit www.sun.com if you need additional
022: * information or have any questions.
023: */
024:
025: package com.sun.midp.lcdui;
026:
027: import com.sun.midp.security.*;
028: import com.sun.midp.events.EventQueue;
029: import javax.microedition.lcdui.Image;
030:
031: /**
032: * Initialize the LCDUI environment.
033: */
034: public class LCDUIEnvironment {
035:
036: /**
037: * Creates lcdui event producers/handlers/lisneners.
038: *
039: * @param internalSecurityToken
040: * @param eventQueue
041: * @param isolateId
042: * @param foregroundController
043: */
044: public LCDUIEnvironment(SecurityToken internalSecurityToken,
045: EventQueue eventQueue, int isolateId,
046: ForegroundController foregroundController) {
047:
048: displayEventHandler = DisplayEventHandlerFactory
049: .getDisplayEventHandler(internalSecurityToken);
050:
051: DisplayEventProducer displayEventProducer = new DisplayEventProducer(
052: eventQueue);
053:
054: RepaintEventProducer repaintEventProducer = new RepaintEventProducer(
055: eventQueue);
056:
057: displayContainer = new DisplayContainer(internalSecurityToken,
058: isolateId);
059:
060: /*
061: * Because the display handler is implemented in a javax
062: * package it cannot created outside of the package, so
063: * we have to get it after the static initializer of display the class
064: * has been run and then hook up its objects.
065: */
066: displayEventHandler.initDisplayEventHandler(
067: displayEventProducer, foregroundController,
068: repaintEventProducer, displayContainer);
069:
070: DisplayEventListener displayEventListener = new DisplayEventListener(
071: eventQueue, displayContainer);
072:
073: /* Bad style of type casting, but DisplayEventHandlerImpl
074: * implements both DisplayEventHandler & ItemEventConsumer IFs
075: */
076: LCDUIEventListener lcduiEventListener = new LCDUIEventListener(
077: internalSecurityToken, eventQueue,
078: (ItemEventConsumer) displayEventHandler);
079: }
080:
081: /**
082: * Gets DisplayContainer instance.
083: *
084: * @return DisplayContainer
085: */
086: public DisplayContainer getDisplayContainer() {
087: return displayContainer;
088: }
089:
090: /**
091: * Called during system shutdown.
092: */
093: public void shutDown() {
094:
095: // shutdown any preempting
096: displayEventHandler.donePreempting(null);
097: }
098:
099: /**
100: * Sets the trusted state based on the passed in boolean.
101: *
102: * @param isTrusted if true state is set to trusted.
103: */
104: public void setTrustedState(boolean isTrusted) {
105: displayEventHandler.setTrustedState(isTrusted);
106: }
107:
108: /** Stores array of active displays for a MIDlet suite isolate. */
109: private DisplayContainer displayContainer;
110:
111: /**
112: * Provides interface for display preemption, creation and other
113: * functionality that can not be publicly added to a javax package.
114: */
115: private DisplayEventHandler displayEventHandler;
116: }
|