diff --git a/platform/lang-api/src/com/intellij/execution/ui/RunnerLayoutUi.java b/platform/lang-api/src/com/intellij/execution/ui/RunnerLayoutUi.java index e5c6f004b1e1..68131d6429c8 100644 --- a/platform/lang-api/src/com/intellij/execution/ui/RunnerLayoutUi.java +++ b/platform/lang-api/src/com/intellij/execution/ui/RunnerLayoutUi.java @@ -47,7 +47,7 @@ public interface RunnerLayoutUi { Content addContent(@NotNull Content content); @NotNull - Content addContent(@NotNull Content content, int defaultTabId, PlaceInGrid defaultPlace, boolean defaultIsMinimized); + Content addContent(@NotNull Content content, int defaultTabId, @NotNull PlaceInGrid defaultPlace, boolean defaultIsMinimized); @NotNull Content createContent(@NotNull String contentId, @NotNull JComponent component, @NotNull String displayName, @Nullable Icon icon, @Nullable JComponent toFocus); @@ -60,15 +60,18 @@ public interface RunnerLayoutUi { @Nullable Content findContent(@NotNull String contentId); + @NotNull ActionCallback selectAndFocus(@Nullable Content content, boolean requestFocus, final boolean forced); + @NotNull ActionCallback selectAndFocus(@Nullable Content content, boolean requestFocus, final boolean forced, final boolean implicit); + @NotNull RunnerLayoutUi addListener(@NotNull ContentManagerListener listener, @NotNull Disposable parent); void removeListener(@NotNull final ContentManagerListener listener); void attractBy(@NotNull String condition); - void clearAttractionBy(final String condition); + void clearAttractionBy(@NotNull String condition); void setBouncing(@NotNull Content content, final boolean activate); @@ -79,6 +82,7 @@ public interface RunnerLayoutUi { void updateActionsNow(); + @NotNull Content[] getContents(); abstract class Factory { @@ -89,6 +93,7 @@ public interface RunnerLayoutUi { return ServiceManager.getService(project, Factory.class); } + @NotNull public abstract RunnerLayoutUi create(@NotNull String runnerId, @NotNull String runnerTitle, @NotNull String sessionName, @NotNull Disposable parent); } diff --git a/platform/lang-api/src/com/intellij/execution/ui/actions/AbstractFocusOnAction.java b/platform/lang-api/src/com/intellij/execution/ui/actions/AbstractFocusOnAction.java index 198fe1c6e4fb..02f6d4956b90 100644 --- a/platform/lang-api/src/com/intellij/execution/ui/actions/AbstractFocusOnAction.java +++ b/platform/lang-api/src/com/intellij/execution/ui/actions/AbstractFocusOnAction.java @@ -20,14 +20,17 @@ import com.intellij.execution.ui.layout.ViewContext; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Toggleable; import com.intellij.ui.content.Content; +import org.jetbrains.annotations.NotNull; public class AbstractFocusOnAction extends BaseViewAction implements Toggleable { + @NotNull private final String myCondition; - public AbstractFocusOnAction(String condition) { + public AbstractFocusOnAction(@NotNull String condition) { myCondition = condition; } + @Override protected void update(final AnActionEvent e, final ViewContext context, final Content[] content) { final boolean visible = content.length == 1; e.getPresentation().setVisible(visible); @@ -40,6 +43,7 @@ public class AbstractFocusOnAction extends BaseViewAction implements Toggleable return context.getRunnerLayoutUi().getOptions().isToFocus(content[0], myCondition); } + @Override protected void actionPerformed(final AnActionEvent e, final ViewContext context, final Content[] content) { final boolean toFocus = isToFocus(context, content); context.getRunnerLayoutUi().getOptions().setToFocus(toFocus ? null : content[0], myCondition); diff --git a/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutStateDefaults.java b/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutStateDefaults.java index b19d6a93b46a..17c69166f8a1 100644 --- a/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutStateDefaults.java +++ b/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutStateDefaults.java @@ -22,11 +22,12 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; public interface LayoutStateDefaults { - + @NotNull //this LayoutStateDefaults initTabDefaults(int tabId, @Nullable String defaultTabText, @Nullable Icon defaultTabIcon); - LayoutStateDefaults initFocusContent(@NotNull String id, final String condition); - - LayoutStateDefaults initFocusContent(@NotNull String id, final String condition, @NotNull final LayoutAttractionPolicy policy); + @NotNull // this + LayoutStateDefaults initFocusContent(@NotNull String id, @NotNull String condition); + @NotNull //this + LayoutStateDefaults initFocusContent(@NotNull String id, @NotNull String condition, @NotNull final LayoutAttractionPolicy policy); } \ No newline at end of file diff --git a/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutViewOptions.java b/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutViewOptions.java index d0faa6782ec0..bd24a4a8af92 100644 --- a/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutViewOptions.java +++ b/platform/lang-api/src/com/intellij/execution/ui/layout/LayoutViewOptions.java @@ -29,6 +29,7 @@ public interface LayoutViewOptions { @NotNull LayoutViewOptions setTopToolbar(@NotNull ActionGroup actions, @NotNull String place); + @NotNull LayoutViewOptions setLeftToolbar(@NotNull ActionGroup leftToolbar, @NotNull String place); @NotNull @@ -39,17 +40,23 @@ public interface LayoutViewOptions { @NotNull LayoutViewOptions setAttractionPolicy(@NotNull String contentId, LayoutAttractionPolicy policy); + + @NotNull LayoutViewOptions setConditionAttractionPolicy(@NotNull String condition, LayoutAttractionPolicy policy); - boolean isToFocus(Content content, final String condition); + boolean isToFocus(@NotNull Content content, @NotNull String condition); - LayoutViewOptions setToFocus(@Nullable Content content, final String condition); + @NotNull + LayoutViewOptions setToFocus(@Nullable Content content, @NotNull String condition); AnAction getLayoutActions(); + @NotNull AnAction[] getLayoutActionsList(); - LayoutViewOptions setAdditionalFocusActions(ActionGroup group); + @NotNull + LayoutViewOptions setAdditionalFocusActions(@NotNull ActionGroup group); AnAction getSettingsActions(); + @NotNull AnAction[] getSettingsActionsList(); } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/actions/ToggleToolbarLayoutAction.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/actions/ToggleToolbarLayoutAction.java index e6106488c0ad..c9ccade706fb 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/actions/ToggleToolbarLayoutAction.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/actions/ToggleToolbarLayoutAction.java @@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable; public class ToggleToolbarLayoutAction extends ToggleAction { + @Override public void update(final AnActionEvent e) { if (getRunnerUi(e) == null) { e.getPresentation().setEnabled(false); @@ -31,11 +32,13 @@ public class ToggleToolbarLayoutAction extends ToggleAction { } } + @Override public boolean isSelected(final AnActionEvent e) { final RunnerContentUi ui = getRunnerUi(e); - return ui != null ? ui.isHorizontalToolbar() : false; + return ui != null && ui.isHorizontalToolbar(); } + @Override public void setSelected(final AnActionEvent e, final boolean state) { getRunnerUi(e).setHorizontalToolbar(state); } diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java index f010e6c71741..0a20452ae039 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java @@ -69,18 +69,19 @@ import java.util.concurrent.CopyOnWriteArraySet; public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Facade, ViewContextEx, PropertyChangeListener, SwitchProvider, QuickActionProvider, DockContainer.Dialog { + public static final DataKey KEY = DataKey.create("DebuggerContentUI"); - @NonNls public static final String LAYOUT = "Runner.Layout"; - @NonNls public static final String SETTINGS = "XDebugger.Settings"; - @NonNls public static final String VIEW_POPUP = "Runner.View.Popup"; - @NonNls public static final String VIEW_TOOLBAR = "Runner.View.Toolbar"; + @NonNls private static final String LAYOUT = "Runner.Layout"; + @NonNls private static final String SETTINGS = "XDebugger.Settings"; + @NonNls private static final String VIEW_POPUP = "Runner.View.Popup"; + @NonNls static final String VIEW_TOOLBAR = "Runner.View.Toolbar"; - ContentManager myManager; - RunnerLayout myLayoutSettings; + private ContentManager myManager; + private final RunnerLayout myLayoutSettings; - ActionManager myActionManager; - String mySessionName; - MyComponent myComponent = new MyComponent(); + private final ActionManager myActionManager; + private final String mySessionName; + private final MyComponent myComponent = new MyComponent(); private final Wrapper myToolbar = new Wrapper(); final MyDragOutDelegate myDragOutDelegate = new MyDragOutDelegate(); @@ -96,20 +97,19 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac return index1 - index2; } }; - Project myProject; + private final Project myProject; - ActionGroup myTopActions = new DefaultActionGroup(); + private ActionGroup myTopActions = new DefaultActionGroup(); - DefaultActionGroup myMinimizedViewActions = new DefaultActionGroup(); + private final DefaultActionGroup myMinimizedViewActions = new DefaultActionGroup(); - Map myMinimizedButtonsPlaceholder = new HashMap(); - Map myCommonActionsPlaceholder = new HashMap(); - Map myContextActions = new HashMap(); + private final Map myMinimizedButtonsPlaceholder = new HashMap(); + private final Map myCommonActionsPlaceholder = new HashMap(); + private final Map myContextActions = new HashMap(); - boolean myUiLastStateWasRestored; + private boolean myUiLastStateWasRestored; private final Set myRestoreStateRequestors = new HashSet(); - public static final DataKey KEY = DataKey.create("DebuggerContentUI"); private String myActionsPlace = ActionPlaces.UNKNOWN; private final IdeFocusManager myFocusManager; @@ -132,8 +132,8 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac private Image myCurrentOverImg; private TabInfo myCurrentOverInfo; private RunnerContentUi myOriginal; - private CopyOnWriteArraySet myDockingListeners = new CopyOnWriteArraySet(); - private Set myChildren = new TreeSet(new Comparator() { + private final CopyOnWriteArraySet myDockingListeners = new CopyOnWriteArraySet(); + private final Set myChildren = new TreeSet(new Comparator() { @Override public int compare(RunnerContentUi o1, RunnerContentUi o2) { return o1.myWindow - o2.myWindow; @@ -142,12 +142,12 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac private int myWindow; private boolean myDisposing; - public RunnerContentUi(Project project, - RunnerLayoutUi ui, - ActionManager actionManager, - IdeFocusManager focusManager, - RunnerLayout settings, - String sessionName) { + public RunnerContentUi(@NotNull Project project, + @NotNull RunnerLayoutUi ui, + @NotNull ActionManager actionManager, + @NotNull IdeFocusManager focusManager, + @NotNull RunnerLayout settings, + @NotNull String sessionName) { myProject = project; myRunnerUi = ui; myLayoutSettings = settings; @@ -156,7 +156,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac myFocusManager = focusManager; } - public RunnerContentUi(RunnerContentUi ui, RunnerContentUi original, int window) { + public RunnerContentUi(@NotNull RunnerContentUi ui, @NotNull RunnerContentUi original, int window) { this(ui.myProject, ui.myRunnerUi, ui.myActionManager, ui.myFocusManager, ui.myLayoutSettings, ui.mySessionName); myOriginal = original; original.myChildren.add(this); @@ -1282,7 +1282,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac processAttraction(content.getUserData(ViewImpl.ID), myAttractions, new LayoutAttractionPolicy.Bounce(), afterInitialized, true); } - public void attractByCondition(String condition, boolean afterInitialized) { + public void attractByCondition(@NotNull String condition, boolean afterInitialized) { processAttraction(myLayoutSettings.getToFocus(condition), myConditionAttractions, myLayoutSettings.getAttractionPolicy(condition), afterInitialized, true); } @@ -1639,8 +1639,8 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac } class DockableGrid implements DockableContent> { - final Image myImg; - private Presentation myPresentation; + private final Image myImg; + private final Presentation myPresentation; private final Dimension myPreferredSize; private final List myContents; private final int myWindow; @@ -1653,6 +1653,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac myWindow = window; } + @NotNull @Override public List getKey() { return myContents; @@ -1686,6 +1687,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac return myOriginal != null ? myOriginal : RunnerContentUi.this; } + @NotNull public List getContents() { return myContents; } diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java index 2f6dbc88635c..bb95ef2dd9fe 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java @@ -52,7 +52,7 @@ public class RunnerLayout { private final Map> myDefaultFocus = new HashMap>(); - public RunnerLayout(final String ID) { + public RunnerLayout(@NotNull String ID) { myID = ID; } @@ -72,17 +72,17 @@ public class RunnerLayout { return tab; } + @NotNull private TabImpl createNewTab(final int index) { - final TabImpl tab; - final TabImpl.Default defaultTab = getOrCreateDefaultTab(index); - tab = defaultTab.createTab(); + final TabImpl tab = defaultTab.createTab(); myTabs.add(tab); return tab; } + @NotNull private TabImpl.Default getOrCreateDefaultTab(final int index) { TabImpl.Default tab = myDefaultTabs.get(index); if (tab == null) { @@ -92,6 +92,7 @@ public class RunnerLayout { return tab; } + @NotNull public TabImpl createNewTab() { int index = 0; for (TabImpl each : myTabs) { @@ -108,7 +109,7 @@ public class RunnerLayout { return createNewTab(index); } - private boolean isUsed(TabImpl tab) { + private boolean isUsed(@NotNull TabImpl tab) { for (ViewImpl each : myViews.values()) { if (each.getTab() == tab) return true; } @@ -125,15 +126,17 @@ public class RunnerLayout { return null; } + @NotNull public Element getState() { return write(new Element("layout")); } - public void loadState(final Element state) { + public void loadState(@NotNull Element state) { read(state); } - public Element read(final Element parentNode) { + @NotNull + public Element read(@NotNull Element parentNode) { List tabs = parentNode.getChildren(StringUtil.getShortName(TabImpl.class.getName())); for (Object eachTabElement : tabs) { TabImpl eachTab = new TabImpl((Element)eachTabElement); @@ -151,7 +154,8 @@ public class RunnerLayout { return parentNode; } - public Element write(final Element parentNode) { + @NotNull + public Element write(@NotNull Element parentNode) { for (ViewImpl eachState : myViews.values()) { eachState.write(parentNode); } @@ -181,11 +185,12 @@ public class RunnerLayout { myGeneral.horizontalToolbar = horizontal; } - public ViewImpl getStateFor(Content content) { + @NotNull + public ViewImpl getStateFor(@NotNull Content content) { return getOrCreateView(getOrCreateContentId(content)); } - public void clearStateFor(Content content) { + public void clearStateFor(@NotNull Content content) { final ViewImpl view = myViews.remove(getOrCreateContentId(content)); if (view != null) { final Tab tab = view.getTab(); @@ -195,7 +200,8 @@ public class RunnerLayout { } } - private static String getOrCreateContentId(final Content content) { + @NotNull + private static String getOrCreateContentId(@NotNull Content content) { @NonNls String id = content.getUserData(ViewImpl.ID); if (id == null) { id = "UnknownView-" + content.getDisplayName(); @@ -204,71 +210,71 @@ public class RunnerLayout { return id; } - private ViewImpl getOrCreateView(String id) { + @NotNull + private ViewImpl getOrCreateView(@NotNull String id) { if (myViews.containsKey(id)) { return myViews.get(id); - } else { - final ViewImpl.Default defaultView = getOrCreateDefault(id); - final ViewImpl view = defaultView.createView(this); - myViews.put(id, view); - return view; } + final ViewImpl.Default defaultView = getOrCreateDefault(id); + final ViewImpl view = defaultView.createView(this); + myViews.put(id, view); + return view; } - private ViewImpl.Default getOrCreateDefault(String id) { + @NotNull + private ViewImpl.Default getOrCreateDefault(@NotNull String id) { if (myDefaultViews.containsKey(id)) { return myDefaultViews.get(id); - } else { - return setDefault(id, Integer.MAX_VALUE, PlaceInGrid.bottom, false); } + return setDefault(id, Integer.MAX_VALUE, PlaceInGrid.bottom, false); } + @NotNull public TabImpl.Default setDefault(int tabID, String displayName, Icon icon) { final TabImpl.Default tab = new TabImpl.Default(tabID, displayName, icon); myDefaultTabs.put(tabID, tab); return tab; } - public ViewImpl.Default setDefault(String id, int tabIndex, PlaceInGrid placeInGrid, boolean isMinimized) { + @NotNull + public ViewImpl.Default setDefault(@NotNull String id, int tabIndex, @NotNull PlaceInGrid placeInGrid, boolean isMinimized) { final ViewImpl.Default view = new ViewImpl.Default(id, tabIndex, placeInGrid, isMinimized); myDefaultViews.put(id, view); return view; } - public PlaceInGrid getDefaultGridPlace(final Content content) { + @NotNull + public PlaceInGrid getDefaultGridPlace(@NotNull Content content) { return getOrCreateDefault(getOrCreateContentId(content)).getPlaceInGrid(); } - public int getDefaultSelectedTabIndex() { - return 0; - } - - public boolean isToFocus(final String id, final String condition) { + public boolean isToFocus(final String id, @NotNull String condition) { return Comparing.equal(id, getToFocus(condition)); } - public void setToFocus(final String id, final String condition) { + public void setToFocus(final String id, @NotNull String condition) { myGeneral.focusOnCondition.put(condition, id); } - public void setDefaultToFocus(String id, final String condition, @NotNull final LayoutAttractionPolicy policy) { + public void setDefaultToFocus(@NotNull String id, @NotNull String condition, @NotNull final LayoutAttractionPolicy policy) { myDefaultFocus.put(condition, Pair.create(id, policy)); } @Nullable - public String getToFocus(final String condition) { - return myGeneral.focusOnCondition.containsKey(condition) ? myGeneral.focusOnCondition.get(condition) : (myDefaultFocus.containsKey(condition) ? myDefaultFocus.get(condition).getFirst() : null); + public String getToFocus(@NotNull String condition) { + return myGeneral.focusOnCondition.containsKey(condition) ? myGeneral.focusOnCondition.get(condition) : + myDefaultFocus.containsKey(condition) ? myDefaultFocus.get(condition).getFirst() : null; } - public LayoutAttractionPolicy getAttractionPolicy(final String condition) { + @NotNull + public LayoutAttractionPolicy getAttractionPolicy(@NotNull String condition) { final Pair pair = myDefaultFocus.get(condition); return pair == null ? new LayoutAttractionPolicy.FocusOnce() : pair.getSecond(); } public static class General { public volatile boolean horizontalToolbar = false; - public volatile int selectedTab = 0; public volatile Map focusOnCondition = new HashMap(); } } diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutSettings.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutSettings.java index 060c5d5d3994..decdcba56bf6 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutSettings.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutSettings.java @@ -18,6 +18,7 @@ package com.intellij.execution.ui.layout.impl; import com.intellij.openapi.components.*; import org.jdom.Element; +import org.jetbrains.annotations.NotNull; import java.util.LinkedHashMap; import java.util.List; @@ -34,7 +35,7 @@ public class RunnerLayoutSettings implements PersistentStateComponent { private final Map myRunnerId2Settings = new LinkedHashMap(); - public RunnerLayout getLayout(String id) { + public RunnerLayout getLayout(@NotNull String id) { RunnerLayout layout = myRunnerId2Settings.get(id); if (layout == null) { layout = new RunnerLayout(id); @@ -44,6 +45,7 @@ public class RunnerLayoutSettings implements PersistentStateComponent { return layout; } + @Override public Element getState() { final Element runners = new Element("runners"); for (String eachID : myRunnerId2Settings.keySet()) { @@ -56,6 +58,7 @@ public class RunnerLayoutSettings implements PersistentStateComponent { return runners; } + @Override public void loadState(final Element state) { final List runners = state.getChildren("runner"); for (Object each : runners) { diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiFactoryImpl.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiFactoryImpl.java index adc11e73663b..313f7237fa48 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiFactoryImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiFactoryImpl.java @@ -28,6 +28,8 @@ public class RunnerLayoutUiFactoryImpl extends RunnerLayoutUi.Factory { myProject = project; } + @NotNull + @Override public RunnerLayoutUi create(@NotNull final String runnerId, @NotNull final String runnerTitle, @NotNull final String sessionName, @NotNull final Disposable parent) { return new RunnerLayoutUiImpl(myProject, parent, runnerId, runnerTitle, sessionName); } diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java index 7b5ec5a58e89..00e2ecb2b8a1 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java @@ -54,7 +54,11 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La private final ContentManager myViewsContentManager; public static final Key CONTENT_TYPE = Key.create("ContentType"); - public RunnerLayoutUiImpl(Project project, Disposable parent, String runnerId, String runnerTitle, String sessionName) { + public RunnerLayoutUiImpl(@NotNull Project project, + @NotNull Disposable parent, + @NotNull String runnerId, + @NotNull String runnerTitle, + @NotNull String sessionName) { myLayout = RunnerLayoutSettings.getInstance().getLayout(runnerId); Disposer.register(parent, this); @@ -69,6 +73,7 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La myContentPanel.add(myViewsContentManager.getComponent(), BorderLayout.CENTER); } + @Override @NotNull public LayoutViewOptions setTopToolbar(@NotNull ActionGroup actions, @NotNull String place) { myContentUI.setTopActions(actions, place); @@ -76,31 +81,39 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La } + @NotNull + @Override public LayoutStateDefaults initTabDefaults(int id, String text, Icon icon) { getLayout().setDefault(id, text, icon); return this; } + @NotNull + @Override public LayoutStateDefaults initFocusContent(@NotNull final String id, @NotNull final String condition) { return initFocusContent(id, condition, new LayoutAttractionPolicy.FocusOnce()); } + @NotNull + @Override public LayoutStateDefaults initFocusContent(@NotNull final String id, @NotNull final String condition, @NotNull final LayoutAttractionPolicy policy) { getLayout().setDefaultToFocus(id, condition, policy); return this; } + @Override @NotNull public Content addContent(@NotNull Content content) { return addContent(content, false, -1, PlaceInGrid.center, false); } + @Override @NotNull - public Content addContent(@NotNull Content content, int defaultTabId, PlaceInGrid defaultPlace, boolean defaultIsMinimized) { + public Content addContent(@NotNull Content content, int defaultTabId, @NotNull PlaceInGrid defaultPlace, boolean defaultIsMinimized) { return addContent(content, true, defaultTabId, defaultPlace, defaultIsMinimized); } - public Content addContent(Content content, boolean applyDefaults, int defaultTabId, PlaceInGrid defaultPlace, boolean defaultIsMinimized) { + public Content addContent(@NotNull Content content, boolean applyDefaults, int defaultTabId, @NotNull PlaceInGrid defaultPlace, boolean defaultIsMinimized) { final String id = content.getUserData(CONTENT_TYPE); assert id != null : "Content id is missing, use RunnerLayoutUi to create content instances"; @@ -113,11 +126,13 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La return content; } + @Override @NotNull public Content createContent(@NotNull String id, @NotNull JComponent component, @NotNull String displayName, @Nullable Icon icon, @Nullable JComponent focusable) { return createContent(id, new ComponentWithActions.Impl(component), displayName, icon, focusable); } + @Override @NotNull public Content createContent(@NotNull final String contentId, @NotNull final ComponentWithActions withActions, @NotNull final String displayName, @Nullable final Icon icon, @@ -138,6 +153,7 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La return content; } + @Override @NotNull public JComponent getComponent() { return myContentPanel; @@ -151,6 +167,7 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La return myLayout; } + @Override public void updateActionsNow() { myContentUI.updateActionsImmediately(); } @@ -160,18 +177,24 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La myContentUI.saveUiState(); } + @Override public void dispose() { } + @Override @NotNull public ContentManager getContentManager() { return myViewsContentManager; } + @NotNull + @Override public ActionCallback selectAndFocus(@Nullable final Content content, boolean requestFocus, final boolean forced) { return selectAndFocus(content, requestFocus, forced, false); } + @NotNull + @Override public ActionCallback selectAndFocus(@Nullable final Content content, boolean requestFocus, final boolean forced, boolean implicit) { if (content == null) return new ActionCallback.Rejected(); return getContentManager(content).setSelectedContent(content, requestFocus || shouldRequestFocus(), forced, implicit); @@ -186,59 +209,73 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La return focused != null && SwingUtilities.isDescendingFrom(focused, getContentManager().getComponent()); } - public boolean removeContent(final Content content, final boolean dispose) { - if (content == null) return false; - return getContentManager().removeContent(content, dispose); + @Override + public boolean removeContent(@Nullable Content content, final boolean dispose) { + return content != null && getContentManager().removeContent(content, dispose); } - public boolean isToFocus(final Content content, final String condition) { + @Override + public boolean isToFocus(@NotNull final Content content, @NotNull final String condition) { final String id = content.getUserData(ViewImpl.ID); return getLayout().isToFocus(id, condition); } - public LayoutViewOptions setToFocus(@Nullable final Content content, final String condition) { + @NotNull + @Override + public LayoutViewOptions setToFocus(@Nullable final Content content, @NotNull final String condition) { getLayout().setToFocus(content != null ? content.getUserData(ViewImpl.ID) : null, condition); return this; } + @Override public void attractBy(@NotNull final String condition) { myContentUI.attractByCondition(condition, true); } - public void clearAttractionBy(final String condition) { + @Override + public void clearAttractionBy(@NotNull final String condition) { myContentUI.clearAttractionByCondition(condition, true); } - public void removeContent(String id, final boolean dispose) { + public void removeContent(@NotNull String id, final boolean dispose) { final Content content = findContent(id); if (content != null) { getContentManager().removeContent(content, dispose); } } + @Override public AnAction getLayoutActions() { return myContentUI.getLayoutActions(); } + @NotNull + @Override public AnAction[] getLayoutActionsList() { final ActionGroup group = (ActionGroup)getLayoutActions(); return group.getChildren(null); } + @NotNull + @Override public LayoutViewOptions setLeftToolbar(@NotNull final ActionGroup leftToolbar, @NotNull final String place) { myContentUI.setLeftToolbar(leftToolbar, place); return this; } + @Override @Nullable public Content findContent(@NotNull final String key) { return myContentUI.findContent(key); } + @NotNull + @Override public RunnerLayoutUi addListener(@NotNull final ContentManagerListener listener, @NotNull final Disposable parent) { final ContentManager mgr = getContentManager(); mgr.addContentManagerListener(listener); Disposer.register(parent, new Disposable() { + @Override public void dispose() { mgr.removeContentManagerListener(listener); } @@ -246,19 +283,23 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La return this; } + @Override public void removeListener(@NotNull final ContentManagerListener listener) { getContentManager().removeContentManagerListener(listener); } + @Override public void setBouncing(@NotNull final Content content, final boolean activate) { myContentUI.processBounce(content, activate); } + @Override public boolean isDisposed() { return getContentManager().isDisposed(); } + @Override @NotNull public LayoutViewOptions setMinimizeActionEnabled(final boolean enabled) { myContentUI.setMinimizeActionEnabled(enabled); @@ -270,34 +311,42 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La return this; } + @Override @NotNull public LayoutViewOptions setMoveToGridActionEnabled(final boolean enabled) { myContentUI.setMovetoGridActionEnabled(enabled); return this; } + @Override @NotNull public LayoutViewOptions setAttractionPolicy(@NotNull final String contentId, final LayoutAttractionPolicy policy) { myContentUI.setPolicy(contentId, policy); return this; } + @NotNull + @Override public LayoutViewOptions setConditionAttractionPolicy(@NotNull final String condition, final LayoutAttractionPolicy policy) { myContentUI.setConditionPolicy(condition, policy); return this; } + @Override @NotNull public LayoutStateDefaults getDefaults() { return this; } + @Override @NotNull public LayoutViewOptions getOptions() { return this; } - public LayoutViewOptions setAdditionalFocusActions(final ActionGroup group) { + @NotNull + @Override + public LayoutViewOptions setAdditionalFocusActions(@NotNull final ActionGroup group) { myContentUI.setAdditionalFocusActions(group); return this; } @@ -307,11 +356,15 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La return myContentUI.getSettingsActions(); } + @NotNull + @Override public AnAction[] getSettingsActionsList() { final ActionGroup group = (ActionGroup)getSettingsActions(); return group.getChildren(null); } + @NotNull + @Override public Content[] getContents() { Content[] contents = new Content[getContentManager().getContentCount()]; for (int i = 0; i < contents.length; i++) { @@ -325,6 +378,7 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La super(new BorderLayout()); } + @Override public Object getData(@NonNls String dataId) { if (SwitchProvider.KEY.getName().equals(dataId)) { return myContentUI; diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/TabImpl.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/TabImpl.java index 673c7bbe9898..bfa546d008db 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/TabImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/TabImpl.java @@ -36,10 +36,12 @@ public class TabImpl extends AbstractTab implements Tab { TabImpl() { } + @Override public int getIndex() { return myIndex; } + @Override public int getDefaultIndex() { return myDefaultIndex >= 0 ? myDefaultIndex : myIndex; } @@ -129,10 +131,12 @@ public class TabImpl extends AbstractTab implements Tab { myBottomDetached = bottomDetached; } + @Override public boolean isDefault() { return myIndex == 0; } + @Override public boolean isDetached(PlaceInGrid place) { switch (place) { case bottom: @@ -148,6 +152,7 @@ public class TabImpl extends AbstractTab implements Tab { return false; } + @Override public void setDetached(PlaceInGrid place, boolean detached) { switch (place) { case bottom: diff --git a/platform/platform-api/src/com/intellij/ui/docking/DockableContent.java b/platform/platform-api/src/com/intellij/ui/docking/DockableContent.java index e4981fb47eb4..2fcbc4e7e8f3 100644 --- a/platform/platform-api/src/com/intellij/ui/docking/DockableContent.java +++ b/platform/platform-api/src/com/intellij/ui/docking/DockableContent.java @@ -16,11 +16,12 @@ package com.intellij.ui.docking; import com.intellij.openapi.actionSystem.Presentation; +import org.jetbrains.annotations.NotNull; import java.awt.*; public interface DockableContent { - + @NotNull T getKey(); Image getPreviewImage(); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java index ac515bd374bb..df58b3c97f57 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java @@ -642,6 +642,7 @@ final class EditorTabbedContainer implements Disposable, CloseAction.CloseTarget myPinned = window.isFilePinned(file); } + @NotNull @Override public VirtualFile getKey() { return myFile;