Fix merge

This commit is contained in:
Clément Fournier 2019-01-27 16:59:22 +01:00
parent a8eae0bd9b
commit 5c2b8e0afe
6 changed files with 53 additions and 42 deletions

View File

@ -8,6 +8,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.ListIterator;
/** /**
@ -46,4 +47,46 @@ public final class IteratorUtil {
}; };
} }
/** Counts the items in this iterator, exhausting it. */
public static int count(Iterator<?> it) {
int count = 0;
while (it.hasNext()) {
it.next();
count++;
}
return count;
}
public static <T> Iterable<T> asReversed(final List<T> lst) {
return new Iterable<T>() {
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
ListIterator<T> li = lst.listIterator(lst.size());
@Override
public boolean hasNext() {
return li.hasPrevious();
}
@Override
public T next() {
return li.previous();
}
@Override
public void remove() {
li.remove();
}
};
}
};
}
} }

View File

@ -18,6 +18,7 @@ import java.util.stream.Collectors;
import org.reactfx.EventStreams; import org.reactfx.EventStreams;
import org.reactfx.value.Var; import org.reactfx.value.Var;
import net.sourceforge.pmd.internal.util.IteratorUtil;
import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.ast.xpath.Attribute; import net.sourceforge.pmd.lang.ast.xpath.Attribute;
import net.sourceforge.pmd.lang.metrics.LanguageMetricsProvider; import net.sourceforge.pmd.lang.metrics.LanguageMetricsProvider;
@ -209,7 +210,7 @@ public class NodeInfoPanelController extends AbstractController {
// Otherwise, when you select a node in the scope tree, since focus of the app is shifted to that // Otherwise, when you select a node in the scope tree, since focus of the app is shifted to that
// node, the scope hierarchy is reset and you lose the selection - even though obviously the node // node, the scope hierarchy is reset and you lose the selection - even though obviously the node
// you selected is in its own scope hierarchy so it looks buggy. // you selected is in its own scope hierarchy so it looks buggy.
int maxDepth = DesignerIteratorUtil.count(DesignerIteratorUtil.parentIterator(previousSelection, true)); int maxDepth = IteratorUtil.count(DesignerIteratorUtil.parentIterator(previousSelection, true));
rootScope.tryFindNode(previousSelection.getValue(), maxDepth) rootScope.tryFindNode(previousSelection.getValue(), maxDepth)
.ifPresent(scopeHierarchyTreeView.getSelectionModel()::select); .ifPresent(scopeHierarchyTreeView.getSelectionModel()::select);
} }

View File

@ -71,8 +71,6 @@ public class SourceEditorController extends AbstractController {
@FXML @FXML
private ASTTreeView astTreeView; private ASTTreeView astTreeView;
@FXML @FXML
private ToolbarTitledPane astViewTitledPane;
@FXML
private HighlightLayerCodeArea<StyleLayerIds> codeEditorArea; private HighlightLayerCodeArea<StyleLayerIds> codeEditorArea;
@FXML @FXML
private NodeParentageCrumbBar focusNodeParentageCrumbBar; private NodeParentageCrumbBar focusNodeParentageCrumbBar;

View File

@ -7,8 +7,6 @@ package net.sourceforge.pmd.util.fxdesigner.util;
import static net.sourceforge.pmd.internal.util.IteratorUtil.toIterable; import static net.sourceforge.pmd.internal.util.IteratorUtil.toIterable;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Predicate; import java.util.function.Predicate;
@ -25,42 +23,12 @@ public final class DesignerIteratorUtil {
// TODO move that into PMD core with Java 8 // TODO move that into PMD core with Java 8
private DesignerIteratorUtil() { private DesignerIteratorUtil() {
} }
/** Counts the items in this iterator, exhausting it. */
public static int count(Iterator<?> it) {
int count = 0;
while (it.hasNext()) {
it.next();
count++;
}
return count;
}
public static <T> Iterable<T> asReversed(List<T> lst) {
return () -> new Iterator<T>() {
ListIterator<T> li = lst.listIterator(lst.size());
@Override
public boolean hasNext() {
return li.hasPrevious();
}
@Override
public T next() {
return li.previous();
}
};
}
public static boolean isParent(Node parent, Node child) { public static boolean isParent(Node parent, Node child) {
return any(parentIterator(child, false), p -> parent == p); return any(parentIterator(child, false), p -> parent == p);
} }

View File

@ -4,8 +4,8 @@
package net.sourceforge.pmd.util.fxdesigner.util.controls; package net.sourceforge.pmd.util.fxdesigner.util.controls;
import static net.sourceforge.pmd.util.fxdesigner.util.IteratorUtil.parentIterator; import static net.sourceforge.pmd.internal.util.IteratorUtil.toIterable;
import static net.sourceforge.pmd.util.fxdesigner.util.IteratorUtil.toIterable; import static net.sourceforge.pmd.util.fxdesigner.util.DesignerIteratorUtil.parentIterator;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
@ -111,7 +111,7 @@ public class ASTTreeView extends TreeView<Node> {
* Returns true if the item at the given index * Returns true if the item at the given index
* is visible in the TreeView. * is visible in the TreeView.
*/ */
public boolean isIndexVisible(int index) { private boolean isIndexVisible(int index) {
return myWrapper.isIndexVisible(index); return myWrapper.isIndexVisible(index);
} }

View File

@ -4,9 +4,10 @@
package net.sourceforge.pmd.util.fxdesigner.util.controls; package net.sourceforge.pmd.util.fxdesigner.util.controls;
import static net.sourceforge.pmd.util.fxdesigner.util.IteratorUtil.asReversed;
import static net.sourceforge.pmd.util.fxdesigner.util.IteratorUtil.count; import static net.sourceforge.pmd.internal.util.IteratorUtil.asReversed;
import static net.sourceforge.pmd.util.fxdesigner.util.IteratorUtil.parentIterator; import static net.sourceforge.pmd.internal.util.IteratorUtil.count;
import static net.sourceforge.pmd.util.fxdesigner.util.DesignerIteratorUtil.parentIterator;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;