diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/wm')
6 files changed, 81 insertions, 46 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowManagerEx.java b/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowManagerEx.java index fbe213f20bb0..2bff2a10d5cd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowManagerEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowManagerEx.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,7 +28,7 @@ import javax.swing.*; import java.util.List; public abstract class ToolWindowManagerEx extends ToolWindowManager { - public abstract void initToolWindow(ToolWindowEP bean); + public abstract void initToolWindow(@NotNull ToolWindowEP bean); public static ToolWindowManagerEx getInstanceEx(final Project project){ return (ToolWindowManagerEx)getInstance(project); diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java index c302cce7572e..867c404073d3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java @@ -203,9 +203,6 @@ public class FocusManagerImpl extends IdeFocusManager implements Disposable { public ActionCallback requestFocus(@NotNull final FocusCommand command, final boolean forced) { assertDispatchThread(); - if (!forced && !command.canFocusChangeFrom(getFocusOwner())) { - return ActionCallback.REJECTED; - } if (isInternalMode) { recordCommand(command, new Throwable(), forced); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java index 71f964504102..1613953287b6 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeGlassPaneImpl.java @@ -24,8 +24,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.Divider; import com.intellij.openapi.ui.Painter; import com.intellij.openapi.ui.impl.GlassPaneDialogWrapperPeer; -import com.intellij.openapi.ui.popup.Balloon; -import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Weighted; import com.intellij.openapi.wm.IdeGlassPane; @@ -287,8 +285,6 @@ public class IdeGlassPaneImpl extends JPanel implements IdeGlassPaneEx, IdeEvent return false; } - private MouseEvent myLastRedispatchedEvent = null; - private boolean preprocess(final MouseEvent e, final boolean motion, JRootPane eventRootPane) { try { final MouseEvent event = convertEvent(e, eventRootPane); @@ -297,25 +293,6 @@ public class IdeGlassPaneImpl extends JPanel implements IdeGlassPaneEx, IdeEvent return false; } - Component c = SwingUtilities.getDeepestComponentAt(e.getComponent(), e.getX(), e.getY()); - Balloon balloon = JBPopupFactory.getInstance().getParentBalloonFor(c); - if (balloon != null && myLastRedispatchedEvent != e) { - if (e.getID() == MouseEvent.MOUSE_PRESSED - && IdeTooltipManager.getInstance().hasCurrent() - && IdeTooltipManager.getInstance().hideCurrent(event, null, null, false)) { - //noinspection SSBasedInspection - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - myLastRedispatchedEvent = e; - IdeEventQueue.getInstance().dispatchEvent(e); - } - }); - } - return false; - } - myLastRedispatchedEvent = null; - for (EventListener each : mySortedMouseListeners) { if (motion && each instanceof MouseMotionListener) { fireMouseMotion((MouseMotionListener)each, event); diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java index 8b78b1632f79..7b9a7494c640 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowHeadlessManagerImpl.java @@ -87,6 +87,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { return tw; } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull String id, @NotNull JComponent component, @@ -96,11 +97,13 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { return doRegisterToolWindow(id, parentDisposable); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull String id, @NotNull JComponent component, @NotNull ToolWindowAnchor anchor) { return doRegisterToolWindow(id, null); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull String id, @NotNull JComponent component, @@ -111,19 +114,22 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { return doRegisterToolWindow(id, parentDisposable); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull String id, @NotNull JComponent component, @NotNull ToolWindowAnchor anchor, - Disposable parentDisposable) { + @NotNull Disposable parentDisposable) { return doRegisterToolWindow(id, parentDisposable); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, final boolean canCloseContent, @NotNull final ToolWindowAnchor anchor) { return doRegisterToolWindow(id, null); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, final boolean canCloseContent, @@ -132,6 +138,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { return doRegisterToolWindow(id, null); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, final boolean canCloseContent, @NotNull final ToolWindowAnchor anchor, final Disposable parentDisposable, final boolean dumbAware) { @@ -152,6 +159,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { return false; } + @NotNull @Override public String[] getToolWindowIds() { return ArrayUtil.EMPTY_STRING_ARRAY; @@ -168,9 +176,10 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { } @Override - public void invokeLater(Runnable runnable) { + public void invokeLater(@NotNull Runnable runnable) { } + @NotNull @Override public IdeFocusManager getFocusManager() { return IdeFocusManagerHeadless.INSTANCE; @@ -190,7 +199,7 @@ public class ToolWindowHeadlessManagerImpl extends ToolWindowManagerEx { } @Override - public void initToolWindow(ToolWindowEP bean) { + public void initToolWindow(@NotNull ToolWindowEP bean) { } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java index efcdd148d57b..1fa2bd95defe 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java @@ -72,6 +72,7 @@ public final class ToolWindowImpl implements ToolWindowEx { private boolean myPlaceholderMode; private ToolWindowFactory myContentFactory; + @NotNull private ActionCallback myActivation = new ActionCallback.Done(); private final BusyObject.Impl myShowing = new BusyObject.Impl() { @Override @@ -115,18 +116,22 @@ public final class ToolWindowImpl implements ToolWindowEx { myChangeSupport.addPropertyChangeListener(l); } + @Override public final void removePropertyChangeListener(final PropertyChangeListener l) { myChangeSupport.removePropertyChangeListener(l); } + @Override public final void activate(final Runnable runnable) { activate(runnable, true); } + @Override public void activate(@Nullable final Runnable runnable, final boolean autoFocusContents) { activate(runnable, autoFocusContents, true); } + @Override public void activate(@Nullable final Runnable runnable, boolean autoFocusContents, boolean forced) { ApplicationManager.getApplication().assertIsDispatchThread(); @@ -136,6 +141,7 @@ public final class ToolWindowImpl implements ToolWindowEx { myToolWindowManager.activateToolWindow(myId, forced, autoFocusContents); getActivation().doWhenDone(new Runnable() { + @Override public void run() { myToolWindowManager.invokeLater(new Runnable() { @Override @@ -150,6 +156,7 @@ public final class ToolWindowImpl implements ToolWindowEx { }); } + @Override public final boolean isActive() { ApplicationManager.getApplication().assertIsDispatchThread(); if (myToolWindowManager.isEditorComponentActive()) return false; @@ -182,11 +189,13 @@ public final class ToolWindowImpl implements ToolWindowEx { return result; } + @Override public final void show(final Runnable runnable) { ApplicationManager.getApplication().assertIsDispatchThread(); myToolWindowManager.showToolWindow(myId); if (runnable != null) { getActivation().doWhenDone(new Runnable() { + @Override public void run() { myToolWindowManager.invokeLater(runnable); } @@ -194,6 +203,7 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public final void hide(@Nullable final Runnable runnable) { ApplicationManager.getApplication().assertIsDispatchThread(); myToolWindowManager.hideToolWindow(myId, false); @@ -202,14 +212,17 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public final boolean isVisible() { return myToolWindowManager.isToolWindowVisible(myId); } + @Override public final ToolWindowAnchor getAnchor() { return myToolWindowManager.getToolWindowAnchor(myId); } + @Override public final void setAnchor(final ToolWindowAnchor anchor, @Nullable final Runnable runnable) { ApplicationManager.getApplication().assertIsDispatchThread(); myToolWindowManager.setToolWindowAnchor(myId, anchor); @@ -218,11 +231,13 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public boolean isSplitMode() { ApplicationManager.getApplication().assertIsDispatchThread(); return myToolWindowManager.isSplitMode(myId); } + @Override public void setContentUiType(ToolWindowContentUiType type, @Nullable Runnable runnable) { ApplicationManager.getApplication().assertIsDispatchThread(); myToolWindowManager.setContentUiType(myId, type); @@ -231,15 +246,18 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public void setDefaultContentUiType(@NotNull ToolWindowContentUiType type) { myToolWindowManager.setDefaultContentUiType(this, type); } + @Override public ToolWindowContentUiType getContentUiType() { ApplicationManager.getApplication().assertIsDispatchThread(); return myToolWindowManager.getContentUiType(myId); } + @Override public void setSplitMode(final boolean isSideTool, @Nullable final Runnable runnable) { ApplicationManager.getApplication().assertIsDispatchThread(); myToolWindowManager.setSideTool(myId, isSideTool); @@ -248,20 +266,24 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public final void setAutoHide(final boolean state) { ApplicationManager.getApplication().assertIsDispatchThread(); myToolWindowManager.setToolWindowAutoHide(myId, state); } + @Override public final boolean isAutoHide() { ApplicationManager.getApplication().assertIsDispatchThread(); return myToolWindowManager.isToolWindowAutoHide(myId); } + @Override public final ToolWindowType getType() { return myToolWindowManager.getToolWindowType(myId); } + @Override public final void setType(final ToolWindowType type, @Nullable final Runnable runnable) { ApplicationManager.getApplication().assertIsDispatchThread(); myToolWindowManager.setToolWindowType(myId, type); @@ -270,19 +292,23 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public final ToolWindowType getInternalType() { ApplicationManager.getApplication().assertIsDispatchThread(); return myToolWindowManager.getToolWindowInternalType(myId); } + @Override public void stretchWidth(int value) { myToolWindowManager.stretchWidth(this, value); } + @Override public void stretchHeight(int value) { myToolWindowManager.stretchHeight(this, value); } + @Override public InternalDecorator getDecorator() { return myDecorator; } @@ -297,6 +323,7 @@ public final class ToolWindowImpl implements ToolWindowEx { getDecorator().setTitleActions(actions); } + @Override public final void setAvailable(final boolean available, final Runnable runnable) { ApplicationManager.getApplication().assertIsDispatchThread(); final Boolean oldAvailable = myAvailable ? Boolean.TRUE : Boolean.FALSE; @@ -307,6 +334,7 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public void installWatcher(ContentManager contentManager) { new ContentManagerWatcher(this, contentManager); } @@ -316,14 +344,17 @@ public final class ToolWindowImpl implements ToolWindowEx { * <code>ContentManager</code> class. Otherwise it delegates the functionality to the * passed content manager. */ + @Override public final boolean isAvailable() { return myAvailable && myComponent != null; } + @Override public final JComponent getComponent() { return myComponent; } + @Override public ContentManager getContentManager() { return myContentManager; } @@ -332,6 +363,7 @@ public final class ToolWindowImpl implements ToolWindowEx { return myContentUI; } + @Override public final Icon getIcon() { ApplicationManager.getApplication().assertIsDispatchThread(); return myIcon; @@ -342,17 +374,20 @@ public final class ToolWindowImpl implements ToolWindowEx { return myId; } + @Override public final String getTitle() { ApplicationManager.getApplication().assertIsDispatchThread(); return getSelectedContent().getDisplayName(); } + @Override @NotNull public final String getStripeTitle() { ApplicationManager.getApplication().assertIsDispatchThread(); return ObjectUtils.notNull(myStripeTitle, myId); } + @Override public final void setIcon(final Icon icon) { ApplicationManager.getApplication().assertIsDispatchThread(); final Icon oldIcon = getIcon(); @@ -364,6 +399,7 @@ public final class ToolWindowImpl implements ToolWindowEx { myChangeSupport.firePropertyChange(PROP_ICON, oldIcon, icon); } + @Override public final void setTitle(String title) { ApplicationManager.getApplication().assertIsDispatchThread(); String oldTitle = getTitle(); @@ -371,6 +407,7 @@ public final class ToolWindowImpl implements ToolWindowEx { myChangeSupport.firePropertyChange(PROP_TITLE, oldTitle, title); } + @Override public final void setStripeTitle(@NotNull String stripeTitle) { ApplicationManager.getApplication().assertIsDispatchThread(); String oldTitle = myStripeTitle; @@ -415,18 +452,22 @@ public final class ToolWindowImpl implements ToolWindowEx { return myDecorator != null ? myDecorator.createPopupGroup() : null; } + @Override public void setDefaultState(@Nullable final ToolWindowAnchor anchor, @Nullable final ToolWindowType type, @Nullable final Rectangle floatingBounds) { myToolWindowManager.setDefaultState(this, anchor, type, floatingBounds); } + @Override public void setToHideOnEmptyContent(final boolean hideOnEmpty) { myHideOnEmptyContent = hideOnEmpty; } + @Override public boolean isToHideOnEmptyContent() { return myHideOnEmptyContent; } + @Override public boolean isDisposed() { return myContentManager.isDisposed(); } @@ -439,12 +480,15 @@ public final class ToolWindowImpl implements ToolWindowEx { myPlaceholderMode = placeholderMode; } + @Override + @NotNull public ActionCallback getActivation() { return myActivation; } - public ActionCallback setActivation(ActionCallback activation) { - if (myActivation != null && !myActivation.isProcessed() && !myActivation.equals(activation)) { + @NotNull + public ActionCallback setActivation(@NotNull ActionCallback activation) { + if (!myActivation.isProcessed() && !myActivation.equals(activation)) { myActivation.setRejected(); } @@ -467,6 +511,7 @@ public final class ToolWindowImpl implements ToolWindowEx { } } + @Override public void showContentPopup(InputEvent inputEvent) { myContentUI.toggleContentPopup(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java index 555e0666f72e..95b3d54f8030 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java @@ -363,6 +363,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return IdeFocusManager.getInstance(project); } + @NotNull public Project getProject() { return myProject; } @@ -482,21 +483,14 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements } @Override - public void initToolWindow(ToolWindowEP bean) { - ToolWindowAnchor toolWindowAnchor; - try { - toolWindowAnchor = ToolWindowAnchor.fromText(bean.anchor); - } - catch (Exception e) { - LOG.error(e); - return; - } + public void initToolWindow(@NotNull ToolWindowEP bean) { JLabel label = new JLabel("Initializing...", SwingConstants.CENTER); label.setOpaque(true); final Color treeBg = UIManager.getColor("Tree.background"); label.setBackground(ColorUtil.toAlpha(treeBg, 180)); final Color treeFg = UIUtil.getTreeForeground(); label.setForeground(ColorUtil.toAlpha(treeFg, 180)); + ToolWindowAnchor toolWindowAnchor = ToolWindowAnchor.fromText(bean.anchor); final ToolWindowFactory factory = bean.getToolWindowFactory(); final ToolWindowImpl toolWindow = (ToolWindowImpl)registerToolWindow(bean.id, label, toolWindowAnchor, myProject, DumbService.isDumbAware(factory), @@ -747,7 +741,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements myActiveStack.push(id); } - if (autoFocusContents) { + if (autoFocusContents && ApplicationManager.getApplication().isActive()) { appendRequestFocusInToolWindowCmd(id, commandsList, forcedFocusRequest); } } @@ -826,6 +820,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements appendApplyWindowInfoCmd(info, commandsList); } + @NotNull @Override public String[] getToolWindowIds() { final WindowInfoImpl[] infos = myLayout.getInfos(); @@ -1087,6 +1082,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements appendApplyWindowInfoCmd(toBeShownInfo, commandsList); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, @NotNull final JComponent component, @@ -1094,6 +1090,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return registerToolWindow(id, component, anchor, false); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, @NotNull JComponent component, @@ -1102,6 +1099,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return registerToolWindow(id, component, anchor, parentDisposable, false, false); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull String id, @NotNull JComponent component, @@ -1111,6 +1109,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return registerToolWindow(id, component, anchor, parentDisposable, canWorkInDumbMode, false); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, @NotNull JComponent component, @@ -1120,6 +1119,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return registerDisposable(id, parentDisposable, registerToolWindow(id, component, anchor, false, canCloseContents, canWorkInDumbMode)); } + @NotNull private ToolWindow registerToolWindow(@NotNull final String id, @NotNull final JComponent component, @NotNull final ToolWindowAnchor anchor, @@ -1127,11 +1127,13 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return registerToolWindow(id, component, anchor, false, false, canWorkInDumbMode); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, final boolean canCloseContent, @NotNull final ToolWindowAnchor anchor) { return registerToolWindow(id, null, anchor, false, canCloseContent, false); } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, final boolean canCloseContent, @@ -1141,15 +1143,18 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements } + @NotNull @Override public ToolWindow registerToolWindow(@NotNull final String id, final boolean canCloseContent, @NotNull final ToolWindowAnchor anchor, @NotNull final Disposable parentDisposable, final boolean canWorkInDumbMode) { - return registerDisposable(id, parentDisposable, registerToolWindow(id, null, anchor, false, canCloseContent, canWorkInDumbMode)); + ToolWindow window = registerToolWindow(id, null, anchor, false, canCloseContent, canWorkInDumbMode); + return registerDisposable(id, parentDisposable, window); } + @NotNull private ToolWindow registerToolWindow(@NotNull final String id, @Nullable final JComponent component, @NotNull final ToolWindowAnchor anchor, @@ -1216,7 +1221,8 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements return toolWindow; } - private ToolWindow registerDisposable(final String id, @NotNull final Disposable parentDisposable, final ToolWindow window) { + @NotNull + private ToolWindow registerDisposable(@NotNull final String id, @NotNull final Disposable parentDisposable, @NotNull ToolWindow window) { Disposer.register(parentDisposable, new Disposable() { @Override public void dispose() { @@ -1353,12 +1359,13 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements } @Override - public void invokeLater(final Runnable runnable) { + public void invokeLater(@NotNull final Runnable runnable) { List<FinalizableCommand> commandList = new ArrayList<FinalizableCommand>(); commandList.add(new InvokeLaterCmd(runnable, myWindowManager.getCommandProcessor())); execute(commandList); } + @NotNull @Override public IdeFocusManager getFocusManager() { return IdeFocusManager.getInstance(myProject); |