IDEA-19020

This commit is contained in:
Alexey Kudravtsev
2010-03-25 13:56:15 +03:00
parent 67da6f796b
commit a89fdfd8c0
3 changed files with 37 additions and 10 deletions
@@ -123,7 +123,8 @@ public class SliceManager implements PersistentStateComponent<SliceManager.Store
final SliceToolwindowSettings sliceToolwindowSettings = SliceToolwindowSettings.getInstance(myProject);
final ContentManager contentManager = dataFlowToThis ? myBackContentManager : myForthContentManager;
final Content[] myContent = new Content[1];
final SlicePanel slicePanel = new SlicePanel(myProject, dataFlowToThis, rootNode, splitByLeafExpressions) {
ToolWindow toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(dataFlowToThis ? BACK_TOOLWINDOW_ID : FORTH_TOOLWINDOW_ID);
final SlicePanel slicePanel = new SlicePanel(myProject, dataFlowToThis, rootNode, splitByLeafExpressions, toolWindow) {
protected void close() {
contentManager.removeContent(myContent[0], true);
}
@@ -149,7 +150,7 @@ public class SliceManager implements PersistentStateComponent<SliceManager.Store
contentManager.addContent(myContent[0]);
contentManager.setSelectedContent(myContent[0]);
ToolWindowManager.getInstance(myProject).getToolWindow(dataFlowToThis ? BACK_TOOLWINDOW_ID : FORTH_TOOLWINDOW_ID).activate(null);
toolWindow.activate(null);
}
public static String getElementDescription(String prefix, PsiElement element, String suffix) {
@@ -26,6 +26,10 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Splitter;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowAnchor;
import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
import com.intellij.openapi.wm.ex.ToolWindowManagerListener;
import com.intellij.pom.Navigatable;
import com.intellij.ui.*;
import com.intellij.ui.treeStructure.Tree;
@@ -75,9 +79,30 @@ public abstract class SlicePanel extends JPanel implements TypeSafeDataProvider,
private UsagePreviewPanel myUsagePreviewPanel;
private final Project myProject;
private boolean isDisposed;
private final ToolWindow myToolWindow;
public SlicePanel(Project project, boolean dataFlowToThis, SliceNode rootNode, boolean splitByLeafExpressions) {
public SlicePanel(final Project project, boolean dataFlowToThis, SliceNode rootNode, boolean splitByLeafExpressions, final ToolWindow toolWindow) {
super(new BorderLayout());
myToolWindow = toolWindow;
final ToolWindowManagerListener listener = new ToolWindowManagerListener() {
ToolWindowAnchor myAnchor = toolWindow.getAnchor();
public void toolWindowRegistered(@NotNull String id) {
}
public void stateChanged() {
if (toolWindow.getAnchor() != myAnchor) {
myAnchor = myToolWindow.getAnchor();
layoutPanel();
}
}
};
ToolWindowManagerEx.getInstanceEx(project).addToolWindowManagerListener(listener);
Disposer.register(this, new Disposable() {
public void dispose() {
ToolWindowManagerEx.getInstanceEx(project).removeToolWindowManagerListener(listener);
}
});
ApplicationManager.getApplication().assertIsDispatchThread();
myProject = project;
myTree = createTree();
@@ -110,7 +135,8 @@ public abstract class SlicePanel extends JPanel implements TypeSafeDataProvider,
}
removeAll();
if (isPreview()) {
Splitter splitter = new Splitter(false, UsageViewSettings.getInstance().PREVIEW_USAGES_SPLITTER_PROPORTIONS);
boolean vertical = myToolWindow.getAnchor() == ToolWindowAnchor.LEFT || myToolWindow.getAnchor() == ToolWindowAnchor.RIGHT;
Splitter splitter = new Splitter(vertical, UsageViewSettings.getInstance().PREVIEW_USAGES_SPLITTER_PROPORTIONS);
splitter.setFirstComponent(ScrollPaneFactory.createScrollPane(myTree));
myUsagePreviewPanel = new UsagePreviewPanel(myProject);
Disposer.register(this, myUsagePreviewPanel);
@@ -56,7 +56,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
public void notifyByBalloon(@NotNull final String toolWindowId, @NotNull final MessageType type, @NotNull final String htmlBody) {
}
private static final ToolWindow HEADLESS_WINDOW = new ToolWindow(){
public static final ToolWindow HEADLESS_WINDOW = new ToolWindow(){
public boolean isActive() {
return false;
}
@@ -308,11 +308,11 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
@Nullable final HyperlinkListener listener) {
}
public void addToolWindowManagerListener(ToolWindowManagerListener l) {
public void addToolWindowManagerListener(@NotNull ToolWindowManagerListener l) {
}
public void removeToolWindowManagerListener(ToolWindowManagerListener l) {
public void removeToolWindowManagerListener(@NotNull ToolWindowManagerListener l) {
}
public String getLastActiveToolWindowId() {
@@ -334,16 +334,16 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx {
return new DesktopLayout();
}
public void setLayout(DesktopLayout layout) {
public void setLayout(@NotNull DesktopLayout layout) {
}
public void clearSideStack() {
}
public void hideToolWindow(final String id, final boolean hideSide) {
public void hideToolWindow(@NotNull final String id, final boolean hideSide) {
}
public List<String> getIdsOn(final ToolWindowAnchor anchor) {
public List<String> getIdsOn(@NotNull final ToolWindowAnchor anchor) {
return new ArrayList<String>();
}
}