private void insertTabImpl(String title, Icon icon, Component component, String tip, int index) {
    String tabid = component.getName();
    if (tabid == null) {
      tabid = "WIN" + new java.rmi.server.UID();
      component.setName(tabid);
    }

    Component old = tabIndex.get(tabid);
    if (old != null) {
      if (indexOfComponent(old) >= 0) {
        setSelectedComponent(old);
        return;
      }
    }

    if (component instanceof OSTabbedView) {
      String s = ((OSTabbedView) component).getTitle();
      if (s != null && s.trim().length() > 0) {
        title = s;
      }
    }

    super.insertTab(title, icon, component, tip, index);
    setSelectedIndex(index);
    tabIndex.put(tabid, component);
    OSManager.getInstance().registerView(tabid, new OSViewImpl(component));
  }
  protected boolean beforeClose(Component component) {
    int idx = indexOfComponent(component);
    if (idx >= 0) {
      String title = getTitleAt(idx);
      tabIndex.remove(title);

      String cname = component.getName();
      if (cname != null) {
        tabIndex.remove(cname);
        OSManager.getInstance().unregisterView(cname);
      }
    }
    return true;
  }