Eclipse30下插件开发实例全过程.docx
- 文档编号:4420610
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:14
- 大小:101.33KB
Eclipse30下插件开发实例全过程.docx
《Eclipse30下插件开发实例全过程.docx》由会员分享,可在线阅读,更多相关《Eclipse30下插件开发实例全过程.docx(14页珍藏版)》请在冰豆网上搜索。
Eclipse30下插件开发实例全过程
Eclipse3.0下的一个插件开发
建工程,如图,选中,编辑器类的插件,这个插件主要是生成的代码多,写的少!
如果还不知道这两个图是怎么出来的,那么,显然你的水平,比你还稍有不足,应该不学写插件,而学学使用插件,
Snap2.gif
描述:
文件大小:
10.03KB
看过的:
文件被下载或查看2834次
Snap3.gif
描述:
文件大小:
17.2KB
看过的:
文件被下载或查看2834次
生成的工程如图所示,偶起的工程名为,JSPedit
想编辑JSP文件,只对JSP文件,加个语法加亮的功能,至少,.就能弹出类的方法的这种插件,偶是一辈子都做不来的,你可以,按偶的这个方法,写JS的插件,CSS的插件,VM的插件,。
。
。
。
。
。
或者把这些个插件,都写成一个插件,。
。
。
HOHO
值的注意的是,JSPedit下面,有一个文件,这个可是个入口的东东,不能没有,在edit下面,有12个文件,数好了,下面,我们就在这上面,进行改动了,如果这一步还没完成的话,请参考,网上的那个,helloWorld插件的例子,如eclipse的帮助,或找个人问问,但别问偶,:
)
Snap4.gif
描述:
文件大小:
34.44KB
看过的:
文件被下载或查看2832次
插件主文件,看到了吧,事件的东东,基本全在这里呢,别以为偶比你看懂了多少东西,偶也那么回事,不过,这回这个文件,不用修改
Snap5.gif
描述:
文件大小:
15.21KB
看过的:
文件被下载或查看2831次
打开这个文件,如图:
嘿嘿,小加一些语法
java代码:
packagejspedit.editors;
importorg.eclipse.jface.text.rules.*;
publicclassXMLPartitionScannerextendsRuleBasedPartitionScanner{
publicfinalstaticStringXML_DEFAULT="__xml_default";
publicfinalstaticStringXML_COMMENT="__xml_comment";
publicfinalstaticStringXML_TAG="__xml_tag";
publicfinalstaticStringJSP_HEADER_TAG="__jsp_header_tag";
publicfinalstaticStringJSP_COMMENT_TAG="__jsp_comment_tag";
publicfinalstaticStringJSP_TAG="__jsp_tag";
publicfinalstaticStringJSP_OUT_TAG="__jsp_out_tag";
publicXMLPartitionScanner(){
ITokenxmlComment=newToken(XML_COMMENT);
ITokentag=newToken(XML_TAG);
ITokenjspHeaderTag=newToken(JSP_HEADER_TAG);
ITokenjspCommentTag=newToken(JSP_COMMENT_TAG);
ITokenjspTag=newToken(JSP_TAG);
ITokenjspOutTag=newToken(JSP_OUT_TAG);
IPredicateRule[]rules=newIPredicateRule[12];
rules[0]=newMultiLineRule("
--","-->",xmlComment);
rules[1]=newMultiLineRule("<%--","--%>",jspCommentTag);
rules[2]=newMultiLineRule("<%@","%>",jspHeaderTag);
rules[3]=newMultiLineRule("<%=","%>",jspOutTag);
rules[4]=newMultiLineRule("<%","%>",jspTag);
rules[5]=newMultiLineRule(" ",">",jspTag); rules[6]=newMultiLineRule(" ",">",jspTag); rules[7]=newMultiLineRule(" ",">",jspTag); rules[8]=newMultiLineRule("
",">",jspTag);
rules[9]=newMultiLineRule("
",">",jspTag);
rules[10]=newMultiLineRule("
",">",jspTag);
rules[11]=newTagRule(tag);
setPredicateRules(rules);
}
}
Snap6.gif
描述:
文件大小:
5.12KB
看过的:
文件被下载或查看2830次
我最烦人的就是,那个双击事件,一点子选中一行,偶喜欢,JAVA的那种,在。
号分开的,
那么,小改一下,这个文件,当然,你也可以不改的,没多大关系
java代码:
packagejspedit.editors;
importorg.eclipse.jface.text.*;
publicclassXMLDoubleClickStrategyimplementsITextDoubleClickStrategy{
protectedITextViewerfText;
publicvoiddoubleClicked(ITextViewerpart){
intpos=part.getSelectedRange().x;
if(pos<0)
return;
fText=part;
if(!
selectComment(pos)){
selectWord(pos);
}
}
protectedbooleanselectComment(intcaretPos){
IDocumentdoc=fText.getDocument();
intstartPos,endPos;
try{
intpos=caretPos;
charc='';
while(pos>=0){
c=doc.getChar(pos);
if(c=='\\'){
pos-=2;
continue;
}
if(c==Character.LINE_SEPARATOR||c=='\"'||c=='.'||c=='')
break;
--pos;
}
if(c!
='\"')
returnfalse;
startPos=pos;
pos=caretPos;
intlength=doc.getLength();
c='';
while(pos c=doc.getChar(pos); if(c==Character.LINE_SEPARATOR||c=='\"'||c=='.'||c=='') break; ++pos; } if(c! ='\"') returnfalse; endPos=pos; intoffset=startPos+1; intlen=endPos-offset; fText.setSelectedRange(offset,len); returntrue; }catch(BadLocationExceptionx){ } returnfalse; } protectedbooleanselectWord(intcaretPos){ IDocumentdoc=fText.getDocument(); intstartPos,endPos; try{ intpos=caretPos; charc; while(pos>=0){ c=doc.getChar(pos); if(! Character.isJavaIdentifierPart(c)) break; --pos; } startPos=pos; pos=caretPos; intlength=doc.getLength(); while(pos c=doc.getChar(pos); if(! Character.isJavaIdentifierPart(c)) break; ++pos; } endPos=pos; selectRange(startPos,endPos); returntrue; }catch(BadLocationExceptionx){ } returnfalse; } privatevoidselectRange(intstartPos,intstopPos){ intoffset=startPos+1; intlength=stopPos-offset; fText.setSelectedRange(offset,length); } } 看清楚了,就是加了一个‘。 ’字符的东东,让他也做为一个词的分割符, Snap7.gif 描述: 文件大小: 2.94KB 看过的: 文件被下载或查看2829次 好,到这里,这个插件,基本完成任务了,找一个漂亮的图标文件,改一下,plugin.xml java代码: extensions="jsp" icon="icons/key.gif" 嘿嘿,可以发布了 java代码: id="dearmitejspeditor" name="dearmitejspeditor" point="org.eclipse.ui.editors"> name="dearmitejspEditor" extensions="jsp" icon="icons/key.gif" contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor" class="jspedit.editors.XMLEditor" id="jspedit.editors.XMLEditor"> 这是偶的插件的文件里面的东东,你可以通过这个图形化的东东来修改这个,也可以把偶的COPY过去,看到,这图的那个小手, 放在哪里没? ? ? 这个功能就是发布插件的功能,上面的那个BUILD configure当然是发布的选项了,把工程的所有东东全选上, 其实不用改的,全选上,是把SRC目录也选上,支持开源! ! ! ! Snap8.gif 描述: 文件大小: 5.61KB 看过的: 文件被下载或查看2824次 其实,别看上面改的很少,但这确实就是插件的开发,因为我们的要求不多,而eclipse本身带的textor功能又强大,所以,我们写的东东确实不多了,下面,我们加入,一个关键字,在XMLConfiguration.java文件中,下午网好慢,不传图了, Snap9.gif 描述: 文件大小: 7.18KB 看过的: 文件被下载或查看2803次 为此,我们加入了, \KeywordDetector.java \IJavaSyntax.java JavaKeywordScanner.java 这三个文件,改动了,XMLConfiguration.java 在些文件,加入,对KEYWORD检查, java代码: packagejspedit.editors; importorg.eclipse.jface.text.IDocument; importorg.eclipse.jface.text.ITextDoubleClickStrategy; importorg.eclipse.jface.text.TextAttribute; importorg.eclipse.jface.text.presentation.IPresentationReconciler; importorg.eclipse.jface.text.presentation.PresentationReconciler; importorg.eclipse.jface.text.rules.DefaultDamagerRepairer; importorg.eclipse.jface.text.rules.Token; importorg.eclipse.jface.text.source.ISourceViewer; importorg.eclipse.jface.text.source.SourceViewerConfiguration; importorg.eclipse.swt.SWT; publicclassXMLConfigurationextendsSourceViewerConfiguration{ privateXMLDoubleClickStrategydoubleClickStrategy; privateXMLTagScannertagScanner; privateXMLScannerscanner; privateColorManagercolorManager; privateJavaKeywordScannerkeywordScanner; publicXMLConfiguration(ColorManagercolorManager){ this.colorManager=colorManager; } publicString[]getConfiguredContentTypes(ISourceViewersourceViewer){ returnnewString[]{ IDocument.DEFAULT_CONTENT_TYPE, XMLPartitionScanner.XML_COMMENT, XMLPartitionScanner.XML_TAG}; } publicITextDoubleClickStrategygetDoubleClickStrategy( ISourceViewersourceViewer, StringcontentType){ if(doubleClickStrategy==null) doubleClickStrategy=newXMLDoubleClickStrategy(); returndoubleClickStrategy; } protectedJavaKeywordScannergetJavaKeywordScanner(){ if(keywordScanner=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Eclipse30 插件 开发 实例 全过程