mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
tests ui: allow to place console under the tests tree; make status line shorter in this case
This commit is contained in:
+1
@@ -62,6 +62,7 @@ public abstract class TestConsoleProperties extends StoringPropertyContainer imp
|
||||
public static final BooleanProperty SHOW_STATISTICS = new BooleanProperty("showStatistics", false);
|
||||
public static final BooleanProperty SHOW_INLINE_STATISTICS = new BooleanProperty("showInlineStatistics", true);
|
||||
public static final BooleanProperty INCLUDE_NON_STARTED_IN_RERUN_FAILED = new BooleanProperty("includeNonStarted", true);
|
||||
public static final BooleanProperty SPLIT_VERTICALLY = new BooleanProperty("splitVertically", false);
|
||||
|
||||
private final Project myProject;
|
||||
private final Executor myExecutor;
|
||||
|
||||
+32
-13
@@ -20,10 +20,10 @@ import com.intellij.execution.testframework.TestConsoleProperties;
|
||||
import com.intellij.execution.testframework.TestFrameworkPropertyListener;
|
||||
import com.intellij.execution.testframework.TestTreeView;
|
||||
import com.intellij.execution.testframework.ToolbarPanel;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.editor.EditorSettings;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.ui.Splitter;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
@@ -32,7 +32,7 @@ import com.intellij.ui.IdeBorderFactory;
|
||||
import com.intellij.ui.OnePixelSplitter;
|
||||
import com.intellij.ui.ScrollPaneFactory;
|
||||
import com.intellij.ui.SideBorder;
|
||||
import com.intellij.util.ui.AwtVisitor;
|
||||
import com.intellij.util.config.ToggleBooleanProperty;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -60,6 +60,7 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
|
||||
protected final AnAction[] myConsoleActions;
|
||||
protected final TestConsoleProperties myProperties;
|
||||
protected TestStatusLine myStatusLine;
|
||||
private Splitter mySplitter;
|
||||
|
||||
protected TestResultsPanel(@NotNull JComponent console, AnAction[] consoleActions, TestConsoleProperties properties,
|
||||
ExecutionEnvironment environment,
|
||||
@@ -82,24 +83,26 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
|
||||
JComponent testTreeView = createTestTreeView();
|
||||
myToolbarPanel = createToolbarPanel();
|
||||
Disposer.register(this, myToolbarPanel);
|
||||
final Splitter splitter = createSplitter(mySplitterProportionProperty, mySplitterDefaultProportion);
|
||||
mySplitter = createSplitter(mySplitterProportionProperty,
|
||||
mySplitterDefaultProportion,
|
||||
TestConsoleProperties.SPLIT_VERTICALLY.value(myProperties));
|
||||
Disposer.register(this, new Disposable(){
|
||||
@Override
|
||||
public void dispose() {
|
||||
remove(splitter);
|
||||
splitter.dispose();
|
||||
remove(mySplitter);
|
||||
mySplitter.dispose();
|
||||
}
|
||||
});
|
||||
add(splitter, BorderLayout.CENTER);
|
||||
add(mySplitter, BorderLayout.CENTER);
|
||||
final JPanel leftPanel = new JPanel(new BorderLayout());
|
||||
leftPanel.add(myLeftPane, BorderLayout.CENTER);
|
||||
leftPanel.add(myToolbarPanel, BorderLayout.NORTH);
|
||||
splitter.setFirstComponent(leftPanel);
|
||||
mySplitter.setFirstComponent(leftPanel);
|
||||
myStatusLine.setMinimumSize(new Dimension(0, myStatusLine.getMinimumSize().height));
|
||||
myStatusLine.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
|
||||
final JPanel rightPanel = new JPanel(new BorderLayout());
|
||||
rightPanel.add(SameHeightPanel.wrap(myStatusLine, myToolbarPanel), BorderLayout.NORTH);
|
||||
myStatisticsSplitter = createSplitter(myStatisticsSplitterProportionProperty, 0.5f);
|
||||
myStatisticsSplitter = createSplitter(myStatisticsSplitterProportionProperty, 0.5f, false);
|
||||
myStatisticsSplitter.setFirstComponent(createOutputTab(myConsole, myConsoleActions));
|
||||
if (Registry.is("tests.view.old.statistics.panel")) {
|
||||
if (TestConsoleProperties.SHOW_STATISTICS.value(myProperties)) {
|
||||
@@ -118,7 +121,7 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
|
||||
});
|
||||
}
|
||||
rightPanel.add(myStatisticsSplitter, BorderLayout.CENTER);
|
||||
splitter.setSecondComponent(rightPanel);
|
||||
mySplitter.setSecondComponent(rightPanel);
|
||||
testTreeView.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 0));
|
||||
setLeftComponent(testTreeView);
|
||||
}
|
||||
@@ -134,7 +137,7 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
|
||||
}
|
||||
|
||||
protected TestStatusLine createStatusLine() {
|
||||
return new TestStatusLine();
|
||||
return new TestStatusLine(myProperties);
|
||||
}
|
||||
|
||||
protected abstract JComponent createTestTreeView();
|
||||
@@ -154,7 +157,8 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
|
||||
return null;
|
||||
}
|
||||
|
||||
private static JComponent createOutputTab(JComponent console, AnAction[] consoleActions) {
|
||||
private JComponent createOutputTab(JComponent console,
|
||||
AnAction[] consoleActions) {
|
||||
JPanel outputTab = new JPanel(new BorderLayout());
|
||||
console.setFocusable(true);
|
||||
final Color editorBackground = EditorColorsManager.getInstance().getGlobalScheme().getDefaultBackground();
|
||||
@@ -162,6 +166,21 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
|
||||
new SideBorder(editorBackground, SideBorder.LEFT)));
|
||||
outputTab.add(console, BorderLayout.CENTER);
|
||||
final DefaultActionGroup actionGroup = new DefaultActionGroup(consoleActions);
|
||||
final ToggleBooleanProperty property = new ToggleBooleanProperty("Layout Vertically",
|
||||
"Layout console under the tests tree",
|
||||
null, myProperties,
|
||||
TestConsoleProperties.SPLIT_VERTICALLY) {
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
super.setSelected(e, state);
|
||||
myStatusLine.setPreferredSize(myProperties);
|
||||
mySplitter.setOrientation(state);
|
||||
}
|
||||
};
|
||||
final DefaultActionGroup settingsGroup = new DefaultActionGroup(property);
|
||||
settingsGroup.setPopup(true);
|
||||
settingsGroup.getTemplatePresentation().setIcon(AllIcons.General.SecondaryGroup);
|
||||
actionGroup.add(settingsGroup);
|
||||
final ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, actionGroup, false);
|
||||
outputTab.add(toolbar.getComponent(), BorderLayout.EAST);
|
||||
return outputTab;
|
||||
@@ -171,8 +190,8 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
protected static Splitter createSplitter(final String proportionProperty, final float defaultProportion) {
|
||||
final Splitter splitter = new OnePixelSplitter(false);
|
||||
protected static Splitter createSplitter(final String proportionProperty, final float defaultProportion, boolean splitVertically) {
|
||||
final Splitter splitter = new OnePixelSplitter(splitVertically);
|
||||
splitter.setHonorComponentsMinimumSize(true);
|
||||
final PropertiesComponent propertiesComponent = PropertiesComponent.getInstance();
|
||||
float proportion;
|
||||
|
||||
+15
-9
@@ -16,6 +16,7 @@
|
||||
package com.intellij.execution.testframework.ui;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.testframework.TestConsoleProperties;
|
||||
import com.intellij.openapi.progress.util.ColorProgressBar;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.JBProgressBar;
|
||||
@@ -36,18 +37,16 @@ public class TestStatusLine extends JPanel {
|
||||
|
||||
protected final JProgressBar myProgressBar = new JBProgressBar();
|
||||
protected final SimpleColoredComponent myState = new SimpleColoredComponent();
|
||||
private final JPanel myProgressPanel;
|
||||
|
||||
public TestStatusLine() {
|
||||
public TestStatusLine(TestConsoleProperties properties) {
|
||||
super(new BorderLayout());
|
||||
JPanel progressPanel = new JPanel(new GridBagLayout());
|
||||
add(progressPanel, BorderLayout.WEST);
|
||||
myProgressPanel = new JPanel(new GridBagLayout());
|
||||
add(myProgressPanel, BorderLayout.WEST);
|
||||
myProgressBar.setMaximum(100);
|
||||
final Dimension size = new JBDimension(450, -1);
|
||||
progressPanel.setMaximumSize(size);
|
||||
progressPanel.setMinimumSize(size);
|
||||
progressPanel.setPreferredSize(size);
|
||||
progressPanel.add(myProgressBar, new GridBagConstraints(0, 0, 0, 0, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
|
||||
new Insets(2, 8, 0, 8), 0, 0));
|
||||
setPreferredSize(properties);
|
||||
myProgressPanel.add(myProgressBar, new GridBagConstraints(0, 0, 0, 0, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
|
||||
new Insets(2, 8, 0, 8), 0, 0));
|
||||
setStatusColor(ColorProgressBar.GREEN);
|
||||
add(myState, BorderLayout.CENTER);
|
||||
myState.append(ExecutionBundle.message("junit.runing.info.starting.label"));
|
||||
@@ -123,6 +122,13 @@ public class TestStatusLine extends JPanel {
|
||||
myProgressBar.setValue(fraction);
|
||||
}
|
||||
|
||||
public void setPreferredSize(TestConsoleProperties properties) {
|
||||
final Dimension size = new JBDimension(TestConsoleProperties.SPLIT_VERTICALLY.value(properties) ? 150 : 450 , -1);
|
||||
myProgressPanel.setMaximumSize(size);
|
||||
myProgressPanel.setMinimumSize(size);
|
||||
myProgressPanel.setPreferredSize(size);
|
||||
}
|
||||
|
||||
public void setText(String progressStatus_text) {
|
||||
myState.clear();
|
||||
myState.append(progressStatus_text);
|
||||
|
||||
@@ -91,7 +91,7 @@ public class ConsolePanel extends TestResultsPanel {
|
||||
|
||||
@Override
|
||||
protected TestStatusLine createStatusLine() {
|
||||
myStatusLine = new JUnitStatusLine();
|
||||
myStatusLine = new JUnitStatusLine(myProperties);
|
||||
return myStatusLine;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.intellij.execution.junit2.ui.model.StateEvent;
|
||||
import com.intellij.execution.process.ProcessAdapter;
|
||||
import com.intellij.execution.process.ProcessEvent;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.testframework.TestConsoleProperties;
|
||||
import com.intellij.execution.testframework.ui.TestStatusLine;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.progress.util.ColorProgressBar;
|
||||
@@ -37,6 +38,10 @@ class JUnitStatusLine extends TestStatusLine {
|
||||
private final StateInfo myStateInfo = new StateInfo();
|
||||
private boolean myTestsBuilt = false;
|
||||
|
||||
JUnitStatusLine(TestConsoleProperties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
public void setModel(final JUnitRunningModel model) {
|
||||
myTestsBuilt = true;
|
||||
myProgressBar.setForeground(ColorProgressBar.GREEN);
|
||||
|
||||
Reference in New Issue
Block a user