Esempio n. 1
0
 @NotNull
 @Override
 public Collection<SNodeReference> getSelectionFor(
     RelationDescriptor tabDescriptor, SNodeReference editedNode) {
   for (ButtonEditorTab bet : myRealTabs) {
     if (bet.isEditingTabFor(editedNode)) {
       return bet.getSelectionNodes(editedNode);
     }
   }
   return Collections.emptyList();
 }
Esempio n. 2
0
  @Override
  public RelationDescriptor getCurrentTabAspect() {
    SNodeReference currentAspect = getEditedNode();
    assert currentAspect != null;

    for (ButtonEditorTab bet : myRealTabs) {
      if (bet.isEditingTabFor(getEditedNode())) {
        return bet.getDescriptor();
      }
    }

    return null;
  }
Esempio n. 3
0
  @Override
  public void updateTabs() {
    if (isDisposed()) {
      return;
    }

    if (getEditedNode() != null && getEditedNode().resolve(getProject().getRepository()) == null) {
      editNode(myBaseNode);
    }

    myRealTabs.clear();

    final NodeChangeCallback callback =
        new NodeChangeCallback() {
          @Override
          public void changeNode(SNodeReference newNode) {
            editNode(newNode);
          }
        };
    TabEditorLayout newContent = updateDocumentsAndNodes();
    for (RelationDescriptor tabDescriptor : myPossibleTabs) {
      if (newContent.covers(tabDescriptor)) {
        final ButtonEditorTab tab =
            new ButtonEditorTab(
                this, myRealTabs.size(), tabDescriptor, newContent.get(tabDescriptor));
        final SelectTabAction action = new SelectTabAction(getProject(), tab, callback);
        tab.setSelectTabAction(action);
        action.registerShortcut(myEditor);
        myRealTabs.add(tab);
      }
    }
    updateTabColors();

    DefaultActionGroup group = new DefaultActionGroup();
    for (ButtonEditorTab tab : myRealTabs) {
      group.add(tab.getSelectTabAction());
    }
    if (myToolbar != null) {
      removeContent(myToolbar.getComponent());
    }
    ActionToolbar actionToolbar =
        ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true);
    actionToolbar.setLayoutPolicy(ActionToolbar.WRAP_LAYOUT_POLICY);
    myToolbar = actionToolbar;
    setContent(myToolbar.getComponent());
    if (getEditedNode() != null) {
      // MPS-22337: getEditedNode() exists even if node was deleted.
      // So we need to check if tab created for such node as tabs was created only for non deleted
      // aspects.
      boolean isTabExists = false;
      for (ButtonEditorTab tab : myRealTabs) {
        if (tab.isEditingTabFor(getEditedNode())) {
          isTabExists = true;
          break;
        }
      }
      editNode(isTabExists ? getEditedNode() : myBaseNode);
    }
  }
Esempio n. 4
0
 @Override
 public void updateTabColors() {
   for (ButtonEditorTab realTab : myRealTabs) {
     realTab.updateIcon();
   }
 }
Esempio n. 5
0
 public boolean isCurrent(ButtonEditorTab tab) {
   return getEditedNode() != null && tab.isEditingTabFor(getEditedNode());
 }