📄 winmanager.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 + -