private JInternalFrame getInternalFrame(TopComponent topComponent) { for (JInternalFrame internalFrame : frameToTabMap.keySet()) { if (topComponent == getTopComponent(internalFrame)) { return internalFrame; } } return null; }
/** * @return The currently active window. */ public TopComponent getActiveTopComponent() { JInternalFrame selectedFrame = desktopPane.getSelectedFrame(); return selectedFrame != null ? getTopComponent(selectedFrame) : null; }
/** * Gets all windows contained in this one. * * @return The list of all windows which may be empty. */ public List<TopComponent> getTopComponents() { List<TabData> tabs = tabbedContainer.getModel().getTabs(); List<TopComponent> topComponents = new ArrayList<>(); for (TabData tab : tabs) { JInternalFrame internalFrame = tabToFrameMap.get(tab); topComponents.add(getTopComponent(internalFrame)); } return topComponents; }
@Override protected void componentDeactivated() { JInternalFrame selectedFrame = desktopPane.getSelectedFrame(); if (selectedFrame != null) { notifyDeactivated(getTopComponent(selectedFrame)); } }
@Override protected void componentHidden() { for (JInternalFrame internalFrame : desktopPane.getAllFrames()) { NotifiableComponent.get(getTopComponent(internalFrame)).componentHidden(); } }
@Override protected void componentShowing() { for (JInternalFrame internalFrame : desktopPane.getAllFrames()) { NotifiableComponent.get(getTopComponent(internalFrame)).componentShowing(); } }
@Override public SubComponent[] getSubComponents() { Map<Object, JInternalFrame> internalFrameMap = new HashMap<>(); SubComponent[] subComponents = new SubComponent[tabbedContainer.getTabCount()]; ActionListener activator = actionEvent -> { JInternalFrame internalFrame = internalFrameMap.get(actionEvent.getSource()); try { internalFrame.setSelected(true); } catch (PropertyVetoException e1) { // ok } internalFrame.requestFocusInWindow(); }; for (int i = 0; i < subComponents.length; i++) { TabData tab = tabbedContainer.getModel().getTab(i); JInternalFrame internalFrame = tabToFrameMap.get(tab); SubComponent subComponent = new SubComponent(internalFrame.getTitle(), internalFrame.getToolTipText(), activator, internalFrame.isSelected(), getTopComponent(internalFrame).getLookup(), internalFrame.isShowing()); internalFrameMap.put(subComponent, internalFrame); subComponents[i] = subComponent; } return subComponents; }
private TopComponent closeInternalFrame(JInternalFrame internalFrame, boolean removeTab) { internalFrame.removeInternalFrameListener(internalFrameListener); TopComponent topComponent = getTopComponent(internalFrame); topComponent.removePropertyChangeListener(propertyChangeListener); Object internalFrameID = getInternalFrameID(topComponent); idToBoundsMap.put(internalFrameID, new Rectangle(internalFrame.getBounds())); TabData tab = frameToTabMap.get(internalFrame); if (tab != null) { if (removeTab) { int tabIndex = tabbedContainer.getModel().indexOf(tab); if (tabIndex >= 0) { tabbedContainer.getModel().removeTab(tabIndex); } } tabToFrameMap.remove(tab); } frameToTabMap.remove(internalFrame); internalFrame.dispose(); desktopPane.remove(internalFrame); if (desktopPane.getComponentCount() == 0) { tabbedContainer.setVisible(false); } // make sure the topComponent's parent is not the internalFrame which we just closed internalFrame.setContentPane(new TopComponent()); return topComponent; }
for (TabData tab : tabs) { JInternalFrame internalFrame = tabToFrameMap.get(tab); if (topComponent == getTopComponent(internalFrame)) { try { internalFrame.setSelected(true);
@Override protected void componentActivated() { JInternalFrame selectedFrame = desktopPane.getSelectedFrame(); if (selectedFrame != null) { TabData tab = frameToTabMap.get(selectedFrame); int tabIndex = tabbedContainer.getModel().indexOf(tab); if (tabIndex >= 0) { tabbedContainer.getSelectionModel().setSelectedIndex(tabIndex); } selectedFrame.requestFocusInWindow(); notifyActivated(getTopComponent(selectedFrame)); } else { int tabIndex = tabbedContainer.getSelectionModel().getSelectedIndex(); if (tabIndex >= 0) { TabData tab = tabbedContainer.getModel().getTab(tabIndex); selectedFrame = tabToFrameMap.get(tab); if (!selectedFrame.isSelected()) { try { selectedFrame.setSelected(true); } catch (PropertyVetoException e) { // ok } } } } }