Avoid some unnecessary computations
They're possibly expensive, eg tree traversal
This commit is contained in:
@ -59,7 +59,7 @@ public class NodeInfoPanelController implements Initializable {
|
||||
@FXML
|
||||
private TreeView<Object> scopeHierarchyTreeView;
|
||||
private MetricEvaluator metricEvaluator = new MetricEvaluator();
|
||||
|
||||
private Node selectedNode;
|
||||
|
||||
public NodeInfoPanelController(MainDesignerController mainController) {
|
||||
parent = mainController;
|
||||
@ -84,9 +84,12 @@ public class NodeInfoPanelController implements Initializable {
|
||||
* @param node Node to inspect
|
||||
*/
|
||||
public void displayInfo(Node node) {
|
||||
|
||||
Objects.requireNonNull(node, "Node cannot be null");
|
||||
|
||||
if (node.equals(selectedNode)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ObservableList<String> atts = getAttributes(node);
|
||||
xpathAttributesListView.setItems(atts);
|
||||
|
||||
|
@ -58,7 +58,7 @@ public class SourceEditorController implements Initializable, SettingsOwner {
|
||||
|
||||
private ASTManager astManager;
|
||||
private TreeViewWrapper<Node> treeViewWrapper;
|
||||
|
||||
private ASTTreeItem selectedTreeItem;
|
||||
|
||||
public SourceEditorController(DesignerRoot owner, MainDesignerController mainController) {
|
||||
parent = mainController;
|
||||
@ -165,12 +165,17 @@ public class SourceEditorController implements Initializable, SettingsOwner {
|
||||
highlightNodes(nodes, Collections.singleton("secondary-highlight"));
|
||||
}
|
||||
|
||||
|
||||
public void focusNodeInTreeView(Node node) {
|
||||
ASTTreeItem found = ((ASTTreeItem) astTreeView.getRoot()).findItem(node);
|
||||
if (found != null) {
|
||||
SelectionModel<TreeItem<Node>> selectionModel = astTreeView.getSelectionModel();
|
||||
selectionModel.select(found);
|
||||
SelectionModel<TreeItem<Node>> selectionModel = astTreeView.getSelectionModel();
|
||||
|
||||
// node is different from the old one
|
||||
if (selectedTreeItem == null && node != null
|
||||
|| selectedTreeItem != null && !Objects.equals(node, selectedTreeItem.getValue())) {
|
||||
ASTTreeItem found = ((ASTTreeItem) astTreeView.getRoot()).findItem(node);
|
||||
if (found != null) {
|
||||
selectionModel.select(found);
|
||||
}
|
||||
|
||||
astTreeView.getFocusModel().focus(selectionModel.getSelectedIndex());
|
||||
if (!treeViewWrapper.isIndexVisible(selectionModel.getSelectedIndex())) {
|
||||
astTreeView.scrollTo(selectionModel.getSelectedIndex());
|
||||
@ -178,7 +183,6 @@ public class SourceEditorController implements Initializable, SettingsOwner {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void invalidateAST(boolean error) {
|
||||
astTitleLabel.setText("Abstract syntax tree (" + (error ? "error" : "outdated") + ")");
|
||||
}
|
||||
|
Reference in New Issue
Block a user