private void registerToolWindow(@NotNull final ToolWindowManager toolWindowManager) { try { Method method = toolWindowManager .getClass() .getDeclaredMethod( "registerToolWindow", String.class, JComponent.class, ToolWindowAnchor.class, boolean.class, boolean.class, boolean.class); method.setAccessible(true); method.invoke( toolWindowManager, StudyToolWindowFactory.STUDY_TOOL_WINDOW, null, ToolWindowAnchor.LEFT, true, true, true); } catch (Exception e) { final ToolWindow toolWindow = toolWindowManager.getToolWindow(StudyToolWindowFactory.STUDY_TOOL_WINDOW); if (toolWindow == null) { toolWindowManager.registerToolWindow( StudyToolWindowFactory.STUDY_TOOL_WINDOW, true, ToolWindowAnchor.RIGHT, myProject, true); } } }
public void ensureVisible(Project project) { if (project == null) { return; } ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(project); if (toolWindowManager != null) { ToolWindow toolWindow = toolWindowManager.getToolWindow(COMMIT_LOGS_TOOLWINDOW_ID); if (toolWindow != null) { toolWindow.activate(null); } } }
@Override public Insets getBorderInsets(final Component c) { if (myProject == null) return new Insets(0, 0, 0, 0); ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(myProject); if (!(toolWindowManager instanceof ToolWindowManagerImpl) || !((ToolWindowManagerImpl) toolWindowManager).isToolWindowRegistered(myInfo.getId()) || myWindow.getType() == ToolWindowType.FLOATING) { return new Insets(0, 0, 0, 0); } ToolWindowAnchor anchor = myWindow.getAnchor(); Component component = myWindow.getComponent(); Container parent = component.getParent(); while (parent != null) { if (parent instanceof Splitter) { Splitter splitter = (Splitter) parent; boolean isFirst = splitter.getFirstComponent() == component; boolean isVertical = splitter.isVertical(); return new Insets( 0, anchor == ToolWindowAnchor.RIGHT || (!isVertical && !isFirst) ? 1 : 0, (isVertical && isFirst) ? 1 : 0, anchor == ToolWindowAnchor.LEFT || (!isVertical && isFirst) ? 1 : 0); } component = parent; parent = component.getParent(); } return new Insets( 0, anchor == ToolWindowAnchor.RIGHT ? 1 : 0, anchor == ToolWindowAnchor.TOP ? 1 : 0, anchor == ToolWindowAnchor.LEFT ? 1 : 0); }
private void initialize() { if (!_isInitialized) { _isInitialized = true; _isDisposed = false; ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(_project); ToolWindow toolWindow = toolWindowManager.registerToolWindow( COMMIT_LOGS_TOOLWINDOW_ID, true, ToolWindowAnchor.BOTTOM); toolWindow.setIcon(COMMIT_LOGS_SMALL_ICON); _contentManager = toolWindow.getContentManager(); toolWindow.installWatcher(_contentManager); // _contentManager = // PeerFactory.getInstance().getContentFactory().createContentManager(true, _project); _contentManager.addContentManagerListener( new ContentManagerAdapter() { @Override public void contentRemoved(ContentManagerEvent event) { JComponent component = event.getContent().getComponent(); JComponent removedComponent = (component instanceof CommitLogWindowComponent) ? ((CommitLogWindowComponent) component).getComponent() : component; // if (removedComponent == myErrorsView) { // myErrorsView.dispose(); // myErrorsView = null; // } else for (Iterator iterator = _commitLogs.iterator(); iterator.hasNext(); ) { Editor editor = (Editor) iterator.next(); if (removedComponent == editor.getComponent()) { EditorFactory.getInstance().releaseEditor(editor); iterator.remove(); } } } }); // final JComponent component = _contentManager.getComponent(); } }
private void updateTabBorder() { if (!myProject.isOpen()) return; ToolWindowManagerEx mgr = (ToolWindowManagerEx) ToolWindowManager.getInstance(myProject); String[] ids = mgr.getToolWindowIds(); Insets border = new Insets(0, 0, 0, 0); UISettings uiSettings = UISettings.getInstance(); List<String> topIds = mgr.getIdsOn(ToolWindowAnchor.TOP); List<String> bottom = mgr.getIdsOn(ToolWindowAnchor.BOTTOM); List<String> rightIds = mgr.getIdsOn(ToolWindowAnchor.RIGHT); List<String> leftIds = mgr.getIdsOn(ToolWindowAnchor.LEFT); if (!uiSettings.HIDE_TOOL_STRIPES) { border.top = topIds.size() > 0 ? 1 : 0; border.bottom = bottom.size() > 0 ? 1 : 0; border.left = leftIds.size() > 0 ? 1 : 0; border.right = rightIds.size() > 0 ? 1 : 0; } for (String each : ids) { ToolWindow eachWnd = mgr.getToolWindow(each); if (!eachWnd.isAvailable()) continue; if (eachWnd.isVisible() && eachWnd.getType() == ToolWindowType.DOCKED) { ToolWindowAnchor eachAnchor = eachWnd.getAnchor(); if (eachAnchor == ToolWindowAnchor.TOP) { border.top = 0; } else if (eachAnchor == ToolWindowAnchor.BOTTOM) { border.bottom = 0; } else if (eachAnchor == ToolWindowAnchor.LEFT) { border.left = 0; } else if (eachAnchor == ToolWindowAnchor.RIGHT) { border.right = 0; } } } myTabs .getPresentation() .setPaintBorder(border.top, border.left, border.right, border.bottom) .setTabSidePaintBorder(5); }
@Override public void projectClosed() { //noinspection AssignmentToStaticFieldFromInstanceMethod StudyCondition.VALUE = false; if (myCourse != null) { ToolWindowManager.getInstance(myProject) .getToolWindow(StudyToolWindowFactory.STUDY_TOOL_WINDOW) .getContentManager() .removeAllContents(false); if (!myDeletedShortcuts.isEmpty()) { for (Map.Entry<String, String> shortcut : myDeletedShortcuts.entrySet()) { final Keymap keymap = KeymapManager.getInstance().getActiveKeymap(); final Shortcut actionShortcut = new KeyboardShortcut(KeyStroke.getKeyStroke(shortcut.getValue()), null); keymap.addShortcut(shortcut.getKey(), actionShortcut); } } } }
/** @return can be null if user cancelled operation */ @Nullable public static AntBuildMessageView openBuildMessageView( Project project, AntBuildFileBase buildFile, String[] targets) { final VirtualFile antFile = buildFile.getVirtualFile(); if (!LOG.assertTrue(antFile != null)) { return null; } // check if there are running instances of the same build file MessageView ijMessageView = MessageView.SERVICE.getInstance(project); Content[] contents = ijMessageView.getContentManager().getContents(); for (Content content : contents) { if (content.isPinned()) { continue; } AntBuildMessageView buildMessageView = content.getUserData(KEY); if (buildMessageView == null) { continue; } if (!antFile.equals(buildMessageView.getBuildFile().getVirtualFile())) { continue; } if (buildMessageView.isStopped()) { ijMessageView.getContentManager().removeContent(content, true); continue; } int result = Messages.showYesNoCancelDialog( AntBundle.message("ant.is.active.terminate.confirmation.text"), AntBundle.message("starting.ant.build.dialog.title"), Messages.getQuestionIcon()); switch (result) { case 0: // yes buildMessageView.stopProcess(); ijMessageView.getContentManager().removeContent(content, true); continue; case 1: // no continue; default: // cancel return null; } } final AntBuildMessageView messageView = new AntBuildMessageView(project, buildFile, targets); String contentName = buildFile.getPresentableName(); contentName = BUILD_CONTENT_NAME + " (" + contentName + ")"; final Content content = ContentFactory.SERVICE .getInstance() .createContent(messageView.getComponent(), contentName, true); content.putUserData(KEY, messageView); ijMessageView.getContentManager().addContent(content); ijMessageView.getContentManager().setSelectedContent(content); content.setDisposer( new Disposable() { @Override public void dispose() { Disposer.dispose(messageView.myAlarm); } }); new CloseListener(content, ijMessageView.getContentManager(), project); // Do not inline next two variabled. Seeking for NPE. ToolWindow messageToolWindow = ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.MESSAGES_WINDOW); messageToolWindow.activate(null, false); return messageView; }
EditorTabbedContainer(final EditorWindow window, Project project, final int tabPlacement) { myWindow = window; myProject = project; final ActionManager actionManager = ActionManager.getInstance(); myTabs = new JBEditorTabs(project, actionManager, IdeFocusManager.getInstance(project), this); myTabs .setDataProvider(new MyDataProvider()) .setPopupGroup( new Getter<ActionGroup>() { public ActionGroup get() { return (ActionGroup) CustomActionsSchema.getInstance() .getCorrectedAction(IdeActions.GROUP_EDITOR_TAB_POPUP); } }, ActionPlaces.EDITOR_TAB_POPUP, false) .setNavigationActionsEnabled(false) .addTabMouseListener(new TabMouseListener()) .getPresentation() .setTabDraggingEnabled(true) .setUiDecorator( new UiDecorator() { @NotNull public UiDecoration getDecoration() { return new UiDecoration( null, new Insets( TabsUtil.TAB_VERTICAL_PADDING, 10, TabsUtil.TAB_VERTICAL_PADDING, 10)); } }) .setTabLabelActionsMouseDeadzone(TimedDeadzone.NULL) .setGhostsAlwaysVisible(true) .setTabLabelActionsAutoHide(false) .setActiveTabFillIn( EditorColorsManager.getInstance().getGlobalScheme().getDefaultBackground()) .setPaintFocus(false) .getJBTabs() .addListener( new TabsListener.Adapter() { public void selectionChanged(final TabInfo oldSelection, final TabInfo newSelection) { final FileEditorManager editorManager = FileEditorManager.getInstance(myProject); final FileEditor oldEditor = oldSelection != null ? editorManager.getSelectedEditor((VirtualFile) oldSelection.getObject()) : null; if (oldEditor != null) { oldEditor.deselectNotify(); } final FileEditor newEditor = editorManager.getSelectedEditor((VirtualFile) newSelection.getObject()); if (newEditor != null) { newEditor.selectNotify(); } } }) .setAdditionalSwitchProviderWhenOriginal(new MySwitchProvider()) .setSelectionChangeHandler( new JBTabs.SelectionChangeHandler() { @Override public ActionCallback execute( TabInfo info, boolean requestFocus, final ActiveRunnable doChangeSelection) { final ActionCallback result = new ActionCallback(); CommandProcessor.getInstance() .executeCommand( myProject, new Runnable() { @Override public void run() { ((IdeDocumentHistoryImpl) IdeDocumentHistory.getInstance(myProject)) .onSelectionChanged(); result.notify(doChangeSelection.run()); } }, "EditorChange", null); return result; } }) .getPresentation() .setRequestFocusOnLastFocusedComponent(true); setTabPlacement(UISettings.getInstance().EDITOR_TAB_PLACEMENT); updateTabBorder(); ((ToolWindowManagerEx) ToolWindowManager.getInstance(myProject)) .addToolWindowManagerListener( new ToolWindowManagerAdapter() { public void stateChanged() { updateTabBorder(); } public void toolWindowRegistered(@NotNull final String id) { updateTabBorder(); } }); UISettings.getInstance() .addUISettingsListener( new UISettingsListener() { public void uiSettingsChanged(UISettings source) { updateTabBorder(); } }, this); Disposer.register(project, this); }