package thaw.gui; import javax.swing.JTabbedPane; import javax.swing.Icon; import java.awt.Component; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.util.Vector; import thaw.core.Logger; public class TabbedPane extends JTabbedPane implements ChangeListener { /** * */ private static final long serialVersionUID = 8453293567552928389L; private Vector tabNames; public TabbedPane() { super(); tabNames = new Vector(); super.addChangeListener(this); } public void addTab(final String tabName, final Icon icon, final java.awt.Component panel) { tabNames.add(tabName); if (tabNames.size() > 1) super.addTab("", icon, panel); else super.addTab(tabName, icon, panel); int x = super.indexOfComponent(panel); super.setToolTipTextAt(x, tabName); } public void remove(Component panel) { int x = super.indexOfComponent(panel); if (x >= 0) tabNames.remove(x); else { /* ConfigWindow is a little bit lazy : * when you call ConfigWindow.addTabs(), * it will first try to remove the tabs before readding them. * This way, it's sure that there is not twice the tabs */ /* so this situation can be perfectly normal */ Logger.debug(this, "remove(): Component not found ?"); } super.remove(panel); } public int indexOfTab(String tabName) { return tabNames.indexOf(tabName); } public void stateChanged(final ChangeEvent e) { int x = super.getSelectedIndex(); int tabCount = super.getTabCount(); for (int i = 0 ; i < tabCount ; i++) { if (i == x) super.setTitleAt(i, (String)tabNames.get(i)); else super.setTitleAt(i, ""); } } }