首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以编程方式知道视图处于快速视图状态?

如何以编程方式知道视图处于快速视图状态?
EN

Stack Overflow用户
提问于 2019-08-08 02:33:28
回答 1查看 49关注 0票数 0

我们开发了一个基于Eclipse3.8的Eclipse RCP应用程序。我们试图在Eclipse4.8上构建它,但由于删除了一些类,我们的一些代码被破坏了。

在Eclipse3.8上,当此行返回null时,我们知道视图处于快速视图状态

代码语言:javascript
复制
( (PartSite)viewPart.getSite() ).getPane().getContainer();

但是在Eclipse4.8上,PartSitegetContainer()方法都不再可用。

我们如何检查视图是否处于快速视图状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-08 03:16:15

在Eclipse4中没有快速视图,只有最小化的部分。

您将需要使用一些e4 API来确定是否最小化了部件或其容器。类似于:

代码语言:javascript
复制
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);
}

您可以跟踪最小化标记中的更改,如下所示:

代码语言:javascript
复制
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);
 });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57400414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档