@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(); }
@Override public RelationDescriptor getCurrentTabAspect() { SNodeReference currentAspect = getEditedNode(); assert currentAspect != null; for (ButtonEditorTab bet : myRealTabs) { if (bet.isEditingTabFor(getEditedNode())) { return bet.getDescriptor(); } } return null; }
@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); } }
@Override public void updateTabColors() { for (ButtonEditorTab realTab : myRealTabs) { realTab.updateIcon(); } }
public boolean isCurrent(ButtonEditorTab tab) { return getEditedNode() != null && tab.isEditingTabFor(getEditedNode()); }