Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael Istria2019-10-10 08:11:07 +0000
committerMickael Istria2019-10-14 08:21:08 +0000
commit8df6b9afc574d825dba07a5c9d1019c7cef88929 (patch)
tree70d74fd0f6d346794ba5fff1eb087608fc772e0c
parentf284207a2380d3208ce8a7505e8a9d4dca0af59a (diff)
downloadeclipse.platform.text-8df6b9afc574d825dba07a5c9d1019c7cef88929.tar.gz
eclipse.platform.text-8df6b9afc574d825dba07a5c9d1019c7cef88929.tar.xz
eclipse.platform.text-8df6b9afc574d825dba07a5c9d1019c7cef88929.zip
Bug 551570 - Compose IContextInformationValidator
Change-Id: If0d01ead002636c95cbb4fa9754b37c3da9a799c Signed-off-by: Mickael Istria <mistria@redhat.com>
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompositeContextInformationValidator.java35
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistant.java22
2 files changed, 51 insertions, 6 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompositeContextInformationValidator.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompositeContextInformationValidator.java
new file mode 100644
index 00000000000..1f2bd35cfd6
--- /dev/null
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompositeContextInformationValidator.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Red Hat Inc. and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.jface.text.contentassist;
+
+import java.util.Arrays;
+
+import org.eclipse.jface.text.ITextViewer;
+
+class CompositeContextInformationValidator implements IContextInformationValidator {
+
+ private final IContextInformationValidator[] children;
+
+ public CompositeContextInformationValidator(IContextInformationValidator[] validators) {
+ this.children= validators;
+ }
+
+ @Override
+ public void install(IContextInformation info, ITextViewer viewer, int offset) {
+ Arrays.stream(children).forEach(child -> child.install(info, viewer, offset));
+ }
+
+ @Override
+ public boolean isContextInformationValid(int offset) {
+ return Arrays.stream(children).anyMatch(child -> child.isContextInformationValid(offset));
+ }
+
+}
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistant.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistant.java
index 1d707db8496..04c7e632a69 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistant.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistant.java
@@ -2114,9 +2114,14 @@ public class ContentAssistant implements IContentAssistant, IContentAssistantExt
if (processors == null || processors.isEmpty()) {
return null;
}
- // pick first one, arbitrary
- IContentAssistProcessor p = processors.iterator().next();
- return p != null ? p.getContextInformationValidator() : null;
+ IContextInformationValidator[] validators= processors.stream()
+ .map(IContentAssistProcessor::getContextInformationValidator)
+ .filter(Objects::nonNull)
+ .toArray(IContextInformationValidator[]::new);
+ if (validators.length == 0) {
+ return null;
+ }
+ return new CompositeContextInformationValidator(validators);
}
/**
@@ -2135,9 +2140,14 @@ public class ContentAssistant implements IContentAssistant, IContentAssistantExt
if (processors == null || processors.isEmpty()) {
return null;
}
- // pick first one, arbitrary
- IContentAssistProcessor p = processors.iterator().next();
- return p != null ? p.getContextInformationValidator() : null;
+ IContextInformationValidator[] validators= processors.stream()
+ .map(IContentAssistProcessor::getContextInformationValidator)
+ .filter(Objects::nonNull)
+ .toArray(IContextInformationValidator[]::new);
+ if (validators.length == 0) {
+ return null;
+ }
+ return new CompositeContextInformationValidator(validators);
}
/**

Back to the top