package jetbrains.mps.baseLanguage.unitTest.execution.tool; /*Generated by MPS */ import com.intellij.ide.OccurenceNavigator; import javax.swing.event.TreeSelectionListener; import jetbrains.mps.ide.ui.tree.MPSTreeNode; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.event.TreeSelectionEvent; import com.intellij.pom.Navigatable; public abstract class BaseTestOccurenceNavigator implements OccurenceNavigator, TreeSelectionListener { protected final TestTree myTestTree; protected int mySelected = -1; protected int myCount; public BaseTestOccurenceNavigator(TestTree tree) { myTestTree = tree; myTestTree.addTreeSelectionListener(this); } public abstract boolean hasAvailableOccurence(boolean next); public abstract boolean accept(MPSTreeNode node); public void setNewSelectedIndex(boolean next) { boolean founded = false; DefaultMutableTreeNode node = myTestTree.getCurrentNode(); do { MPSTreeNode temp = (MPSTreeNode) ((next ? node.getNextNode() : node.getPreviousNode())); mySelected = mySelected + ((next ? 1 : -1)); if (accept(temp)) { founded = true; } node = temp; } while (!(founded)); } @Override public boolean hasNextOccurence() { return hasAvailableOccurence(true); } @Override public boolean hasPreviousOccurence() { return hasAvailableOccurence(false); } @Override public OccurenceNavigator.OccurenceInfo goNextOccurence() { setNewSelectedIndex(true); BaseTestOccurenceNavigator.TestNavigator navigator = new BaseTestOccurenceNavigator.TestNavigator(); navigator.navigate(true); return new OccurenceNavigator.OccurenceInfo(navigator, mySelected, myCount); } @Override public OccurenceNavigator.OccurenceInfo goPreviousOccurence() { setNewSelectedIndex(false); BaseTestOccurenceNavigator.TestNavigator navigator = new BaseTestOccurenceNavigator.TestNavigator(); navigator.navigate(true); return new OccurenceNavigator.OccurenceInfo(navigator, mySelected, myCount); } @Override public String getNextOccurenceActionName() { return "Next test"; } @Override public String getPreviousOccurenceActionName() { return "Previous test"; } @Override public void valueChanged(TreeSelectionEvent p0) { if (myTestTree == null) { return; } int[] result = myTestTree.getSelectionRows(); if (result != null && result.length > 0) { mySelected = result[0]; } myCount = myTestTree.getRowCount(); } public class TestNavigator implements Navigatable { public TestNavigator() { } @Override public void navigate(boolean p0) { myTestTree.setSelectionRows(new int[]{mySelected}); } @Override public boolean canNavigate() { return true; } @Override public boolean canNavigateToSource() { return true; } } }