在做的项目里,需要一个这样的显示效果.
以前从来没有做过,也不知道该用什么关键字来搜索.
于是,只好用最原始的办法,看Eclipse的源代码.最后一些跟decorator相关的类引起了我的注意,还发现有一个相关的LabelProvider.于是我用这个词作为关键字搜索到了下面这篇文章,觉得十分有用,所以暂存到这里.
原文标题: org.eclipse.ui.decorators得用法
<extension point="org.eclipse.ui.decorators">
<decorator icon="icons/warning_small.gif" id="cnooc.rcp.decorator.node.warning" label="Data Warning Decorator" lightweight="true" location="BOTTOM_LEFT" state="true">
<enablement>
<and>
<objectClass "com.eplat.cnooc.rcp.node.INode"/>
<objectState name="hasWarning" value="true"/>
</and>
</enablement>
</decorator>
<decorator icon="icons/error_small.gif" id="cnooc.rcp.decorator.node.error" label="Data Error Decorator" lightweight="true" location="BOTTOM_LEFT" state="true">
<enablement>
<and>
<objectClass "com.eplat.cnooc.rcp.node.INode"/>
<objectState name="hasError" value="true"/>
</and>
</enablement>
</decorator>
</extension>
INode是TreeViewer里面节点得对象.
Viewer设置LabelProvider时需要如下:
viewer.setLabelProvider(new DecoratingLabelProvider(new ViewLabelProvider(),
Activator.getDefault().getWorkbench().getDecoratorManager().getLabelDecorator()));
写了这个以后还没完, 需要让INode实现IActionFilter接口. eclipse得API中说要么实现IActionFilter接口, 要么实现IAdapter接口, 如果实现后者得话, 系统会调用getAdapter()方法. 不过我还是选择前者.
/** *//**
* (non-Javadoc)
*
* @see org.eclipse.ui.IActionFilter#testAttribute(java.lang.Object, java.lang.String,java.lang.String)
*/
public boolean testAttribute(Object target, String name, String value){
if (name.equals("hasWarning")){
return !getProblems().hasError() && getProblems().hasWarning();
} else if (name.equals("hasError")){
return getProblems().hasError();
}
return false;
}
意思应该比较明显得, 如果有warning并且没有error得时候warning得decorator生效. 如果有error则error得decorator生效. name参数对应得就是objectState得name参数. value参数对应得objectState得value参数. target参数就是viewer中得节点对象, 不过由于INode实现了IActionFilter接口, 因此这里得target就是this了.
一般来说需要判断得就是根据name获取得值是否等于value, 等于返回true, 否则返回false. 不过这里我不需要判断这个了, 直接根据当前状态返回就好了.
按照eclipse得原理, 理论上应该INode变化以后viewer就会跟着变化, 但是我实验下来有时候好有时候不好.
因此在Editor得verify方法里增加了下面得逻辑:
/** *//**
* 校验数据
*
* @return
*/
private boolean verify(){
//校验数据
//不管是否有error或者warning都需要通知向导树刷新一下节点.
ExplorerView view = (ExplorerView) getSite().getPage().findView(ExplorerView.class.getName());
view.refresh((INode) getEditorInput());
return true;
}
现在好了, 只要执行verify方法, viewer就会刷新对应得节点, 以达到显示左下方小图标得目的.
原文地址: http://blog.csdn.net/bradwoo8621/archive/2007/05/11/1604738.aspx
分享到:
相关推荐
在FANUC机器人的操作过程中,示教器右上角的感叹号(!)通常表示系统存在警告或错误状态,这可能会影响机器人的正常运行。理解如何清除这个提示是日常维护和故障排查的重要环节。下面将详细介绍FANUC机器人清除示教...
本文主要探讨的是在使用TIA博途上传项目并转至在线状态时,IO子站出现感叹号图标的问题及其解决方法。 当用户使用TIA博途V15.1版本上传S7-1500CPU项目,并通过“将设备作为新站上传(硬件和软件)”的方式进行操作...
当ACPI驱动出现问题时,设备管理器中对应的条目可能会显示黄色感叹号,这通常意味着驱动程序未安装、已损坏或与硬件不兼容。"解决ACPI黄色感叹号的驱动"这个主题主要涉及到如何诊断和修复这个问题,尤其对于使用华硕...
安装PL2303 USB-to-Serial模块驱动后出现黄色感叹号,使用该安装程序即可解决问题。运行exe文件如果提示卸载就先卸载已有驱动,卸载后再安装一次,插上usb转串口模块即可,此时没有黄色感叹号,win10可用
标题“解决设备有感叹号”通常指的是在操作系统中,设备图标前出现的黄色或红色感叹号,这代表设备驱动程序存在问题或者设备未被正确识别。这种情况可能是由于驱动程序丢失、损坏,或者是系统与硬件之间的兼容性问题...
检查通信连接是否已成功建立,包括PLC的IP地址、端口号、通信协议(如TCP/IP、MPI、PROFINET等)以及相关的通讯驱动是否正确配置和加载。 3. **变量质量代码异常**:WinCC系统会为每个变量分配一个质量代码,以反映...
在Android系统中,网络图标上的感叹号通常表示设备无法连接到互联网,这可能是由于网络未配置、信号弱或被运营商的“捕获门户”(Captive Portal)限制。"NoExclamation"项目就是针对这种情况的一个解决方案,它旨在...
完美解决EPLAN在win10上安装了加密狗也消除不了黄色感叹号的问题,本人亲测可用。安装驱动天使后检测硬件驱动,然后选择升级更新驱动程序。再查看加密狗驱动正常。打开EPLAN p8 2.7就可以使用了。
软件介绍: ...本驱动用于解决multiusb key设备管理器中出现黄色感叹号问题。eplan p8 v2.7 研究了好久终于解决 multiusb key 黄色感叹号问题。HASP文件,解决multiusb key无法安装成功的问题。
### SVN出现黄色感叹号解析及处理方法 #### 标题:SVN出现黄色感叹号 #### 描述:SVN出现黄色感叹号的情况及其处理方法。 #### 标签:SVN #### 部分内容概要: - SVN客户端在进行更新操作时遇到问题。 - 用户在...
在日常使用计算机的过程中,我们可能会遇到USB设备连接后,在“设备管理器”中显示带有黄色感叹号的情况。这通常意味着系统未能正确识别或加载该USB设备的驱动程序,导致设备无法正常使用。为了解决这个问题,我们...
在描述中提到的问题,"串口无法读取显示黄色叹号",这是Windows系统中常见的设备驱动问题。黄色叹号通常表示设备未正常工作或缺少驱动程序。在这种情况下,系统可能无法识别串口设备,比如PL2303,这是一个流行的USB...
"PCI、SM、RAID感叹号驱动安装"这个问题涉及到的是主板上的关键组件与操作系统的交互,通常在Windows系统中表现为设备管理器中出现黄色感叹号,表示相关硬件驱动未正确安装或缺失。下面将详细介绍这三个领域的驱动...
感叹号图标"可能是指一种设计元素或者软件界面中的图形用户界面(GUI)组件。这种图标通常用于引起用户的注意,传达重要信息或警示。在许多应用程序、操作系统和网站中,感叹号图标是常见的提示符号,它与警告、错误...
unity2020无法安装,一般都是由于缺少运行环境造成的,附件中本人亲测在纯净...有些人安装后无法打开有个带红色叹号的界面一闪而过,或第一次启动正常后又出现上述现象的问题,在附件中均有本人的解决方法,亲测有效。
Android 5.0/5.1去除感叹号脚本执行软件
a卡签名补丁 AMD RX460,RX470,RX480,RX550,RX560,RX570,RX580,RX590 系统显卡,在刷完矿版BIOS后,驱动会出现感叹号...重启后一般驱动感叹号可消失恢复正常,如还有感叹号,可多运行应用几次补丁,直到成功。
标题中的“蓝牙驱动,解决win11下的设备管理器蓝牙报错提示为:Generic Bluetooth Adapter驱动感叹号解”指的是在Windows 11操作系统中,用户遇到了一个特定的问题,即设备管理器中的蓝牙适配器显示错误,具体表现为...
在使用Eclipse进行Android项目开发时,项目名称前出现红色感叹号通常表示项目构建路径存在问题,这会阻止项目的正常编译和运行。解决此类问题的方法主要涉及以下几个知识点: 1. **Eclipse项目构建路径配置(Build ...
HP P1108在XP系统上安装报HP Smartlnstall Usb Device错误叹号,无法安装驱动解决方法