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 + -
显示快捷键?