package apes.views.tabs; import java.awt.FlowLayout; import javax.swing.JLabel; import javax.swing.JPanel; import apes.controllers.TabsController; /** * Is a panel that is placed on a tab. A label and a close button is placed on * in. * * @author Johan Andersson (johandy@student.chalmers.se) */ public class ButtonTabPanel extends JPanel { private TabsView tabsView; /** * Creates a new <code>ButtonTabPanel</code> instance. * * @param tabsView The tabs view. */ public ButtonTabPanel(final TabsView tabsView, TabsController tabsController) { this.tabsView = tabsView; // Use flowlayout. setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); // Not opaque. setOpaque(false); // Make JLabel read titles from TabsView. JLabel label = new JLabel() { /** * Always return the tab text. */ @Override public String getText() { int i = tabsView.indexOfTabComponent(ButtonTabPanel.this); if(i != -1) { return tabsView.getTitleAt(i); } return null; } }; add(label); // Close button. TabCloseButton close = new TabCloseButton(this); close.addActionListener(tabsController); close.setName("close"); add(close); } /** * Return the tabs view that this panel is added on. * * @return The tabs view. */ public TabsView getTabsView() { return tabsView; } }