我如何以编程方式知道视图处于快速视图状态?
How do I know that a view is on fast-view state, programmatically?
我们开发了一个基于 Eclipse 3.8 构建的 Eclipse RCP 应用程序。我们试图在 Eclipse 4.8 上构建它,但由于删除了一些 类.
,我们的一些代码已损坏
在 Eclipse 3.8 上,当此行 returns null
:
时,我们知道视图处于快速视图状态
( (PartSite)viewPart.getSite() ).getPane().getContainer();
但是 PartSite
和方法 getContainer()
在 Eclipse 4.8 上不再可用。
我们如何检查视图是否处于快速视图状态?
Eclipse 4 中没有快速视图,只有最小化的部分。
您将需要使用一些 e4 API 来确定部件或其容器是否已最小化。类似于:
EPartService partService = getSite().getService(EPartService.class);
MUIElement part = partService.findPart(getSite().getId());
MElementContainer<?> parent = part.getParent();
if (parent == null) {
part = part.getCurSharedRef();
parent = part.getParent();
}
boolean minimized = isMinimized(part) || isMinimized(parent);
private boolean isMinimized(MUIElement element) {
List<String> tags = element.getTags();
return tags.contains(IPresentationEngine.MINIMIZED) && !tags.contains(IPresentationEngine.ACTIVE);
}
您可以像这样跟踪最小化标签的变化:
IEventBroker broker = getSite().getService(IEventBroker.class);
broker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS, event -> {
Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
Object newValue = event.getProperty(UIEvents.EventTags.NEW_VALUE);
Object oldValue = event.getProperty(UIEvents.EventTags.OLD_VALUE);
if (IPresentationEngine.MINIMIZED.equals(newValue))
System.out.println("min added " + element);
if (IPresentationEngine.MINIMIZED.equals(oldValue))
System.out.println("min removed " + element);
});
我们开发了一个基于 Eclipse 3.8 构建的 Eclipse RCP 应用程序。我们试图在 Eclipse 4.8 上构建它,但由于删除了一些 类.
,我们的一些代码已损坏在 Eclipse 3.8 上,当此行 returns null
:
( (PartSite)viewPart.getSite() ).getPane().getContainer();
但是 PartSite
和方法 getContainer()
在 Eclipse 4.8 上不再可用。
我们如何检查视图是否处于快速视图状态?
Eclipse 4 中没有快速视图,只有最小化的部分。
您将需要使用一些 e4 API 来确定部件或其容器是否已最小化。类似于:
EPartService partService = getSite().getService(EPartService.class);
MUIElement part = partService.findPart(getSite().getId());
MElementContainer<?> parent = part.getParent();
if (parent == null) {
part = part.getCurSharedRef();
parent = part.getParent();
}
boolean minimized = isMinimized(part) || isMinimized(parent);
private boolean isMinimized(MUIElement element) {
List<String> tags = element.getTags();
return tags.contains(IPresentationEngine.MINIMIZED) && !tags.contains(IPresentationEngine.ACTIVE);
}
您可以像这样跟踪最小化标签的变化:
IEventBroker broker = getSite().getService(IEventBroker.class);
broker.subscribe(UIEvents.ApplicationElement.TOPIC_TAGS, event -> {
Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
Object newValue = event.getProperty(UIEvents.EventTags.NEW_VALUE);
Object oldValue = event.getProperty(UIEvents.EventTags.OLD_VALUE);
if (IPresentationEngine.MINIMIZED.equals(newValue))
System.out.println("min added " + element);
if (IPresentationEngine.MINIMIZED.equals(oldValue))
System.out.println("min removed " + element);
});