📄 bsmainframe.java
字号:
messageMenuItem.addActionListener(this);
prefsMenuItem.addActionListener(this);
exitMenuItem.addActionListener(this);
onlinePresenceMenuItem.addActionListener(this);
chatPresenceMenuItem.addActionListener(this);
elsePresenceMenuItem.addActionListener(this);
busyPresenceMenuItem.addActionListener(this);
awayPresenceMenuItem.addActionListener(this);
xaPresenceMenuItem.addActionListener(this);
dndPresenceMenuItem.addActionListener(this);
customPresenceMenuItem.addActionListener(this);
refreshRosterMenuItem.addActionListener(this);
addContactMenuItem.addActionListener(this);
changeContactMenuItem.addActionListener(this);
deleteContactMenuItem.addActionListener(this);
onlyOnlineMenuItem.addActionListener(this);
autoPopupMenuItem.addActionListener(this);
showMsgsMenuItem.addActionListener(this);
forceMsgsIntoChatMenuItem.addActionListener(this);
showStatusMenuItem.addActionListener(this);
showDebugMenuItem.addActionListener(this);
compactViewMenuItem.addActionListener(this);
dockWindowsMenuItem.addActionListener(this);
aboutMenuItem.addActionListener(this);
updatesMenuItem.addActionListener(this);
}
/** Changes the GUI according to the connection state */
protected void setGUIforConnectionState(boolean connected) {
setConnectButton(connected);
connectMenuItem.setEnabled(!connected);
disconnectMenuItem.setEnabled(connected);
enableMenus(connected);
addContactButton.setEnabled(connected);
delContactButton.setEnabled(connected);
expandGroupsButton.setEnabled(connected);
}
/** Sets state of the button for expanding/colapsing groups */
protected void setExpendGroupsButton(boolean expanded) {
Icon icon = new ImageIcon(ClassLoader.getSystemResource(expanded?
"images/collapse2.gif" : "images/expand3.gif"));
expandGroupsButton.setIcon(icon);
expandGroupsButton.setSelected(!expanded);
expandGroupsButton.setToolTipText(expanded?
"Expand all groups" : "Collapse all groups");
}
/** Sets state of button for (dis)connecting */
protected void setConnectButton(boolean connected) {
Icon icon = new ImageIcon(ClassLoader.getSystemResource(connected?
"images/disconnect.gif" : "images/connect.gif"));
connectButton.setIcon(icon);
connectButton.setToolTipText(connected? "Disconnect" : "Connect");
connectButton.setSelected(connected);
}
/**
* En/disables menus (dependent on connection).
*/
private void enableMenus(boolean enable) {
connectMenuItem.setEnabled(!enable);
disconnectMenuItem.setEnabled(enable);
chatMenuItem.setEnabled(enable);
messageMenuItem.setEnabled(enable);
customPresenceMenuItem.setEnabled(enable);
onlinePresenceMenuItem.setEnabled(enable);
chatPresenceMenuItem.setEnabled(enable);
elsePresenceMenuItem.setEnabled(enable);
busyPresenceMenuItem.setEnabled(enable);
awayPresenceMenuItem.setEnabled(enable);
xaPresenceMenuItem.setEnabled(enable);
dndPresenceMenuItem.setEnabled(enable);
refreshRosterMenuItem.setEnabled(enable);
addContactMenuItem.setEnabled(enable);
changeContactMenuItem.setEnabled(enable);
deleteContactMenuItem.setEnabled(enable);
}
/**
* Inits the given look and feel.
*/
private void initLAF() {
if (currentLookAndFeel == null || currentLookAndFeel.equals("")) return;
try {
if (currentLookAndFeel.equals("aqua")) {
Skin skin = SkinLookAndFeel.loadSkin("./aquatheme/gtk/gtkrc");
SkinLookAndFeel.setSkin(skin);
UIManager.setLookAndFeel("com.l2fprod.gui.plaf.skin.SkinLookAndFeel");
}
else {
UIManager.setLookAndFeel(currentLookAndFeel);
//added this to specifically set the scroll bar color - the scroll
// bar was not always apparent - prob due to a swing bug in the way
// the windows class sets the scroll bar color. - bz - 5/8/00
/*if (currentLookAndFeel.equals(windowsClassName))
UIManager.put("ScrollBar.track", new Color(224, 224, 224)); */
}
SwingUtilities.updateComponentTreeUI(this);
if (msgWinMan != null)
msgWinMan.updateLAF();
if (chatWinMan != null)
chatWinMan.updateLAF();
if (plugins != null)
plugins.updateLAF();
}
catch (Exception ex) {
//ex.printStackTrace();
System.err.println ("Could not swap LookAndFeel: " + currentLookAndFeel);
}
}
/**
* Handles action events from components.
*/
public void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();
// starts (dis)connecting
if (source == connectButton ||
source == connectMenuItem || source == disconnectMenuItem) {
boolean connect;
if (source == connectMenuItem) connect = true;
else if (source == disconnectMenuItem) connect = false;
else {
if (core == null) return;
ConnectionEvent.EState connState = core.getConnectionState();
//if (connState == ConnectionEvent.STATE_CONNECTING) return;
connect = (connState == ConnectionEvent.STATE_DISCONNECTED);
}
connect(connect);
}
// refreshes roster
else if (/*source == rosterButton ||*/ source == refreshRosterMenuItem) {
if (rosterBean != null) rosterBean.refreshRoster();
}
// expand roster tree groups
else if (source == expandGroupsButton) {
if (rosterTree != null) {
if (expandGroups)
rosterTree.expandAllGroups();
else
rosterTree.collapseAllGroups();
}
expandGroups = !expandGroups;
setExpendGroupsButton(expandGroups);
}
// open dialog for adding contact
else if (source == addContactButton || source == addContactMenuItem) {
BSAddContactDialog dlg = new BSAddContactDialog(this, rosterBean, presenceBean);
/*BSAddContactDialog dlg = new BSAddContactDialog(this, true, false,
rosterBean, presenceBean);*/
dlg.setVisible(true);
}
// opens dialog for changing contact
else if (source == changeContactMenuItem) {
if (rosterTree != null)
rosterTree.changeContact();
}
// deletes contact
else if (source == deleteContactMenuItem || source == delContactButton) {
if (rosterTree != null)
rosterTree.deleteContact();
}
// opens dialog for opening chat and then the chat window
else if (source == chatMenuItem) {
Enumeration jids = (rosterBean != null)? rosterBean.entries():
new Vector().elements();
BSChooseJIDDialog dlg = new BSChooseJIDDialog(this, "Open chat", jids);
dlg.show();
if (dlg.jid != null)
openChatWindow(dlg.jid, true, true);
}
// opens compose message window
else if (source == messageMenuItem) {
msgWinMan.composeMessage(new Vector().elements(), new Vector().elements());
}
// opens dialog for custom presence specification
else if (source == customPresenceMenuItem) {
BSPresenceDialog dlg = new BSPresenceDialog(this, presenceBean);
dlg.show();
if (dlg.show != null) {
setPresence(dlg.show, dlg.status, false);
}
}
// changes onlyOnline displaying in roster tree
else if (source == onlyOnlineButton || source == onlyOnlineMenuItem) {
onlyOnline = !onlyOnline;
onlyOnlineMenuItem.setSelected(onlyOnline);
onlyOnlineButton.setSelected(onlyOnline);
ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource(onlyOnline?
"images/online_users.gif": "images/all_users.gif"));
onlyOnlineButton.setIcon(icon);
onlyOnlineButton.setToolTipText(onlyOnline?
"Show all users" : "Show only online");
rosterTree.setOnlyOnline(onlyOnline);
}
// switches between compact/full view
else if (source == compactViewMenuItem || source == compactButton) {
compactView = !compactView;
compactViewMenuItem.setSelected(compactView);
ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource(compactView?
"images/compactview.gif" : "images/fullview.gif"));
compactButton.setIcon(icon);
compactButton.setSelected(compactView);
compactButton.setToolTipText(compactView?
"Full view" : "Compact view");
changeViewType(compactView);
}
// changes layout for tabs
else if (/*source == scrollTabsCheckBox ||*/ source == scrollTabsMenuItem) {
scrollTabs = !scrollTabs;
scrollTabsMenuItem.setSelected(scrollTabs);
//scrollTabsCheckBox.setSelected(scrollTabs);
if (OSVersion.isJava1Point4orHigher())
mainTabbedPane.setTabLayoutPolicy(scrollTabs?
JTabbedPane.SCROLL_TAB_LAYOUT : JTabbedPane.WRAP_TAB_LAYOUT);
}
// changes autoPopup for messages
else if (source == autoPopupMenuItem) {
autoSelectChat = !autoSelectChat;
autoPopupMenuItem.setSelected(autoSelectChat);
}
// exits the application
else if (source == exitMenuItem) {
close();
}
// sets presences
else if (source == onlinePresenceMenuItem) {
setPresence(SHOW_ONLINE_STR, null, true);
}
else if (source == chatPresenceMenuItem) {
setPresence(SHOW_CHAT_STR, null, true);
}
else if (source == busyPresenceMenuItem) {
setPresence(SHOW_ONLINE_STR, STATUS_BUSY_STR, true);
}
else if (source == elsePresenceMenuItem) {
setPresence(SHOW_ONLINE_STR, STATUS_ELSE_STR, true);
}
else if (source == awayPresenceMenuItem) {
setPresence(SHOW_AWAY_STR, null, true);
}
else if (source == xaPresenceMenuItem) {
setPresence(SHOW_XA_STR, null, true);
}
else if (source == dndPresenceMenuItem) {
setPresence(SHOW_DND_STR, null, true);
}
// changes docking of windows
else if (source == dockWindowsMenuItem) {
dockWindows = !dockWindows;
dockWindowsMenuItem.setSelected(dockWindows);
}
// changes (not)displaying of debug tab
else if (source == showDebugMenuItem) {
showDebug = !showDebug;
msgWinMan.showDebugWindow(showDebug, true, core, dockWindows);
}
// changes (not)displaying of messages tab
else if (source == showMsgsMenuItem) {
showMsgs = !showMsgs;
msgWinMan.showMessagesWindow(showMsgs, true, dockWindows);
}
// changes (not)displaying of messages tab
else if (source == forceMsgsIntoChatMenuItem) {
forceMsgsIntoChat = !forceMsgsIntoChat;
//msgWinMan.showMessagesWindow(showMsgs, true, dockWindows);
}
// changes (not)displaying of status tab
else if (source == showStatusMenuItem) {
showStatus = !showStatus;
msgWinMan.showStatusWindow(showStatus, true, core, dockWindows);
}
// displays about dialog
else if (source == aboutMenuItem) {
BSAboutDialog dlg = new BSAboutDialog(this);
dlg.show();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -