大夢想家

          5年開發(fā)工程師,2年實施經(jīng)理,X年售前顧問,......
          數(shù)據(jù)加載中……

          Eclipse3.3新特性體驗之最大化最小化改進

              昨天晚上寫了Eclipse3.3的新特性,心中異常興奮,想快點用到現(xiàn)有的產(chǎn)品開發(fā)框架中,于是開始把玩最大化最小化的新特性。
             研究了整整一下午也沒有發(fā)現(xiàn)有什么方法可以設(shè)置一個Viewer讓它在透視圖啟動的時候自己做最小化,其實剛開始思路是不對的,不應(yīng)該考慮讓Viewer自己有什么變化;Viewer的大小,位置都是在透視圖中設(shè)置的,它自己是沒有任何能力干涉的。
             在Eclipse的新聞組中咨詢了一下PW告訴我org.eclipse.ui.perspectiveExtensions擴展點,提供了定義Viewer最小化的屬性,而且這個屬性是Eclipse3.3新增的,只要有就好辦~有樣學(xué)樣!
             拉出來PerspectiveExtension管理注冊代碼讀讀就明白了~原來:

          1    public void createInitialLayout(IPageLayout layout) {
          2            }
            透視圖類中的IPageLayout的實現(xiàn)類是PageLayout,暈死,在Eclipse的API中竟然沒有人告訴我~
            于是只需要這樣就可以讓一個Viewer在透視圖啟動時做最小化了,如果你用的是Eclipse3.3開發(fā)RCP程序,那么就可以非常方便的給客戶在一個透視圖中展現(xiàn)多個Viewer了~
             代碼如下:
              public void createInitialLayout(IPageLayout layout) {
                  PageLayout pageLayout 
          = (PageLayout)layout;
                  
          //layout.addView(ViewPart1.class.getName(), IPageLayout.LEFT, 0.35f, layout.getEditorArea());
                  pageLayout.addView(ViewPart1.class.getName(), IPageLayout.LEFT, 0.35f, layout.getEditorArea(), true);
              }
             Eclipse開發(fā)團隊其實就是在IPageLayout實現(xiàn)類中追加了一個方法~哎~什么遵循接口編程~他們竟然不修改接口~希望正式版發(fā)布的時候這個問題有修改~

            距離Eclipse3.3正式發(fā)布還有2天~大家拭目以待吧~

          posted @ 2007-06-27 23:00 阿南 閱讀(3233) | 評論 (4)編輯 收藏
          Eclipse3.3的新特性

              本來昨天就要寫這篇Blog了,但是昨天晚上忙著趕文檔,所以只能今天補上。
              離Eclipse3.3正式發(fā)布還有3天的時間,很多新特性,如果要真正的用起來,還需要靜靜的等待。
              Eclipse3.3加入了很多超Cool的功能,我的文章主要是針對于RCP開發(fā)做介紹的,JDT之類的新特性,大家自己體會吧!
              新特性之一:Viewer和Editor的最大化最小化效果變的很Cool;
              這個新特性,可能對開發(fā)人員來說并沒有什么稀奇的,有這個和沒有這個的區(qū)別不大。但是對于RCP的開發(fā),這個是一個非常吸引客戶眼球的地方,他們會瞪大眼睛看,然后自己把玩,最后要求為自己開發(fā)軟件的其他軟件都加入此功能。o(∩_∩)o...哈哈~~夠他們忙活的了!
              新特性之二:當Editor最大化以后,其他的Viewer將以新的列表方式繼續(xù)出現(xiàn)在界面上;
              這個功能,不好解釋,看看抓圖:

                很Cool吧,客戶一定喜歡死了~
                新特性之三:對Forms加入了錯誤信息驗證;
                以前的版本中,F(xiàn)orm使沒有錯誤驗證的,現(xiàn)在則加入了Forms的驗證,看來Form的使用可以更快的深入人心了~

                新特性之四:增強Porperties View的現(xiàn)實效果;

               雖然我不喜歡在項目中使用PorpertiesView(配置起來太麻煩,不適合普通開發(fā)人員使用),但是還是感謝Eclipse的開發(fā)團隊此次對PorpertiesView的增強。
               新特性之五:可控制的啟動畫面;
               在Eclipse3.3中提供了新的擴展點org.eclipse.osgi.service.runnable.StartupMonitor,用于在啟動時使用SWT的代碼。
            新特性之六:高級的Tooltips;
            提供了新的擴展點:org.eclipse.jface.window.Tooltip用于創(chuàng)建更為高級的Tooltips;

            新特性之七:SWT增加時間日期選擇器;
            :-),這個可能是大家早都知道的秘密了~真想不通,時間和日期選擇器早都應(yīng)該提供了,為什么到現(xiàn)在才拿出來!


              新特性之八:新增加2種啟動界面;
          Interactive: A simulated log-in session  使用一個程序登陸界面啟動
          Browser: An embedded HTML browser  使用一個Html作為登陸界面
          Extensible: A dynamic set of image contributions 使用一張圖片作為啟動界面
              在新的PDE中可以對一個product選擇使用那一種啟動界面啟動,這個新功能的增加是非常有意義的,它使得RCP應(yīng)用更加的人性化,不用再在系統(tǒng)啟動中彈出對話框了,讓客戶更加放心的選擇基于RCP的產(chǎn)品了~

          posted @ 2007-06-26 21:00 阿南 閱讀(5306) | 評論 (18)編輯 收藏
          我們是幸福的Blogger~

              因為有DUDU~所以我們一群幸福的Blogger。
              周六www.aygfsteel.com早上10:00準時停止服務(wù)了~,原本我以為可以安安靜靜的等待重新恢復(fù),但是我錯了,從昨天開始就出現(xiàn)了焦躁不安的情緒,總感覺這個世界此時好像少了什么東西,每次打開馬桶都習慣的點擊一下自己的Blog連接,但是在過去的幾十個小時里~我的無法平靜!
              今天一大早起來,下了一個Eclipse3.3RC4玩,發(fā)現(xiàn)Eclipse團隊修改掉了過去的BUG,而且在Eclipse3.3里面為RCP開發(fā)提供了更好的東東~本想開Blog記錄一下,但是轉(zhuǎn)念一下,關(guān)了!只能等待,無聊間,繼續(xù)玩我的大富翁(尋找一下炒股的快感?。┮豢跉馔娴浆F(xiàn)在。上網(wǎng)看看,發(fā)現(xiàn)Blog已經(jīng)搞好了~dudu就是dudu,說話算數(shù)!隨性寫文一篇,紀念一下“關(guān)站2日門”~
              Eclipse3.3的新特性,待明日補上!

          posted @ 2007-06-24 20:23 阿南 閱讀(928) | 評論 (3)編輯 收藏
          RCP實踐之安全模型

               摘要:     感謝大家最近對本系列的關(guān)注和評論,我會繼續(xù)完善內(nèi)容,并且總結(jié)教訓(xùn)寫出更好的東東來。    今天談?wù)勛罱谘芯康腞CP安全模型,其實RCP在誕生之初就是建立在一個非常魯棒的框架之上的---OSGi,它不但有全新的概念,全新的思路,全新的熱插拔技術(shù),還有非常好的安全模型(equinox security 項目好像還在孵化中)...  閱讀全文

          posted @ 2007-06-21 21:52 阿南 閱讀(2086) | 評論 (5)編輯 收藏
          RCP實踐之第三方JAR包

              感謝大家對上一篇文章的拍磚,引起的反響不小,目的達到了~,希望可以繼續(xù)板兒磚橫飛!
              今天來說說第三方JAR包的引入。RCP開發(fā)(或者plugin開發(fā))中最讓人頭疼就是第三方JAR包的引入了,很多初學(xué)的朋友常常頭疼,介紹的文章也不少了,如果搞不定,自己google一下就可以了。
              為什么第三方JAR包會引發(fā)如此眾多的問題,其實并不是Eclipse的錯,而是先入為主的錯。如果你一開始就就接觸Eclipse開發(fā),以后再做不同java開發(fā),你就會覺得java的類加載機制是變態(tài)了~Eclipse的類加載機制是基于OGSI的實現(xiàn),它完成了插件的獨立加載和獨立維護,正是因為這種變態(tài)的類加載機制,才有了我們頭大的第三方j(luò)ar包的問題,也正是這種偉大的類加載機制,才有了即插即用的思路的誕生。
              大多數(shù)簡單的RCP項目都是將所有的JAR包放入本地項目中,然后直接進引入項目路徑,就開始整了,對于小的應(yīng)用,或者開發(fā)人員少的情況下,這樣是可行的,也是便捷的~但是RCP的目標是大型的企業(yè)級應(yīng)用,一個系統(tǒng)由十幾個,幾十個插件組成,是很正常的。所以就要求我們將RCP中所有用到的第三方JAR包統(tǒng)一管理,統(tǒng)一維護,給開發(fā)人員少一些煩惱。
              思路有兩種:
          1.將JAR文件plugin樣子包裝,及新建Plug-in from existing jar archives 項目,然后選擇JAR文件,再取消Unzip the jar archives into the project 選項,然后其它的插件依賴它就可以了。
          2.新建一個不同插件項目,然后把第三方JAR包放入這個項目,然后引入到此項目中,在plugin.xml的runtime配置頁的Exported Packages 選Add... 再選擇要發(fā)布出去的包路徑,然后其他的插件依賴它就可以了。
              官方推薦的方式是第一種,個人認為第一種確實很好,可以非常好而且方便的維護第三方JAR包。但是我還是選擇了第二種方式,理由是,配置文件讀取的問題。
              每一個插件文件都會維護一份屬于自己的配置文件,只有這樣才能做到自我獨立。但是這兩種方式都不能使其他插件項目的配置文件獨立維護,原因就是Eclipse那討厭又強大的類加載機制。
              使用第一種方式,配置文件必須放在你記載的進來的JAR包的里面,這樣Eclipse類加載機才會加載并處理,除非選擇了Unzip the jar archives into the project 選項,并把配置文件和一堆的class文件放在同一目錄下類加載機才能發(fā)現(xiàn)。我想這種方式誰都不會喜歡,要么就是我們要創(chuàng)造自己的JAR包,要么工作臺遍布了各種各樣來自世界各地的class文件。
              使用第二種方式,是通過運行時將需要發(fā)布出來供別人依賴的package發(fā)布出來,而配置文件則需要放在此插件項目中。相對而言,這種比上一種有很大的好處,而且也不是那么難維護。

              以上只是自己項目中的一些總結(jié),關(guān)于第三方JAR包的問題,我查了很多資料,好像逃不過這三種方式(直接在項目中依賴算一種),不知道各位大俠還有沒有更好的辦法,即能處理好第三方JAR包,又能保持各個插件維護自己獨立的配置文件?

          posted @ 2007-06-20 21:43 阿南 閱讀(2932) | 評論 (2)編輯 收藏
          通知:大家寫B(tài)log啦~

              有事沒事寫B(tài)log吧~
          寫B(tài)log的N個理由:
          1.測試鍵盤的耐久程度;
          2.鍛煉一下自己的語言表達能力;
          3.鍛煉一下自己的耐性;
          4.廣交朋友;
          5.發(fā)表一下自己的學(xué)習成果;
          6.加深自己學(xué)習的印象;
          7.記錄一下自己的思想;
          8.想像一下自己也是技術(shù)牛人;
          9.給后人一些指點;
          10.讓尋覓的的老板們早點發(fā)現(xiàn)你;
          11.少干點家務(wù);
          12.放送一下自己;
          13.加個廣告爭點小錢;

          ... ...
          想不出來了,頭都大了~

          posted @ 2007-06-19 21:33 阿南 閱讀(217) | 評論 (0)編輯 收藏
          RCP實踐之軟件架構(gòu)

              RCP還是新興的東西,大家都是用它做做小東東,所以在網(wǎng)上討論RCP深度應(yīng)用的文章還不多。
              在此作文N篇闡述一下我在項目中的實現(xiàn)思路,歡迎大家拍磚。
              首先看一下我們的項目的總體架構(gòu):
           


              這個圖誰都會畫,就不說了,只是說明我們在用RCP而已。
              再看看Client這層是怎么組成的:
              依賴關(guān)系是自上而下的~,當然大家都需要依賴RCP-RUNNTIME本身。
              jar plugin ---將第三方j(luò)ar包包裝成plugin樣子,以供其他的插件依賴,解決了RCP項目對第三方包依賴麻煩的問題,例子:junit插件的實現(xiàn);
              DMP Platform ---DMP是我們產(chǎn)品的名字,所以,不要立即google,在這層我們抽象的定義出大量的公共的CoolBar以及MenuBar,都是尚未實現(xiàn)的,以待業(yè)務(wù)擴充之用,最重要的是在這層中我們集中處理權(quán)限問題,后面會說到;
              業(yè)務(wù)組建(plugin)---其實就是針對于DMP Platform編寫的一大堆的插件,而這些插件則是業(yè)務(wù)相對獨立,這樣就遵守了Eclipse的原則,所有東西都以插件形式提供的,也方便了我們以后對軟件的定制化開發(fā);

              縱觀國內(nèi)外RCP的應(yīng)用(國內(nèi)本身就是很少),很少有RCP應(yīng)用使用Eclipse的思想進行開發(fā)的,都是一個項目直接上~就一個UI層~什么都有!如果是這樣,還不如用VC,VB更簡單~
              Eclipse RCP最好的應(yīng)用還是Eclipse本身,Platform僅僅提供對文件的最簡單的管理能力,而且定義一堆共用的Action,其他東西(JDT,ANT,JUNIT等等)都是以插件形式出現(xiàn)的~只有有了插件,才有了RCP業(yè)務(wù)動態(tài)擴充的動態(tài)組合的新理念。

          posted @ 2007-06-19 21:22 阿南 閱讀(1964) | 評論 (7)編輯 收藏
          插件開發(fā)依賴其他插件時一定要注意!

          插件開發(fā)依賴其他插件時,我們要在plugin.xml的dependency 項的required plugin里面選擇你要依賴的插件~然后如果你啟動就會報錯:

           1!SESSION 2007-06-19 14:10:03.031 -----------------------------------------------
           2eclipse.buildId=unknown
           3java.version=1.5.0_08
           4java.vendor=Sun Microsystems Inc.
           5BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
           6Framework arguments:  -product com.glnpu.dmp.client.platform.product
           7Command-line arguments:  -product com.glnpu.dmp.client.platform.product -data F:\DMP/../runtime-com.glnpu.dmp.client.platform.product -dev file:F:/DMP/.metadata/.plugins/org.eclipse.pde.core/com.glnpu.dmp.client.platform.product/dev.properties -os win32 -ws win32 -arch x86
           8
           9!ENTRY org.eclipse.osgi 2 0 2007-06-19 14:10:04.390
          10!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
          11!SUBENTRY 1 org.eclipse.osgi 2 0 2007-06-19 14:10:04.390
          12!MESSAGE Bundle update@../../DMP/com.glnpu.dmp.client.platform/ was not resolved.
          13!SUBENTRY 2 com.glnpu.dmp.client.platform 2 0 2007-06-19 14:10:04.390
          14!MESSAGE Missing required bundle org.eclipse.ui.views_0.0.0.
          15
          16!ENTRY org.eclipse.osgi 2 0 2007-06-19 14:10:04.390
          17!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
          18!SUBENTRY 1 org.eclipse.osgi 2 0 2007-06-19 14:10:04.390
          19!MESSAGE Bundle update@../../DMP/com.glnpu.dmp.client.platform/ [61] was not resolved.
          20!SUBENTRY 2 com.glnpu.dmp.client.platform 2 0 2007-06-19 14:10:04.390
          21!MESSAGE Missing required bundle org.eclipse.ui.views_0.0.0.
          22
          23!ENTRY org.eclipse.core.runtime 2007-06-19 14:10:04.390
          24!MESSAGE Product com.glnpu.dmp.client.platform.product could not be found.
          25
          26!ENTRY org.eclipse.osgi 4 0 2007-06-19 14:10:04.406
          27!MESSAGE Application error
          28!STACK 1
          29java.lang.RuntimeException: No application id has been found.
          30    at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:56)
          31    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
          32    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
          33    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
          34    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
          35    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          36    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          37    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          38    at java.lang.reflect.Method.invoke(Method.java:585)
          39    at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
          40    at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
          41    at org.eclipse.core.launcher.Main.run(Main.java:977)
          42    at org.eclipse.core.launcher.Main.main(Main.java:952)
          43
          44!ENTRY org.eclipse.osgi 2 0 2007-06-19 14:10:04.406
          45!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
          46!SUBENTRY 1 org.eclipse.osgi 2 0 2007-06-19 14:10:04.406
          47!MESSAGE Bundle update@../../DMP/com.glnpu.dmp.client.platform/ was not resolved.
          48!SUBENTRY 2 com.glnpu.dmp.client.platform 2 0 2007-06-19 14:10:04.406
          49!MESSAGE Missing required bundle org.eclipse.ui.views_0.0.0.
          50
          51!ENTRY org.eclipse.osgi 2 0 2007-06-19 14:10:04.406
          52!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
          53!SUBENTRY 1 org.eclipse.osgi 2 0 2007-06-19 14:10:04.406
          54!MESSAGE Bundle update@../../DMP/com.glnpu.dmp.client.platform/ [61] was not resolved.
          55!SUBENTRY 2 com.glnpu.dmp.client.platform 2 0 2007-06-19 14:10:04.406
          56!MESSAGE Missing required bundle org.eclipse.ui.views_0.0.0.

          其實錯誤的核心是:
          1!ENTRY org.eclipse.osgi 2 0 2007-06-19 14:10:04.406
          2!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
          3!SUBENTRY 1 org.eclipse.osgi 2 0 2007-06-19 14:10:04.406
          4!MESSAGE Bundle update@../../DMP/com.glnpu.dmp.client.platform/ [61] was not resolved.
          5!SUBENTRY 2 com.glnpu.dmp.client.platform 2 0 2007-06-19 14:10:04.406
          6!MESSAGE Missing required bundle org.eclipse.ui.views_0.0.0.
          因為啟動我的插件找不到需要依賴的插件~注意這里的找不到是指OGIS的加載機制找不到~
          處理辦法是什么?
          很簡單~選中你加載進來的插件選擇旁邊的properties...,然后選擇optional就OK了~

          posted @ 2007-06-19 14:18 阿南 閱讀(3354) | 評論 (2)編輯 收藏
          再次理解Eclipse的類加載機制

          今天在寫RCP的基礎(chǔ)運行插件的時候,發(fā)現(xiàn)一個非常有意思的問題:
              我有兩個插件A和B,A是RCP運行主插件,B是普通插件,A依賴于B存在并運行。當我把B打成JAR包,放到A下,做本地依賴的時候,那么Log4j的配置文件加載無誤,但是這樣是違反了Eclipse插件開發(fā)原則(Eclipse最小運行單位是插件)的;我把A和B通過feature進行關(guān)聯(lián),然后在A中依賴B插件,通過product文件啟動A插件的時候,發(fā)現(xiàn)B插件無法加載Log4j的配置文件... ...
              很郁悶的問題哦~為什么?
              因為我一直在使用原來java的類加載機制思考問題,一個類加載機,將加載所有的Class~在Eclipse下則不是這樣的,每一個類加載機只負責一個插件的內(nèi)容加載~多個類加載機之間是沒有關(guān)系的~
              因此,每一個插件在類加載時都是獨立的個體~所以每一個插件下面都需要自行增加一個Log4j配置文件,大家都獨立維護自己的Log4j配置文件~唉,有一個配置文件泛濫的年代啊~


          ps:

          深入剖析 Eclipse 類裝入器

          posted @ 2007-06-18 15:13 阿南 閱讀(1790) | 評論 (0)編輯 收藏
          慶祝一下~RCP開發(fā)者的福音到了!

          今天在Eclipse站上學(xué)習如何使用Maven2管理Eclipse plugin時,偶然google到了~Codehaus上已經(jīng)有了maven2管理Eclipse plugin的插件了~
          http://mojo.codehaus.org/pde-maven-plugin/index.html
          真是踏破鐵鞋無覓處,得來全不費工夫!

          順道說說Baidu,我baidu MOJO的時候,搜索結(jié)果80%竟然是MP3類的~我都暈倒了,我以為我開的是Mp3.baodu.com,百度現(xiàn)在是不是轉(zhuǎn)行轉(zhuǎn)作MP3了?

          posted @ 2007-06-14 22:04 阿南 閱讀(1681) | 評論 (2)編輯 收藏
          僅列出標題
          共13頁: First 上一頁 5 6 7 8 9 10 11 12 13 下一頁 
          主站蜘蛛池模板: 镇江市| 金华市| 义马市| 柏乡县| 库车县| 尼木县| 枣庄市| 荃湾区| 江源县| 全椒县| 揭阳市| 永胜县| 涿鹿县| 睢宁县| 阳新县| 革吉县| 阿克陶县| 西藏| 河间市| 乾安县| 花莲市| 称多县| 遵义县| 漳平市| 海门市| 尼玛县| 营口市| 美姑县| 锦州市| 曲靖市| 偏关县| 扶绥县| 三河市| 寻乌县| 仪陇县| 景东| 环江| 穆棱市| 福清市| 大悟县| 龙口市|