diff --git a/pmd-ui/pom.xml b/pmd-ui/pom.xml
index a6cef6bc10..5bbdebbbe2 100644
--- a/pmd-ui/pom.xml
+++ b/pmd-ui/pom.xml
@@ -16,7 +16,7 @@
1.${java.version}
1.${java.version}
- ${project.build.directory}/classes-java8
+ ${project.build.outputDirectory}/META-INF/versions/9
11
@@ -65,7 +65,7 @@
-
+
@@ -73,7 +73,7 @@
maven-dependency-plugin
- Unpack java 8 specific deps
+ layout-java-8-specific-code
generate-sources
unpack
@@ -87,14 +87,14 @@
- Unpack java 9 specific deps
+ layout-java-9-specific-code
generate-resources
unpack
org.controlsfx:controlsfx:9.0.0
- ${project.build.outputDirectory}/META-INF/versions/9
+ ${build.mr.java9.output}
**/*
diff --git a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/NodeInfoPanelController.java b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/NodeInfoPanelController.java
index 56fc4c5e41..c11855687d 100644
--- a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/NodeInfoPanelController.java
+++ b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/NodeInfoPanelController.java
@@ -4,6 +4,8 @@
package net.sourceforge.pmd.util.fxdesigner;
+import static net.sourceforge.pmd.util.fxdesigner.util.DesignerIteratorUtil.parentIterator;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
@@ -28,7 +30,6 @@ import net.sourceforge.pmd.lang.symboltable.Scope;
import net.sourceforge.pmd.lang.symboltable.ScopedNode;
import net.sourceforge.pmd.util.fxdesigner.model.MetricResult;
import net.sourceforge.pmd.util.fxdesigner.util.AbstractController;
-import net.sourceforge.pmd.util.fxdesigner.util.DesignerIteratorUtil;
import net.sourceforge.pmd.util.fxdesigner.util.beans.SettingsPersistenceUtil.PersistentProperty;
import net.sourceforge.pmd.util.fxdesigner.util.controls.ScopeHierarchyTreeCell;
import net.sourceforge.pmd.util.fxdesigner.util.controls.ScopeHierarchyTreeItem;
@@ -210,7 +211,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
// 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.
- int maxDepth = IteratorUtil.count(DesignerIteratorUtil.parentIterator(previousSelection, true));
+ int maxDepth = IteratorUtil.count(parentIterator(previousSelection, true));
rootScope.tryFindNode(previousSelection.getValue(), maxDepth)
.ifPresent(scopeHierarchyTreeView.getSelectionModel()::select);
}
diff --git a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/SourceEditorController.java b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/SourceEditorController.java
index 395b509168..7b97fc7a39 100644
--- a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/SourceEditorController.java
+++ b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/SourceEditorController.java
@@ -40,7 +40,7 @@ import net.sourceforge.pmd.util.fxdesigner.util.codearea.AvailableSyntaxHighligh
import net.sourceforge.pmd.util.fxdesigner.util.codearea.HighlightLayerCodeArea;
import net.sourceforge.pmd.util.fxdesigner.util.codearea.HighlightLayerCodeArea.LayerId;
import net.sourceforge.pmd.util.fxdesigner.util.controls.ASTTreeItem;
-import net.sourceforge.pmd.util.fxdesigner.util.controls.ASTTreeView;
+import net.sourceforge.pmd.util.fxdesigner.util.controls.AstTreeView;
import net.sourceforge.pmd.util.fxdesigner.util.controls.NodeParentageCrumbBar;
import net.sourceforge.pmd.util.fxdesigner.util.controls.ToolbarTitledPane;
@@ -69,7 +69,7 @@ public class SourceEditorController extends AbstractController {
@FXML
private MenuButton languageSelectionMenuButton;
@FXML
- private ASTTreeView astTreeView;
+ private AstTreeView astTreeView;
@FXML
private HighlightLayerCodeArea codeEditorArea;
@FXML
@@ -271,7 +271,7 @@ public class SourceEditorController extends AbstractController {
codeEditorArea.styleNodes(node == null ? emptyList() : singleton(node), StyleLayerIds.FOCUS, true);
if (node != null) {
- scrollEditorToNode(node);
+ Platform.runLater(() -> scrollEditorToNode(node));
}
currentFocusNode.setValue(node);
diff --git a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/codearea/HighlightLayerCodeArea.java b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/codearea/HighlightLayerCodeArea.java
index d538f61151..2d0d635daa 100644
--- a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/codearea/HighlightLayerCodeArea.java
+++ b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/codearea/HighlightLayerCodeArea.java
@@ -7,7 +7,6 @@ package net.sourceforge.pmd.util.fxdesigner.util.codearea;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
diff --git a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/ASTTreeView.java b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/AstTreeView.java
similarity index 98%
rename from pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/ASTTreeView.java
rename to pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/AstTreeView.java
index 02fbd58ddd..bf1a3668f6 100644
--- a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/ASTTreeView.java
+++ b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/AstTreeView.java
@@ -27,7 +27,7 @@ import javafx.scene.control.TreeView;
* @author Clément Fournier
* @since 7.0.0
*/
-public class ASTTreeView extends TreeView {
+public class AstTreeView extends TreeView {
private final Var> onNodeClickedHandler = Var.newSimpleVar(n -> {});
@@ -37,7 +37,7 @@ public class ASTTreeView extends TreeView {
private ASTTreeItem selectedTreeItem;
- public ASTTreeView() {
+ public AstTreeView() {
onNodeClickedHandler.values()
.subscribe(handler -> {
diff --git a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/NodeParentageCrumbBar.java b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/NodeParentageCrumbBar.java
index fe2db8a007..ad39de017c 100644
--- a/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/NodeParentageCrumbBar.java
+++ b/pmd-ui/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/controls/NodeParentageCrumbBar.java
@@ -37,6 +37,9 @@ import javafx.util.Callback;
*/
public class NodeParentageCrumbBar extends BreadCrumbBar {
+ private static final int DEFAULT_PX_BY_CHAR = 5;
+ private static final int DEFAULT_CONSTANT_PADDING = 19;
+
/** Special item used to truncate paths when they're too long. */
private final TreeItem ellipsisCrumb = new TreeItem<>(null);
/** number of nodes currently behind the ellipsis */
@@ -192,14 +195,14 @@ public class NodeParentageCrumbBar extends BreadCrumbBar {
private Function getWidthEstimator(int totalNumDisplayedChars, double totalChildrenWidth, int totalNumCrumbs, double constantPadding) {
double safeConstantPadding = Double.isNaN(constantPadding)
- ? 19 // that's the value on my machine
+ ? DEFAULT_CONSTANT_PADDING // that's the value on my machine
: constantPadding;
double thisPxByChar = totalNumDisplayedChars == 0
- ? 5.0 // we have no data, too bad
+ ? DEFAULT_PX_BY_CHAR // we have no data, too bad
: (totalChildrenWidth - safeConstantPadding * totalNumCrumbs) / totalNumDisplayedChars;
- return node -> node.getXPathNodeName().length() * thisPxByChar + safeConstantPadding;
+ return node -> node.getXPathNodeName().length() * (thisPxByChar + 1 /*scale it up a bit*/) + safeConstantPadding;
}
}
diff --git a/pmd-ui/src/main/resources/net/sourceforge/pmd/util/fxdesigner/fxml/editor.fxml b/pmd-ui/src/main/resources/net/sourceforge/pmd/util/fxdesigner/fxml/editor.fxml
index 7904959288..2e559f1d4b 100644
--- a/pmd-ui/src/main/resources/net/sourceforge/pmd/util/fxdesigner/fxml/editor.fxml
+++ b/pmd-ui/src/main/resources/net/sourceforge/pmd/util/fxdesigner/fxml/editor.fxml
@@ -5,7 +5,7 @@
-
+
@@ -71,7 +71,7 @@
AnchorPane.rightAnchor="0.0"
AnchorPane.topAnchor="0.0">
-
+