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(); } } }; } }