package net.sourceforge.squirrel_sql.client; import net.sourceforge.squirrel_sql.client.gui.builders.dndtabbedpane.DnDTabbedPaneData; import net.sourceforge.squirrel_sql.client.gui.builders.dndtabbedpane.OutwardDndTabbedPaneChanelListener; import net.sourceforge.squirrel_sql.client.gui.builders.dndtabbedpane.OutwardDndTabbedPaneChanel; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.DockTabDesktopPane; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.DockTabDesktopPaneHolder; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.RemoveTabHandelResult; import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.TabHandle; import javax.swing.*; import java.util.ArrayList; import java.util.HashMap; class DesktopTabbedPaneOutwardDndChanel implements OutwardDndTabbedPaneChanel { HashMap<JTabbedPane, OutwardDndTabbedPaneChanelListener> _listeners = new HashMap<JTabbedPane, OutwardDndTabbedPaneChanelListener>(); private DnDTabbedPaneData _dnDTabbedPaneData; private Application _app; public DesktopTabbedPaneOutwardDndChanel(Application app) { _app = app; } @Override public DnDTabbedPaneData getDndTabbedPaneData() { return _dnDTabbedPaneData; } @Override public void setDndTabbedPaneData(DnDTabbedPaneData dnDTabbedPaneData) { _dnDTabbedPaneData = dnDTabbedPaneData; } private void fireHideGlassPane() { OutwardDndTabbedPaneChanelListener[] clone = _listeners.values().toArray(new OutwardDndTabbedPaneChanelListener[_listeners.size()]); for (OutwardDndTabbedPaneChanelListener outwardDndTabbedPaneChanelListener : clone) { outwardDndTabbedPaneChanelListener.hideGlassPane(); } } @Override public void putListener(JTabbedPane tabbedPane, OutwardDndTabbedPaneChanelListener l) { _listeners.put(tabbedPane, l); } @Override public void dragDropEnd() { _dnDTabbedPaneData = null; fireHideGlassPane(); } @Override public void moveDraggedTabTo(JTabbedPane targetTabbedPane, int targetTabIndex) { // ButtonTabComponent cp = (ButtonTabComponent) _dnDTabbedPaneData.getTabbedPane().getTabComponentAt(_dnDTabbedPaneData.getDragTabIndex()); // System.out.println("Moving >" + cp.getTitle() + "< to index " + targetTabIndex); DockTabDesktopPaneHolder sourceDesktopPaneHolder = _app.getMultipleWindowsHandler().getDockTabDesktopPaneOfTabbedPane(_dnDTabbedPaneData.getTabbedPane()); RemoveTabHandelResult moveTabHandelResult = sourceDesktopPaneHolder.removeTabHandel(_dnDTabbedPaneData.getDragTabIndex()); DockTabDesktopPaneHolder targetDesktopPaneHolder = _app.getMultipleWindowsHandler().getDockTabDesktopPaneOfTabbedPane(targetTabbedPane); targetDesktopPaneHolder.addTabWidgetAt(moveTabHandelResult.getTabHandle().getWidget(), targetTabIndex, moveTabHandelResult.getRemovedButtonTabComponent().getExternalButtons()); sourceDesktopPaneHolder.tabDragedAndDroped(); targetDesktopPaneHolder.tabDragedAndDroped(); } public void removeListener(DockTabDesktopPaneHolder dockTabDesktopPaneHolder) { for (JTabbedPane tabbedPane : _listeners.keySet()) { if(dockTabDesktopPaneHolder.isMyTabbedPane(tabbedPane)) { _listeners.remove(tabbedPane); break; } } } }