@Override protected void beforeParentInit() { xpathExpressionArea.setSyntaxHighlighter(new XPathSyntaxHighlighter()); initGenerateXPathFromStackTrace(); initialiseVersionSelection(); expressionTitledPane.titleProperty().bind(xpathVersionUIProperty.map(v -> "XPath Expression (" + v + ")")); xpathResultListView.setCellFactory(v -> new XpathViolationListCell()); exportXpathToRuleButton.setOnAction(e -> showExportXPathToRuleWizard()); EventStreams.valuesOf(xpathResultListView.getSelectionModel().selectedItemProperty()) .conditionOn(xpathResultListView.focusedProperty()) .filter(Objects::nonNull) .map(TextAwareNodeWrapper::getNode) .subscribe(parent::onNodeItemSelected); xpathExpressionArea.richChanges() .filter(t -> !t.isIdentity()) .successionEnds(XPATH_REFRESH_DELAY) // Reevaluate XPath anytime the expression or the XPath version changes .or(xpathVersionProperty().changes()) .subscribe(tick -> parent.refreshXPathResults()); }
contentView.focusedProperty().addListener(new ChangeListener<Boolean>() {
/** * {@inheritDoc} */ @Override public void setupValueChangedListeners() { super.setupValueChangedListeners(); field.itemsProperty().addListener((observable, oldValue, newValue) -> listView.setItems(field.getItems())); field.selectionProperty().addListener((observable, oldValue, newValue) -> { if (preventUpdate) { return; } preventUpdate = true; for (int i = 0; i < field.getItems().size(); i++) { if (field.getSelection().contains(field.getItems().get(i))) { listView.getSelectionModel().select(i); } else { listView.getSelectionModel().clearSelection(i); } } preventUpdate = false; }); field.errorMessagesProperty().addListener((observable, oldValue, newValue) -> toggleTooltip(listView)); field.tooltipProperty().addListener((observable, oldValue, newValue) -> toggleTooltip(listView)); listView.focusedProperty().addListener((observable, oldValue, newValue) -> toggleTooltip(listView)); }