package net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.TabWidget; import javax.swing.*; import java.awt.event.ActionEvent; import java.util.ArrayList; public class TabHandle { //private JButton _closeButton; private TabWidget _tabWidget; private DockTabDesktopPane _dockTabDesktopPane; private boolean _isSelected; private ArrayList<TabHandleListener> _tabHandleListeners = new ArrayList<TabHandleListener>(); private boolean _fireClosingProceedingOrDone; public TabHandle(TabWidget tabWidget, DockTabDesktopPane dockTabDesktopPane) { _tabWidget = tabWidget; _dockTabDesktopPane = dockTabDesktopPane; } public TabWidget getWidget() { return _tabWidget; } public void addTabHandleListener(TabHandleListener l) { _tabHandleListeners.add(l); } public void removeTabHandleListener(TabHandleListener l) { _tabHandleListeners.remove(l); } public void fireClosing(ActionEvent e) { _fireClosingProceedingOrDone = true; TabHandleListener[] clone = _tabHandleListeners.toArray(new TabHandleListener[_tabHandleListeners.size()]); for (TabHandleListener listener : clone) { listener.tabClosing(new TabHandleEvent(this, e)); } } public void fireClosed(ActionEvent e) { TabHandleListener[] clone = _tabHandleListeners.toArray(new TabHandleListener[_tabHandleListeners.size()]); for (TabHandleListener listener : clone) { listener.tabClosed(new TabHandleEvent(this, e)); } } public void fireAdded(boolean wasAddedToToMainApplicationWindow) { TabHandleListener[] clone = _tabHandleListeners.toArray(new TabHandleListener[_tabHandleListeners.size()]); for (TabHandleListener listener : clone) { listener.tabAdded(new TabHandleEvent(this, null, wasAddedToToMainApplicationWindow)); } } public void fireDeselected(ActionEvent e) { TabHandleListener[] clone = _tabHandleListeners.toArray(new TabHandleListener[_tabHandleListeners.size()]); for (TabHandleListener listener : clone) { listener.tabDeselected(new TabHandleEvent(this, null)); } } public void fireSelected(ActionEvent e) { TabHandleListener[] clone = _tabHandleListeners.toArray(new TabHandleListener[_tabHandleListeners.size()]); for (TabHandleListener listener : clone) { listener.tabSelected(new TabHandleEvent(this, null)); } } public boolean isSelected() { return _isSelected; } public void setSelected(boolean b) { _setSelected(b, false); } public void _setSelected(boolean b, boolean force) { if(_isSelected == b && false == force) { return; } _isSelected = b; TabHandleListener[] clone = _tabHandleListeners.toArray(new TabHandleListener[_tabHandleListeners.size()]); for (TabHandleListener listener : clone) { if(_isSelected) { listener.tabSelected(new TabHandleEvent(this, null)); } else { listener.tabDeselected(new TabHandleEvent(this, null)); } } } public void setTitle(String title) { _dockTabDesktopPane.setTabTitle(this, title); } public void addSmallTabButton(SmallTabButton smallTabButton) { _dockTabDesktopPane.addSmallTabButton(this, smallTabButton); } public void removeSmallTabButton(SmallTabButton smallTabButton) { _dockTabDesktopPane.removeSmallTabButton(this, smallTabButton); } public String getTitle() { return _dockTabDesktopPane.getTabTitle(this); } public void setIcon(Icon frameIcon) { _dockTabDesktopPane.setTabIcon(this, frameIcon); } public void removeTab(DockTabDesktopPane.TabClosingMode tabClosingMode) { _dockTabDesktopPane.removeTab(this, null, tabClosingMode); } public void select() { _dockTabDesktopPane.selectTab(this); } public boolean isFireClosingProceedingOrDone() { return _fireClosingProceedingOrDone; } }