⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winmanager.java

📁 一款即时通讯软件
💻 JAVA
字号:
package edu.ou.kmi.buddyspace.utils;

/*
 * WinManager.java
 *
 * Project: BuddySpace
 * (C) Copyright Knowledge Media Institute 2002
 *
 *
 * Created on 23 October 2002, 13:10
 */

import java.util.*;
import java.awt.*;
import javax.swing.*;

/**
 * <code>WinManager</code> is manager of <code>DockableWindow</code>s.
 *
 * @author  Jiri Komzak, Knowledge Media Institute, Open University, United Kingdom
 */
public abstract class WinManager {

    protected Hashtable openWindows = null;
    protected JTabbedPane tabbedPane = null;


    public WinManager(JTabbedPane tabbedPane) {
        this.tabbedPane = tabbedPane;
        openWindows = new Hashtable();
    }


    public boolean isWindowOpen(String ID) {
        Object win = openWindows.get(ID);
        return (win != null);
    }


    /** Registers window into the manager */
    public void addWindow(DockableWindow win, boolean docked) {
        if (win == null) return;

        DockableWindow oldWin = (DockableWindow) openWindows.get(win.getID());
        if (oldWin != null)
            closeWindow(oldWin);

        openWindows.put(win.getID(), win);
    }


    public void setWindowDocked(DockableWindow win, boolean docked) {
        setWindowDocked(win, docked, true);
    }


    public void setWindowDocked(DockableWindow win, boolean docked, boolean select) {
        if (tabbedPane == null) return;

        if (docked)
            win.dockAsTab(tabbedPane);  // -> tabbedPane.addTab(win);
        else {
            if (-1 != tabbedPane.indexOfComponent(win))
                tabbedPane.remove(win);
            win.setDocked(false, select);
        }

        if (select)
            selectWindow(win);
    }


    /** Sets tabbed pane into which the chat windows are added. */
    public void setTabbedPane(JTabbedPane tabbedPane) {
        this.tabbedPane = tabbedPane;
    }


    /** Closes given windows */
    public void closeWindow(DockableWindow win) {
        openWindows.remove(win.getID());

        win.prepareOnClose();
        showWindow(win, false);
    }


    /** Closes all windows */
    public void closeAllWindows() {
        Enumeration enumeration = openWindows.elements();
        while (enumeration.hasMoreElements()) {
            DockableWindow win = (DockableWindow) enumeration.nextElement();
            closeWindow(win);
        }
    }


    public DockableWindow getWindow(String ID) {
        return (DockableWindow) openWindows.get(ID);
    }


    public void selectWindow(DockableWindow win) {
        if (-1 != tabbedPane.indexOfComponent(win)) {
            tabbedPane.setSelectedComponent(win);
        }
        else {
            win.setVisible(true);
            //win.requestFocus();
            win.toFront();
        }
    }


    public void showWindow(DockableWindow win, boolean show) {
        showWindow(win, show, true);
    }


    public void showWindow(DockableWindow win, boolean show, boolean select) {
        if (win == null) return;

        win.showWindow(show, select);

        if (win.isDocked())
            if (show)
                win.dockAsTab(tabbedPane);
            else
                tabbedPane.remove(win);

        if (show && select)
            selectWindow(win);
    }


    /**
     * Doesn't work for undocked windows :o(
     */
    public boolean isWindowActive(DockableWindow win) {
        if (win == null)
            return false;

        if (win.isDocked()) {
            return (tabbedPane.indexOfComponent(win)
                    == tabbedPane.getSelectedIndex());
        }
        else {
            // *** !!! doesn't work !!!
            return win.hasFocus();
        }
    }


    /**
     * Sets title of given window
     */
    public void setWindowTitle(DockableWindow win, String title) {
        if (win == null) return;

        win.setTitle(title);

        if (win.isDocked() && tabbedPane != null) {
            int index = tabbedPane.indexOfComponent(win);
            if (index != -1) {
                tabbedPane.setTitleAt(index, title);
            }
        }
    }

    /**
     * Updates LAF.
     */
    public void updateLAF() {
        Enumeration winEnum = openWindows.elements();
        while (winEnum != null && winEnum.hasMoreElements()) {
            DockableWindow win = (DockableWindow) winEnum.nextElement();
            win.updateLAF();
        }
    }

}

⌨️ 快捷键说明

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