Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCurtis D'Entremont2006-12-08 20:58:33 +0000
committerCurtis D'Entremont2006-12-08 20:58:33 +0000
commit6c8438c708f168fc010c0d51b2e406fea03f238e (patch)
tree1ab00b11a3158ec8c60475a3a9b0adadb16783f2 /org.eclipse.ui.intro
parent2e4821a10bd18fca34b18703c190df2a419383b0 (diff)
downloadeclipse.platform.ua-6c8438c708f168fc010c0d51b2e406fea03f238e.tar.gz
eclipse.platform.ua-6c8438c708f168fc010c0d51b2e406fea03f238e.tar.xz
eclipse.platform.ua-6c8438c708f168fc010c0d51b2e406fea03f238e.zip
142526 [Help] Allow if/else conditionals (filters) for dynamic contentv20061208
Diffstat (limited to 'org.eclipse.ui.intro')
-rw-r--r--org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroContainer.java3
-rw-r--r--org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroPage.java3
-rw-r--r--org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/util/IntroEvaluationContext.java53
3 files changed, 57 insertions, 2 deletions
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroContainer.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroContainer.java
index 3a52e1742..c134e6887 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroContainer.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroContainer.java
@@ -17,6 +17,7 @@ import java.util.Vector;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.help.UAContentFilter;
import org.eclipse.ui.internal.intro.impl.model.loader.ExtensionPointManager;
+import org.eclipse.ui.internal.intro.impl.util.IntroEvaluationContext;
import org.eclipse.ui.internal.intro.impl.util.Log;
import org.eclipse.ui.internal.intro.impl.util.StringUtil;
import org.osgi.framework.Bundle;
@@ -366,7 +367,7 @@ public abstract class AbstractIntroContainer extends AbstractBaseIntroElement {
Iterator iter = unfiltered.iterator();
while (iter.hasNext()) {
Object element = iter.next();
- if (!UAContentFilter.isFiltered(element)) {
+ if (!UAContentFilter.isFiltered(element, IntroEvaluationContext.getContext())) {
filtered.add(element);
}
}
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroPage.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroPage.java
index da724b6e4..2c0c8ec0d 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroPage.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/model/AbstractIntroPage.java
@@ -26,6 +26,7 @@ import org.eclipse.ui.internal.intro.impl.model.loader.IntroContentParser;
import org.eclipse.ui.internal.intro.impl.model.loader.ModelLoaderUtil;
import org.eclipse.ui.internal.intro.impl.model.util.BundleUtil;
import org.eclipse.ui.internal.intro.impl.model.util.ModelUtil;
+import org.eclipse.ui.internal.intro.impl.util.IntroEvaluationContext;
import org.eclipse.ui.internal.intro.impl.util.Log;
import org.eclipse.ui.internal.intro.impl.util.StringUtil;
import org.osgi.framework.Bundle;
@@ -652,7 +653,7 @@ public abstract class AbstractIntroPage extends AbstractIntroContainer {
// filter the content
if (domProcessor == null) {
- domProcessor = new NodeProcessor(new NodeHandler[] { new FilterHandler() });
+ domProcessor = new NodeProcessor(new NodeHandler[] { new FilterHandler(IntroEvaluationContext.getContext()) });
}
DocumentNode node = new DocumentNode(dom);
domProcessor.process(node, null);
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/util/IntroEvaluationContext.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/util/IntroEvaluationContext.java
new file mode 100644
index 000000000..ad7b80548
--- /dev/null
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/util/IntroEvaluationContext.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.ui.internal.intro.impl.util;
+
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.ui.PlatformUI;
+
+/*
+ * Supplies en evaluation context for filtering intro documents. This is used for
+ * resolving variables in enablement expressions.
+ */
+public final class IntroEvaluationContext {
+
+ private static final String VARIABLE_PLATFORM = "platform"; //$NON-NLS-1$
+ private static final String VARIABLE_WORKBENCH = "workbench"; //$NON-NLS-1$
+
+ private static EvaluationContext context;
+
+ /*
+ * Returns the evaluation context to use in intro documents.
+ */
+ public static EvaluationContext getContext() {
+ if (context == null) {
+ context = new EvaluationContext(null, Platform.class) {
+ public Object getVariable(String name) {
+ if (VARIABLE_PLATFORM.equals(name)) {
+ return Platform.class;
+ }
+ else if (VARIABLE_WORKBENCH.equals(name)) {
+ return PlatformUI.getWorkbench();
+ }
+ return null;
+ }
+ };
+ }
+ return context;
+ }
+
+ /*
+ * Not meant to be instantiated.
+ */
+ private IntroEvaluationContext() {
+ }
+}

Back to the top