RCP 打开视图的不同实例,并设置不同的值

来源:互联网 发布:js字符串中的换行符 编辑:程序博客网 时间:2024/05/17 01:06

创建一个视图,里面布局用了个tableviewer,通过一个Action,按钮打开该视图,每次打开的视图的内容可设置不同。

1、视图显示


2、点击action,重新打开一个view,并设置里面展示的值



主要实现代码:

Plugin.xml

 <extension         point="org.eclipse.ui.views">      <view            <strong><span style="color:#ff0000;">allowMultiple="true"   //设置允许打开多页面</span></strong>            class="multipleview.View"            id="MultipleView.view"            name="View">      </view>   </extension>

视图布局类的代码,最主要的updates方法

package multipleview;import java.util.List;import org.eclipse.jface.viewers.IStructuredContentProvider;import org.eclipse.jface.viewers.ITableLabelProvider;import org.eclipse.jface.viewers.LabelProvider;import org.eclipse.jface.viewers.TableViewer;import org.eclipse.jface.viewers.Viewer;import org.eclipse.swt.SWT;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.widgets.Composite;import org.eclipse.ui.ISharedImages;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.part.ViewPart;public class View extends ViewPart {public static final String ID = "MultipleView.view";private TableViewer viewer;/** * The content provider class is responsible for providing objects to the * view. It can wrap existing objects in adapters or simply return objects * as-is. These objects may be sensitive to the current input of the view, * or ignore it and always show the same content (like Task List, for * example). */class ViewContentProvider implements IStructuredContentProvider {public void inputChanged(Viewer v, Object oldInput, Object newInput) {}public void dispose() {}public Object[] getElements(Object parent) {if (parent instanceof Object[]) {return (Object[]) parent;}        return new Object[0];}}class ViewLabelProvider extends LabelProvider implementsITableLabelProvider {public String getColumnText(Object obj, int index) {return getText(obj);}public Image getColumnImage(Object obj, int index) {return getImage(obj);}public Image getImage(Object obj) {return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);}}/** * This is a callback that will allow us to create the viewer and initialize * it. */public void createPartControl(Composite parent) {viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL| SWT.V_SCROLL);viewer.setContentProvider(new ViewContentProvider());viewer.setLabelProvider(new ViewLabelProvider());// Provide the input to the ContentProviderviewer.setInput(new String[]{"one","two","three"});}/** * Passing the focus request to the viewer's control. */public void setFocus() {viewer.getControl().setFocus();}<strong><span style="color:#cc0000;">public void updates(List<String> result){viewer.setInput(result.toArray());//设置表的内容值}</span></strong>}


CreteViewAction代码

package multipleview.action;import java.util.ArrayList;import java.util.List;import multipleview.View;import org.eclipse.jface.action.Action;import org.eclipse.ui.IViewPart;import org.eclipse.ui.IWorkbenchPage;import org.eclipse.ui.IWorkbenchWindow;import org.eclipse.ui.PartInitException;import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;/** * 创建视图的多个实例 * @author Admin * */public class CreateViewAction extends Action implements IWorkbenchAction {public static final String ID = "multipleview.action.createView"; //$NON-NLS-1$private int instanceNum=1; private final IWorkbenchWindow window;public CreateViewAction(IWorkbenchWindow window) {this.window = window;setId(ID);setText("CreateView");}@Overridepublic void run() {// TODO Auto-generated method stub<strong><span style="color:#ff0000;">try { System.out.println("instanceNum:" + instanceNum);IViewPart vPart =window.getActivePage().showView(View.ID, Integer.toString(instanceNum), IWorkbenchPage.VIEW_ACTIVATE);     List<String> strings = new ArrayList<>();    strings.add("AA" + instanceNum);    strings.add("BB" + instanceNum);    strings.add("CC"+instanceNum);    strings.add("DD"+instanceNum);((View)vPart).updates(strings) ;//调用视图的更新方法,用于更新视图内的表数据    instanceNum++;               } catch (PartInitException e) {       // handle exception     } </span></strong>}@Overridepublic void dispose() {// TODO Auto-generated method stub}}

代码工程:http://download.csdn.net/detail/luoww1/9276641


0 0
原创粉丝点击