jndesktopmanager.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 201 行

JAVA
201
字号
/*
 * $Id: JNDesktopManager.java,v 1.13 2004/02/26 21:17:16 lsantha Exp $
 */
package org.jnode.wt.desktop;

import org.jnode.wt.events.JNPaintEvent;
import org.jnode.wt.events.JNDesktopManagerListener;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * @author vali
 */
public class JNDesktopManager {

    private static final JNDesktopManager instance = new JNDesktopManager();
    private Graphics2D graphics = null;
    private final List desktopslist = new LinkedList();
    private int curIndex = 0;
    private final JNodeEventQueue eventqueue;
    public Container testContainer = null;
    private final List listeners = new LinkedList();
    private boolean hardwareCursor = false;
    private Dimension screenSize;

    /**
     * Initialize this instance.
     */
    private JNDesktopManager() {
        eventqueue = new JNodeEventQueue();
    }

    /**
     * Gets the global desktop manager.
     *
     * @return The global desktop manager.
     */
    public static JNDesktopManager getDesktopManager() {
        return instance;
    }

    /**
     * Post an event to the global event queue.
     *
     * @param event
     */
    public final void postEvent(JNodeEvent event) {
        eventqueue.postEvent(event);
    }

    public synchronized void removeDesktop(JNDesktop desktop) {
        desktopslist.remove(desktop);
        fireDesktopClosedEvent(desktop);
    }

    /**
     * Create and add a new desktop.
     *
     * @return The created desktop.
     */
    public synchronized JNDesktop addDesktop() {
        JNDesktop desktop = new JNDesktop();
        desktop.setSize(screenSize);
        desktopslist.add(desktop);
        fireDesktopCreatedEvent(desktop);
        return desktop;
    }

    /**
     * Gets the current desktop.
     *
     * @return JNDesktop
     */
    public final JNDesktop getCurrentDesktop() {
        if (desktopslist.size() > curIndex) {
            return (JNDesktop) desktopslist.get(curIndex);
        } else {
            return null;
        }
    }

    /**
     * Gets the number of desktops.
     *
     * @return int
     */
    public final int getDesktopCount() {
        return desktopslist.size();
    }

    /**
     * Get the desktop graphics.
     */
    public final Graphics2D getGraphics() {
        if (graphics == null && testContainer != null) {
            return (Graphics2D) testContainer.getGraphics();
        }
        return graphics;
    }

    /**
     * @param g
     *            The graphics to set.
     */
    public final void setGraphics(Graphics2D g) {
        this.graphics = g;
    }

    /**
     * Repaint the current desktop.
     */
    public final void repaint() {
        final JNDesktop desktop = getCurrentDesktop();
        if (desktop != null) {
            postEvent(new JNPaintEvent(desktop, JNPaintEvent.UPDATE));
        }
    }

    /**
     * Add a listener
     *
     * @param listener
     */
    public final synchronized void addDesktopManagerListener(JNDesktopManagerListener listener) {
        listeners.add(listener);
    }

    /**
     * Remove a listener
     *
     * @param listener
     */
    public final synchronized void removeDesktopManagerListener(JNDesktopManagerListener listener) {
        listeners.remove(listener);
    }

    /**
     * Notify all listeners of a desktop created event.
     *
     * @param desktop
     */
    protected final void fireDesktopCreatedEvent(JNDesktop desktop) {
        // Create a copy of the list, to allow modifications of the list by listeners.
        final ArrayList copyList = new ArrayList(listeners);
        for (Iterator i = copyList.iterator(); i.hasNext();) {
            final JNDesktopManagerListener l = (JNDesktopManagerListener) i.next();
            l.desktopCreated(desktop);
        }
    }

    /**
     * Notify all listeners of a desktop closed event.
     *
     * @param desktop
     */
    protected final void fireDesktopClosedEvent(JNDesktop desktop) {
        // Create a copy of the list, to allow modifications of the list by listeners.
        final ArrayList copyList = new ArrayList(listeners);
        for (Iterator i = copyList.iterator(); i.hasNext();) {
            final JNDesktopManagerListener l = (JNDesktopManagerListener) i.next();
            l.desktopClosed(desktop);
        }
    }

    /**
     * @return Returns the hardwareCursor.
     */
    public final boolean isHardwareCursor() {
        return this.hardwareCursor;
    }

    /**
     * @param hardwareCursor
     *            The hardwareCursor to set.
     */
    public final void setHardwareCursor(boolean hardwareCursor) {
        this.hardwareCursor = hardwareCursor;
    }

    /**
     * @return Returns the screenSize.
     */
    public final Dimension getScreenSize() {
        return this.screenSize;
    }

    /**
     * @param screenSize
     *            The screenSize to set.
     */
    public final void setScreenSize(Dimension screenSize) {
        this.screenSize = screenSize;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?