public TabSpawnable spawn() { JFrame f = new JFrame(); f.getContentPane().setLayout(new BorderLayout()); f.setTitle(_title); TabSpawnable newPanel = (TabSpawnable) clone(); if (newPanel == null) return null; // failed to clone newPanel.setTitle(_title); if (newPanel instanceof TabToDoTarget) { TabToDoTarget me = (TabToDoTarget) this; TabToDoTarget it = (TabToDoTarget) newPanel; it.setTarget(me.getTarget()); } else if (newPanel instanceof TabModelTarget) { TabModelTarget me = (TabModelTarget) this; TabModelTarget it = (TabModelTarget) newPanel; it.setTarget(me.getTarget()); } f.getContentPane().add(newPanel, BorderLayout.CENTER); Rectangle bounds = getBounds(); bounds.height += OVERLAPP * 2; f.setBounds(bounds); Point loc = new Point(0, 0); SwingUtilities.convertPointToScreen(loc, this); loc.y -= OVERLAPP; f.setLocation(loc); f.setVisible(true); if (_tear && (getParent() instanceof JTabbedPane)) ((JTabbedPane) getParent()).remove(this); return newPanel; }
/** * Selects the to do tab, and sets the target of that tab. * * @param item the selected todo item * @return true if todo tab is really selected. * @deprecated for 0.25.5 by tfmorris. Send an event that TabToDoTargets listen to. */ @Deprecated public boolean setToDoItem(Object item) { enableTabs(item); for (JPanel t : tabPanelList) { if (t instanceof TabToDoTarget) { ((TabToDoTarget) t).setTarget(item); topLevelTabbedPane.setSelectedComponent(t); return true; } } return false; }
/** * Sets the target of the Details pane to either be a selected model element or the owner(model * element) of a selected fig. * * <p>Decides which panels to enable. * * @param target the target object */ private void setTarget(Object target, boolean defaultToProperties) { enableTabs(target); if (target != null) { boolean tabSelected = false; // Always select properties panel if defaultToProperties is true, // and if properties panel is appropriate for selected perspective if (defaultToProperties || lastNonNullTab < 0) { tabSelected = selectPropsTab(target); } else { // Select prop panel if current panel is not appropriate // for selected target Component selectedTab = topLevelTabbedPane.getComponentAt(lastNonNullTab); if (selectedTab instanceof TabTarget) { if (((TabTarget) selectedTab).shouldBeEnabled(target)) { topLevelTabbedPane.setSelectedIndex(lastNonNullTab); tabSelected = true; } else { tabSelected = selectPropsTab(target); } } } if (!tabSelected) { for (int i = lastNonNullTab + 1; i < topLevelTabbedPane.getTabCount(); i++) { Component tab = topLevelTabbedPane.getComponentAt(i); if (tab instanceof TabTarget) { if (((TabTarget) tab).shouldBeEnabled(target)) { topLevelTabbedPane.setSelectedIndex(i); ((TabTarget) tab).setTarget(target); lastNonNullTab = i; tabSelected = true; break; } } } } // default tab todo if (!tabSelected) { JPanel tab = tabPanelList.get(0); if (!(tab instanceof TabToDoTarget)) { for (JPanel panel : tabPanelList) { if (panel instanceof TabToDoTarget) { tab = panel; break; } } } if (tab instanceof TabToDoTarget) { topLevelTabbedPane.setSelectedComponent(tab); ((TabToDoTarget) tab).setTarget(target); lastNonNullTab = topLevelTabbedPane.getSelectedIndex(); } } } else { // default tab todo JPanel tab = tabPanelList.isEmpty() ? null : (JPanel) tabPanelList.get(0); if (!(tab instanceof TabToDoTarget)) { Iterator it = tabPanelList.iterator(); while (it.hasNext()) { Object o = it.next(); if (o instanceof TabToDoTarget) { tab = (JPanel) o; break; } } } if (tab instanceof TabToDoTarget) { topLevelTabbedPane.setSelectedComponent(tab); ((TabToDoTarget) tab).setTarget(target); } else { topLevelTabbedPane.setSelectedIndex(-1); } } currentTarget = target; }