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()访问。一个网站是一个门面,允许进入其他地区的工作台,例如外壳,工作台窗口等尽可能使用本网站的访问工作台对象。
运行您的应用程序。现在应该显示您的内容提供者的姓氏。如果点击你的名字,目前没有任何反应。
(版权归原作者所有)