Eclipse的编辑器查看的相互作用(2)

1.4。内容和标签提供者
  创建一个新的包“rcp.intro.editor.provider”
  创建一个新类“MyContentProvider”它实现了接口IStructuredContentProvider。


  调整编码按照下面的例子:
    package rcp.intro.editor.provider;
   
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
   
    import org.eclipse.jface.viewers.IStructuredContentProvider;
    import org.eclipse.jface.viewers.Viewer;
   
    import de.vogella.rcp.intro.editor.model.MyModel;
   
    public class MyContentProvider implements IStructuredContentProvider,
      PropertyChangeListener {
   
     private final Viewer viewer;
   
     public MyContentProvider(Viewer viewer) {
      this.viewer = viewer;
     }
   
     @Override
     public Object[] getElements(Object inputElement) {
      MyModel content = (MyModel) inputElement;
      return content.getPersons().toArray();
     }
   
     @Override
     public void dispose() {
     }
   
     @Override
     public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
     }
   
     @Override
     public void propertyChange(PropertyChangeEvent arg0) {
      viewer.refresh();
     }
   
    }
  创建一个新类“MyLabelProvider”它实现了接口ILabelProvider。使用下面的代码。
    package rcp.intro.editor.provider;
   
    import org.eclipse.jface.viewers.ILabelProvider;
    import org.eclipse.jface.viewers.ILabelProviderListener;
    import org.eclipse.swt.graphics.Image;
    import org.eclipse.ui.ISharedImages;
    import org.eclipse.ui.PlatformUI;
   
    import de.vogella.rcp.intro.editor.model.Person;
   
    public class MyLabelProvider implements ILabelProvider {
   
     @Override
     public Image getImage(Object element) {
      return PlatformUI.getWorkbench().getSharedImages().getImage(
        ISharedImages.IMG_OBJ_ELEMENT);
     }
   
     @Override
     public String getText(Object element) {
      Person person = (Person) element;
      return (person.getLastName());
     }
   
     @Override
     public void addListener(ILabelProviderListener listener) {
     }
   
     @Override
     public void dispose() {
     }
   
     @Override
     public boolean isLabelProperty(Object element, String property) {
      return false;
     }
   
     @Override
     public void removeListener(ILabelProviderListener listener) {
     }
    }

1.5。在视图中使用域模型
    更改类视图使用新的内容
        package de.vogella.rcp.intro.editor;
       
        import org.eclipse.jface.viewers.TableViewer;
        import org.eclipse.swt.SWT;
        import org.eclipse.swt.widgets.Composite;
        import org.eclipse.ui.part.ViewPart;
       
        import de.vogella.rcp.intro.editor.model.MyModel;
        import de.vogella.rcp.intro.editor.provider.MyContentProvider;
        import de.vogella.rcp.intro.editor.provider.MyLabelProvider;
       
        public class View extends ViewPart {
         public static final String ID = "de.vogella.rcp.intro.editor.view";
       
         private TableViewer viewer;
       
         /**
          * 这是一个回调,将使我们能够创造并初始化它的viewer
          */
         public void createPartControl(Composite parent) {
          viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
            | SWT.V_SCROLL);
          viewer.setContentProvider(new MyContentProvider(viewer));
          viewer.setLabelProvider(new MyLabelProvider());
          viewer.setInput(new MyModel());
          getSite().setSelectionProvider(viewer);
         }
       
         /**
          * 通过焦点请求来控制视图.
          */
         public void setFocus() {
          viewer.getControl().setFocus();
         }
        }
     该视图使他的viewer可以通过下面的行作为选择内容:“getSite()。setSelectionProvider(viewer);”。这使控制器的可以通过打开编辑器来获取该视图选择。
   注意: 所有工作台部件有一个网站,它可以通过该方法getSite()访问。一个网站是一个门面,允许进入其他地区的工作台,例如外壳,工作台窗口等尽可能使用本网站的访问工作台对象。
   运行您的应用程序。现在应该显示您的内容提供者的姓氏。如果点击你的名字,目前没有任何反应。

(版权归原作者所有)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值