中文字幕天天躁日日躁狠狠躁,最近中文字幕大全免费版在线,最近2019免费中文字幕视频三,亚洲精品无码你懂的,亚洲国产精品成人精品小说

  • 相關(guān)軟件
    >Eclipse 3.0 簡(jiǎn)介和插件開(kāi)發(fā)示例 創(chuàng)建者:webmaster 更新時(shí)間:2005-07-02 01:48

    Eclipse 是一個(gè)很讓人著迷的開(kāi)發(fā)環(huán)境,它提供的核心框架和可擴(kuò)展的插件機(jī)制給廣大的程序員提供了無(wú)限的想象和創(chuàng)造空間。目前網(wǎng)上流傳相當(dāng)豐富且全面的開(kāi)發(fā)工具方面的插件,但是Eclipse已經(jīng)超越了開(kāi)發(fā)環(huán)境的概念,可以想象Eclipse將成為未來(lái)的集成的桌面環(huán)境。目前的Eclipse本身就具備資源管理和外部程序的功能,加上無(wú)所不能的插件,將構(gòu)成一個(gè)豐富多彩的工作環(huán)境而不僅僅是一個(gè)IDE。

      1.Eclipse簡(jiǎn)介和插件開(kāi)發(fā)

      Eclipse 是一個(gè)很讓人著迷的開(kāi)發(fā)環(huán)境,它提供的核心框架和可擴(kuò)展的插件機(jī)制給廣大的程序員提供了無(wú)限的想象和創(chuàng)造空間。目前網(wǎng)上流傳相當(dāng)豐富且全面的開(kāi)發(fā)工具方面的插件,但是Eclipse已經(jīng)超越了開(kāi)發(fā)環(huán)境的概念,可以想象Eclipse將成為未來(lái)的集成的桌面環(huán)境。目前的Eclipse本身就具備資源管理和外部程序的功能,加上無(wú)所不能的插件,將構(gòu)成一個(gè)豐富多彩的工作環(huán)境而不僅僅是一個(gè)IDE。對(duì)于程序員來(lái)說(shuō),沒(méi)有什么比可以隨心所欲的定制的工作環(huán)境更重要,你的決心,勇氣和創(chuàng)造力在與別人分享成果的過(guò)程中一覽無(wú)余。好了,你是不是心動(dòng)了,如果你已經(jīng)對(duì)Eclipse有一定的認(rèn)識(shí),那么,和我一起打造自己的個(gè)性化工作環(huán)境吧,首先我們一起開(kāi)發(fā)一個(gè)天氣預(yù)報(bào)的插件,然后我們打造屬于自己的郵件快速監(jiān)控功能。

      以下的工作基于一定的前提,那就是你是一名Java程序員,你很欣賞并正開(kāi)始使用Eclipse這個(gè)超酷的工作環(huán)境,別忘了下載最新版的Eclipse3.0,本文基于Eclipse3.0開(kāi)發(fā)。

      2.天氣預(yù)報(bào)插件

      如果你已經(jīng)厭倦了總是要登錄某些網(wǎng)站從相關(guān)網(wǎng)頁(yè)上獲取信息,這里有一個(gè)讓你通過(guò)Eclipse快速獲取信息的新方法。讓我們從頭開(kāi)始,做一個(gè)屬于自己的天氣預(yù)報(bào)插件吧,你的Eclipse將具有天氣預(yù)報(bào)功能,是不是很酷呢?

      在這一部分,我們將要實(shí)現(xiàn)一個(gè)Eclipse插件,他可以在任何我們想知道的時(shí)候通過(guò)簡(jiǎn)單的點(diǎn)擊鼠標(biāo)告訴我們本地區(qū)的天氣預(yù)報(bào),這當(dāng)然很刺激。對(duì)于一個(gè)程序員而言,事情就應(yīng)該如此。讓我們開(kāi)始吧,我們首先要定義一個(gè)插件,把他加到菜單和工具欄中。對(duì)于沒(méi)有插件開(kāi)發(fā)經(jīng)驗(yàn)的你,可以參考《開(kāi)發(fā) Eclipse 插件》,樹(shù)立基本的插件開(kāi)發(fā)意識(shí),當(dāng)然,本文將詳細(xì)的輔助你完成這一創(chuàng)造性的工作。

      2.1最基礎(chǔ)的插件

      打開(kāi)菜單 File -> New-> Other ->Plug-in Project,輸入項(xiàng)目名稱(chēng),next出現(xiàn)對(duì)話(huà)框,只要在插件名處輸入"muplugin",next 以后選擇 "Hello,World"的插件模板你可以直接新建一個(gè)名為myplugin的最簡(jiǎn)單的插件,但其實(shí)我們的天氣預(yù)報(bào)并不比它復(fù)雜多少,建完改插件以后的效果如下圖。







      現(xiàn)在,將項(xiàng)目作為運(yùn)行時(shí)工作臺(tái)運(yùn)行(run - run as runtime workbench),在一個(gè)全新的Eclipse窗口中,通過(guò)點(diǎn)擊菜單 sample menu 的sample Action或者工具欄中的圓形Eclipse 圖標(biāo),你將看到如下效果的對(duì)話(huà)框。







      到此為止,天氣預(yù)報(bào)插件的原始版做成了,通過(guò)修改plugin.xml,我們將菜單改成中文形式,需要修改的地方就2處,詳見(jiàn)表格。





    <actionSet label="Sample Action Set" visible="true" id="myplugin.actionSet">
    <menu label="我的空間" id="sampleMenu">
    <separator name="sampleGroup">
    </separator>
    </menu>
    <action label="天氣預(yù)報(bào)" icon="icons/sample.gif" class="myplugin.actions.SampleAction"
    tooltip="Hello, Eclipse world" menubarPath="sampleMenu/sampleGroup"
    toolbarPath="sampleGroup" id="myplugin.actions.SampleAction">
    </action>

      此時(shí)在運(yùn)行時(shí)工作臺(tái),我們的菜單已經(jīng)改變。







      2.2用VisualEditer制作天氣預(yù)報(bào)對(duì)話(huà)框

      雖然菜單是天氣預(yù)報(bào),但是我們需要的不是hello Eclispe對(duì)話(huà)框,我們需要的是告訴我們天氣的對(duì)話(huà)框,當(dāng)然需要我們從頭開(kāi)始,于是我們需要重新構(gòu)建一個(gè)對(duì)話(huà)框,這個(gè)就需要 Visual Editor來(lái)幫助進(jìn)行界面的開(kāi)發(fā)。我們將使用Visual Editor實(shí)現(xiàn)一個(gè)Swing對(duì)話(huà)框,當(dāng)然只用VE做一個(gè)對(duì)話(huà)框是有點(diǎn)大材小用,但是作為起點(diǎn),已經(jīng)合適了。

      首先構(gòu)建Visual Editer開(kāi)發(fā)環(huán)境(讀者可參考相關(guān)資料),當(dāng)一切準(zhǔn)備齊全,鼠標(biāo)右鍵點(diǎn)擊PackgeExpoler中的 "muplugin.actions"java文件,從彈出式菜單中選擇 new->other->VisualClass,新建一個(gè)可視化的類(lèi),彈出界面如下圖:







      選擇next,然后在name中輸入WeatherDialog,這個(gè)就是我們用來(lái)顯示天氣預(yù)報(bào)的dialog

      選擇該對(duì)話(huà)框的超類(lèi)為javax.swing.JDiaog,點(diǎn)擊Finish按鈕。等待一段時(shí)間后,我們的對(duì)話(huà)框就基本生成了,鼠標(biāo)點(diǎn)擊左上角圖標(biāo),直接輸入天氣預(yù)報(bào)就是對(duì)話(huà)框的標(biāo)題,同時(shí) 我們可以看到左側(cè)的VisualEditor面板。







       然后我們將該對(duì)話(huà)框于與剛才的天氣預(yù)報(bào)菜單連接找到SampleAction的run函數(shù),如下所示:





    public void run(IAction action) {
     MessageDialog.openInformation(
      window.getShell(),"Myplugin Plug-in", "Hello, Eclipse world");
    }

      替換成如下代碼





    public void run(IAction action)
    {
    WeatherDialog wd=new WeatherDialog();
    wd.setSize(400, 335);
    wd.show();
    }

      此時(shí),點(diǎn)擊菜單運(yùn)行,我們的對(duì)話(huà)框看起來(lái)象這個(gè)樣子,在此基礎(chǔ)上我們還要在上面增加天氣預(yù)報(bào)信息。







      2.3增加天氣預(yù)報(bào)功能







      下面的部分是重點(diǎn),我們將使用具有解析Html功能的Swing組件JEditPane,來(lái)獲取網(wǎng)絡(luò)上的現(xiàn)成的天氣預(yù)報(bào)信息,根據(jù)上圖,從 VisualEditor的面板中Swing Components組點(diǎn)擊JEditPane,加入到對(duì)話(huà)框中。并修改對(duì)話(huà)框代碼使得最終的代碼如下:





    /*
    * Created on 2004-9-23
    * */
    package myplugin;


    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;

    import javax.swing.JDialog;
    import javax.swing.JEditorPane;

    /**
    * <p>Title: WatherDialog</p>
    * <p>Description: 這個(gè)是對(duì)話(huà)框類(lèi),用于顯示指定城市的當(dāng)天的天氣預(yù)報(bào)</p>
    * <p>Copyright: Copyright (c) 2004</p>
    * <p>Company:UF SOFT</p>
    * @author 趙勇
    * @version 1.0
    */
    public class WatherDialog extends JDialog
    {
    String city="北京";

    private JEditorPane jEditorPane = null;
    /**
    * This method initializes
    * /
    public WatherDialog(String city)
    {
    super();
    this.city=city;
    initialize();
    }
    /**
    * This method initializes this
    * @return void
    */
    private void initialize()
    {
    this.setContentPane(getJEditorPane());
    try
    {
    //構(gòu)建URL對(duì)象
    URL url =new URL("http://weather.news.sina.com.cn//cgi-bin/figureWeather/simpleSearch.cgi?city="+city);
    String temp="";
    BufferedReader in
    = new BufferedReader(new InputStreamReader(url.openStream()));
    //使用openStream得到一輸入流并由此構(gòu)造一個(gè)BufferedReader對(duì)象
    String inputLine;
    //從輸入流不斷的讀數(shù)據(jù),直到讀完為止
    while ((inputLine = in.readLine()) != null)
    temp=temp+inputLine+"\n";
    //關(guān)閉輸入流
    in.close();
    String weather
    =temp.substring ( temp.indexOf( "<body"),
    temp.lastIndexOf( "body>")+5);

    this.jEditorPane .setText(weather);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    this.setTitle("天氣預(yù)報(bào)");
    this.setSize(400, 166);

    }
    /**
    * This method initializes jEditorPane
    *
    * @return javax.swing.JEditorPane
    */
    private JEditorPane getJEditorPane()
    {
    if (jEditorPane == null)
    {
    jEditorPane = new JEditorPane();
    jEditorPane.setContentType( "text/html");
    }
    return jEditorPane;
    }
    } // @jve:decl-index=0:visual-constraint="70,19"

      以上代碼中最關(guān)鍵的部分就是對(duì)話(huà)框中的JEditorPane對(duì)象,在初始化時(shí),從一個(gè)URL 獲取天氣預(yù)報(bào)信息,表現(xiàn)為Html標(biāo)記片段,不用解析,直接調(diào)用JEditorPane的setText 方法,就可以將Html格式的信息直接按解析過(guò)的方式顯示,也就是天氣預(yù)報(bào)信息了,

      此時(shí)Action中的調(diào)用需要做修改





    public void run(IAction action)
    {
    WeatherDialog wd=new WeatherDialog("北京");
    wd.setSize(400, 335);
    wd.show();
    }

      現(xiàn)在以運(yùn)行時(shí)工作臺(tái)的方式運(yùn)行,點(diǎn)擊天氣預(yù)報(bào)菜單,可以看到下圖:








      如果你在上?;蛘?a target=_blank>其他城市,試著修改city參數(shù)為"上海",再次運(yùn)行,你將發(fā)現(xiàn),你仍然能夠得到該城市的天氣預(yù)報(bào)(這里我們從網(wǎng)站上提取的信息,有點(diǎn)投機(jī)取巧了)。值得注意的是,Xmethod網(wǎng)站提供了一個(gè)天氣預(yù)報(bào)的WebService,可惜只有美國(guó)的城市,不然我們可以使用Web Service調(diào)用獲取天氣預(yù)報(bào),將會(huì)更酷。

      現(xiàn)在運(yùn)行是工作臺(tái)已經(jīng)具備了天氣預(yù)報(bào)的功能,還需要更進(jìn)一步,將改插件導(dǎo)出發(fā)布,拷貝到Eclipse根目錄的plugins目錄中,重新啟動(dòng)(具體參見(jiàn)Eclipse幫助)。現(xiàn)在你自己的Eclipse,就具備了天氣預(yù)報(bào)的功能,只要你點(diǎn)擊鼠標(biāo),就可以在編程之余輕松的獲取天氣信息。 除非你的老板認(rèn)為你在工作時(shí)間隨時(shí)了解天氣情況不是一個(gè)好主意,我認(rèn)為你完全可以將這個(gè)插件納入個(gè)人收藏的插件之列。你也可以在此基礎(chǔ)上擴(kuò)展,增加一些配置文件和屬性設(shè)置,定制出滿(mǎn)足自己要求的插件。如果能夠增加信息的自動(dòng)過(guò)濾和篩選,那將是一次很愉快的體驗(yàn),如果你有時(shí)間和興趣,不妨一試。


     3.郵件快速監(jiān)控插件

      現(xiàn)在你的工作因?yàn)镋clipse而更加愜意,更具創(chuàng)造力,那么你還有什么不滿(mǎn)?你是否厭倦了各種郵件客戶(hù)端隨時(shí)隨地的騷擾你呢?你希望你在高興的時(shí)候適時(shí)的了解一下郵件的概況?好了,既然想到了為什么猶豫呢,因?yàn)槟闶浅绦騿T,你就是要用Eclipse享受完全DIY的樂(lè)趣。

      3.1生成插件

      本部分我們將在以上myplugin插件的基礎(chǔ)上增加一個(gè)郵件過(guò)濾顯示的對(duì)話(huà)框,類(lèi)似的我們通過(guò)VisualEditer創(chuàng)建一個(gè)名為MailDialog的對(duì)話(huà)框,并增加一個(gè)JEditPane用來(lái)顯示郵箱中我們關(guān)注的信息。

      修改plugin.xml,增加一個(gè)"我的郵件"菜單





    <action
    label="郵件信息"
    icon="icons/sample.gif"
    class="myplugin.actions.MailAction"
    tooltip="郵件信息"
    menubarPath="sampleMenu/sampleGroup"
    toolbarPath="sampleGroup"
    id="myplugin.actions.MailAction">
    </action>

      現(xiàn)在,你知道要?jiǎng)?chuàng)建一個(gè)MailAction的Action類(lèi),并在在Run中增加如下代碼





    MailConfig mail=new MailConfig();

    String popServer="server";
    String popUser="zhaoyong";
    String popPassword="1234";

    //設(shè)置需要過(guò)濾的關(guān)鍵字:發(fā)件人和郵件主題
    String [] strFrom=new String[] {"zhaoyong"};
    String [] strSubject=new String[] {"測(cè)試"};

    MailConfig[] mc =new MailConfig [] { mail };
    MailDialog md=new MailDialog(mc);
    System.err.println("run run run ") ;
    md.setSize(400, 335);
    md.show();

      以上的代碼編譯不會(huì)通過(guò),但是別著急,慢慢來(lái),很快了。

      3.2構(gòu)建郵件監(jiān)控對(duì)話(huà)框

      當(dāng)然你需要建立一個(gè)MailConfig類(lèi)用來(lái)表示一個(gè)郵箱的具體設(shè)置已及相關(guān)信息,這里就不在累述說(shuō)明,詳情參見(jiàn)參考資料中的代碼。需要說(shuō)明的式MailConfig除了要記錄一個(gè)郵箱的地址,用戶(hù)名和密碼外,還提供2個(gè)關(guān)鍵字?jǐn)?shù)組,如果為空,不加過(guò)濾,如果關(guān)鍵字有值,系統(tǒng)會(huì)根據(jù)發(fā)件人和郵件標(biāo)題中是否包含關(guān)鍵字來(lái)進(jìn)行顯示郵件信息,已保證你的絕對(duì)自由。

      首先我們需要實(shí)現(xiàn)一個(gè)MailConfig類(lèi),表示郵件配置,每個(gè)MailConfig的對(duì)象代表一個(gè)郵件帳戶(hù),我們的系統(tǒng)將能顯示多個(gè)郵箱的配置,每個(gè)MailConfig中使用一個(gè)數(shù)組來(lái)保存需要過(guò)濾的收件人和郵件地址。

      MailConfig類(lèi)的中的變量如下:





    String popServer;
    String popUser;
    String popPassword;

    //設(shè)置需要過(guò)濾的關(guān)鍵字:發(fā)件人和郵件主題

    String [] strFrom;
    String [] strSubject;

    //是否顯示郵件內(nèi)容
    boolean isViewContent=false;

      同樣,我們將使用一個(gè)對(duì)話(huà)框來(lái)顯示郵件信息,MailDialog需要引用javaMail.jar,和activation.jar這兩個(gè)類(lèi)包,確保已經(jīng)有這兩個(gè)類(lèi)包并加入到項(xiàng)目的類(lèi)路徑中。最后的MailDialog代碼如下:





    package myplugin;


    import java.io.IOException;
    import java.util.Properties;

    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Store;
    import javax.mail.internet.InternetAddress;
    import javax.swing.JDialog;
    import javax.swing.JEditorPane;
    import javax.swing.JTextPane;
    /**
    * @author zhaoyong
    *
    * TODO To change the template for this generated type comment go to
    * Window - Preferences - Java - Code Style - Code Templates
    */
    public class MailDialog extends JDialog
    {

    private JEditorPane jEditorPane = null;
    private JTextPane jTextPane = null;

    //可以顯示多個(gè)郵件配置
    MailConfig[] mc= null;


    /**
    * This method initializes
    * 構(gòu)造函數(shù)
    * @param mc : 需要顯示的多個(gè)郵箱配置對(duì)象。
    */
    public MailDialog(MailConfig[] mc)
    {

    super();

    if(mc!=null)
    this.mc = mc;
    else
    System.err.println("郵件配置錯(cuò)誤!") ;

    initialize();
    }
    /**
    * This method initializes this
    * 初始化
    * @return void
    */
    private void initialize()
    {
    try
    {
    //設(shè)定顯示內(nèi)容的面板
    this.setContentPane(getJTextPane());
    //取得所有的新郵件信息
    String s= getAllMailInfo();
    //將信息顯示在對(duì)話(huà)框中
    this.jTextPane .setText(s);

    this.setTitle("郵件信息");
    this.setSize(251, 100);
    }
    catch (Exception e)
    {
    //發(fā)生錯(cuò)誤顯示錯(cuò)誤信息
    this.jTextPane .setText(e.toString());
    e.printStackTrace();
    }

    }
    /**取得所有的郵箱的需要監(jiān)控的郵件信息
    *
    * @return String
    */
    private String getAllMailInfo()
    {
    String allMailInfo="";

    if (mc.length <1)
    allMailInfo="沒(méi)有配置郵箱!";
    else
    {
    for(int i=0;i<mc.length;i++)
    {
    //循環(huán)獲取每個(gè)郵箱的郵件信息
    allMailInfo=allMailInfo+getMailInfo(mc[i]);
    }
    }
    //還沒(méi)有收到相關(guān)的郵件
    if (allMailInfo.trim().length() ==0)
    allMailInfo="未檢測(cè)到相關(guān)新郵件!";
    return allMailInfo;

    }
    /*
    *得到一個(gè)郵箱中滿(mǎn)足條件的所有新郵件的字符串形式
    **/
    private String getMailInfo(MailConfig mc)
    {
    //最終輸出的郵件信息
    String mailInfo="";

    //每個(gè)郵箱服務(wù)器上的Store和Folder對(duì)象
    Store store=null;
    Folder folder=null;

    try
    {

    Properties props = System.getProperties();
    //與郵件服務(wù)器生成一個(gè)Session
    Session session = Session.getDefaultInstance( props,null);

    //給出服務(wù)器,用戶(hù)名,密碼連接服務(wù)器
    store = session.getStore("pop3");
    store.connect(mc.getPopServer(), mc.getPopUser(),mc.getPopPassword());

    //取得默認(rèn)的郵件Folder
    folder = store.getDefaultFolder();
    if (folder == null)
    throw new Exception("No default folder");

    //取得收件箱
    folder = folder.getFolder("INBOX");
    if (folder == null)
    throw new Exception("No POP3 INBOX");

    //以只讀方式打開(kāi)收件箱
    folder.open(Folder.READ_ONLY);

    //獲取所有新郵件并處理
    Message[] msgs = folder.getMessages();

    for (int i = 0; i < msgs.length; i++)
    {
    Message message= msgs[i];
    //取得每封郵件的信息,需要引用MailConfig對(duì)象進(jìn)行關(guān)鍵字過(guò)濾
    mailInfo = mailInfo+ getMessageInfo( message,mc);
    }

    }
    catch (Exception ex)
    {
    ex.printStackTrace();
    }
    finally
    {
    //安全的關(guān)閉郵件服務(wù)器資源
    try
    {
    if (folder!=null) folder.close(true);
    if (store!=null) store.close();
    }
    catch (Exception ex2) {ex2.printStackTrace();}
    }
    return mailInfo;
    }

    /**
    * 得到一封郵件的信息,需要根據(jù)MailConfig過(guò)濾
    * @param mailInfo
    * @param message
    * @return 郵件信息
    * @throws MessagingException
    * @throws IOException
    */
    private String getMessageInfo( final Message message ,final MailConfig mc)
    throws MessagingException, IOException
    {
    //返回的改郵件信息
    String mailInfo="";

    String from=((InternetAddress)message.getFrom()[0]).getPersonal();

    if (from==null)
    from=((InternetAddress)message.getFrom()[0]).getAddress();

    String subject=message.getSubject();

    //如果滿(mǎn)足過(guò)濾信息則顯示,否則返回空
    if(isElementinString(from,mc.getStrFrom())
    ||isElementinString(subject,mc.getStrSubject()) )
    {
    mailInfo=mailInfo+"發(fā)件人 : "+from+"\n";
    mailInfo=mailInfo+"郵件主題 : "+subject+"\n";
    mailInfo=mailInfo+"發(fā)送時(shí)間 : "+message.getSentDate() +"\n";

    //如果顯示內(nèi)容,則打印內(nèi)容
    if(mc.isViewContent)
    mailInfo=mailInfo+message.getContent() +"\n";

    mailInfo=mailInfo+"------------------------------------\n";
    }
    return mailInfo;
    }

    private JTextPane getJTextPane()
    {
    if (jTextPane == null)
    {
    jTextPane = new JTextPane();
    }

    return jTextPane;
    }

    /**
    * 判斷目標(biāo)關(guān)鍵字?jǐn)?shù)組中是否有指定的字符串,進(jìn)行過(guò)濾
    * @param targetStr :
    * @param keys :
    * @return 如果有,返回true, 否則返回false
    */

    private boolean isElementinString(String targetStr,String [] keys)
    {
    //沒(méi)指定過(guò)濾條件,顯示所有
    if (keys==null)
    return true;
    //指定字符串為空,直接返回false
    if (targetStr==null)
    return false;
    for(int i=0;i<keys.length ;i++)
    {
    if (targetStr.indexOf(keys[i])>-1)
    return true;
    }
    return false;
    }

    }
    // @jve:decl-index=0:visual-constraint="10,10"--說(shuō)明,這是Visual Editor添加的控制信息

      以上代碼的注釋已經(jīng)保證你能夠看清楚,這里就不加累述,有興趣的可以自己試試,體驗(yàn)一切盡在掌握的快感。當(dāng)然這個(gè)例子做的實(shí)在簡(jiǎn)單,因此也為你的進(jìn)一步開(kāi)發(fā)留有足夠的余地。

      3.3 打包和發(fā)布

      到此,在mypulgin中增加了郵件信息菜單和對(duì)話(huà)框,系統(tǒng)的plugin.xml如下:





    <?xml version="1.0" encoding="UTF-8"?>
    <?eclipse version="3.0"?>
    <plugin
    id="myplugin"
    name="Myplugin Plug-in"
    version="1.0.0"
    provider-name=""
    class="myplugin.MypluginPlugin">

    <runtime>
    <library name="myplugin.jar">
    <export name="*"/>
    </library>
    <library name="lib/javaMail.jar">
    <export name="*"/>
    </library>
    <library name="lib/activation.jar">
    <export name="*"/>
    </library>
    </runtime>

    <requires>
    <import plugin="org.eclipse.ui"/>
    <import plugin="org.eclipse.core.runtime"/>
    </requires>

    <extension
    point="org.eclipse.ui.actionSets">
    <actionSet
    label="Sample Action Set"
    visible="true"
    id="myplugin.actionSet">
    <menu
    label="我的空間"
    id="sampleMenu">
    <separator
    name="sampleGroup">
    </separator>
    </menu>
    <action
    label="天氣預(yù)報(bào)"
    icon="icons/sample.gif"
    class="myplugin.actions.SampleAction"
    tooltip="Hello, Eclipse world"
    menubarPath="sampleMenu/sampleGroup"
    toolbarPath="sampleGroup"
    id="myplugin.actions.SampleAction">
    </action>
    <action
    label="郵件信息"
    icon="icons/sample.gif"
    class="myplugin.actions.MailAction"
    tooltip="郵件信息"
    menubarPath="sampleMenu/sampleGroup"
    toolbarPath="sampleGroup"
    id="myplugin.actions.MailAction">
    </action>
    </actionSet>
    </extension>
    </plugin>

      實(shí)際上,我們?cè)谝粋€(gè)插件中加入了2個(gè)功能,因此就實(shí)現(xiàn)了我們的開(kāi)發(fā)環(huán)境的自我擴(kuò)展和定制。同樣,參考Eclipse的幫助,你可以輕松的再次將插件打包導(dǎo)出,并將其加入自己的Eclipse 的plugins目錄(可能需要解壓縮),或通過(guò)help菜單的Update選項(xiàng)進(jìn)行安裝,注意導(dǎo)出時(shí)需要選定相關(guān)的類(lèi)包。重新啟動(dòng),你將發(fā)現(xiàn)自己的IDE已經(jīng)多了自己的菜單,開(kāi)發(fā)環(huán)境已經(jīng)隨著自己的意愿在改變了,程序員天生的滿(mǎn)足感油然而生。

      現(xiàn)在,你可以在需要的時(shí)候點(diǎn)擊菜單,了解你希望監(jiān)控的郵件情況或者最近的天氣情況,一切輕松的盡在掌握,Eclipse的插件,就是這樣全能。

      4.總結(jié)

      那么,聰明的你有沒(méi)有發(fā)現(xiàn)什么問(wèn)題,對(duì),上面的東西太粗糙,太簡(jiǎn)單了,你可以做進(jìn)一步的優(yōu)化設(shè)計(jì)和功能加強(qiáng),比如,自己增加郵件配置文件而不是寫(xiě)在代碼里面,動(dòng)態(tài)監(jiān)控彈出郵件預(yù)警(通過(guò)事先設(shè)定的緊急狀態(tài)),你也許還會(huì)想起來(lái)很多的新的主意,比如我為什么不能有個(gè)能看電影的插件?或是Eclipse中飄出動(dòng)聽(tīng)的音樂(lè)?別急,這些不一定需要你親手去做,http://sourceforge.net/projects/rocexwang/ 有一個(gè)播放器插件,但是現(xiàn)在僅能播放音樂(lè),國(guó)外已經(jīng)有人用Eclipse開(kāi)發(fā)游戲,也有人用Eclipse來(lái)做MIS系統(tǒng)的。http://www.matrix.org.cn/forum_view.asp?forum_id=25&view_id=10510 有一個(gè)國(guó)人開(kāi)發(fā)的俄羅斯方塊游戲,雖然簡(jiǎn)單了一點(diǎn)。當(dāng)然,通過(guò)網(wǎng)址http://eclipse-plugins.2y.net/eclipse/index.jsp和http://www.eclipseplugincentral.com/你可以找到很多的插件,如果你知道什么更好的插件,請(qǐng)告訴我。

      Eclipse提供了一個(gè)純的框架和插件結(jié)構(gòu),使得開(kāi)發(fā)任何功能的插件都能成為現(xiàn)實(shí)。本文介紹了2個(gè)有趣的Eclipse插件的開(kāi)發(fā),可以使我們的工作環(huán)境增加了兩個(gè)可愛(ài)的小功能,同時(shí)也使得你具備了基礎(chǔ)的插件開(kāi)發(fā)能力,借助Eclipse的強(qiáng)大功能,從此你可以把你的任何想法變?yōu)楝F(xiàn)實(shí)。同時(shí)請(qǐng)保持與別人的交流,我會(huì)很樂(lè)意了解你的新奇的插件,并收藏和學(xué)習(xí)任何好的插件,打造一個(gè)完全屬于自己的個(gè)性化的開(kāi)發(fā)環(huán)境。Eclipse將在不久的將來(lái)成為一個(gè)全能的Platform,這一點(diǎn)在全世界數(shù)以萬(wàn)計(jì)的開(kāi)發(fā)人員的手中,正一點(diǎn)一點(diǎn)變?yōu)楝F(xiàn)實(shí)。

    相關(guān)文章
    本頁(yè)查看次數(shù):