Beispiel #1
0
  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;
  }