sparktabbedpane.java.svn-base

来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 620 行 · 第 1/2 页

SVN-BASE
620
字号
        return null;
    }

    public Component getComponentInTab(SparkTab tab) {
        Component[] comps = tabs.getComponents();
        for (int i = 0; i < comps.length; i++) {
            Component c = comps[i];
            if (c == tab) {
                return getComponentAt(i);
            }
        }

        return null;
    }

    public SparkTab getTabContainingComponent(Component comp) {
        int index = indexOfComponent(comp);
        if (index != -1) {
            return getTabAt(index);
        }

        return null;
    }

    public void removeComponent(Component comp) {
        int index = indexOfComponent(comp);
        if (index != -1) {
            removeTabAt(index);
        }
    }

    public int getIndex(SparkTab tab) {
        Component[] comps = tabs.getComponents();
        for (int i = 0; i < comps.length; i++) {
            Component c = comps[i];
            if (c instanceof SparkTab && c == tab) {
                return i;
            }
        }

        return -1;
    }

    public void close(SparkTab tab, Component comp) {
        boolean canClose = fireTabClosing(tab, comp);
        if (!canClose) {
            // Cancel closing of tab.
            return;
        }

        int index = getIndex(tab);

        // Close Tab
        mainPanel.remove(comp);
        tabs.remove(tab);
        tabs.removeMouseListener(this);

        tabs.invalidate();
        tabs.validate();
        tabs.repaint();

        mainPanel.invalidate();
        mainPanel.validate();
        mainPanel.repaint();

        fireTabRemoved(tab, comp, index);
        Component[] comps = tabs.getComponents();
        if (comps.length == 0) {
            allTabsClosed();
        }
        else {
            findSelectedTab(index);
        }
    }

    public int indexOfTab(String title) {
        Component[] comps = tabs.getComponents();
        for (int i = 0; i < comps.length; i++) {
            Component c = comps[i];
            if (c instanceof SparkTab) {
                SparkTab tab = (SparkTab)c;
                if (tab.getTabTitle().equals(title)) {
                    return i;
                }
            }
        }

        return -1;
    }

    private void findSelectedTab(int previousIndex) {
        Component[] comps = tabs.getComponents();
        for (int i = 0; i < comps.length; i++) {
            Component c = comps[i];
            if (c instanceof SparkTab && i == previousIndex) {
                setSelectedTab(((SparkTab)c));
                return;
            }
        }

        if (comps.length > 0 && comps.length == previousIndex) {
            SparkTab tab = (SparkTab)comps[previousIndex - 1];
            setSelectedTab(tab);
        }
    }

    public void mouseClicked(MouseEvent e) {

    }

    public void setSelectedTab(SparkTab tab) {
        CardLayout cl = (CardLayout)mainPanel.getLayout();
        Component comp = getComponentInTab(tab);
        cl.show(mainPanel, Integer.toString(comp.hashCode()));
        tab.setBoldWhenActive(isActiveButtonBold());

        deselectAllTabsExcept(tab);

        tab.setSelected(true);
        fireTabSelected(tab, getSelectedComponent(), getIndex(tab));
    }

    public void mousePressed(MouseEvent e) {
        if (e.getButton() != MouseEvent.BUTTON1) {
            dispatchEvent(e);
            return;
        }
        if (e.getSource() instanceof SparkTab) {
            SparkTab tab = (SparkTab)e.getSource();
            setSelectedTab(tab);
        }

    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    private void deselectAllTabsExcept(SparkTab tab) {
        Component[] comps = tabs.getComponents();
        for (int i = 0; i < comps.length; i++) {
            Component c = comps[i];
            if (c instanceof SparkTab) {
                SparkTab sparkTab = (SparkTab)c;
                if (sparkTab != tab) {
                    sparkTab.setSelected(false);
                    sparkTab.showBorder(true);
                }
                else if (sparkTab == tab) {
                    int j = i - 1;
                    if (j >= 0) {
                        SparkTab previousTab = (SparkTab)comps[j];
                        previousTab.showBorder(false);
                    }
                }
            }

        }

    }

    public Component getSelectedComponent() {
        Component[] comps = mainPanel.getComponents();
        for (int i = 0; i < comps.length; i++) {
            Component c = comps[i];
            if (c.isShowing()) {
                return c;
            }
        }

        return null;
    }


    public void setParentWindow(Window window) {
        this.parentWindow = window;
    }

    public Dimension getPreferredSize() {
        final Dimension size = super.getPreferredSize();
        size.width = 0;
        return size;
    }


    public boolean isCloseButtonEnabled() {
        return closeButtonEnabled;
    }

    public void setCloseButtonEnabled(boolean closeButtonEnabled) {
        this.closeButtonEnabled = closeButtonEnabled;
    }

    public Icon getCloseInactiveButtonIcon() {
        return closeInactiveButtonIcon;
    }

    public void setCloseInactiveButtonIcon(Icon closeInactiveButtonIcon) {
        this.closeInactiveButtonIcon = closeInactiveButtonIcon;
    }

    public Icon getCloseActiveButtonIcon() {
        return closeActiveButtonIcon;
    }

    public void setCloseActiveButtonIcon(Icon closeActiveButtonIcon) {
        this.closeActiveButtonIcon = closeActiveButtonIcon;
    }


    public boolean isPopupAllowed() {
        return popupAllowed;
    }

    public void setPopupAllowed(boolean popupAllowed) {
        this.popupAllowed = popupAllowed;
    }


    public void addSparkTabbedPaneListener(SparkTabbedPaneListener listener) {
        listeners.add(listener);
    }

    public void removeSparkTabbedPaneListener(SparkTabbedPaneListener listener) {
        listeners.remove(listener);
    }

    public void fireTabAdded(SparkTab tab, Component component, int index) {
        final Iterator list = ModelUtil.reverseListIterator(listeners.listIterator());
        while (list.hasNext()) {
            ((SparkTabbedPaneListener)list.next()).tabAdded(tab, component, index);
        }
    }

    public void fireTabRemoved(SparkTab tab, Component component, int index) {
        final Iterator list = ModelUtil.reverseListIterator(listeners.listIterator());
        while (list.hasNext()) {
            ((SparkTabbedPaneListener)list.next()).tabRemoved(tab, component, index);
        }
    }

    public void fireTabSelected(SparkTab tab, Component component, int index) {
        final Iterator list = ModelUtil.reverseListIterator(listeners.listIterator());
        while (list.hasNext()) {
            ((SparkTabbedPaneListener)list.next()).tabSelected(tab, component, index);
        }
    }

    public void allTabsClosed() {
        final Iterator list = ModelUtil.reverseListIterator(listeners.listIterator());
        while (list.hasNext()) {
            ((SparkTabbedPaneListener)list.next()).allTabsRemoved();
        }
    }

    public boolean fireTabClosing(SparkTab tab, Component component) {
        final Iterator list = ModelUtil.reverseListIterator(listeners.listIterator());
        while (list.hasNext()) {
            final SparkTabbedPaneListener listener = (SparkTabbedPaneListener)list.next();
            boolean canClose = listener.canTabClose(tab, component);
            if (!canClose) {
                return false;
            }
        }

        return true;
    }


    public boolean isActiveButtonBold() {
        return activeButtonBold;
    }

    public void setActiveButtonBold(boolean activeButtonBold) {
        this.activeButtonBold = activeButtonBold;
    }


    /**
     * Returns the main panel used as the UI container for the card panel.
     *
     * @return the UI Container.
     */
    public JPanel getMainPanel() {
        return mainPanel;
    }


    public Color getBackgroundColor() {
        return backgroundColor;
    }

    public void setBackgroundColor(Color backgroundColor) {
        this.backgroundColor = backgroundColor;
    }

    public Color getBorderColor() {
        return borderColor;
    }

    public void setBorderColor(Color borderColor) {
        this.borderColor = borderColor;
    }
}

⌨️ 快捷键说明

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