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>}
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
- RCP 打开视图的不同实例,并设置不同的值
- RCP程序发布到不同的平台
- 在不同页面设置与获取cookie值的实例
- apache 监听不同的端口并设置虚拟路径的实例
- 比较不同的单元格的值,设置不同的颜色
- orcl不同的打开方式
- vim打开不同的文件
- 打开不同文件的Intent
- rcp(插件开发)程序发布到不同的平台
- Jenkins 不同角色不同视图及不同权限设置
- spring mvc 针对不同请求头返回不同的视图
- 设置 namespace 不同值的路径访问
- #AWK#统计不同设置值的行
- 使用不同进程打开不同的Excel文件
- ListBox1 设置不同的行色
- 不同两个视图之间传值的方式
- JPanel作为容器,显示不同的视图
- Listview中显示不同的视图布局
- bat-ver
- Android系列之网络(二)----获取HTTP请求头与响应头
- 07 编解码器Codec
- hdoj 1171 Big Event in HDU (母函数)(背包)
- iOS第三方支付(支付宝)
- RCP 打开视图的不同实例,并设置不同的值
- vmware下安装ubuntu后分辨率无法调节
- Redis安装的快速指南
- 偷懒代码块之快速双击判断工具
- Bat命令学习
- pyspark的RDD运算
- 音乐网站制作之音乐播放
- UI阻塞及其优化
- 08 附带的ChannelHandler和Codec