package jetbrains.mps.baseLanguage.unitTest.execution.tool;
/*Generated by MPS */
import javax.swing.JPanel;
import java.awt.BorderLayout;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.actionSystem.ActionToolbar;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.ActionPlaces;
import javax.swing.SwingConstants;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.AnAction;
import jetbrains.mps.ide.findusages.view.icons.Icons;
import com.intellij.openapi.actionSystem.CustomShortcutSet;
import com.intellij.openapi.keymap.KeymapManager;
import com.intellij.openapi.actionSystem.IdeActions;
import jetbrains.mps.ide.ui.tree.MPSTreeNode;
public class TestToolbarPanel extends JPanel {
private final TestTree myTree;
private final FailedTestOccurrenceNavigator myNavigator;
public TestToolbarPanel(TestTree tree, FailedTestOccurrenceNavigator navigator) {
super(new BorderLayout());
myTree = tree;
myNavigator = navigator;
setLayout(new BorderLayout());
init();
}
private void init() {
final DefaultActionGroup actionGroup = new DefaultActionGroup();
actionGroup.addAll(createHidePassedAction(), cteateTrackRunningAction());
actionGroup.addSeparator();
actionGroup.addAll(createCollapseAllAction(), createExpandAllAction());
actionGroup.addSeparator();
actionGroup.addAll(createNextOccurrenceAction(), createPreviousOccurrenceAction());
actionGroup.addSeparator();
actionGroup.addAction(createSelectFirstFailedAction());
ActionToolbar toolbarActions = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, actionGroup, true);
toolbarActions.setOrientation(SwingConstants.HORIZONTAL);
add(toolbarActions.getComponent(), BorderLayout.WEST);
}
private ToggleAction createHidePassedAction() {
return new ToggleAction("Hide Passed", "Hide passed tests", AllIcons.RunConfigurations.HidePassed) {
{
setSelected(null, UnitTestOptions.isHidePassed());
}
@Override
public void setSelected(AnActionEvent event, boolean value) {
UnitTestOptions.setHidePassed(value);
myTree.hidePassed(value);
}
@Override
public boolean isSelected(AnActionEvent p0) {
return UnitTestOptions.isHidePassed();
}
};
}
private ToggleAction cteateTrackRunningAction() {
return new ToggleAction("Track Running Test", "Select currently running test in tree", AllIcons.RunConfigurations.TrackTests) {
{
setSelected(null, UnitTestOptions.isTrackRunning());
}
@Override
public void setSelected(AnActionEvent event, boolean trackRunning) {
UnitTestOptions.setTrackRunning(trackRunning);
}
@Override
public boolean isSelected(AnActionEvent event) {
return UnitTestOptions.isTrackRunning();
}
};
}
private AnAction createCollapseAllAction() {
return new AnAction("Collapse All", "Collapse all test suites", Icons.COLLAPSE_ICON) {
{
registerCustomShortcutSet(new CustomShortcutSet(KeymapManager.getInstance().getActiveKeymap().getShortcuts(IdeActions.ACTION_COLLAPSE_ALL)), myTree);
}
@Override
public void actionPerformed(AnActionEvent p0) {
MPSTreeNode root = myTree.getRootNode();
MPSTreeNode child = (MPSTreeNode) root.getFirstChild();
while (child != null) {
myTree.collapseAll(child);
child = (MPSTreeNode) child.getNextSibling();
}
}
};
}
private AnAction createExpandAllAction() {
return new AnAction("Expand All", "Expande all test suites", Icons.EXPAND_ICON) {
{
registerCustomShortcutSet(new CustomShortcutSet(KeymapManager.getInstance().getActiveKeymap().getShortcuts(IdeActions.ACTION_EXPAND_ALL)), myTree);
}
@Override
public void actionPerformed(AnActionEvent p0) {
myTree.expandAll();
}
};
}
private AnAction createNextOccurrenceAction() {
return new AnAction("Next Failed Test", "Navigate to the next occurrence", AllIcons.Actions.NextOccurence) {
{
registerCustomShortcutSet(new CustomShortcutSet(KeymapManager.getInstance().getActiveKeymap().getShortcuts(IdeActions.ACTION_NEXT_OCCURENCE)), myTree);
}
@Override
public void actionPerformed(AnActionEvent p0) {
if (myNavigator.hasNextOccurence()) {
myNavigator.goNextOccurence();
}
}
};
}
private AnAction createPreviousOccurrenceAction() {
return new AnAction("Previous Failed Test", "Navigate to the previous occurrence", AllIcons.Actions.PreviousOccurence) {
{
registerCustomShortcutSet(new CustomShortcutSet(KeymapManager.getInstance().getActiveKeymap().getShortcuts(IdeActions.ACTION_PREVIOUS_OCCURENCE)), myTree);
}
@Override
public void actionPerformed(AnActionEvent p0) {
if (myNavigator.hasPreviousOccurence()) {
myNavigator.goPreviousOccurence();
}
}
};
}
private ToggleAction createSelectFirstFailedAction() {
return new ToggleAction("Select First Failed Test When Finished", "", AllIcons.RunConfigurations.SelectFirstDefect) {
{
setSelected(null, UnitTestOptions.isSelectFirstFailded());
}
@Override
public void setSelected(AnActionEvent event, boolean setectFirstFailed) {
UnitTestOptions.setSelectFirstFailded(setectFirstFailed);
}
@Override
public boolean isSelected(AnActionEvent event) {
return UnitTestOptions.isSelectFirstFailded();
}
};
}
private AnAction createRerunFailedTestAction() {
return new AnAction("Rerun Failed Tests", "Rerun only tests that failed/crached after last run", AllIcons.RunConfigurations.RerunFailedTests) {
@Override
public void actionPerformed(AnActionEvent p0) {
if (myTree.hasFailedTests()) {
myTree.buildFailedTestTree();
}
}
};
}
}