<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Leo's Blog

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      13 隨筆 :: 3 文章 :: 18 評(píng)論 :: 0 Trackbacks

    高級(jí)組件(Complex controls)
    Eclipse Forms提供了4個(gè)高級(jí)組件,這樣你能夠構(gòu)建漂亮的UI:expandable composite,section,image hyperlink和form text.讓我們依次仔細(xì)看看它們每一個(gè).

    Expandable composite
    在網(wǎng)頁(yè)中有個(gè)普遍的功能就是讓你有能力把一部分網(wǎng)頁(yè)內(nèi)容用一個(gè)按鈕來(lái)伸縮它.Eclipse Forms提供了這樣一個(gè)組件:ExpandableComposite.

     ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), 
    ExpandableComposite.TREE_NODE|
    ExpandableComposite.CLIENT_INDENT);
    ec.setText("Expandable Composite title");
    String ctext = "We will now create a somewhat long text so that "+
    "we can use it as content for the expandable composite. "+
    "Expandable composite is used to hide or show the text using the "
    "toggle control";
    Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);
    ec.setClient(client);
    td = new TableWrapData();
    td.colspan = 2;
    ec.setLayoutData(td);
    ec.addExpansionListener(new ExpansionAdapter() {
    public void expansionStateChanged(ExpansionEvent e) {
    form.reflow(true);
    }
    });

    這個(gè)composite接受一些風(fēng)格參數(shù)來(lái)控制它的表現(xiàn)行為.TREENODE風(fēng)格會(huì)用樹(shù)組件中的按鈕來(lái)伸展或收縮內(nèi)容,TWISTIE 風(fēng)格則會(huì)創(chuàng)建一個(gè)方行的按鈕.使用EXPANDED,則初始狀態(tài)是伸展的.如果用COMPACT風(fēng)格,組件會(huì)報(bào)告和標(biāo)題寬度相合適的寬度并且呈現(xiàn)收縮狀 態(tài).最后,CLIENT_INDENT會(huì)使內(nèi)容與標(biāo)題對(duì)齊(否則,內(nèi)容是按照組件的寬度).

    ExpandableComposite有責(zé)任處理按鈕組件和標(biāo)題.能擴(kuò)展和收縮的客戶組件必須是expandablecomposite直接的child. 我們需要為組件添加伸展監(jiān)聽(tīng)器并"通知(reflow)"form在狀態(tài)改變時(shí).這是因?yàn)樯煺垢淖兞薳xpandable composite的大小,但是在parent下一次布局前對(duì)parent沒(méi)有任何影響(因此需要強(qiáng)行告訴它).大體上,每次你使form的layout改變時(shí),你需要"reflow"這個(gè)form."Reflowing"這個(gè)form會(huì)讓所有組件按照新的尺寸布局并更新滾動(dòng)條.

    我們的視圖現(xiàn)在看起來(lái)象這樣:
     

    圖11:一個(gè)收縮狀態(tài)的expandable composite例子

    當(dāng)你點(diǎn)擊標(biāo)題的"+"時(shí),composite伸展出并展示客戶:
    圖12:expandable composite呈伸展?fàn)顟B(tài)

    expandable composite用到了一個(gè)內(nèi)部layout,這個(gè)layout實(shí)現(xiàn)了Eclipse Forms ILayoutExtension接口.因此你能夠把它加到使用TableWrapLayout布局的parent上,就象我們上面例子中做的一樣.

    段落(Section)
    Eclipse Forms定制的組件中最versatile之一就是Section.它繼承了expandable composite并介紹了以下的概念:
    1.分隔條(Separator)-一個(gè)能夠在標(biāo)題下創(chuàng)建的separator組件.
    2.描述(Description)-在標(biāo)題下的可選的描述.
    3.標(biāo)題欄(Title bar)-能在標(biāo)題下的一個(gè)標(biāo)題欄(注意separator和標(biāo)題 欄不能同時(shí)使用)

    下面的代碼和expandable composite代碼例子差不多:
     Section section = toolkit.createSection(form.getBody(), 
    Section.DESCRIPTION|Section.TITLE_BAR|
    Section.TWISTIE|Section.EXPANDED);
    td = new TableWrapData(TableWrapData.FILL);
    td.colspan = 2;
    section.setLayoutData(td);
    section.addExpansionListener(new ExpansionAdapter() {
    public void expansionStateChanged(ExpansionEvent e) {
    form.reflow(true);
    }
    });
    section.setText("Section title");
    section.setDescription("This is the description that goes "+
    below the title");
    Composite sectionClient = toolkit.createComposite(section);
    sectionClient.setLayout(new GridLayout());
    button = toolkit.createButton(sectionClient, "Radio 1", SWT.RADIO);
    button = toolkit.createButton(sectionClient, "Radio 2", SWT.RADIO);
    section.setClient(sectionClient);

    這次我們用了TWISTIE風(fēng)格,添加了描述并要求有標(biāo)題欄.這個(gè)視圖看起來(lái)應(yīng)該象這樣:
     

    圖13:一個(gè)有標(biāo)題欄和描述的可伸展的section

    圖片超鏈接(Image hyperlink)
    圖片超鏈接是超鏈接的子類,它在鏈接文字上面添加了一個(gè)圖片.這個(gè)平常的結(jié)合非常有意義.這個(gè)組件可以只是一個(gè)圖片(當(dāng)沒(méi)有設(shè)置任何文字時(shí)),或是圖片加鏈接.圖片在正常,hover,激活時(shí)的狀態(tài)都能設(shè)置.

    下面是一個(gè)用圖片超鏈接的例子:

    圖片14:Eclipse歡迎頁(yè)面中的form
    Form text組件
    使標(biāo)簽(labels),超鏈接,圖片和TableWrapLayout相結(jié)合,能夠創(chuàng)建出復(fù)雜和強(qiáng)大的forms.但是仍然有一些事是很難做的.考慮PDE manifest編輯器的例子:
     
    圖片15:一個(gè)混合了文本,圖片和超鏈接的復(fù)雜Eclipse form例子

    注意圖片,超鏈接和文本是如何混合的.這里使用單獨(dú)的標(biāo)簽和超鏈接組件是很困難的.為了解決這個(gè)問(wèn)題,Eclipse Forms插件提供了一個(gè)強(qiáng)大的文本組件,它有以下功能:
    識(shí)別普通包裹的文本
    識(shí)別普通文本,但是如果以http://開(kāi)頭的文本以超鏈接顯示
    識(shí)別象HTML語(yǔ)言一樣的文本

    在所有模式下,form text組件能識(shí)別一個(gè)字符串或輸入流(input stream).

    識(shí)別普通文本(標(biāo)簽?zāi)J?
    FormText formText = toolkit.createFormText(form.getBody(), true);
     td = new TableWrapData(TableWrapData.FILL);
     td.colspan = 2;
     formText.setLayoutData(td);
     String text = "Here is some plain text for the text to render.";
     formText.setText(text, false, false);
    第二個(gè)參數(shù)設(shè)為false,意思是我們不需要解析html標(biāo)記,第三個(gè)參數(shù)設(shè)為false,意思是我們不需擴(kuò)展URLs.

    自動(dòng)將URLs轉(zhuǎn)化為超鏈接
    現(xiàn)在我們會(huì)在文本中添加一個(gè)超鏈接,并把第3個(gè)參數(shù)設(shè)為true:
    FormText formText = toolkit.createFormText(form.getBody(), true);
     td = new TableWrapData(TableWrapData.FILL);
     td.colspan = 2;
     formText .setLayoutData(td);
     String text = "Here is some plain text for the text to render; "+
       this text is at http://www.eclipse.org web site.";
     formText .setText(text, false, true);
    如果看我們的視圖,會(huì)是這樣:
     

    圖16:Form text組件將URL自動(dòng)轉(zhuǎn)化為超鏈接

    URL被轉(zhuǎn)化為了鏈接.這個(gè)鏈接是包裹的文本中的一部分-我們不需要?jiǎng)?chuàng)建單獨(dú)的超鏈接組件然后試著把它夾在兩個(gè)標(biāo)簽中間.
    因?yàn)閒orm text組件能夠識(shí)別超鏈接,因此它接收我們前面用過(guò)的監(jiān)聽(tīng)器.當(dāng)由toolkit創(chuàng)建時(shí),form text會(huì)將toolkit的超鏈接組設(shè)置作為新超鏈接的設(shè)置.

    轉(zhuǎn)自:http://blog.csdn.net/starshus/archive/2006/02/07/593808.aspx
    posted on 2006-02-10 15:42 Leo 閱讀(256) 評(píng)論(0)  編輯  收藏 所屬分類: Eclipse
    主站蜘蛛池模板: 中文字幕亚洲日韩无线码| 91在线品视觉盛宴免费| 在线a亚洲v天堂网2019无码| 亚洲av成人一区二区三区观看在线| 一个人免费观看视频www| 亚洲精品福利在线观看| 国产a视频精品免费观看| 亚洲一区二区三区国产精品无码| 久热中文字幕在线精品免费| 国产精品亚洲精品| 日韩免费三级电影| 男女猛烈无遮掩视频免费软件| 亚洲无码精品浪潮| 视频免费在线观看| 亚洲视频小说图片| 成人免费网站在线观看| 免费播放国产性色生活片| 久久精品亚洲乱码伦伦中文| 国产一区二区三区免费| 亚洲国产综合精品| 在线永久免费观看黄网站| 国产成人精品免费大全| 91亚洲精品视频| 色吊丝最新永久免费观看网站 | 亚洲电影一区二区| 日本高清在线免费| 青娱乐在线免费观看视频| 好看的电影网站亚洲一区| 国产无人区码卡二卡三卡免费 | 午夜影视日本亚洲欧洲精品一区| 日本黄网站动漫视频免费| 无人视频在线观看免费播放影院| 久久久久亚洲AV片无码| 蜜桃视频在线观看免费网址入口| 免费视频精品一区二区| 久久国产亚洲高清观看| 国产中文字幕免费| 日韩精品极品视频在线观看免费| 亚洲国产成人精品无码区花野真一 | 亚洲mv国产精品mv日本mv| 亚洲国产精品国产自在在线|