📄 messagedelegator.java
字号:
/* * Copyright (C) 2003 Adam Olsen * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 1, or (at your option) * any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */package com.valhalla.jbother;import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JTabbedPane;import javax.swing.SwingUtilities;import net.infonode.tabbedpanel.*;import net.infonode.tabbedpanel.titledtab.*;import net.infonode.util.*;import com.valhalla.settings.Settings;/** * Displays a ConversationPanel in the TabFrame or in a containing JFrame * depending on whether or not the application is set to use a tabbed window * * @author Adam Olsen * @created Oct 25, 2004 * @version 1.1 */public class MessageDelegator { private static MessageDelegator instance = null; private Vector panels = new Vector(); private FocusTimer timer = new FocusTimer(); private javax.swing.Timer t = new javax.swing.Timer(150, timer); private static ConversationPanel currentPanel; /** * Default constructor... private for singleton */ private MessageDelegator() { } /** * @return the MessageDelegator instance */ public static MessageDelegator getInstance() { if (instance == null) { instance = new MessageDelegator(); } return instance; } /** * Shows a panel using the TabFrame or a containing frame * * @param panel * the panel to show */ public void showPanel(ConversationPanel panel) { if (Settings.getInstance().getBoolean("useTabbedWindow")) { BuddyList.getInstance().startTabFrame(); if (!BuddyList.getInstance().getTabFrame().contains(panel)) { BuddyList.getInstance().addTabPanel(panel); if (panel instanceof ChatPanel) { ((ChatPanel) panel).setUpDivider(); } else if (panel instanceof ConsolePanel) { ((ConsolePanel) panel).setUpDivider(); } } } else { if (panel.getContainingFrame() == null) { panel.createFrame(); } } if (!panels.contains(panel)) { panels.add(panel); } } /** * If the panel is contained in a JFrame, this method brings that frame to * the front of the screen * * @param panel * the panel containing the frame to bring to the front */ public void frontFrame(final ConversationPanel panel) { if (Settings.getInstance().getBoolean("useTabbedWindow")) { TabbedPanel pane = BuddyList.getInstance().getTabFrame() .getTabPane(); pane.setSelectedTab(((TabFramePanel)panel).getTab()); currentPanel = panel; if (!t.isRunning()) t.start(); else t.restart(); return; } JFrame frame = panel.getContainingFrame(); if (frame != null) { frame.setVisible(true); frame.toFront(); } panel.getInputComponent().requestFocus(); } class FocusTimer implements ActionListener { public void actionPerformed(ActionEvent e) { t.stop(); SwingUtilities.invokeLater(new Runnable() { public void run() { currentPanel.getInputComponent().requestFocus(); } }); } } /** * Removes a panel from the panels Vector * * @param panel * the panel to remove */ public void removePanel(ConversationPanel panel) { if (panel instanceof ChatPanel) { ((ChatPanel) panel).removeDividerListener(); } else if (panel instanceof ConsolePanel) { ((ConsolePanel) panel).removeDividerListener(); } panels.remove(panel); if(currentPanel == panel) currentPanel = null; } /** * @return the Vector containing a list of all the available * ConversationPanels */ public Vector getPanels() { return panels; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -