- 浏览: 990773 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
运乃强谦:
老哥,你确定这个wsdl 地址 可以访问?
[CXF] Server与Client实现方式五:HTTPS -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
[CXF] Server与Client实现方式四:JMS -
dengmiao:
JAXB学习三 (验证) -
panamera:
你好。可以提供maven pom配置是怎么配置的?不知道你使用 ...
[CXF] Server与Client实现方式四:JMS -
u010221220:
请问楼主一二三部分的代码都应该放在哪个函数体中。
使用JDI监听Java程序运行
要自定义Annotation,需要实现以下扩展点:
“org.eclipse.ui.editors.annotationTypes” 和 “org.eclipse.ui.editors.markerAnnotationSpecification”
内容可以按照自己需要的随便填,不行的话可以参考java里的扩展方式。
例如:
<extension point="org.eclipse.ui.editors.annotationTypes"> <type markerSeverity="2" markerType="org.eclipse.core.resources.problemmarker" name="com.windriver.liugang.EmbededEditor.error" super="org.eclipse.ui.workbench.texteditor.error"> </type> <type markerSeverity="2" markerType="org.eclipse.core.resources.problemmarker" name="com.windriver.liugang.EmbededEditor.warning" super="org.eclipse.ui.workbench.texteditor.warning"> </type> <type markerSeverity="2" markerType="org.eclipse.core.resources.problemmarker" name="com.windriver.liugang.EmbededEditor.host" super="org.eclipse.ui.workbench.texteditor.info"> </type> </extension> <extension point="org.eclipse.ui.editors.markerAnnotationSpecification"> <specification annotationType="com.windriver.liugang.EmbededEditor.error" colorPreferenceKey="errorColorKey" colorPreferenceValue="255,0,0" contributesToHeader="true" highlightPreferenceKey="errorHightlightKey" highlightPreferenceValue="true" icon="icons/error.gif" includeOnPreferencePage="true" isGoToNextNavigationTarget="true" isGoToNextNavigationTargetKey="Error_isOccurrenceGoToNextNavigationTarget" isGoToPreviousNavigationTarget="true" isGoToPreviousNavigationTargetKey="Error_isOccurrenceGoToPreviousNavigationTarget" label="ERROR" overviewRulerPreferenceKey="errorOverviewKey" overviewRulerPreferenceValue="true" presentationLayer="4" quickFixIcon="icons/error.gif" showInNextPrevDropdownToolbarAction="true" showInNextPrevDropdownToolbarActionKey="Error_showOccurrenceInNextPrevDropdownToolbarAction" symbolicIcon="error" textPreferenceKey="errorTextKey" textPreferenceValue="true" textStylePreferenceKey="occurrenceTextStyle" textStylePreferenceValue="NONE" verticalRulerPreferenceKey="errorVerticalKey" verticalRulerPreferenceValue="true"> </specification> <specification annotationType="com.windriver.liugang.EmbededEditor.warning" colorPreferenceKey="warningColorKey" colorPreferenceValue="255,255,0" contributesToHeader="true" highlightPreferenceKey="warningHightlightKey" highlightPreferenceValue="true" icon="icons/warning.gif" includeOnPreferencePage="true" isGoToNextNavigationTarget="true" isGoToNextNavigationTargetKey="Warning_isOccurrenceGoToNextNavigationTarget" isGoToPreviousNavigationTarget="true" isGoToPreviousNavigationTargetKey="Warning_isOccurrenceGoToPreviousNavigationTarget" label="WARNING" overviewRulerPreferenceKey="warningOverviewKey" overviewRulerPreferenceValue="true" presentationLayer="4" quickFixIcon="icons/warning.gif" showInNextPrevDropdownToolbarAction="true" showInNextPrevDropdownToolbarActionKey="Warning_showOccurrenceInNextPrevDropdownToolbarAction" symbolicIcon="warning" textPreferenceKey="warningTextKey" textPreferenceValue="true" textStylePreferenceKey="occurrenceTextStyle" textStylePreferenceValue="NONE" verticalRulerPreferenceKey="warningVerticalKey" verticalRulerPreferenceValue="true"> </specification> <specification annotationType="com.windriver.liugang.EmbededEditor.host" colorPreferenceKey="hostColorKey" colorPreferenceValue="255,0,255" contributesToHeader="true" highlightPreferenceKey="hostHightlightKey" highlightPreferenceValue="true" icon="icons/host.gif" includeOnPreferencePage="true" isGoToNextNavigationTarget="true" isGoToNextNavigationTargetKey="Host_isOccurrenceGoToNextNavigationTarget" isGoToPreviousNavigationTarget="true" isGoToPreviousNavigationTargetKey="Host_isOccurrenceGoToPreviousNavigationTarget" label="HOST" overviewRulerPreferenceKey="hostOverviewKey" overviewRulerPreferenceValue="true" presentationLayer="4" quickFixIcon="icons/host.gif" showInNextPrevDropdownToolbarAction="true" showInNextPrevDropdownToolbarActionKey="Host_showOccurrenceInNextPrevDropdownToolbarAction" symbolicIcon="info" textPreferenceKey="hostTextKey" textPreferenceValue="true" textStylePreferenceKey="occurrenceTextStyle" textStylePreferenceValue="NONE" verticalRulerPreferenceKey="hostVerticalKey" verticalRulerPreferenceValue="true"> </specification> </extension>
这样就自定义了三种类型的Annotation。
有了Annotation后,需要做的就是怎么把Annotation加到对应的Editor上去。
每个Text类型的Editor,都应该有一个DocumentProvider之类的东西与之对应。其中DocumentProvider中会有以下两个方法:
com.windriver.liugang.embedededitor.ui.EmbededDocumentProvider.createAnnotationModel(Object)
com.windriver.liugang.embedededitor.ui.EmbededDocumentProvider.createDocument(Object)
其中createAnnotationModel()里返回的AnnotationModel就可以用于管理Annotation了,它有addAnnotation()和removeAnnotation()方法。
每个被加到这个AnnotationModel里的Annotation都会被显示出来。
理论上来说,每次Document的内容有变化的时候,都需要更新这个AnnotationModel,最简单的方式就是:
document.addDocumentListener(this);
给这个document加一个DocumentListener,每当有内容变化时发出一个通知。然后在监听事件里更新Annotation。
例如:
public void documentChanged(DocumentEvent event) { IDocument document = event.getDocument(); try { refreshAnnotations(document); } catch (BadLocationException e) { e.printStackTrace(); } }
具体的refreshAnnotation()方法的实现就需要根据自己的需求了。例如上面我已经创建了三种类型的annotation了,下面我想如果一行的内容是空则显示一个error类型的;如果含有"java"字样,则显示warning类型的;要是含有"liugang"字样,则显示host类型的:
private void refreshAnnotations(IDocument document) throws BadLocationException { if (embededAnnotation == null) { return; } int numberOfLines = document.getNumberOfLines(); embededAnnotation.removeAllAnnotations(); for (int i = 0; i < numberOfLines; i++) { int lineLength = document.getLineLength(i); int lineOffset = document.getLineOffset(i); String lineContents = document.get(lineOffset, lineLength); if (lineContents.trim().equals("")) { Annotation annotation = new Annotation( "com.windriver.liugang.EmbededEditor.error", true, "Line content can not be null"); embededAnnotation.addAnnotation(annotation, new Position( lineOffset, lineLength)); } else if (lineContents.contains("java")) { Annotation annotation = new Annotation( "com.windriver.liugang.EmbededEditor.warning", true, "Java is a keyword of Java"); embededAnnotation.addAnnotation(annotation, new Position( lineOffset, lineLength)); } else if (lineContents.contains("liugang")) { Annotation annotation = new Annotation( "com.windriver.liugang.EmbededEditor.host", true, "The line contains host name"); embededAnnotation.addAnnotation(annotation, new Position( lineOffset, lineLength)); } } }
最后如果显示结果为:
评论
素人派
http://surenpi.com
刚接触eclipse插件开发,对于这些方法不熟悉不知道可以提供一下源码或者给个思路呢?
发表评论
-
在OSGI容器Equinox中嵌入HttpServer
2011-12-27 18:01 10766简单介绍一下如何在一个osgi的bundle中内嵌使用http ... -
GEF中用鼠标移动画布
2011-12-27 13:37 1370第一步 增加Palette项: moveTool = n ... -
在Eclipse中使用Maven
2011-09-29 13:41 1270上一篇讲了Maven的基础知识,这一篇讲怎么在Eclipse里 ... -
增加Table的Column右键菜单
2011-03-15 15:55 1478table.addListener(SWT.MenuDete ... -
RGB与HSB之间的相互转换
2010-10-29 15:14 12372[引用:] [ http://www.missyuan.com ... -
给Table和Tree的Header加右键菜单
2010-10-29 11:26 2527通常,如果不做特殊处理的话,在表头(树头,以下统称表头)的上点 ... -
org.eclipse.ui.navigator.linkHelper的使用
2010-08-06 15:43 2417org.eclipse.ui.navigator.linkHe ... -
让表项支持鼠标拖动移位,并自动滚动滚动条
2010-04-07 11:43 2692设想我们有一个表,表中有很多数据(多到竖起滚动条至少要出现)。 ... -
Eclipse截屏插件
2010-01-19 15:59 2768闲来无事,就写了一个截屏插件,见附件,直接放在eclipse的 ... -
Eclipse取得路径的方法
2009-11-27 10:30 1920从插件中获得绝对路径: TestPlug ... -
实现自己的团队协作客户端一
2009-11-12 15:04 1432在Eclipse里自带了团队协 ... -
扩展Eclipse Java编辑器的链接功能
2009-09-09 09:35 3622在JDT中,可以在一个类,或者是方法,或者是变量上进行跳转。这 ... -
添加监听到EMF对象、加密保存
2009-08-14 10:10 990一、可以注册监听来获取EMF模型改变事件,例如: pu ... -
使用Tab键实现表格的跳转
2009-08-12 21:29 3003在Excel中,如果按Tab键,则焦点会在相邻的方格中不断的跳 ... -
StyledCellLabelProvider的应用
2009-08-11 16:47 2287昨天写了EditingSupport的应用,可以方便的编辑Ta ... -
EditingSupport的应用
2009-08-10 15:20 2977Eclipse3.3中提供了一个EditingSupport类 ... -
合理的自定义扩展点
2009-06-26 01:43 1809Eclipse中提供了各种各样的用于扩展Eclipse功能的 ... -
关键字高亮插件
2009-06-26 00:59 1937在eclipse中,如果用Ctrl+F来进行查找,它只会一个一 ... -
置窗口于显示器中央
2009-05-06 09:46 958要把窗口置于显示器的中央,也是很容易的。如下: ... -
SWT鼠标拖运的支持
2009-05-06 09:41 1888对于没有标题栏的Shell,默认是不支持鼠标拖动位置的。不过要 ...
相关推荐
7. **元Annotation**:元Annotation是用于定义其他Annotation的Annotation,例如`@Retention`定义Annotation的生命周期(编译时、类加载时或运行时),`@Target`指定Annotation可以应用到哪些程序元素,`@Documented...
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...
@androidx.annotation.NonNull 缺失的兼容、androidx.annotation兼容包
javax.annotation-3.0.jar javax.annotation-3.0.jar javax.annotation-3.0.jar
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.3.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-...
在实际使用时,我们可以给这个成员赋值,或者直接使用默认值。 接下来,`AnnatationTest.java`可能是用于测试注解处理的类。在Java中,注解的处理通常分为两个阶段:编译时处理和运行时处理。编译时处理通常通过...
【Annotation技术】是Java语言中的一个重要特性,引入于JDK5,主要目的是为程序元素(如包、类、方法、变量等)添加元数据,即附加信息,这些信息可以被编译器、IDE工具或者运行时系统使用。Annotation不会直接改变...
在iOS开发中,Annotation是苹果地图(MapKit)框架中的一个重要概念,用于在地图上添加可视化标记,以展示特定地理位置的信息。自定义的Annotation则允许开发者根据需求个性化地图上的标注,比如添加图片、自定义...
hibernate 注解 annotation 教程
Java annotation 什么是java annotation?annotation 的7种标注类型。nnotation提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。从某些方面看,annotation就像修饰符一样被使用,并应用于包、...
### 用Annotation简化Java程序的开发 #### 一、引言 随着软件开发技术的不断发展,特别是Java语言的广泛应用,开发者面临着如何有效地管理和配置代码的问题。传统的做法是使用XML文件来配置程序的各种设置,但这种...
Annotation是Java语言中的一种元数据,它提供了在代码中附加信息的能力,这些信息可以在编译时或运行时被解析和使用。Annotation的本质是一种特殊类型的注解,它允许开发者向编译器、JVM或者工具提供关于代码的额外...
javax.annotation.jar
赠送jar包:geronimo-annotation_1.0_spec-1.1.1.jar; 赠送原API文档:geronimo-annotation_1.0_spec-1.1.1-javadoc.jar; 赠送源代码:geronimo-annotation_1.0_spec-1.1.1-sources.jar; 赠送Maven依赖信息文件:...
这里面包涵了需要用Hibernate Annotation时,所需要的所有jar包! 现在我们公司在做web项目的时候,已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用...
hibernate annotation中文文档