??xml version="1.0" encoding="utf-8" standalone="yes"?>国产v亚洲v天堂无码,日韩精品成人一区二区在线观看,欧美肉体xxxx裸体137大胆http://www.aygfsteel.com/lifesting/category/29580.htmlJust Do It!zh-cnThu, 24 Feb 2011 05:09:01 GMTThu, 24 Feb 2011 05:09:01 GMT60开源项目诚招有偿兼职开发?版主高抬贉|)http://www.aygfsteel.com/lifesting/archive/2011/02/23/345015.htmlAlways BaNg.Always BaNg.Wed, 23 Feb 2011 14:41:00 GMThttp://www.aygfsteel.com/lifesting/archive/2011/02/23/345015.htmlhttp://www.aygfsteel.com/lifesting/comments/345015.htmlhttp://www.aygfsteel.com/lifesting/archive/2011/02/23/345015.html#Feedback3http://www.aygfsteel.com/lifesting/comments/commentRss/345015.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/345015.html
1 Java索引开发??Q?br />
能够应用Apache Lucence 按照模型定义索引数据库(MySQLQOracleQSQL Server)QXML文gQƈ调用相关接口能够以Web方式/XML方式呈现Q熟悉中文分词,能够有合适的自定义词库最好?br />
2 CDN理控制?人:
因ؓCDNZLinux下C/C++Q管理控制将通过Java Socket完成理控制E序与CDN的交互,所以要求你能够熟悉Java SocketQ还能通过某种Java Web技术制作管理控制端Web界面?br />
q两个项目将怹开源,但提供高U别的定制与咨询服务Q如果你成ؓcontributorQ将有机会参与到目分成中来?br />
如果你对q两斚w有很好的l验Q比较闲Q也愿意试水开源项目,Ƣ迎报名Qƈ附上你期望的报酬Q按目q程比例发放Q可{֍?

希望你最好在北京Q这h好经常请大家吃饭?br />
动手后,把开发过E中的点滴写成blogQ放在blogjava.netQ也做一滴A?)

联系
mail: lifesting@gmail.com
msn: step.in@hotmail.com



Always BaNg. 2011-02-23 22:41 发表评论
]]>
一个Java开发^台的考虑http://www.aygfsteel.com/lifesting/archive/2009/07/06/285664.htmlAlways BaNg.Always BaNg.Mon, 06 Jul 2009 04:05:00 GMThttp://www.aygfsteel.com/lifesting/archive/2009/07/06/285664.htmlhttp://www.aygfsteel.com/lifesting/comments/285664.htmlhttp://www.aygfsteel.com/lifesting/archive/2009/07/06/285664.html#Feedback0http://www.aygfsteel.com/lifesting/comments/commentRss/285664.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/285664.html
2 数据库支持,支持DB->BO/DAOQ也支持BO(模型)->DBQ中间的映射q程采用何种技术?Annotation?XML Configuration?

3 快速的目向导Q内|高度提炼的常规业务q程?br />
4 友好的web支持Q在q_立开发流E之后,唯一飘忽不定的就是web front。这U支持的核心是将业务数据与前台技术通过某种方式l定在一P减少前台E序员的工作?复工量。绑定的载体应该是一?~辑器,WTP~辑器太烂。Dreamweaver应该是一个不错的选择?br />
5 集成SPring+HibernateQ两个框架一是很优秀Q再是有很好的众基础Q绝大部分JavaE序员都会一炏V?br />
6 代码生成Q提供一U可~程的代码生成机Ӟ生成l大部分可重用代码,同时强制某种代码实现模式Q减出错概率?br />
7 上下文帮助,量提供cM于Visual Studio的帮助机Ӟ减少q_操作陌生感?br />


Always BaNg. 2009-07-06 12:05 发表评论
]]>
做了一个JSF表格lgQ分享源代码Q?/title><link>http://www.aygfsteel.com/lifesting/archive/2009/07/04/285453.html</link><dc:creator>Always BaNg.</dc:creator><author>Always BaNg.</author><pubDate>Sat, 04 Jul 2009 05:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/lifesting/archive/2009/07/04/285453.html</guid><wfw:comment>http://www.aygfsteel.com/lifesting/comments/285453.html</wfw:comment><comments>http://www.aygfsteel.com/lifesting/archive/2009/07/04/285453.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lifesting/comments/commentRss/285453.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lifesting/services/trackbacks/285453.html</trackback:ping><description><![CDATA[周二Q我兴匆匆去老刘那演CRichFaces的Table控gQ可老刘说了QRichFaces太复杂,不适合我们Q且q有不少的bug(q些我无法考证:)。于是他拿出一个用了一堆JSP+Servelet+Bean写的一个表|跟说我,我很怀疑JSF能做个东西来Q你使用UJSF做一个一L表格lg我就怿JSF能够用在开发^??我是此Eclipse开发^台的D架构?上。我心里琢磨Q既然你是用JSP/Servlet搞出来的Q而JSF是基于Servlet的技术,怎么可能实现不了呢? 三天做出来!我一直相信,技术在于用技术的人,而不是技术本w?br /> <br /> <span style="font-size: 18pt;"> <span style="color: red;"><a >下蝲</a></span> </span><br /> <br /> 先看囑֐Q?br /> <br /> <img alt="" src="http://www.aygfsteel.com/images/blogjava_net/lifesting/09/table.jpg" border="1" height="761" width="625" /><br /> <br /> 再看看对应的JSF标记<br /> <br /> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 0, 255);"><!</span><span style="color: rgb(255, 0, 255);">DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">html </span><span style="color: rgb(255, 0, 0);">xmlns</span><span style="color: rgb(0, 0, 255);">="http://www.w3.org/1999/xhtml"</span><span style="color: rgb(255, 0, 0);"><br />     xmlns:h</span><span style="color: rgb(0, 0, 255);">="http://java.sun.com/jsf/html"</span><span style="color: rgb(255, 0, 0);"><br />     xmlns:f</span><span style="color: rgb(0, 0, 255);">="http://java.sun.com/jsf/core"</span><span style="color: rgb(255, 0, 0);"><br />     xmlns:ui</span><span style="color: rgb(0, 0, 255);">="http://java.sun.com/jsf/facelets"</span><span style="color: rgb(255, 0, 0);"><br />     xmlns:cby</span><span style="color: rgb(0, 0, 255);">="http:/www.lifesting.com/jsf"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <br /> </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">ui:composition </span><span style="color: rgb(255, 0, 0);">template</span><span style="color: rgb(0, 0, 255);">="/tpl.xhtml"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">ui:define </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="pageTitle"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">表格展示</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">ui:define</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">ui:define </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="pageHeader"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);">国家</span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">ui:define</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">ui:define </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="body"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <br />     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h:form</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h:panelGrid </span><span style="color: rgb(255, 0, 0);">columns</span><span style="color: rgb(0, 0, 255);">="1"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h:message </span><span style="color: rgb(255, 0, 0);">for</span><span style="color: rgb(0, 0, 255);">="mytable"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">h:panelGrid</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:rns </span><span style="color: rgb(255, 0, 0);">text</span><span style="color: rgb(0, 0, 255);">="面讄"</span><span style="color: rgb(255, 0, 0);"> tableFor</span><span style="color: rgb(0, 0, 255);">="mytable"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:filter </span><span style="color: rgb(255, 0, 0);">text</span><span style="color: rgb(0, 0, 255);">="qo{略"</span><span style="color: rgb(255, 0, 0);"> tableFor</span><span style="color: rgb(0, 0, 255);">="mytable"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:delete </span><span style="color: rgb(255, 0, 0);">tableFor</span><span style="color: rgb(0, 0, 255);">="mytable"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:table </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="mytable"</span><span style="color: rgb(255, 0, 0);"> var</span><span style="color: rgb(0, 0, 255);">="rec"</span><span style="color: rgb(255, 0, 0);"> checkable</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"> idField</span><span style="color: rgb(0, 0, 255);">="code"</span><span style="color: rgb(255, 0, 0);"><br />                 bean</span><span style="color: rgb(0, 0, 255);">="Country"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:column </span><span style="color: rgb(255, 0, 0);">field</span><span style="color: rgb(0, 0, 255);">="name"</span><span style="color: rgb(255, 0, 0);"> sortable</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"> filterable</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"><br />                     width</span><span style="color: rgb(0, 0, 255);">="200"</span><span style="color: rgb(255, 0, 0);"> value</span><span style="color: rgb(0, 0, 255);">="名称"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h:outputText </span><span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">="#{rec.wrapped.name}"</span><span style="color: rgb(0, 0, 255);">></</span><span style="color: rgb(128, 0, 0);">h:outputText</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">cby:column</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:column </span><span style="color: rgb(255, 0, 0);">field</span><span style="color: rgb(0, 0, 255);">="region"</span><span style="color: rgb(255, 0, 0);"> sortable</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"> filterable</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);"><br />                     width</span><span style="color: rgb(0, 0, 255);">="100"</span><span style="color: rgb(255, 0, 0);"> value</span><span style="color: rgb(0, 0, 255);">="区域"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h:outputText </span><span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">="#{rec.wrapped.region}"</span><span style="color: rgb(0, 0, 255);">></</span><span style="color: rgb(128, 0, 0);">h:outputText</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">cby:column</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:column </span><span style="color: rgb(255, 0, 0);">field</span><span style="color: rgb(0, 0, 255);">="surfaceArea"</span><span style="color: rgb(255, 0, 0);"> sortable</span><span style="color: rgb(0, 0, 255);">="false"</span><span style="color: rgb(255, 0, 0);"> filterable</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"><br />                     width</span><span style="color: rgb(0, 0, 255);">="150"</span><span style="color: rgb(255, 0, 0);"> value</span><span style="color: rgb(0, 0, 255);">="表面U?</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h:outputText </span><span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">="#{rec.wrapped.surfaceArea}"</span><span style="color: rgb(0, 0, 255);">></</span><span style="color: rgb(128, 0, 0);">h:outputText</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">cby:column</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:column </span><span style="color: rgb(255, 0, 0);">field</span><span style="color: rgb(0, 0, 255);">="population"</span><span style="color: rgb(255, 0, 0);"> sortable</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"> filterable</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"><br />                     width</span><span style="color: rgb(0, 0, 255);">="100"</span><span style="color: rgb(255, 0, 0);"> value</span><span style="color: rgb(0, 0, 255);">="人口"</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                     </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">h:outputText </span><span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">="#{rec.wrapped.population}"</span><span style="color: rgb(0, 0, 255);">></</span><span style="color: rgb(128, 0, 0);">h:outputText</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">cby:column</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />                 </span><span style="color: rgb(0, 0, 255);"><</span><span style="color: rgb(128, 0, 0);">cby:ds </span><span style="color: rgb(0, 0, 255);">/></span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">cby:table</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />         </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">h:form</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br />     </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">ui:define</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">ui:composition</span><span style="color: rgb(0, 0, 255);">></span><span style="color: rgb(0, 0, 0);"><br /> <br /> </span><span style="color: rgb(0, 0, 255);"></</span><span style="color: rgb(128, 0, 0);">html</span><span style="color: rgb(0, 0, 255);">></span></div> <br /> 因ؓ开发^台最l是以BO为核心,所以此表格lg是通过讄 beanQ然后再通过Hibernate来获取数据的?br /> <br /> q个lg除采用JSF +Facelet之外Q没有其它页面技术,代码z,无抽象,且里面还有注释,初学者可以参考一下?br /> <br /> 主要功能Q?br /> 1 讄column的filterable属?true/false)来过滤数?目前实现为左匚wQ比如输入SaQ就是Sa开头的)<br /> 2 分页D<br /> 3 讄column的sortable属?true/false)用来Ҏ列进???排序<br /> 4 改变记录大,默认?0??br /> 5 讄table的checkable属性ؓtrueQ表格将会多一列用来选择?br /> 6 可以扚w删除被checked的记录?br /> <br /> q个lg只考虑了功能,q没有考虑到美观,如果你觉得可以用Q改改它的html属性设|?br /> <br /> 安装Q?br /> <br /> 1 附g是一个Maven目Q必d装有maven?br /> 2 安装MySQL数据库,启动MySQLQ运?<br /> create database world<br /> 3 扑ֈ目下面的world.sqlQ假讑օ路径?a/b/c/world.sqlQ用MySQL的source命o<br /> use world<br /> source /a/b/c/world.sql<br /> 4修改目下的hibernate.cfg.xml中MySQL数据库用户名/密码?br /> 5 执行mvn jetty:run 启动<br /> 6 览器输?http://localhost:8080/jsftry/ 可以看到效果了<br /> <br /> 关于调试Q?br /> 1 下蝲一个Eclipse JEE版本<br /> 2  在项目目录下执行 mvn eclipse:clean eclipse:eclipse -DdownloadSources=true -Dwtpversion=1.5<br /> 3 在eclipse workspace中import此项?br /> <br /> 虽然工作中不用Java很久了,但拿h玩玩q是觉得Java真的很有生力。JSFQHibernateQMavenQEclipse一个比一个牛比?br /> <br /> <br /> <br /> <img src ="http://www.aygfsteel.com/lifesting/aggbug/285453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lifesting/" target="_blank">Always BaNg.</a> 2009-07-04 13:22 <a href="http://www.aygfsteel.com/lifesting/archive/2009/07/04/285453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hello, dreamweaver! (PART 2)http://www.aygfsteel.com/lifesting/archive/2009/06/18/283073.htmlAlways BaNg.Always BaNg.Thu, 18 Jun 2009 09:02:00 GMThttp://www.aygfsteel.com/lifesting/archive/2009/06/18/283073.htmlhttp://www.aygfsteel.com/lifesting/comments/283073.htmlhttp://www.aygfsteel.com/lifesting/archive/2009/06/18/283073.html#Feedback2http://www.aygfsteel.com/lifesting/comments/commentRss/283073.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/283073.html阅读全文

Always BaNg. 2009-06-18 17:02 发表评论
]]>
Hello, dreamweaver! (Part 1)http://www.aygfsteel.com/lifesting/archive/2009/06/17/267958.htmlAlways BaNg.Always BaNg.Wed, 17 Jun 2009 09:24:00 GMThttp://www.aygfsteel.com/lifesting/archive/2009/06/17/267958.htmlhttp://www.aygfsteel.com/lifesting/comments/267958.htmlhttp://www.aygfsteel.com/lifesting/archive/2009/06/17/267958.html#Feedback2http://www.aygfsteel.com/lifesting/comments/commentRss/267958.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/267958.html阅读全文

Always BaNg. 2009-06-17 17:24 发表评论
]]>
GEFC֌捐献的一个图形旋?Rotation)的例?/title><link>http://www.aygfsteel.com/lifesting/archive/2009/02/20/255789.html</link><dc:creator>Always BaNg.</dc:creator><author>Always BaNg.</author><pubDate>Fri, 20 Feb 2009 03:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/lifesting/archive/2009/02/20/255789.html</guid><wfw:comment>http://www.aygfsteel.com/lifesting/comments/255789.html</wfw:comment><comments>http://www.aygfsteel.com/lifesting/archive/2009/02/20/255789.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lifesting/comments/commentRss/255789.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lifesting/services/trackbacks/255789.html</trackback:ping><description><![CDATA[     摘要: 实现GEF开发中的图形旋转的一个解x?nbsp; <a href='http://www.aygfsteel.com/lifesting/archive/2009/02/20/255789.html'>阅读全文</a><img src ="http://www.aygfsteel.com/lifesting/aggbug/255789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lifesting/" target="_blank">Always BaNg.</a> 2009-02-20 11:04 <a href="http://www.aygfsteel.com/lifesting/archive/2009/02/20/255789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GMF中用动态模?dynamic templates)http://www.aygfsteel.com/lifesting/archive/2008/12/08/245016.htmlAlways BaNg.Always BaNg.Mon, 08 Dec 2008 05:54:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/12/08/245016.htmlhttp://www.aygfsteel.com/lifesting/comments/245016.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/12/08/245016.html#Feedback0http://www.aygfsteel.com/lifesting/comments/commentRss/245016.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/245016.html阅读全文

Always BaNg. 2008-12-08 13:54 发表评论
]]>
在你gJava是什么?http://www.aygfsteel.com/lifesting/archive/2008/12/02/243808.htmlAlways BaNg.Always BaNg.Mon, 01 Dec 2008 16:04:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/12/02/243808.htmlhttp://www.aygfsteel.com/lifesting/comments/243808.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/12/02/243808.html#Feedback20http://www.aygfsteel.com/lifesting/comments/commentRss/243808.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/243808.html阅读全文

Always BaNg. 2008-12-02 00:04 发表评论
]]>
插g开发之QCommon Navigator View (CNV) 通用D试图http://www.aygfsteel.com/lifesting/archive/2008/11/30/242634.htmlAlways BaNg.Always BaNg.Sat, 29 Nov 2008 17:28:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/11/30/242634.htmlhttp://www.aygfsteel.com/lifesting/comments/242634.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/11/30/242634.html#Feedback1http://www.aygfsteel.com/lifesting/comments/commentRss/242634.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/242634.html阅读全文

Always BaNg. 2008-11-30 01:28 发表评论
]]>
插g开? View里面的对象托拽到Editor步骤http://www.aygfsteel.com/lifesting/archive/2008/11/22/241723.htmlAlways BaNg.Always BaNg.Fri, 21 Nov 2008 17:27:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/11/22/241723.htmlhttp://www.aygfsteel.com/lifesting/comments/241723.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/11/22/241723.html#Feedback0http://www.aygfsteel.com/lifesting/comments/commentRss/241723.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/241723.html阅读全文

Always BaNg. 2008-11-22 01:27 发表评论
]]>
或许有用的特?Eclipse 3.4 Templates Viewhttp://www.aygfsteel.com/lifesting/archive/2008/08/29/225665.htmlAlways BaNg.Always BaNg.Fri, 29 Aug 2008 15:20:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/08/29/225665.htmlhttp://www.aygfsteel.com/lifesting/comments/225665.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/08/29/225665.html#Feedback0http://www.aygfsteel.com/lifesting/comments/commentRss/225665.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/225665.html


看得出来它是在JDT UI里面定义的,l合了jdt text editor template ?Java开头的category 和custom editor template如SWT开头的category。对于我来说QSWT/Draw2d/Plugin的大量重复性代码就可以通过q个来完成了。将模板的代码插入到~辑器有两种ҎQ一U是直接拖拽到编辑器中,另一U是输入写入?execute"Q按Contxt Assist快捷?一般ؓCtrl+Space)?br />
除此之外QTemplates Viewq可以维护template比如add/remove。Template的gXML字串存放?metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.ui.prefs文g的org.eclipse.jdt.ui.text.custom_templates?br /> 起初我以为Template View好像q没有提供什么NB功能Q在Window->Preferences->Java->-Editor->Templates可以做同L事情Q但E微看了一下代码,发现我错了:

Templates View是PageBookViewQ意味着它跟Properties View/Outline View一P可以Ҏ不同的Editor来显CZ同的PageQ比如上图JDT是JavaTemplatesPageQ如果编写一个DSL Editor需要用到Templates ViewQ承AbstractTemplatesPageQ然后在Editor的getAapter()q回pageQ看Java EditorCZQ?br />
public class CompilationUnitEditor extends JavaEditor implements IJavaReconcilingListener {

    
public Object getAdapter(Class required) {
        
if (SmartBackspaceManager.class.equals(required)) {
            
if (getSourceViewer() instanceof JavaSourceViewer) {
                
return ((JavaSourceViewer) getSourceViewer()).getBackspaceManager();
            }

        }


        
if (ITemplatesPage.class.equals(required)) {
            
if (fTemplatesPage == null)
                fTemplatesPage
= createTemplatesPage();
            
return fTemplatesPage;
        }


        
return super.getAdapter(required);

    
protected JavaTemplatesPage createTemplatesPage() {
        
return new JavaTemplatesPage(this);
    }


}

当然Q大部分Z需要写editorQ我们可以在自己的插仉通过使用扩展Ҏorg.eclipse.ui.editors.templates扩展JDT TemplateQ比如我在GEF目里面加入了GEF TemplateQ这L写讨厌的EditPart/EditPolicy/Command可以少些好多代码?br />


W一张图片看到的swt template是在上图所C的default-swttemplates.xml里面定义好了的?br />
最后想告诉q大Eclipse爱好者的是QEclipse SDK写的代码真工_果然是协作的l晶Q整一个代码宝库,Ҏ不用?strong>代码大全?)?

Always BaNg. 2008-08-29 23:20 发表评论
]]>
GEF~辑器中定点action如paste{的解决办法http://www.aygfsteel.com/lifesting/archive/2008/08/20/223309.htmlAlways BaNg.Always BaNg.Wed, 20 Aug 2008 14:26:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/08/20/223309.htmlhttp://www.aygfsteel.com/lifesting/comments/223309.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/08/20/223309.html#Feedback0http://www.aygfsteel.com/lifesting/comments/commentRss/223309.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/223309.html

即在GMF? DiagramAction也是取得是鼠标点击paste时的位置Q而不是之前右键单d现contxt menu的位|。这?strong>“定点”关键是在选择paste之前右键单击的位|已l被C了,q且对context menu中所有对位置敏感的action都有效,比如merge, duplicate{?br />
下面分三步完成:

1 定义一个接口,为所有位|敏感action提供位置信息

public interface ILocationWare {
    
void setLocation(int x,int y);
}

2 注册一个listener到GEF editor的context menuQ提供位|记忆,q个是关键?/strong>

public class LivingContextMenu extends ContextMenuProvider {

    
private LivingEditor editor;
    
private IMenuListener listener = new IMenuListener(){

        @Override
        
public void menuAboutToShow(IMenuManager manager) {
            Control canvas 
= getViewer().getControl();
            Point cursor_location 
= canvas.getDisplay().getCursorLocation();
            Point relative_canvas 
= canvas.toControl(cursor_location);
            setItemLocation(manager,relative_canvas);
        }

        
private void setItemLocation(IMenuManager manager, Point relative_canvas) {
            IContributionItem[] items 
= manager.getItems();
            
for (int i =0; i < items.length; i++)
            {
                IContributionItem item 
= items[i];
                
if (item instanceof ActionContributionItem)
                {
                    IAction host_action 
= ((ActionContributionItem)item).getAction();
                    
if (host_action instanceof ILocationWare)
                        ((ILocationWare)host_action).setLocation(relative_canvas.x, relative_canvas.y);
                    
                }
                
else if (item instanceof IMenuManager)
                {
                    setItemLocation((IMenuManager)item, relative_canvas);
                }
            }
        }
        
    };
    
public LivingContextMenu(LivingEditor lv) {
        
super((GraphicalViewer)lv.getAdapter(GraphicalViewer.class));
        editor 
= lv;
        addMenuListener(listener);
    }
    .
        .
        .
    @Override
    
public void dispose() {
        removeMenuListener(listener);
        
super.dispose();
    }

}
原理是右键单击后,context menu的listener已经C了鼠标在graphicalviewer control(一般ؓFigureCanvas)叛_位置Qƈ告知l所有context menu中对位置敏感的action?br />
3 对位|敏感的action实现ILocationWare接口Q比如paste?/strong>

public class PasteAction extends SelectionAction implements ILocationWare {
    
    
private Point location = new Point(10,10);
    
private boolean contextTrigged=false;
    
public PasteAction(LivingEditor part) {
        
super(part);
    }

    @Override
    
public void run() {
      
//some operations depend on location
    }
    
    @Override
    
public void setLocation(int x, int y) {
        location.setLocation(x, y);
        contextTrigged 
= true;
    }
    @Override
    
protected void init() {
        
super.init();
        setId(ActionFactory.PASTE.getId());
        ISharedImages workbench_images 
= PlatformUI.getWorkbench().getSharedImages();
        setImageDescriptor(workbench_images.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
        setDisabledImageDescriptor(workbench_images.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED));
    }
}

q种解决同样适用于GMF的DiagramAction?DiagramAction也是Action的子c?





Always BaNg. 2008-08-20 22:26 发表评论
]]>
关于GEF 3.4 PaletteGroup的小误会http://www.aygfsteel.com/lifesting/archive/2008/08/17/222636.htmlAlways BaNg.Always BaNg.Sun, 17 Aug 2008 14:40:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/08/17/222636.htmlhttp://www.aygfsteel.com/lifesting/comments/222636.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/08/17/222636.html#Feedback0http://www.aygfsteel.com/lifesting/comments/commentRss/222636.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/222636.html
1 定义一个HackedGroupEditPart:

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.internal.ui.palette.editparts.GroupEditPart;
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.jface.action.Separator;

public class HackedGroupEditPart extends GroupEditPart {

    
public HackedGroupEditPart(PaletteContainer group) {
        
super(group);
    }
    @Override
    
protected void refreshVisuals() {
        
super.refreshVisuals();
        Insets insets 
= getContentPane().getBorder().getInsets(getContentPane());
        getContentPane().setBorder(
new MarginBorder(insets){
            @Override
            
public void paint(IFigure figure, Graphics graphics, Insets insets) {
                Rectangle r 
= getPaintRectangle(figure, insets);
                r.height
--;
                graphics.setForegroundColor(ColorConstants.buttonDarker);
                graphics.drawLine(r.x, r.bottom(), r.right(), r.bottom());
            }
        });
    }
    
}

2 使用q个加了Ҏ的GroupEditPartQ在~辑器定义里面重?createPaletteViewerProvider ҎQ如下:

public class LivingEditor extends GraphicalEditorWithFlyoutPalette {
.
.
@Override
protected PaletteViewerProvider createPaletteViewerProvider() {
        
return new PaletteViewerProvider(getEditDomain())
        {
            @Override
            
public PaletteViewer createPaletteViewer(Composite parent) {
                
                
//add border for GroupEditPart
                final PaletteEditPartFactory pepf = new PaletteEditPartFactory()
                {
                    @Override
                    
protected EditPart createGroupEditPart(
                            EditPart parentEditPart, Object model) {
                        
return new HackedGroupEditPart((PaletteContainer)model);
                    }
                };
                PaletteViewer pViewer 
= new PaletteViewer(){
                    {
                        setEditPartFactory(pepf);
                    }
                };
                pViewer.createControl(parent);
                configurePaletteViewer(pViewer);
                hookPaletteViewer(pViewer);
                
return pViewer;
            }
        };
    }


}

我的Palette定义Q用了三个PaletteGroupQ但不改一下根本看不出?strong>group之间的分?/strong>Q?br />
public class PaletteProvider {

    
public static PaletteRoot provide(LivingEditor livingEditor) {
        PaletteRoot root 
= new PaletteRoot();
        createStandardTool(root);
        createConnectionTool(root);
        createModelTool(root);
        
return root;
    }

    
private static void createModelTool(PaletteRoot root) {
        PaletteGroup model_group 
= new PaletteGroup("model");
        CombinedTemplateCreationEntry person_entry 
= new CombinedTemplateCreationEntry("Person",
                
"Create a person",
                
new SimpleFactory(Person.class),
                Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, 
"icon/person16.png"),
                Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, 
"icon/person24.png")
                );
        model_group.add(person_entry);
        CombinedTemplateCreationEntry dog_entry 
= new CombinedTemplateCreationEntry("Dog",
                
"Create a dog",
                
new SimpleFactory(Dog.class),
                Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, 
"icon/dog16.gif"),
                Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, 
"icon/dog24.gif"));
        model_group.add(dog_entry);
        root.add(model_group);
    }

    
private static void createConnectionTool(PaletteRoot root) {
        ConnectionCreationToolEntry relation 
= new ConnectionCreationToolEntry("relation",
                
"relation between person and dog",
                
new SimpleFactory(Relation.class),
                Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, 
"icon/connection16.gif"),
                Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, 
"icon/connection24.gif")
                );
        PaletteGroup conn_group 
= new PaletteGroup("relations");
        conn_group.add(relation);
        root.add(conn_group);
        
    }

    
private static void createStandardTool(PaletteRoot root) {
        PaletteGroup std 
= new PaletteGroup("Standard");
        SelectionToolEntry selection 
= new SelectionToolEntry();
        std.add(selection);
        
        root.add(std);
    }

可以看一下修改后的对比:



不过q种Ҏ使用了internal APIQ不适应版本更新Q只适合救急。我已经报告了这?strong>误会
Q?.5应该不会有了?br />
如果你也有这个困扎ͼp试吧?br />




Always BaNg. 2008-08-17 22:40 发表评论
]]>使用EXTSSH协议讉KCVShttp://www.aygfsteel.com/lifesting/archive/2008/07/30/218617.htmlAlways BaNg.Always BaNg.Wed, 30 Jul 2008 02:38:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/07/30/218617.htmlhttp://www.aygfsteel.com/lifesting/comments/218617.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/07/30/218617.html#Feedback0http://www.aygfsteel.com/lifesting/comments/commentRss/218617.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/218617.html
1 生成公私?public/private key)Q通过putty或者cygwin的ssh-kegen生成?br />
步骤 http://alexandria.wiki.sourceforge.net/SSH+Key+Generation
Putty http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
cygwin http://www.cygwin.com/

2 public key _帖到目标网站上?br />
3 在cvs 客户端设|一下,它需要一个ssh客户端,putty可以?br /> 以EclipseZQ?br />
  • wizard: new project-> projects from cvs
  • 输入cvs验证信息
  • 点击config connection preferences,在出现的对话框里面选择“use another connection method type to connect"Q将connect type|ؓextssh。点M面的ssh2配置链接?br />
  • 接着配置ssh,在general tab中选择ssh2 homeQ这儿可以用putty的安装目录,在下面的private key中加入第一步生成的private key?/li>
  • okQ确定?br />



Always BaNg. 2008-07-30 10:38 发表评论
]]>
通过一个小例子看怎样扩展SWThttp://www.aygfsteel.com/lifesting/archive/2008/07/24/217236.htmlAlways BaNg.Always BaNg.Thu, 24 Jul 2008 10:39:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/07/24/217236.htmlhttp://www.aygfsteel.com/lifesting/comments/217236.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/07/24/217236.html#Feedback1http://www.aygfsteel.com/lifesting/comments/commentRss/217236.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/217236.html
  • RCP界面要跟Office 2007/Vista一栗?
  • 我喜Ƣ上一VC版的水晶按钮?
  • 商业版控件支持?
  • 我的RCPE序要定时启动?
q些效果让RCP下的SWT来跟q_相关Q但矛盾的是SWT要跨q_Q提供的API只能是一个^衡?许补充Q更多特性依赖我们对SWTq行扩展。比较常见的是对SWT Win32 APIq行扩展Q因为Windows的图形特性太丰富了,不用白不用啊?br />
下面׃SWT win32 x86来演CZ下这个扩展过E。扩展很单,是在swt的窗口上加一个自定义pȝ菜单Q最l效果如下图Q?br />


首先要有SWT JNI源代码,在Eclipse plug-in目录下找到org.eclipse.swt.win32.win32.x86.source_3.X.X.vXXX.jar(xx为版本号)Q解压羃到c:\build\swt-jniQ解完后在会发现有一堆h和c文gQ其中比较重要的是os, gdip, xpcom,wgl,awtQ用途分别如下:
  • os: 主要的JNIQ用来创建控Ӟ事g处理{?
  • gdip: 与windows的dc交互Q提供swt的gcd功能?
  • xpcom: 供swt调用mozillapd览器如firefox{?
  • wgl: ?D相关Q一般都用不上?
  • awtQ在swt中调用awtQawt也是jni?
了解swt源代码之后,接下来ؓbuild swt做准备?br />
  • 安装vc6Q尝试过用高版本Q但不支持?
  • 安装platform SDK 2003 February版,下蝲地址  늅安装说明SDK解压~安装。不要尝试更新版本,不支持?
  • 安装jdkQ这个无所谓,1.4, 1.5, 1.6都可以?
  • 下蝲gecko-sdk(下蝲地址)Q请务必使用1.8Qswt目前不完全支?.9?

所以的工具都安装或解压之后Q在swt源代码目录下扑ֈbuild.batQ在:X86 label部分做如下配|,其中配置的目录视你的安装而定Q?br />

 1:X86
 2
 3IF x.%DEV_TOOLS%==x. set DEV_TOOLS=c:\PROGRA~1
 4call %DEV_TOOLS%\MICROS~2\vc98\bin\vcvars32.bat
 5IF x.%MSSDK%==x. set MSSDK=%DEV_TOOLS%\MICROS~3
 6call %MSSDK%\setenv /XP32 /RETAIL
 7IF x.%OUTPUT_DIR%==x. set OUTPUT_DIR=..\out
 8IF x.%JAVA_HOME%==x. set JAVA_HOME=%DEV_TOOLS%\Java\jdk1.6.0_06
 9IF x.%XULRUNNER_SDK%==x. set XULRUNNER_SDK=C:\gecko-sdk
10set XULRUNNER_MAKE=make_xulrunner
11IF x.%1==x.x86 shift
12GOTO MAKE


如果你和我一L用的是Sun的JDKQ且版本?.5?.6Q还M改一下和build.bat同目录的make_win32.mak文g?/p>

替换

AWT_LIBS   = "$(JAVA_HOME)\jre\bin\jawt.lib"

?/p>

AWT_LIBS   = "$(JAVA_HOME)\lib\jawt.lib"


一旦配|完成后Q就可以在命令行中运?build.bat x86 来build swt了,如果你的buildq程中出错,使用build x86 clean删除垃圾文gQ然后再查明原因。如果没有错误的话,目录下会生成5个dll文gQ分别是swt-awt-win32-XXXX.dll, swt-gdip-win32-XXXX.dll, swt-wgl-win32-XXXX.dll, swt-win32-XXXX.dll, swt-xulrunner-win32-XXXX.dllQ其中XXXX是视你的Eclipse版本而定?br />
要实现我们想要的效果Q还需针对SWT的消息处理程?WndProc) 扩展一下OSQ那是在就在主H口建立q程中候往pȝ菜单里面加一自定义项。在Win32中,H口建立的消息ؓWM_CREATE(gؓ1)。ؓ单v见,q里只是覆盖了SWT的默认消息处理程序,它通过os.c中的 OS_NATIVE(DefWindowProcW)Ҏ来实现的(?8以后的版本api都是unicodeQ所以只覆盖W版本)

改动之前Q?/p>

 1#ifndef NO_DefWindowProcW
 2JNIEXPORT jint JNICALL OS_NATIVE(DefWindowProcW)
 3    (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
 4{
 5    jint rc = 0;
 6    OS_NATIVE_ENTER(env, that, DefWindowProcW_FUNC);
 7    rc = (jint)DefWindowProcW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
 8    OS_NATIVE_EXIT(env, that, DefWindowProcW_FUNC);
 9    return rc;
10}

11#endif

改动之后Q?br />

 1#ifndef NO_DefWindowProcW
 2
 3#define ID_CUSTOM_MENU 32888
 4
 5const wchar_t* wcTitle=L"Hello";
 6const wchar_t* wcContent=L"World";
 7const wchar_t* wcName = L"Bang";
 8
 9LRESULT CALLBACK MyWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
10{
11    int wmId, wmEvent;
12    HMENU hSysMenu;
13    switch (message)
14    {
15    case WM_CREATE:
16        hSysMenu = GetSystemMenu(hWnd,FALSE);
17        InsertMenuW(hSysMenu,1,MF_BYPOSITION | MF_STRING,ID_CUSTOM_MENU,wcName);
18        break;
19    case WM_DESTROY:
20        PostQuitMessage(0);
21        break;
22    case WM_SYSCOMMAND:
23        wmId = LOWORD(wParam);
24        if (wmId==ID_CUSTOM_MENU)
25            MessageBoxW(hWnd,wcTitle,wcContent,MB_OK);
26        else
27            return DefWindowProcW(hWnd, message, wParam, lParam);
28        break;
29    default:
30        return DefWindowProcW(hWnd, message, wParam, lParam);
31    }

32    return 0;
33}

34
35JNIEXPORT jint JNICALL OS_NATIVE(DefWindowProcW)
36    (JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
37{
38    jint rc = 0;
39    OS_NATIVE_ENTER(env, that, DefWindowProcW_FUNC);
40    rc = (jint)MyWndProc((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
41    OS_NATIVE_EXIT(env, that, DefWindowProcW_FUNC);
42    return rc;
43}

44
45#endif

改动的目的就是在pȝ菜单里面加了一个菜单项 "Bang"Q点d会出?#8220;Hello world” 对话框?br />
重新在swt源目录下q行build x86Q生成的swt是扩展以后的版本?br />
现在我们来测试一下效果,写一个如下所C的HelloWorld1.javaQ放到swt源目录下Q先q行javac HelloWorld1.javaQ再q行java HelloWorld1。不用担心classpath与library pathQbuild之后它们默认都在当前目录下?/p>

import org.eclipse.swt.widgets.*;

public class HelloWorld1 {

public static void main (String [] args) {
    Display display 
= new Display ();
    Shell shell 
= new HelloWorld1 ().open (display);
    
while (!shell.isDisposed ()) {
        
if (!display.readAndDispatch ()) display.sleep ();
    }

    display.dispose ();
}

    
public Shell open (Display display) {
    Shell shell 
= new Shell (display);
    shell.open ();
    
return shell;
}

}


在窗口标题栏单击右键Q点d现的Bang菜单会有如下效果图:



q个例子虽然单,但大致描qC扩展swt的过E,更复杂的扩展{待YOU来实玎ͼ

 



Always BaNg. 2008-07-24 18:39 发表评论
]]>
或许你不知道的一个调试功?/title><link>http://www.aygfsteel.com/lifesting/archive/2008/07/22/216735.html</link><dc:creator>Always BaNg.</dc:creator><author>Always BaNg.</author><pubDate>Tue, 22 Jul 2008 15:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/lifesting/archive/2008/07/22/216735.html</guid><wfw:comment>http://www.aygfsteel.com/lifesting/comments/216735.html</wfw:comment><comments>http://www.aygfsteel.com/lifesting/archive/2008/07/22/216735.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lifesting/comments/commentRss/216735.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lifesting/services/trackbacks/216735.html</trackback:ping><description><![CDATA[调试其实是门很深的学问,在分析Eclipse源代码的q程中积累了很多l验Q但大多与多Ch无用Q现介绍一个简单而非常有用的调试功能及它的适用场合?br /> <br /> 首先看一D代码:<br /> <br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080;"> 1</span> <span style="color: #000000;"><br /> </span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Simple {<br /> </span><span style="color: #008080;"> 3</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {<br /> </span><span style="color: #008080;"> 4</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> max </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">10</span><span style="color: #000000;">;<br /> </span><span style="color: #008080;"> 5</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;"><</span><span style="color: #000000;"> max ; i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /> </span><span style="color: #008080;"> 6</span> <span style="color: #000000;">        {<br /> </span><span style="color: #008080;"> 7</span> <span style="color: #000000;">            simpleAction(i);<br /> </span><span style="color: #008080;"> 8</span> <span style="color: #000000;">        }<br /> </span><span style="color: #008080;"> 9</span> <span style="color: #000000;">    }<br /> </span><span style="color: #008080;">10</span> <span style="color: #000000;">    <br /> </span><span style="color: #008080;">11</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> simpleAction(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i) {<br /> </span><span style="color: #008080;">12</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> tmp </span><span style="color: #000000;">=</span><span style="color: #000000;"> i;<br /> </span><span style="color: #008080;">13</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (i </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">5</span><span style="color: #000000;">)<br /> </span><span style="color: #008080;">14</span> <span style="color: #000000;">            </span><span style="color: #0000ff;">throw</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> NullPointerException(</span><span style="color: #000000;">"</span><span style="color: #000000;">5 is invalid number!</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /> </span><span style="color: #008080;">15</span> <span style="color: #000000;">        System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Number </span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">tmp</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;"> reached!</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /> </span><span style="color: #008080;">16</span> <span style="color: #000000;">    }<br /> </span><span style="color: #008080;">17</span> <span style="color: #000000;">}<br /> </span><span style="color: #008080;">18</span> <span style="color: #000000;"><br /> q段代码非常单,是打印10个数字,但中间一个出了异常,假设我们忘记Eclipse的Exception BreakPoint(在复杂的场合Q不一定抛Exception)Q于是看到控制台除了异常信息之后Q我们可在第7行和W?2行设|断点,看调用i到底发生了什么?br /> <br /> 启动调试后一切正常,除了你必F8 4ơ,因ؓ0-4正常Q但也在断点处,很烦人。有没有可能ȀzL点一ơ呢Q当然可以?br /> <br /> 从控制台看到5 is invalid numberQ那么这ơ调试只针对5Q我们可以简单的讄一下:<br /> <br /> W一步:<br /> <br /> <img alt="" src="http://www.aygfsteel.com/images/blogjava_net/lifesting/setproperties.JPG" width="400" height="336" /><br /> <br /> W二步在出现的对话框内,选中Enable ConditionQ接着输入我们的condition: i==5<br /> <br /> <img alt="" src="http://www.aygfsteel.com/images/blogjava_net/lifesting/inputcondition.JPG" width="626" height="539" /><br /> <br /> OKQ再调试启动SimpleQ发现断ҎzL在i=5的时候,我们可以F6一步一步看到底发生了什么?br /> <br /> q种条g调试在用复杂的框架的时候极其有用,举个例子Q?br /> GMF的AbstractActionHandler有N多子c,你必ȝ接或间接的承它Q同时用它的APIQ在它的API很复杂而我q在探烦</span><span style="color: #000000;">的情况下</span><span style="color: #000000;">Q出错在所隑օQ出错后在AbstractActionHandler的某个API里设|了一断点Q但<span style="color: red;">你只惛_心自己写的子c?/span>Q否?/span><span style="color: #000000;">?/span><span style="color: #000000;">按F8过1分钟Q那么我们可以在上面的condition text里面输入Q?br /> <br /> <strong><span style="font-size: 14pt;"><span style="font-size: 12pt;">this.getClass().getName().equals("foo.bar.MyDiagramAction")</span></span></strong><br /> <br /> 可以省掉很多麻烦?br /> <br /> 当然condition可以写的很复杂,可以针对断点的context写Q意Java代码?br /> <br /> </span></div> <br /> <br /> <img src ="http://www.aygfsteel.com/lifesting/aggbug/216735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lifesting/" target="_blank">Always BaNg.</a> 2008-07-22 23:10 <a href="http://www.aygfsteel.com/lifesting/archive/2008/07/22/216735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>因ؓEclipse包结构改动带来的RCP启动p|?/title><link>http://www.aygfsteel.com/lifesting/archive/2008/05/30/204061.html</link><dc:creator>Always BaNg.</dc:creator><author>Always BaNg.</author><pubDate>Fri, 30 May 2008 05:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/lifesting/archive/2008/05/30/204061.html</guid><wfw:comment>http://www.aygfsteel.com/lifesting/comments/204061.html</wfw:comment><comments>http://www.aygfsteel.com/lifesting/archive/2008/05/30/204061.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lifesting/comments/commentRss/204061.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lifesting/services/trackbacks/204061.html</trackback:ping><description><![CDATA[最q要原来的RCP 3.2的项目从GEF改ؓGMF 2Q只能用Eclipse 3.3来开发,当我把在3.2下运行很好的目倒入?.3启动的时候报告一个很奇怪的错误Q?br /> <br /> !ENTRY org.eclipse.osgi 4 0 2008-05-30 12:54:33.671<br /> !MESSAGE Application error<br /> !STACK 1<br /> java.lang.RuntimeException: <span style="color: red;">Application "org.eclipse.ui.ide.workbench" could not be found in the registry.</span> The applications available are: org.eclipse.jdt.core.JavaCodeFormatter, org.eclipse.update.core.standaloneUpdate, org.eclipse.update.core.siteOptimizer, org.eclipse.equinox.app.error.<br />     at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)<br />     at org.eclipse.equinox.internal.app.EclipseAppContainer.start(EclipseAppContainer.java:98)<br />     at org.eclipse.equinox.internal.app.Activator.addingService(Activator.java:112)<br />     at org.osgi.util.tracker.ServiceTracker$Tracked.trackAdding(ServiceTracker.java:1064)<br />     at org.osgi.util.tracker.ServiceTracker$Tracked.trackInitialServices(ServiceTracker.java:926)<br />     at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:330)<br />     at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:274)<br />     at org.eclipse.equinox.internal.app.Activator.start(Activator.java:54)<br />     at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:999)<br />     at java.security.AccessController.doPrivileged(Native Method)<br />     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993)<br />     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:974)<br />     at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)<br />     at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)<br />     at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)<br />     at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)<br />     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:417)<br />     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189)<br />     at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:340)<br />     at org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37)<br />     at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)<br />     at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369)<br />     at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357)<br />     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)<br />     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)<br />     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)<br />     at org.eclipse.core.internal.runtime.PlatformActivator.startAppContainer(PlatformActivator.java:47)<br />     at org.eclipse.core.internal.runtime.PlatformActivator.start(PlatformActivator.java:32)<br /> ....<br /> <br /> U色字体表示workbenchq个applicationq没有加载到RCP runtime中来QPlugin registry里面没有注册信息Q在3.2?extension org.eclipse.ui.ide.workbench是申明在插gorg.eclipse.ui.ide中的Q通过Plugin Registry SearchQ发现在3.3中,q个extension declaration被挪到插件org.eclipse.ui.ide.application中了Q于?strong><span style="color: red;">在项目的product配置中加入org.eclipse.ui.ide.applicationq个插g依赖Q然后选中q个插gQ点?Add Required Plug-ins"</span></strong>Q再clear, 启动Q运行正常?br /> <br /> 从这个o人恼火的改动来看QEclipse在逐渐向它的两个趋势之一靠拢Q即成ؓ产品开发^?RCP)?另外一个是向OSGi标准看齐)<br /> <br /> <br /> <br /> <img src ="http://www.aygfsteel.com/lifesting/aggbug/204061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lifesting/" target="_blank">Always BaNg.</a> 2008-05-30 13:08 <a href="http://www.aygfsteel.com/lifesting/archive/2008/05/30/204061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows批处理中对带I格路径的处?/title><link>http://www.aygfsteel.com/lifesting/archive/2008/04/23/195102.html</link><dc:creator>Always BaNg.</dc:creator><author>Always BaNg.</author><pubDate>Wed, 23 Apr 2008 07:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/lifesting/archive/2008/04/23/195102.html</guid><wfw:comment>http://www.aygfsteel.com/lifesting/comments/195102.html</wfw:comment><comments>http://www.aygfsteel.com/lifesting/archive/2008/04/23/195102.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lifesting/comments/commentRss/195102.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lifesting/services/trackbacks/195102.html</trackback:ping><description><![CDATA[<p>一般在Windows的Y件大部分安装在c:\ Program Files下面Q比如我机器上的Java位置是C:\Program Files\Java\jdk1.5.0_12Q假如如果你在批处理中调用java或者javawQ会q么写:<br /> <br /> set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12<br /> set EXE_JAVA=%JAVA_HOME%\bin\java<br /> %EXE_JAVA% -version<br /> <br /> 那样会报告一个错误:<br /> <span style="color: red;">'C:\Program' 不是内部或外部命令,也不是可q行的程?br /> 或批处理文g?/span><br /> <br /> 以前Z避免q种问题Q会把把JDK挪到c:\Q但不是一个通用的解军_法,现在可以采用两种方式来解冻I<br /> <br /> 1 加上引号Q表CZ个完整\径,q个在好多服务器批处理中常用到比如jboss,  tomcat?br /> set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12<br /> set EXE_JAVA=<span style="color: red;"><strong>"%JAVA_HOME%"</strong></span>\bin\java <br /> %EXE_JAVA% -version<br /> <br /> 2 转成短\径,q个我认为是最好的解决办法?br /> set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12<br /> <span style="color: #0000ff;"><strong>for %x in ("%JAVA_HOME%") do set JAVA_HOME=%~sx</strong></span><br /> set EXE_JAVA=%JAVA_HOME%\bin\java<br /> %EXE_JAVA% -version<br /> <br /> 需要注意的是,在批处理文g比如 run.bat 中,上面的for语句的变量有<strong>两个%%</strong>受?br /> <span style="color: #0000ff;"><strong>for %%x in ("%JAVA_HOME%") do set JAVA_HOME=%%~sx</strong></span></p> <p><span style="color: #041730;"><span style="color: #7079ff;"><span style="color: #041730;"><span style="color: #7079ff;"><span style="color: #041730;"><span style="color: #7079ff;"><span style="color: #041730;">另:如果只是惛_?strong>固定带空?/strong>的短路径Q有一个快h法,使用cmd定位到某个目录,输入 debug 启动x86虚模式调试,然后quit推出Q那么cmd的\径就变成短\径了Q如下图</span></span></span></span></span></span></span></p> <p><img alt="" src="http://www.aygfsteel.com/images/blogjava_net/lifesting/entercmd.JPG" width="584" height="178" /></p> <p><img alt="" src="http://www.aygfsteel.com/images/blogjava_net/lifesting/quitdebug.JPG" width="647" height="188" /><br /> <br /> <br /> <br /> </p> <img src ="http://www.aygfsteel.com/lifesting/aggbug/195102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lifesting/" target="_blank">Always BaNg.</a> 2008-04-23 15:04 <a href="http://www.aygfsteel.com/lifesting/archive/2008/04/23/195102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在批处理中加载某个目录所有的jarhttp://www.aygfsteel.com/lifesting/archive/2008/04/13/192562.htmlAlways BaNg.Always BaNg.Sun, 13 Apr 2008 07:32:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/04/13/192562.htmlhttp://www.aygfsteel.com/lifesting/comments/192562.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/04/13/192562.html#Feedback8http://www.aygfsteel.com/lifesting/comments/commentRss/192562.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/192562.html问题是每新加入一个jarQ就得改批处理一ơ,再就是每开发一个就得这么设|一ơ?/span>很烦人,perl 创始Q偷懒的E序员才是好E序?)Q我需要一个通用的加载方式?br />
不管linux/windows或其它OSQ都提供一个shell与kernel交互Qƈ且shell都有一个类似的for内置commnd?br />
下面是linux bash的尝?br />
#!/usr/bin/sh

clspath
="bootstrap.jar"
for k in *.jar
do
 clspath
=$clspath:$PWD/$k
 echo 
"current jar is $k."
done
printf "classpath is %s" $clspath

工作的很好,于是在windows同样try了一下batch
@echo off

set clspath
=bootstrap.jar
for %%j in (*.jar) do (
set clspath
=%clspath%;%cd%\%%j
echo current jar is 
%%j.
)
echo classpath is 
%clspath%

很奇怪的是最后的l果却是 classpath is bootstrap.jar;D:\workflow\bingo\lib\servlet-api.jar。很昄batch默认不支?strong>变量q代更改
?br /> google了一下,发现原因Q稍微改一下:
 
 1@echo off
 2
 3set clspath=bootstrap.jar
 4setlocal enabledelayedexpansion
 5for %%j in (*.jar) do (
 6set clspath=!clspath!;%cd%\%%j
 7echo current jar is %%j.
 8)
 9echo classpath is %clspath%
10endlocal


Ҏ一下,可以发现Q?/p>

  1. W?行加上了setlocal enabledelayedexpansionQ即变量延迟展开?
  2. W?0行有一个endlocalQ结束这个设|?
  3. W?行把%classpath%变成?classpath!?

虽然目的辑ֈ了,q是要鄙视微软的dos batchQ实在很弱,不知Powershell怎样?/p>

参考资料:
   setlocal


 



Always BaNg. 2008-04-13 15:32 发表评论
]]>Eclipse文g转码插ghttp://www.aygfsteel.com/lifesting/archive/2008/04/11/192250.htmlAlways BaNg.Always BaNg.Fri, 11 Apr 2008 10:54:00 GMThttp://www.aygfsteel.com/lifesting/archive/2008/04/11/192250.htmlhttp://www.aygfsteel.com/lifesting/comments/192250.htmlhttp://www.aygfsteel.com/lifesting/archive/2008/04/11/192250.html#Feedback18http://www.aygfsteel.com/lifesting/comments/commentRss/192250.htmlhttp://www.aygfsteel.com/lifesting/services/trackbacks/192250.html插g源代码下?/a> (导入插g在workspace中,右键export->Plug-in Development->Deployable plug-ins and fragmentsQ然后生成插件binar文g)
二进制包下蝲   Q?span style="color: #ff0000">因ؓblogjava不许上传jar文gQ请下蝲后将zip后缀改ؓjar后缀然后拯到eclipse/plugins目录)


一般在使用Eclipseq程中会有两U跟文g~码(charset)有关的情况让我们不愉快?br />
1 导入一个项目?/strong>
  假设你的同事做好了一个项目,Z更好的支持国际化Q里面的jsp面都采用UTF-8Q然后发l你Q你导入到Eclipse的workspace中,一般情况下Q在Eclipse中,q些jsp都变成了GBK~码Q你双击打开Q一堆ؕ码。假设你知道原因Q稍微如下设|一下可以解决问题:


(? 讄文g~码)
但是Q这个项目可能包?000个jsp文gQ且你还可能反反复复到q个问题Q真是一个体力活?br />
2 改变一个项目文件的~码
q种情况发生比较,但发生了是一个大N。比如公司有两个团队Q一个开发的目jsp采用UTF-8~码Q另外一个采用GBK~码。一D|间之后,需要整合两个项目,jsp面只能采用一U编码,UTF-8/GBK或其它。有l验的h知道q是一?strong>拯/讄~码/_脓
的过E:
 2.1 某个jsp的内容全部拷贝下来?br />  2.2 如图1所C将~码讄为统一~码如UTF-8?br />  2.3 把设|过~码的jsp文g清空Q然后粘贴?br />  好像解决问题很完,但是Eclipse没有宏,如果文g很多Q比?000个,是一个恐怖的d?br />
因ؓq两个问题老是反复的困扰着我的同事Q相信也困扰了不Java开发者,Eclipse转码插g很好很方便的解决了这个问题,它基于Eclipse 3.3开发,所以编译环境最好采用Eclipse 3.3?br />
下面是用步?br />
step1. 插件com.lifesting.tool.encoding_1.0.0.jar拯到eclipse/plugins目录下,重启Eclipse?br />
step2. 选择某个目Q右键选择propertiesQ然后点击Convert Settingq行转码规则讄Q如下图Q?br />

(? 目转码规则讄)
q个表格有四列,分别?strong>文g后缀Q?strong>文g目前~码Q?strong>转换后的~码Q?strong>是否转换文g内容Q?/strong>如果转换文g内容Q那么对应的是前面所说的W二U情况,不{换文件内容对应的是第一U情c比如图2的{码规则就?span style="color: #0000ff">寚w目的jsp文gQ不原来是什么编码,l一转ؓUTF-8~码Qƈ且同时{换文件内?/span>。可以点d边的Add /Remove按钮来增?删除规则。最后点击Apply来保存设|?br />
step3. 转码
 在设|了转码规的目上,右键选择目Q某几个文gҎ某几个文?当然一个也可以)Q然后点击Lifesting Tools->Set Encoding。插件将完成转码工作。如果我们选择的是目Q将转换整个目Q如果选择的是文g夹,转换文g夹下所有满则的文gQ如果选择的是文gQ只转换文g?br />
(? 转码)
除了q方式外Q我们还可以利用Eclipse的文件搜索功能,搜到的文gq行转码Q如下图Q?br />
(? 在search view里{?
如上图所C,我们搜到了整个workspace的jsp文gQ然后点ȝ色E图标,插g会把所有满结果的文g转码Q每个文件的转换规则依赖它所属项目的转码规则讄?br />


Always BaNg. 2008-04-11 18:54 发表评论
]]>
վ֩ģ壺 Ȩ| | ӱ| | | | | | Ϻӿ| ˮ| | | Ϊ| ɽ| | | | | | Ѿ| ع| ̷| | | | | ˴| ƽ| ̫| Ͷ| | ɽ| | | ֵ| | | | ѽ| | ̨|