对于我的 Eclipse rcp 应用程序,我想使用活动来显示和隐藏一些视图。我阅读了有关活动的 Eclipse 文档,并尝试根据文档中的“使用基于表达式的活动”片段获取一个工作示例。
在第一步中,我创建了一个新视图并在我的透视类中为其添加了一个占位符:
layout.addPlaceholder(View1.ID, IPageLayout.RIGHT, 0.5f, layout.getEditorArea());
然后我使用“启用时”表达式和绑定添加了我的活动:
<extension point="org.eclipse.ui.activities">
<activity id="org.project.activities.activity1" name="myActivity">
<enabledWhen>
<with variable="org.project.activities.sessionState">
<equals value="loggedIn"></equals>
</with>
</enabledWhen>
</activity>
</extension>
<activityPatternBinding
activityId="org.project.activities.activity1"
pattern="org.project.activities/org.project.activities.View1">
</activityPatternBinding>
在最后一步中,我添加了我的源提供者:
public class ActivitiySourceProvider extends AbstractSourceProvider {
public static final String SESSION_STATE = "org.project.activities.sessionState";
private static final String LOGGED_OUT = "loggedOut";
private static final String LOGGED_IN = "loggedIn";
private static final String[] SOURCE_NAMES = new String[] { SESSION_STATE };
private boolean loggedIn = false;
@Override
public Map<String, String> getCurrentState() {
Map<String, String> map = new HashMap<String, String>(1);
String value = loggedIn ? LOGGED_IN : LOGGED_OUT;
map.put(SESSION_STATE, value);
return map;
}
@Override
public String[] getProvidedSourceNames() {
return SOURCE_NAMES;
}
public void setLoggedIn() {
loggedIn = !loggedIn;
String value = loggedIn ? LOGGED_IN : LOGGED_OUT;
fireSourceChanged(ISources.WORKBENCH, SESSION_STATE, value);
}
}
当我启动测试应用程序时,我的视图“ View1
”是隐藏的,当我切换我的变量时,视图仍然是隐藏的。为了切换我的变量,我使用了一个句柄,我没有收到任何异常。我还尝试在应用程序启动时将我的变量显式设置为“loggedOut”,但我也没有工作。
我是否遗漏了文档中的某些内容?