添加属性页

15 篇文章 1 订阅

  我们先来看看Eclipse提供的属性页

 

  通过这个属性页我们可以更详细的了解一些属性的详细内容,而且可以将这些展示的界面集中起来,统一管理,非常方便,而且可以让界面的风格可以统一

  我们新建一个RCP工程,名称为com.vwpolo.rcp.propertypage,然后在新建一个 PropertyPage 类,

   打开这个项目的plugin.xml文件,切换到 Extensions 选项卡,添加org.eclipse.ui.propertyPage 扩展点,添加属性页,具体信息如下图所示

  我们来看下对应plugin.xml文件中的代码

< extension
         
point ="org.eclipse.ui.propertyPages" >
      
< page
            
class ="com.vwpolo.rcp.propertypage.StudentPropertyPage"
            id
="com.vwpolo.rcp.propertypage.StudentPropertyPage"
            name
="学生信息"
            objectClass
="com.vwpolo.rcp.model.Student" >
      
</ page >
   
</ extension >     

  这里指定的属性页类为 " com.vwpolo.rcp.propertypage.StudentPropertyPage ,属性页ID为" com.vwpolo.rcp.propertypage.StudentPropertyPage ",属性页的名称为 "学生信息",这里的 objectClass 这个属性是指定适配的对象,也就是说当传入数据是 objectClass 指定的类或及子类时,这个属性页才可能会弹出,反之则不弹出属性页,

  我们通过以下代码调用属性页打开Action

  过程非常简单,有兴趣的话可以自己试试,对了,在这里说明一下,如果不想显示默认和应用按钮可以在构造方法中调用 noDefaultAndApplyButton 方法

 

final  MenuItem menuItem  =   new  MenuItem(menu, SWT.NONE);
    menuItem.addSelectionListener(
new  SelectionAdapter() {
      @SuppressWarnings(
" deprecation " )
      
public   void  widgetSelected(SelectionEvent e) {
        PropertyDialogAction action 
=   new  PropertyDialogAction(getSite().getShell(), tableViewer);
        action.run();
      }
    });
    
    menuItem.setText(
" 属性 " );    

  通过这样我们就可以打开属性页

  我们还要在 StudentPropertyPage.java 这个类处理显示属性页之前的操作,我们这里在显示属性页之前将出入的对象填充到属性页的文本框中去,下面是这个属性页的完整源代码

package  com.vwpolo.rcp.propertypage;

import  org.eclipse.swt.SWT;
import  org.eclipse.swt.layout.GridData;
import  org.eclipse.swt.layout.GridLayout;
import  org.eclipse.swt.widgets.Composite;
import  org.eclipse.swt.widgets.Control;
import  org.eclipse.swt.widgets.Label;
import  org.eclipse.swt.widgets.Text;
import  org.eclipse.ui.dialogs.PropertyPage;

import  com.vwpolo.rcp.model.Student;

public   class  StudentPropertyPage  extends  PropertyPage {

  
private  Text sexText;
  
private  Text addressText;
  
private  Text ageText;
  
private  Text nameText;
  
private  Text idText;
  
/**
   * Create the property page
   
*/
  
public  StudentPropertyPage() {
    
super ();
    setDescription(
" 学生详细信息 " );
    setTitle(
" 学生属性 " );
    
    noDefaultAndApplyButton();
  }

  
/**
   * Create contents of the property page
   * 
@param  parent
   
*/
  @Override
  
public  Control createContents(Composite parent) {
    Composite container 
=   new  Composite(parent, SWT.NULL);
    
final  GridLayout gridLayout  =   new  GridLayout();
    gridLayout.numColumns 
=   4 ;
    container.setLayout(gridLayout);

    
final  Label label  =   new  Label(container, SWT.NONE);
    label.setText(
" 学号 " );

    idText 
=   new  Text(container, SWT.BORDER);
    
final  GridData gd_idText  =   new  GridData(SWT.FILL, SWT.CENTER,  true false );
    idText.setLayoutData(gd_idText);

    
final  Label label_1  =   new  Label(container, SWT.NONE);
    label_1.setText(
" 姓名 " );

    nameText 
=   new  Text(container, SWT.BORDER);
    
final  GridData gd_nameText  =   new  GridData(SWT.FILL, SWT.CENTER,  true false );
    nameText.setLayoutData(gd_nameText);

    
final  Label label_2  =   new  Label(container, SWT.NONE);
    label_2.setText(
" 年龄 " );

    ageText 
=   new  Text(container, SWT.BORDER);
    
final  GridData gd_ageText  =   new  GridData(SWT.FILL, SWT.CENTER,  true false );
    ageText.setLayoutData(gd_ageText);

    
final  Label label_3  =   new  Label(container, SWT.NONE);
    label_3.setText(
" 性别 " );

    sexText 
=   new  Text(container, SWT.BORDER);
    
final  GridData gd_sexText  =   new  GridData(SWT.FILL, SWT.CENTER,  true false );
    sexText.setLayoutData(gd_sexText);

    
final  Label label_4  =   new  Label(container, SWT.NONE);
    label_4.setText(
" 家庭地址 " );

    addressText 
=   new  Text(container, SWT.BORDER);
    
final  GridData gd_addressText  =   new  GridData(SWT.FILL, SWT.CENTER,  true false 3 1 );
    addressText.setLayoutData(gd_addressText);
    
new  Label(container, SWT.NONE);
    
new  Label(container, SWT.NONE);
    
//
    
    updateStudentText();
    
    
return  container;
  }

  
/**
   * <p>更新/填充学生信息。</p>
   * 
@author  刘尧兴
   
*/
  
private   void  updateStudentText() {
    Student student 
=  ((Student)getElement().getAdapter(Student. class ));
    
if (student  ==   null )
      
return ;
    
    idText.setText(student.getId());
    nameText.setText(student.getName());
    ageText.setText(student.getAge() 
+   "" );
    sexText.setText(student.getSex());
    addressText.setText(student.getAddress());
  }
}
    

  我们通过  Student student = ((Student)getElement().getAdapter(Student. class ));

  这段代码取得数据提供者,通过适配一个Student对象,得到传入到属性页中的对象,然后就填充相应的属性了,下面看最终的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值