久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

使用Eclipse RCP創(chuàng)建視圖并實(shí)現(xiàn)視圖間消息傳遞

 LibraryPKU 2014-04-02

最近在客戶端軟件開發(fā)過程中,,使用到了Eclipse RCP的若干技術(shù),有種相見很晚的感覺,。盡管自己在日常開發(fā)中也使用了SWT中的若干技術(shù),,在運(yùn)用了Theme之后看起來也讓人眼前一亮,但是比起RCP 就相當(dāng)于閉門造車了,,例如下面兩幅圖片,,就是SWT技術(shù)和RCP技術(shù)開發(fā)出的不同界面,后者看起來是不是很炫呢,,用流行的話來講,,就是使用戶的體驗(yàn)更 rich了,呵呵,。
SWT界面:

Eclipse RCP界面:



好了,,既然Eclipse RCP開發(fā)出的界面如此漂亮,那我們就可以借助Eclipse RCP平臺(tái)中各類UI組件來改善應(yīng)用程序上的UI缺陷,,通過RCP平臺(tái)上的各類豐富的GUI視圖,,來打造賞心悅目的應(yīng)用程序。但是在RCP開發(fā)的過程 中,,UI視圖之間是相互依賴的,,需要進(jìn)行交互,目前國內(nèi)教程對(duì)這一步驟往往語焉不詳,,下文就以實(shí)例的形式詳細(xì)介紹Eclipse RCP View視圖之間的交互機(jī)制,,并總結(jié)了開發(fā)過程中的一些注意事項(xiàng),,避免大家繞了彎路,呵呵,。

(一)下載最新的Eclipse RCP開發(fā)環(huán)境
開發(fā)RCP的首要前提是下載RCP開發(fā)環(huán)境,,從http://www./上 可以下載,下載之后是個(gè)zip格式文件,,解壓到任何目錄下都可以直接運(yùn)行,,前提是裝好jdk。在Eclipse的官方網(wǎng)站上,,針對(duì)不同的開發(fā)環(huán)境,,已經(jīng)為 我們打好了不同的package,只要下載專門用來開發(fā)RCP的package即可,。當(dāng)然如果你已經(jīng)安裝了Eclipse普通開發(fā)環(huán)境,,想增加RCP相關(guān) 的開發(fā)功能,需要通過Eclipse的update功能來添加就可以了,,不過后者采用在線安裝的方式,,容易引起packge插件下載不全,導(dǎo)致開發(fā)時(shí)出現(xiàn) 莫明其妙的錯(cuò)誤,,因此推薦第一種方案,。

(二)新建并運(yùn)行Eclipse RCP項(xiàng)目
Eclipse安裝并啟動(dòng)完畢之后,我們可以以插件的形式新增一個(gè)RCP模塊,,在該模塊的基礎(chǔ)上再添加不同的視圖,,這樣就為下一步打下了良好的基礎(chǔ):
在Eclipse的Package Explorer中單擊右鍵,選擇菜單第一項(xiàng)“new”,,在彈出的子菜單中選擇“other”,在對(duì)話框中如下圖選擇:

在彈出對(duì)話框的“project name”欄中填入自己的項(xiàng)目名稱,,例如“hellorcp“,,其余選項(xiàng)保持默認(rèn)狀態(tài),點(diǎn)擊下一步,,在Plugin content對(duì)話框中“Rich Client Application”中,,選擇"YES",如下圖所示:

選擇YES表示除了新建一個(gè)插件之外,,還愿意將其轉(zhuǎn)換成一個(gè)RCP應(yīng)用,,以便以后脫離Eclipse開發(fā)環(huán)境而獨(dú)立部署,而插件是不能獨(dú)立運(yùn)行的,,必須依附Eclipse而運(yùn)行,。
點(diǎn)擊下一步,選擇一個(gè)模版,,如下圖所示:

點(diǎn)擊Finish,,在出現(xiàn)的最后對(duì)話框中選擇“static content”,,點(diǎn)擊完成,這樣就完成了向?qū)Х绞较碌腅clipse RCP項(xiàng)目hellorcp的創(chuàng)建,,下面是該RCP項(xiàng)目在package explorer中的視圖:

至此,,我們已經(jīng)創(chuàng)建了一個(gè)hellorcp的項(xiàng)目,在右邊的editor窗口中,,自動(dòng)出現(xiàn)了hellorcp的啟動(dòng)視圖,,點(diǎn)擊"Testing"中的“l(fā)aunch”鏈接,可以啟動(dòng)該rcp項(xiàng)目:

大功告成,,我們得到了一個(gè)可以運(yùn)行的Eclipse RCP項(xiàng)目,,Eclipse RCP的項(xiàng)目創(chuàng)建過程是不是非常簡(jiǎn)單呢?現(xiàn)在的界面就像一個(gè)白板,,我們已經(jīng)迫不及待地想在上面豐富我們的視圖了,,接下來我們的任務(wù)是創(chuàng)建不同的視圖,并添 加代碼讓它們動(dòng)起來,,在做這些之前,,介紹一下Eclipse RCP上面的一些概念:
(三)Eclipse RCP 術(shù)語介紹:

  • Application
    Application的作用就是應(yīng)用程序或產(chǎn)品(product)的入口,它和Java系統(tǒng)中,,類定義的main()方法作用一樣. 當(dāng)Runtime啟動(dòng)的時(shí)候,,應(yīng)用程序開始運(yùn)行,應(yīng)用程序退出的時(shí)候,,Eclipse關(guān)閉,。
    在我們的hellorcp中的src文件夾中,Eclipse為我們自動(dòng)生成了Application類,,如下面的代碼片段:
     1public Object start(IApplicationContext context) {
     2        Display display = PlatformUI.createDisplay();
     3        try {
     4            int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
     5            if (returnCode == PlatformUI.RETURN_RESTART) {
     6                return IApplication.EXIT_RESTART;
     7            }

     8            return IApplication.EXIT_OK;
     9        }
     finally {
    10            display.dispose();
    11        }

    12    }

    在start方法中,,首先創(chuàng)建了Display對(duì)象,然后使用平臺(tái)的UI線程PlatformUI啟動(dòng)了程序運(yùn)行,,而啟動(dòng)過程是通 過傳遞display對(duì)象以及新建的ApplicationWorkbenchAdvisor對(duì)象來進(jìn)行的,,下面就介紹一下 ApplicationWorkbenchAdvisor對(duì)象
  • ApplicationWorkbenchAdvisor
    在應(yīng)用程序中,每一個(gè)窗口都有一個(gè) WorkbenchWindowAdvisor ,,它的作用是也是告訴窗口如何渲染.在 Window advisors根據(jù)窗口的生命周期定義了多個(gè)切入點(diǎn)函數(shù),,如preWindowOpen()窗口打開前 ,postWindowCreate()創(chuàng)建窗口結(jié)后等,,可以在不同的方法創(chuàng)建窗口的內(nèi)容,,了解窗口的生命周期是很有必要的,可以讓你規(guī)劃后,,在何時(shí)才能 創(chuàng)建相應(yīng)的對(duì)象,,有效的避免窗口中的組件還沒有被創(chuàng)建,就已經(jīng)在使用了.
     1public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
     2
     3    private static final String PERSPECTIVE_ID = "hellorcp.perspective";
     4
     5    public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
     6        return new ApplicationWorkbenchWindowAdvisor(configurer);
     7    }

     8    
     9    public void initialize(IWorkbenchConfigurer configurer) {
    10        super.initialize(configurer);
    11        configurer.setSaveAndRestore(true);
    12    }

    13
    14    public String getInitialWindowPerspectiveId() {
    15        return PERSPECTIVE_ID;
    16    }

    17}

    在ApplicationWorkbenchAdvisor中,向?qū)槲覀儎?chuàng)建了ApplicationWorkbenchWindowAdvisor對(duì) 象,,別的什么也沒做,。Eclipse遵從經(jīng)典的MVC模式來設(shè)計(jì),其中Advisor類就相當(dāng)于Model,,相當(dāng)于視圖的內(nèi)容提供者,,這樣就把view和 model解耦了。像它的名字一樣,, WorkbenchAdvisor 告訴工作臺(tái)怎樣顯示,,顯示什么等信息。在RCP應(yīng)用程序中,,很多地方用這種模板模式來構(gòu)建UI組件,。WorkbenchAdvisor做了兩件事:
    初始化默認(rèn)視圖和創(chuàng)建Application的window advisor
  • ApplicationWorkbenchWindowAdvisor
    在應(yīng)用程序中,每一個(gè)窗口都有一個(gè) WorkbenchWindowAdvisor ,,它的作用是也是告訴窗口如何渲染.在 Window advisors根據(jù)窗口的生命周期定義了多個(gè)切入點(diǎn)函數(shù),,如preWindowOpen()窗口打開前 ,postWindowCreate()創(chuàng)建窗口后等,,可以在不同的方法創(chuàng)建窗口的內(nèi)容,,了解窗口的生命周期是很有必要的,可以讓你規(guī)劃后,,在何時(shí)才能創(chuàng) 建相應(yīng)的對(duì)象,,有效的避免窗口中的組件還沒有被創(chuàng)建,就已經(jīng)在使用了
     1public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
     2        super(configurer);
     3    }

     4
     5    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
     6        return new ApplicationActionBarAdvisor(configurer);
     7    }

     8    
     9    public void preWindowOpen() {
    10        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
    11        configurer.setInitialSize(new Point(700550));
    12        configurer.setShowCoolBar(false);
    13        configurer.setShowStatusLine(false);
    14        configurer.setTitle("RCP Product");
    15    }
  • ApplicationActionBarAdvisor

    ActionBarAdvisors 創(chuàng)建了窗口需要的actions(動(dòng)作),,所謂動(dòng)作指的就是菜單項(xiàng)和工具欄項(xiàng),。在Eclipse的開發(fā)模式中,將用戶點(diǎn)擊后系統(tǒng)所作的動(dòng)作都可以定義為 Action,,這也實(shí)現(xiàn)了MVC的設(shè)計(jì)模式,。如果不這樣做,而是在UI的控件上直接添加Action Listener的話,,界面代碼和動(dòng)作代碼就會(huì)混雜在一起,,以后維護(hù)起來就比較麻煩。因此如果要新增任何的用戶交互動(dòng)作,,都需要在該類中的 MakeActions方法中實(shí)例化。
    1protected void makeActions(IWorkbenchWindow window) {
    2        introAction = ActionFactory.INTRO.create(window);
    3        register(introAction);
    4    }

  • Perspective
    顧名思義,,Perspective主要定義了RCP窗口的布局,,透視圖類必須實(shí)現(xiàn)IPerspectiveFactory 接口,并在createInitial Layout(IPageLayout)方法添加實(shí)際的布局代碼,。在這個(gè)例子中,,我們就使用默認(rèn)布局。在后期創(chuàng)建視圖的過程中,我們還要用到這個(gè)類,。
  • 以下是Eclipse RCP創(chuàng)建時(shí)上述幾個(gè)對(duì)象的時(shí)序圖:

(四)創(chuàng)建視圖
如上所示,,我們已經(jīng)了解了Eclipse RCP上的一些概念,每個(gè)類各司其職,,共同組成了美妙的窗口和布局,,這就是Eclipse的魅力,在下面我們就著手創(chuàng)建視圖,,在接下來的章節(jié)中,,上面介紹的概念都要用到。
視圖(View 和ViewPart)
視圖,,視圖是為了方便用戶編輯提供一些輔助功能或編輯一些屬性,。比如最常見的Outline視 圖往往用來提供當(dāng)前編輯的文檔的結(jié)構(gòu),而在Eclipse開發(fā)環(huán)境菜單項(xiàng)"window"中,,選擇"show view"項(xiàng),,還可以看到更多的視圖。如果用戶使用Eclipse的PDE來開發(fā)Java程序,,往往一個(gè)java文件打開,,都伴隨著不同視圖的出現(xiàn),從而 為開發(fā)人員提供了不同的觀察代碼及其運(yùn)行方式的窗口,。

下面我們就使用向?qū)?chuàng)建第一個(gè)視圖:navigationView視圖,。
點(diǎn)擊hellorcp項(xiàng)目中的plugin.xml文件,在editor中打開整個(gè)hellorcp項(xiàng)目的視圖,。這里要補(bǔ)充一下,,plugin.xml是 整個(gè)Eclipse RCP項(xiàng)目的配置文件,主要描述了插件之間的依賴關(guān)系,,以及插件內(nèi)部擴(kuò)展的模塊等等項(xiàng)目元數(shù)據(jù)信息,。Eclipse提供了plugin.xml的可視化編 輯方式,減輕了直接編輯xml的復(fù)雜度,。

一般來說,,創(chuàng)建視圖可以通過使用Eclipse的Extension機(jī)制來完成,通過繼承Eclipse的Views組件,,可以創(chuàng)建一個(gè)簡(jiǎn)單的視圖,。

點(diǎn)擊“finish”,就可以在extensions視圖里看到新增的org.eclipse.ui.views擴(kuò)展點(diǎn),,右鍵單擊該擴(kuò)展點(diǎn),,選擇新建view,如下圖:

在視圖右邊的新建view對(duì)話框中,,填入view的名稱:navigationView,,如下圖所示:

目前我們已經(jīng)在plugin.xml中定義了navigationview擴(kuò)展點(diǎn),,現(xiàn)在為該navigationview添加實(shí)現(xiàn)類,在上圖的class*文本上點(diǎn)擊"ctl+enter",,可以打開新建navigationview class的界面:

點(diǎn)擊保存,,我們現(xiàn)在就得到了一個(gè)navigation view,而eclipse自動(dòng)在plugin.xml文件中自動(dòng)添加了有關(guān)配置片段:

1<extension
2         point="org.eclipse.ui.views">
3      <view
4            class="hellorcp.NavigationViewPart"
5            id="hellorcp.navigationview"
6            name="navigationview">
7      </view>
8   </extension>

通過以上步驟,,我們得到了一個(gè)視圖類,,現(xiàn)在我們就可以回到eclipse開發(fā)環(huán)境中,點(diǎn)擊package explorer中的NavigationViewPart文件,,

注意NavigationViewPart類中的createPartControl方法,視圖中的表格,、按鈕之類的控件部分代碼都是在該方法中創(chuàng)建的,, 現(xiàn)在我們?cè)谠摲椒ㄖ袆?chuàng)建一個(gè)List,用來瀏覽我們提供的對(duì)象信息。注意Eclipse RCP是建立在jface基礎(chǔ)上的,,后者在swt的基礎(chǔ)上對(duì)一些常用控件,,例如表格、列表,,樹等做了封裝,,采用Viewer來提供視圖,,content provider和input model來提供模型,label provider來提供標(biāo)簽。因此要想創(chuàng)建列表并顯示列表內(nèi)容,,必須同時(shí)創(chuàng)建上述幾個(gè)對(duì)象,同時(shí),為了填充數(shù)據(jù)模型,我們同時(shí)也創(chuàng)建了示例性質(zhì)的 Person對(duì)象以及相關(guān)輔助代碼,。如果在正式的環(huán)境中,,這些model可以從數(shù)據(jù)庫獲得,,在這里我們僅做示范性使用。以下依次是創(chuàng)建代碼:
(1)模型:Person.class 和PersonModel.class
   
Person.class
    

package hellorcp;

public class Person {
    
private String name;
    
private String sex;

    
public String getName() {
        
return name;
    }


    
public void setName(String name) {
        
this.name = name;
    }


    
public String getSex() {
        
return sex;
    }


    
public void setSex(String sex) {
        
this.sex = sex;
    }

}

PersonModel.class

package hellorcp;

import java.util.ArrayList;

public class PersonModel {
    
private ArrayList<Person> list = new ArrayList<Person>();

    
public PersonModel() {
        
// 硬編碼,,初始化數(shù)據(jù)示例
        Person p1 = new Person();
        p1.setName(
"毛毛");
        p1.setSex(
"");
        list.add(p1);

        Person p2 
= new Person();
        p2.setName(
"皮皮");
        p2.setSex(
"");
        list.add(p2);
    }


    
public ArrayList<Person> elements() {
        
return list;
    }

}


(2)LabelProvider

package hellorcp;

import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.swt.graphics.Image;

public class NavigationViewLabelProvider implements ILabelProvider {

    
public Image getImage(Object element) {
        
// TODO Auto-generated method stub
        return null;
    }


    
public String getText(Object element) {
        
// TODO Auto-generated method stub
        return ((Person)element).getName();
    }


    
public void addListener(ILabelProviderListener listener) {
        
// TODO Auto-generated method stub

    }


    
public void dispose() {
        
// TODO Auto-generated method stub

    }


    
public boolean isLabelProperty(Object element, String property) {
        
// TODO Auto-generated method stub
        return false;
    }


    
public void removeListener(ILabelProviderListener listener) {
        
// TODO Auto-generated method stub

    }


    
public void labelProviderChanged(LabelProviderChangedEvent event) {
        
// TODO Auto-generated method stub

    }


}

(3)content provider

 1package hellorcp;
 2
 3import org.eclipse.jface.viewers.ILabelProviderListener;
 4import org.eclipse.jface.viewers.IStructuredContentProvider;
 5import org.eclipse.jface.viewers.ListViewer;
 6import org.eclipse.jface.viewers.Viewer;
 7
 8public class NavigationListViewContentProvider implements IStructuredContentProvider{
 9    PersonModel input;
10    ListViewer viewer;
11
12    public Object[] getElements(Object inputElement) {
13        // TODO Auto-generated method stub
14        return input.elements().toArray();
15    }

16
17    public String getText(Object element) {
18        return ((Person) element).getName();
19    }

20
21    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
22        viewer = (ListViewer) viewer;
23        input = (PersonModel) newInput;
24    
25    }

26
27    public void addListener(ILabelProviderListener listener) {
28        // TODO 自動(dòng)生成方法存根
29
30    }

31
32    public void add(Person p) {
33        viewer.add(p);
34
35    }

36
37    public void remove(Person p) {
38        viewer.remove(p);
39
40    }

41
42    public void dispose() {
43        // TODO Auto-generated method stub
44        
45    }

46}

47

(4)以下navigation view部分的代碼

 1package hellorcp;
 2
 3import org.eclipse.jface.action.IToolBarManager;
 4import org.eclipse.jface.viewers.IStructuredContentProvider;
 5import org.eclipse.jface.viewers.ListViewer;
 6import org.eclipse.swt.SWT;
 7import org.eclipse.swt.widgets.Composite;
 8import org.eclipse.ui.part.ViewPart;
 9import hellorcp.NavigationViewLabelProvider;
10
11public class NavigationViewPart extends ViewPart {
12    public NavigationViewPart() {
13        // TODO Auto-generated constructor stub
14    }

15
16    @Override
17    public void createPartControl(Composite parent) {
18        final ListViewer listViewer = new ListViewer(parent, SWT.BORDER);
19        listViewer.setLabelProvider(new NavigationViewLabelProvider());
20        listViewer.setContentProvider(new NavigationListViewContentProvider());
           listViewer.setInput(new PersonModel());
21        initializeToolBar();
22        // TODO Auto-generated method stub
23
24    }

25
26    @Override
27    public void setFocus() {
28        // TODO Auto-generated method stub
29
30    }

31    private void initializeToolBar() {
32        IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
33    }

34
35}

36

(5)最后,,我們將創(chuàng)建的navigationview添加到perspective透視圖中

 1package hellorcp;
 2
 3import org.eclipse.jface.action.IToolBarManager;
 4import org.eclipse.jface.viewers.IStructuredContentProvider;
 5import org.eclipse.jface.viewers.ListViewer;
 6import org.eclipse.swt.SWT;
 7import org.eclipse.swt.widgets.Composite;
 8import org.eclipse.ui.part.ViewPart;
 9import hellorcp.NavigationViewLabelProvider;
10
11public class NavigationViewPart extends ViewPart {
12    public NavigationViewPart() {
13        // TODO Auto-generated constructor stub
14    }

15
16    @Override
17    public void createPartControl(Composite parent) {
18        final ListViewer listViewer = new ListViewer(parent, SWT.BORDER);
19        listViewer.setLabelProvider(new NavigationViewLabelProvider());
20        listViewer.setContentProvider(new NavigationListViewContentProvider());
21        listViewer.setInput(new PersonModel());
22        initializeToolBar();
23        // TODO Auto-generated method stub
24
25    }

26
27    @Override
28    public void setFocus() {
29        // TODO Auto-generated method stub
30
31    }

32    private void initializeToolBar() {
33        IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
34    }

35
36}

37

至此,我們已經(jīng)創(chuàng)建了一個(gè)可以瀏覽人員信息的navigation view,,運(yùn)行一下我們創(chuàng)建的視圖,,可以得到如下效果,注意運(yùn)行前需要將eclipse文件夾中以runtime...開頭的文件夾刪除,,這是 eclipse上次運(yùn)行時(shí)創(chuàng)建的臨時(shí)文件,,如果不刪除,,就看不到修改之后的效果:

OK,現(xiàn)在我們已經(jīng)創(chuàng)建了一個(gè)視圖,,我們還需要?jiǎng)?chuàng)建另外一個(gè)details視圖,,用來顯示人員的若干詳細(xì)信息,按照上述創(chuàng)建視圖的方法,,我們同樣可以創(chuàng)建該視圖,,以下就不贅述了,只貼出創(chuàng)建detail view視圖的代碼和perspective透視圖部分的代碼:
(一)Detail view

 1package hellorcp;
 2
 3import java.beans.PropertyChangeEvent;
 4import java.util.AbstractList;
 5import java.util.ArrayList;
 6import java.util.Iterator;
 7
 8import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
 9import org.eclipse.jface.action.IToolBarManager;
10import org.eclipse.jface.viewers.ISelection;
11import org.eclipse.jface.viewers.IStructuredSelection;
12import org.eclipse.jface.viewers.ISelectionChangedListener;
13import org.eclipse.jface.viewers.SelectionChangedEvent;
14import org.eclipse.jface.viewers.TableViewer;
15import org.eclipse.swt.SWT;
16import org.eclipse.swt.events.SelectionAdapter;
17import org.eclipse.swt.widgets.Composite;
18import org.eclipse.swt.widgets.Group;
19import org.eclipse.swt.widgets.Label;
20import org.eclipse.swt.widgets.Table;
21import org.eclipse.swt.widgets.Text;
22import org.eclipse.ui.ISelectionListener;
23import org.eclipse.ui.IWorkbenchPart;
24import org.eclipse.ui.part.ViewPart;
25
26public class DetailView extends ViewPart {
27
28    private Table table;
29    private Text text_1;
30    private Text text;
31    @SuppressWarnings("unchecked")
32    ArrayList myListeners;
33    private ISelection selection;
34    public DetailView() {
35        super();
36        // TODO Auto-generated constructor stub
37    }

38
39    @Override
40    public void createPartControl(Composite parent) {
41        final Composite composite = new Composite(parent, SWT.NONE);
42
43        final Group group = new Group(composite, SWT.NONE);
44        group.setBounds(0049462);
45
46        final Label label = new Label(group, SWT.NONE);
47        label.setText("姓名");
48        label.setBounds(10322412);
49
50        text = new Text(group, SWT.BORDER);
51        text.setBounds(40298015);
52
53        final Label label_1 = new Label(group, SWT.NONE);
54        label_1.setText("性別");
55        label_1.setBounds(172323012);
56
57        text_1 = new Text(group, SWT.BORDER);
58        text_1.setBounds(208298015);
59
60        final TableViewer tableViewer = new TableViewer(composite, SWT.BORDER);
61        table = tableViewer.getTable();
62        table.setLinesVisible(true);
63        table.setHeaderVisible(true);
64        table.setBounds(068494270);
65        initializeToolBar();
66    }

67
68    @Override
69    public void setFocus() {
70        // TODO Auto-generated method stub
71
72    }

73    private void initializeToolBar() {
74        IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
75    }

76
77}

78

(二)添加過detailview視圖的perspective透視類:
 1package hellorcp.intro;
 2
 3import org.eclipse.ui.IPageLayout;
 4import org.eclipse.ui.IPerspectiveFactory;
 5
 6public class Perspective implements IPerspectiveFactory {
 7
 8    public void createInitialLayout(IPageLayout layout) {
 9        String editorArea = layout.getEditorArea();
10        layout.addView("hellorcp.navigationview", IPageLayout.LEFT, 0.15f, editorArea);
11        layout.addView("hellorcp.detailview", IPageLayout.LEFT, 1f, editorArea);
12    }

13}
以上步驟完成之后,,我們第一階段的工作就完畢了,。讓我們回顧一下,采取上述一系列步驟后,,我們創(chuàng)建了一個(gè)簡(jiǎn)單的RCP應(yīng)用,,具備兩個(gè)視圖 navigation view和detail view,前者以列表的形式顯示人員信息,,當(dāng)用戶點(diǎn)擊列表上某一人員信息元素時(shí),,后者能夠顯示出該人員的詳細(xì)信息,就這么簡(jiǎn)單,,但是別忘了我們只完成了顯 示部分,,而最重要、也是相對(duì)較為復(fù)雜的視圖間消息傳遞部分,,我們將放在后續(xù)部分繼續(xù)講解,。
以下是我們完成的視圖,檢視一下,,第一個(gè)RCP程序從自己手中誕生了,,是不是有種成功的喜悅呢?

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多