diff options
author | Curtis D'Entremont | 2006-12-08 20:58:33 +0000 |
---|---|---|
committer | Curtis D'Entremont | 2006-12-08 20:58:33 +0000 |
commit | 6c8438c708f168fc010c0d51b2e406fea03f238e (patch) | |
tree | 1ab00b11a3158ec8c60475a3a9b0adadb16783f2 /org.eclipse.ui.intro | |
parent | 2e4821a10bd18fca34b18703c190df2a419383b0 (diff) | |
download | eclipse.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')
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() { + } +} |