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

📄 tabframe.java

📁 网站即时通讯系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        for (int i = 0; i < tabPane.getTabCount(); i++) {            TabFramePanel p = (TabFramePanel) tabPane.getTabAt(i).getContentComponent();            if (p == panel)                return true;        }        return false;    }    /**     * Returns the number of rooms currently open in the frame     *     * @return the number of rooms still open     */    public int tabsLeft() {        return tabPane.getTabCount();    }    /**     * Adds a chat room to the frame     *     * @param window     *            the room to add     */    public void addPanel(TabFramePanel panel) {        panel.setListenersAdded(true);        final TitledTab tab = new TitledTab( panel.getPanelName(), null, (JComponent) panel, null );        tab.getProperties().addSuperObject(theme.getTitledTabProperties());        //tab.getProperties().setSizePolicy(TitledTabSizePolicy.INDIVIDUAL_SIZE);        //tab.getProperties().setBorderSizePolicy(TitledTabBorderSizePolicy.INDIVIDUAL_SIZE);        CloseButton b = new CloseButton(tab);        final CloseButton temp = b;        tab.setHighlightedStateTitleComponent(b);        if( !Settings.getInstance().getBoolean("closeButtonOnAll")) b = null;        tab.setNormalStateTitleComponent(b);        tab.setDisabledStateTitleComponent(b);        tab.addMouseListener(new MouseAdapter()        {            public void mousePressed(MouseEvent e)            {               if(e.isPopupTrigger())                {                    close.setTab(tab);                    close.show(tab, e.getX(), e.getY());                }            }        } );        tab.getProperties().setHoverListener( new HoverListener()            {                public void mouseEntered(HoverEvent e)                {                    if(Settings.getInstance().getBoolean("closeButtonOnAll")) return;                    tab.setNormalStateTitleComponent(temp);                    tab.setDisabledStateTitleComponent(temp);                    tab.validate();                }                public void mouseExited(HoverEvent e)                {                    if(Settings.getInstance().getBoolean("closeButtonOnAll")) return;                    tab.setNormalStateTitleComponent(null);                    tab.setDisabledStateTitleComponent(null);                    tab.validate();                }            } );        tabPane.addTab( tab );        panel.setTab( tab );        if (panel instanceof ChatRoomPanel)            tabPane.setSelectedTab(tab);    }    public void resetCloseButtons(boolean selected)    {        for( int i = 0; i < tabPane.getTabCount(); i++ )        {            TitledTab tab = (TitledTab)tabPane.getTabAt(i);            CloseButton button = new CloseButton(tab);            tab.setHighlightedStateTitleComponent(button);            if( !selected) button = null;            tab.setNormalStateTitleComponent(button);            tab.setDisabledStateTitleComponent(button);            tab.validate();        }    }    /**     * Switches the tab based on CTRL+n keys     */    class GCTabHandler implements KeyEventPostProcessor {        boolean first = false;        public boolean postProcessKeyEvent(KeyEvent e) {            Window w = KeyboardFocusManager.getCurrentKeyboardFocusManager()                    .getFocusedWindow();            if (!(w instanceof TabFrame))                return false;            TabbedPanel tabPane = ((TabFrame) w).getTabPane();            // get the ASCII character code for the character typed            int numPressed = (int) e.getKeyChar();            int mask = KeyEvent.CTRL_MASK;            if (System.getProperty("mrj.version") != null) {                mask = KeyEvent.META_DOWN_MASK;            }            // the integer characters start at ASCII table number 49, so we            // subtract 49            numPressed -= 49;            // if the new ASCII value is between 0 and 8, then the            // key pressed was 1 through 9 - which is what we want            // also check that the CTRL key was being held down            if ((numPressed >= 0 && numPressed <= 8)                    && (e.getModifiers() & mask) == Toolkit.getDefaultToolkit()                            .getMenuShortcutKeyMask()) {                e.consume();                if (tabPane.getTabCount() >= numPressed)                    tabPane.setSelectedTab(tabPane.getTabAt(numPressed));            } else if (e.getKeyCode() == KeyEvent.VK_TAB                    && (e.getModifiers() & mask) == Toolkit.getDefaultToolkit()                            .getMenuShortcutKeyMask()) {                if (first == false) {                    first = true;                } else {                    switchTab(tabPane);                    first = false;                    final TabFramePanel panel = (TabFramePanel) tabPane.getSelectedTab().getContentComponent();                    focusComponent( panel.getInputComponent() );                }            }            else if( ( e.getKeyCode() == KeyEvent.VK_RIGHT || e.getKeyCode() == KeyEvent.VK_LEFT )                    && (e.getModifiers() & mask) == Toolkit.getDefaultToolkit()                            .getMenuShortcutKeyMask()) {                e.consume();                if( first == false)                {                    first = true;                }                else {                    first = false;                    int sub = 1;                    if( e.getKeyCode() == KeyEvent.VK_LEFT ) sub = -1;                    Tab tab = tabPane.getSelectedTab();                    if( tab == null ) return true;                    if( tabPane.getTabCount() <= 1 ) return true;                    int current = tabPane.getTabIndex( tab );                    current += sub;                    if( current >= tabPane.getTabCount() ) current = 0;                    if( current < 0 ) current = tabPane.getTabCount() - 1;                    tabPane.removeTab( tab );                    tabPane.insertTab( tab, current );                    tabPane.setSelectedTab( tab );                    tabPane.validate();                }            }            return true;        }    }    /**     * Leaves all chatrooms (for if they close the window)     */    public void leaveAll() {        com.valhalla.Logger.debug("There are " + tabPane.getTabCount()                + " rooms");        int tabCount = tabPane.getTabCount();        for (int i = 0; i < tabCount; i++) {            TabFramePanel panel = (TabFramePanel) tabPane.getTabAt(0).getContentComponent();            if (panel instanceof ChatRoomPanel) {                ChatRoomPanel window = (ChatRoomPanel) panel;                //if this frame is closed as a result of connection loss and we                // try to leave                //the channel, it will not work, so we need to catch it.                try {                    window.leave();                } catch (IllegalStateException e) {                    com.valhalla.Logger                            .debug("Caught Illegal State Exception when leaving window: "                                    + window.toString());                }                BuddyList.getInstance().removeTabPanel(panel);            } else {                ((ConversationPanel) panel).checkCloseHandler();            }        }        BuddyList.getInstance().stopTabFrame();    }    /**     * @return Returns the tabPane.     */    public TabbedPanel getTabPane() {        return tabPane;    }    class CloseMenu extends JPopupMenu    {        JMenuItem closeItem = new JMenuItem(resources.getString("closeButton"));        JMenuItem closeAll = new JMenuItem(resources.getString("closeAllButton"));        private TitledTab tab;        public CloseMenu()        {            add(closeItem);            add(closeAll);            closeItem.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent e)                {                    if( tab == null ) return;                    TabFramePanel panel = (TabFramePanel)tab.getContentComponent();                    if (panel instanceof ConversationPanel) {                        ((ConversationPanel) panel).checkCloseHandler();                    } else {                        removePanel(panel);                    }                }            } );            closeAll.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent e)                {                    int count = tabPane.getTabCount();                    for( int i = 0; i < count; i++ )                    {                        TitledTab tab = (TitledTab)tabPane.getTabAt(0);                        TabFramePanel panel = (TabFramePanel)tab.getContentComponent();                        if (panel instanceof ConversationPanel) {                            ((ConversationPanel) panel).checkCloseHandler();                        } else {                            removePanel(panel);                        }                    }                }            } );        }        public void setTab(TitledTab tab)        {            this.tab = tab;        }    }    class CloseButton extends JLabel    {        TitledTab tab;        public CloseButton( final TitledTab tab )        {            super(Standard.getIcon("images/buttons/close.png"));            setPreferredSize( new Dimension( 15, 8 ) );            this.tab = tab;            setBorder(BorderFactory.createEmptyBorder(0,0,0,0));            setToolTipText( resources.getString( "closeButton" ) );            addMouseListener( new MouseAdapter()            {                public void mouseEntered( MouseEvent e )                {                    setBorder(BorderFactory.createEtchedBorder());                    validate();                }                public void mouseExited( MouseEvent e )                {                    setBorder(BorderFactory.createEmptyBorder(0,0,0,0));                    validate();                }                public void mouseClicked( MouseEvent e )                {                    TabFramePanel panel = (TabFramePanel)tab.getContentComponent();                    if (panel instanceof ConversationPanel) {                        ((ConversationPanel) panel).checkCloseHandler();                    } else {                        removePanel(panel);                    }                }            } );        }    }}

⌨️ 快捷键说明

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