Eclipse RCP开发中,和用户进行交互最多的界面,应该是视图了,而透视图就是将已有的视图、菜单、工具栏、编辑器等等进行组合和布局。看完这一节,我们就可以建立如下图这样的程序界面了。
首先我们来介绍一下视图,建立一个视图其实非常简单,只要从org.eclipse.ui.part.ViewPart继承一个类,然后在plugin.xml中进行视图的配置。其中,向视图中添加控件的操作,我们即可以手工编写,也可以使用Designer插件,我这里推荐大家使用Designer插件,该插件对RCP提供功能非常强大的支持,如果使用Designer插件开发视图,则plugin.xml文件也不需要我们手动修改了。
比如我们上图中的第一个视图,就是从ViewPart继承一个类,然后在上面加入了几个swt的控件,做得非常得简单,而它的配置文件如下:
1
point="org.eclipse.ui.views">3
class="cn.blogjava.youxia.views.FirstView"5
id="cn.blogjava.youxia.views.FirstView"6
name="第一个View"/>7
可以看到,实现这个视图的class为cn.blogjava.youxia.views.FirstView,那么我们看看FirstView.java吧:
1
packagecn.blogjava.youxia.views;2
3
importorg.eclipse.jface.action.IMenuManager;4
importorg.eclipse.jface.action.IToolBarManager;5
importorg.eclipse.jface.viewers.TableViewer;6
importorg.eclipse.swt.SWT;7
importorg.eclipse.swt.widgets.Composite;8
importorg.eclipse.swt.widgets.Label;9
importorg.eclipse.swt.widgets.Table;10
importorg.eclipse.swt.widgets.Text;11
importorg.eclipse.ui.part.ViewPart;12
13
publicclassFirstViewextendsViewPart
{14
15
privateTable table;16
privateText text_1;17
privateText text;18
publicstaticfinalString ID = "cn.blogjava.youxia.views.FirstView";//$NON-NLS-1$19
20
/** *//**21
* Create contents of the view part22
*@paramparent23
*/24
@Override25
publicvoidcreatePartControl(Composite parent)
{26
Composite container =newComposite(parent, SWT.NONE);27
28
finalLabel label =newLabel(container, SWT.NONE);29
label.setText("姓名:");30
label.setBounds(56, 41, 36, 12);31
32
text =newText(container, SWT.BORDER);33
text.setBounds(98, 38, 80, 15);34
35
finalLabel label_1 =newLabel(container, SWT.NONE);36
label_1.setText("性别:");37
label_1.setBounds(212, 41, 30, 12);38
39
text_1 =newText(container, SWT.BORDER);40
text_1.setBounds(252, 38, 80, 15);41
42
finalTableViewer tableViewer =newTableViewer(container, SWT.BORDER);43
//tableViewer.setInput(new Object());44
table = tableViewer.getTable();45
table.setBounds(56, 75, 374, 143);46
table.setItemCount(10);47
table.setLinesVisible(true);48
//49
createActions();50
initializeToolBar();51
initializeMenu();52
}53
54
/** *//**55
* Create the actions56