public synchronized void toggleCurrentSQLResultTabSticky() { if (null != _stickyTab) { if (_stickyTab.equals(_tabbedExecutionsPanel.getSelectedComponent())) { // Sticky is turned off. Just remove sticky and return. _stickyTab = null; _tabbedExecutionsPanel.setIconAt(_tabbedExecutionsPanel.getSelectedIndex(), null); return; } else { // remove old sticky tab int indexOfStickyTab = getIndexOfTab(_stickyTab); if (-1 != indexOfStickyTab) { _tabbedExecutionsPanel.setIconAt(indexOfStickyTab, null); } _stickyTab = null; } } if (false == _tabbedExecutionsPanel.getSelectedComponent() instanceof IResultTab) { // i18n[SQLResultExecuterPanel.nonStickyPanel=Cannot make a cancel panel sticky] String msg = s_stringMgr.getString("SQLResultExecuterPanel.nonStickyPanel"); JOptionPane.showMessageDialog(_session.getApplication().getMainFrame(), msg); return; } _stickyTab = (IResultTab) _tabbedExecutionsPanel.getSelectedComponent(); int selectedIndex = _tabbedExecutionsPanel.getSelectedIndex(); ImageIcon icon = getStickyIcon(); _tabbedExecutionsPanel.setIconAt(selectedIndex, icon); }
private void addResultsTab(ResultTab tab, IResultTab resultTabToReplace) { if (null == resultTabToReplace && null == _stickyTab) { _tabbedExecutionsPanel.addTab(tab.getTitle(), null, tab, tab.getViewableSqlString()); checkResultTabLimit(); } else { if (null != resultTabToReplace && _session.getProperties().getKeepTableLayoutOnRerun()) { TableState sortableTableState = resultTabToReplace.getResultSortableTableState(); if (null != sortableTableState) { tab.applyResultSortableTableState(sortableTableState); } } int indexToReplace = -1; ImageIcon tabIcon = null; // Either resultTabToReplace or _stickyTab must be not null here if (null != resultTabToReplace && _stickyTab != resultTabToReplace) { indexToReplace = getIndexOfTab(resultTabToReplace); } else { indexToReplace = getIndexOfTab(_stickyTab); if (-1 == indexToReplace) { // sticky tab was closed _stickyTab = null; } else { tabIcon = getStickyIcon(); _stickyTab = tab; } } if (-1 == indexToReplace) { // Just add the tab addResultsTab(tab, null); return; } closeTabAt(indexToReplace); _tabbedExecutionsPanel.insertTab( tab.getTitle(), tabIcon, tab, tab.getViewableSqlString(), indexToReplace); } }