📄 uihandler.java
字号:
package jmirc;import java.util.*;import javax.microedition.lcdui.*;public class UIHandler { private Display display; private Window console; private boolean header; private boolean timestamp; private boolean winlock; private int buflines; private Hashtable channels, privates; private Vector windows; // excludes console private int currentwin; private String hilight; public String nick; public boolean keylock; public UIHandler(Database db, Display disp) { nick = db.nick; keylock = false; header = db.header; timestamp = db.timestamp; hilight = db.hilight; buflines = db.buflines; display = disp; winlock = false; channels = new Hashtable(); privates = new Hashtable(); windows = new Vector(); currentwin = 0; console = new Window(this, "Status", Window.TYPE_CONSOLE, hilight, header, timestamp, buflines); addWindow(console); } public Window getConsole() { return console; } public Window getChannel(String channel) { Window win; channel = channel.trim(); win = (Window) channels.get(channel.toUpperCase()); if (win == null) { win = new Window(this, channel, Window.TYPE_CHANNEL, hilight, header, timestamp, buflines); channels.put(channel.toUpperCase(), win); addWindow(win); } return win; } public Window getPrivate(String priv) { Window win; if (priv.charAt(0) == '@' || priv.charAt(0) == '+') priv = priv.substring(1).trim(); else priv = priv.trim(); win = (Window) privates.get(priv.toUpperCase()); if (win == null) { win = new Window(this, priv, Window.TYPE_PRIVATE, hilight, header, timestamp, buflines); privates.put(priv.toUpperCase(), win); addWindow(win); if (keylock) playAlarm(true); } // private message coming, we play the alarm else if (keylock) playAlarm(false); return win; } public synchronized void addWindow(Window win) { windows.addElement(win); displayWindow(-1); } public synchronized int[] getIndicators() { int[] ret = new int[windows.size()]; for (int i=0; i<windows.size(); i++) { if (i == currentwin) ret[i] = Window.STATE_SELECTED; else ret[i] = ((Window) windows.elementAt(i)).getState(); } return ret; } public synchronized void setHeader(boolean visible) { header = visible; for (int i=0; i<windows.size(); i++) ((Window) windows.elementAt(i)).setHeaderVisible(header); } public void displayNextWindow() { displayWindow(currentwin+1); } public void displayPreviousWindow() { displayWindow(currentwin-1); } public void displayWindow(int num) { Window win; if (winlock) return; // no window changing on winlock if (num >= windows.size()) num = 0; else if (num < 0) num = windows.size()-1; if (num != currentwin) { ((Window) windows.elementAt(currentwin)).setState(Window.STATE_NONE); setDisplay((Window) windows.elementAt(num)); currentwin = num; } } public synchronized void deleteWindow(Window win) { if (win.getType() == Window.TYPE_PRIVATE) privates.remove(win.getName().toUpperCase()); if (win.getType() == Window.TYPE_CHANNEL) channels.remove(win.getName().toUpperCase()); windows.removeElement(win); currentwin--; setDisplay((Window) windows.elementAt(currentwin)); } public void setDisplay(Displayable disp) { display.setCurrent(disp); } public Hashtable getChannels() { return channels; } public void clearChanPriv() { for (int i=1; i<windows.size(); i++) { ((Window) windows.elementAt(i)).clear(); } windows.removeAllElements(); channels.clear(); privates.clear(); console.enterExitMode(); currentwin = 0; addWindow(console); setDisplay(console); console.repaint(); } public void cleanup() { if (windows.size() > 1) clearChanPriv(); console.clear(); windows.removeAllElements(); setDisplay(jmIrc.mainform); } public void repaint() { ((Window) windows.elementAt(currentwin)).repaint(); } public void setWinlock(boolean lock) { winlock = lock; } public boolean playAlarm(boolean louder) { if (louder) return AlertType.ALARM.playSound(display); else return AlertType.INFO.playSound(display); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -