mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
notnull
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
+4
-1
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<RunnerContentUi> 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<GridImpl, Wrapper> myMinimizedButtonsPlaceholder = new HashMap<GridImpl, Wrapper>();
|
||||
Map<GridImpl, Wrapper> myCommonActionsPlaceholder = new HashMap<GridImpl, Wrapper>();
|
||||
Map<GridImpl, AnAction[]> myContextActions = new HashMap<GridImpl, AnAction[]>();
|
||||
private final Map<GridImpl, Wrapper> myMinimizedButtonsPlaceholder = new HashMap<GridImpl, Wrapper>();
|
||||
private final Map<GridImpl, Wrapper> myCommonActionsPlaceholder = new HashMap<GridImpl, Wrapper>();
|
||||
private final Map<GridImpl, AnAction[]> myContextActions = new HashMap<GridImpl, AnAction[]>();
|
||||
|
||||
boolean myUiLastStateWasRestored;
|
||||
private boolean myUiLastStateWasRestored;
|
||||
|
||||
private final Set<Object> myRestoreStateRequestors = new HashSet<Object>();
|
||||
public static final DataKey<RunnerContentUi> 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<Listener> myDockingListeners = new CopyOnWriteArraySet<Listener>();
|
||||
private Set<RunnerContentUi> myChildren = new TreeSet<RunnerContentUi>(new Comparator<RunnerContentUi>() {
|
||||
private final CopyOnWriteArraySet<Listener> myDockingListeners = new CopyOnWriteArraySet<Listener>();
|
||||
private final Set<RunnerContentUi> myChildren = new TreeSet<RunnerContentUi>(new Comparator<RunnerContentUi>() {
|
||||
@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<List<Content>> {
|
||||
final Image myImg;
|
||||
private Presentation myPresentation;
|
||||
private final Image myImg;
|
||||
private final Presentation myPresentation;
|
||||
private final Dimension myPreferredSize;
|
||||
private final List<Content> myContents;
|
||||
private final int myWindow;
|
||||
@@ -1653,6 +1653,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
|
||||
myWindow = window;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<Content> getKey() {
|
||||
return myContents;
|
||||
@@ -1686,6 +1687,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
|
||||
return myOriginal != null ? myOriginal : RunnerContentUi.this;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<Content> getContents() {
|
||||
return myContents;
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class RunnerLayout {
|
||||
private final Map<String, Pair<String, LayoutAttractionPolicy>> myDefaultFocus = new HashMap<String, Pair<String, LayoutAttractionPolicy>>();
|
||||
|
||||
|
||||
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<String, LayoutAttractionPolicy> 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<String, String> focusOnCondition = new HashMap<String, String>();
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -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<Element> {
|
||||
|
||||
private final Map<String, RunnerLayout> myRunnerId2Settings = new LinkedHashMap<String, RunnerLayout>();
|
||||
|
||||
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<Element> {
|
||||
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<Element> {
|
||||
return runners;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadState(final Element state) {
|
||||
final List runners = state.getChildren("runner");
|
||||
for (Object each : runners) {
|
||||
|
||||
+2
@@ -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);
|
||||
}
|
||||
|
||||
+65
-11
@@ -54,7 +54,11 @@ public class RunnerLayoutUiImpl implements Disposable.Parent, RunnerLayoutUi, La
|
||||
private final ContentManager myViewsContentManager;
|
||||
public static final Key<String> 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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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<T> {
|
||||
|
||||
@NotNull
|
||||
T getKey();
|
||||
|
||||
Image getPreviewImage();
|
||||
|
||||
+1
@@ -642,6 +642,7 @@ final class EditorTabbedContainer implements Disposable, CloseAction.CloseTarget
|
||||
myPinned = window.isFilePinned(file);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public VirtualFile getKey() {
|
||||
return myFile;
|
||||
|
||||
Reference in New Issue
Block a user