- 浏览: 7330998 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
package com.easyway.tbs.commons.ext.views.gridviewer;
import static com.easyway.tbs.commons.ext.model.PersonGridViewerConstants.GRID_VIEWER_PERSONLIST_COLUMNHEADER;
import static com.easyway.tbs.commons.ext.model.PersonGridViewerConstants.GRID_VIEWER_PERSONLIST_POSTLIST;
import static com.easyway.tbs.commons.ext.model.PersonGridViewerConstants.GRID_VIEWER_PERSONLIST_PROPERTIES;
import static com.easyway.tbs.commons.ext.model.PersonGridViewerConstants.GRID_VIEWER_PERSONLIST_SEXLIST;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CheckboxCellEditor;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.nebula.jface.gridviewer.GridTableViewer;
import org.eclipse.nebula.jface.gridviewer.GridViewerColumn;
import org.eclipse.nebula.widgets.grid.Grid;
import org.eclipse.nebula.widgets.grid.GridColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import com.easyway.tbs.commons.ext.model.commons.CommonContentProvider;
import com.easyway.tbs.commons.ext.model.commons.CommonLableProvider;
import com.easyway.tbs.commons.ext.model.commons.CustomTextCellEditor;
/**
* GridViewer的学习应用
* @author longgangbai
*
*/
public class ExtGridViewer extends ViewPart {
public static final String ID = "com.easyway.tbs.commons.ext.views.gridviewer.ExtGridViewer"; //$NON-NLS-1$
public GridTableViewer gridTableViewer;
public ExtGridViewer() {
}
private void createGirdViewer(Composite parent){
gridTableViewer = new GridTableViewer(parent, SWT.BORDER| SWT.H_SCROLL| SWT.V_SCROLL|SWT.FULL_SELECTION);
Grid gird = gridTableViewer.getGrid();
gird.setHeaderVisible(true);
gird.setAutoHeight(true);
gird.setLinesVisible(true);
gird.setCellSelectionEnabled(true);
//创建列头信息
createGridColum();
//创建cellEditors
CellEditor[] celleditors = createCellEditors();
ICellModifier modifier = new GridViewerCellModifier(gridTableViewer);
//设置列属性
gridTableViewer.setColumnProperties(GRID_VIEWER_PERSONLIST_PROPERTIES);
gridTableViewer.setCellEditors(celleditors);
gridTableViewer.setCellModifier(modifier);
gridTableViewer.setContentProvider(new CommonContentProvider());
gridTableViewer.setLabelProvider(new CommonLableProvider());
gridTableViewer.setInput(getSite());
}
/**
* 创建编辑列对象
* @return
*/
private CellEditor[] createCellEditors() {
CellEditor[] celleditors = new CellEditor[GRID_VIEWER_PERSONLIST_COLUMNHEADER.length];
//用户名
Grid grid = gridTableViewer.getGrid();
celleditors[0] = new TextCellEditor(grid);
//职务
celleditors[1] = new ComboBoxCellEditor(grid,GRID_VIEWER_PERSONLIST_POSTLIST);
//地址
celleditors[2] = new TextCellEditor(grid);
//电子邮件
celleditors[3] = new CustomTextCellEditor(grid,null);
//验证码
celleditors[4] = new TextCellEditor(grid);
//年龄
celleditors[5] =null;
//性别
celleditors[6] =new ComboBoxCellEditor(grid,GRID_VIEWER_PERSONLIST_SEXLIST,SWT.PUSH);
//在职
celleditors[7] = new CheckboxCellEditor(grid);
return celleditors;
}
/**
* 创建Grid的列头的信息
*/
private void createGridColum() {
for (String columnHeaderName : GRID_VIEWER_PERSONLIST_COLUMNHEADER) {
GridViewerColumn column=new GridViewerColumn(gridTableViewer, SWT.NONE);
GridColumn gridColumn =column.getColumn();
gridColumn.setAlignment(SWT.CENTER);
gridColumn.setResizeable(true);
gridColumn.setText(columnHeaderName);
gridColumn.setWidth(104);
column.setLabelProvider(new ColumnLabelProvider());
}
}
/**
* Create contents of the view part.
* @param parent
*/
@Override
public void createPartControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout());
//创建GridViewer信息
createGirdViewer(container);
createActions();
initializeToolBar();
initializeMenu();
}
/**
* Create the actions.
*/
private void createActions() {
// Create the actions
}
/**
* Initialize the toolbar.
*/
private void initializeToolBar() {
IToolBarManager toolbarManager = getViewSite().getActionBars()
.getToolBarManager();
}
/**
* Initialize the menu.
*/
private void initializeMenu() {
IMenuManager menuManager = getViewSite().getActionBars()
.getMenuManager();
}
@Override
public void setFocus() {
// Set the focus
}
}
package com.easyway.tbs.commons.ext.views.gridviewer;
import org.apache.commons.beanutils.PropertyUtils;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.nebula.jface.gridviewer.GridTableViewer;
import org.eclipse.nebula.widgets.grid.GridItem;
import static com.easyway.tbs.commons.ext.model.PersonGridViewerConstants.GRID_VIEWER_PERSONLIST_SEXLIST;
import static com.easyway.tbs.commons.ext.model.PersonGridViewerConstants.GRID_VIEWER_PERSONLIST_POSTLIST;
/**
* 列修改的接口实现类
* @author longgangbai
*
*/
public class GridViewerCellModifier implements ICellModifier {
private GridTableViewer tableViewer;
public GridViewerCellModifier(GridTableViewer tableViewer){
this.tableViewer=tableViewer;
}
/**
* 列是否可以修改
*/
@Override
public boolean canModify(Object element, String property) {
return true;
}
/**
* 根据属性名称获取对应的值
*/
@Override
public Object getValue(Object element, String property) {
try {
Object value=PropertyUtils.getProperty(element, property);
if(property.equals("sex")){
return value.equals("男")?Integer.valueOf(1):Integer.valueOf(0);
}else if(property.equals("postName")){
String aa=new String(value.toString().getBytes(),"UTF-8");
for(int i=0;i<GRID_VIEWER_PERSONLIST_POSTLIST.length;i++){
if(GRID_VIEWER_PERSONLIST_POSTLIST[i].equals(aa)){
return Integer.valueOf(i);
}
}
return 0;
}
return value;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 修改的列的信息
* 关于单元格的验证的信息添加此方法中(如果为下拉框的数据在这里)
*/
@Override
public void modify(Object element, String property, Object value) {
try {
if(element instanceof GridItem){
Object objectDis=((GridItem)element).getData();
String valueString=value!=null?String.valueOf(value):"";
Object object=null;
if(valueString.length()>0){
if(property.equals("age"))
{
object=Integer.valueOf(valueString);
}else if(property.equals("sex")){
object=GRID_VIEWER_PERSONLIST_SEXLIST[Integer.valueOf(valueString)];
}else if(property.equals("postName")){
object=GRID_VIEWER_PERSONLIST_POSTLIST[Integer.valueOf(valueString)];
}else if(property.equals("exists")){
object =Boolean.valueOf("true");
}else{
object=valueString;
}
if(object!=null){
PropertyUtils.setProperty(objectDis, property, object);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
tableViewer.refresh(true);
}
}
package com.easyway.tbs.commons.ext.views.gridviewer;
import java.util.ArrayList;
/**
*
* 关于GridViewer的学习
* @author longgangbai
*
*/
public class GridViewerTest {
public final static String[] GRID_VIEWER_PERSONLIST_COLUMNHEADER={"用户名","职务","地址","电子邮件","验证码","年龄","性别","在职"};
public final static String[] GRID_VIEWER_PERSONLIST_PROPERTIES={"userName","postName","address","email","password","age","sex","exists"};
public final static String[] GRID_VIEWER_PERSONLIST_POSTLIST={"1","2","3"};
public final static String[] GRID_VIEWER_PERSONLIST_SEXLIST={"女","男"};
public static void main(String[] args) {
Display display=Display.getDefault();
Shell shell =new Shell(display);
GridTableViewer gridTableViewer = new GridTableViewer(shell, SWT.BORDER| SWT.H_SCROLL| SWT.V_SCROLL|SWT.FULL_SELECTION);
Grid gird = gridTableViewer.getGrid();
gird.setSize(1000, 600);
gird.setHeaderVisible(true);
gird.setAutoHeight(true);
gird.setLinesVisible(true);
gird.setCellSelectionEnabled(true);
for (String columnHeaderName : GRID_VIEWER_PERSONLIST_COLUMNHEADER) {
GridViewerColumn column=new GridViewerColumn(gridTableViewer, SWT.NONE);
GridColumn gridColumn =column.getColumn();
gridColumn.setAlignment(SWT.CENTER);
gridColumn.setResizeable(true);
gridColumn.setText(columnHeaderName);
gridColumn.setWidth(104);
column.setLabelProvider(new ColumnLabelProvider());
}
//创建cellEditors
CellEditor[] celleditors = new CellEditor[GRID_VIEWER_PERSONLIST_COLUMNHEADER.length];
Grid grid = gridTableViewer.getGrid();
//用户名
celleditors[0] = new TextCellEditor(grid);
//职务
celleditors[1] = new ComboBoxCellEditor(grid,GRID_VIEWER_PERSONLIST_POSTLIST);
//地址
celleditors[2] = new TextCellEditor(grid);
//电子邮件
celleditors[3] = new CustomTextCellEditor(grid,null);
//验证码
celleditors[4] = new TextCellEditor(grid);
//年龄
celleditors[5] =null;
//性别
celleditors[6] =new ComboBoxCellEditor(grid,GRID_VIEWER_PERSONLIST_SEXLIST,SWT.PUSH);
//在职
celleditors[7] = new CheckboxCellEditor(grid,SWT.PUSH);
ICellModifier modifier = new GridViewerCellModifier(gridTableViewer);
//设置列属性
gridTableViewer.setColumnProperties(GRID_VIEWER_PERSONLIST_PROPERTIES);
gridTableViewer.setCellEditors(celleditors);
gridTableViewer.setCellModifier(modifier);
gridTableViewer.setContentProvider(new CommonContentProvider());
gridTableViewer.setLabelProvider(new CommonLableProvider());
List<Person> personList=new ArrayList<Person>();
for (int i = 0; i < 100; i++) {
Person p=new Person();
p.setUserName("xiaobai "+i);
p.setAge(20+i);
p.setEmail("longgangbai@sina.com");
p.setAddress("jiangsun");
p.setPassword("pwd "+i);
p.setPostName("1");
p.setSex("男");
personList.add(p);
}
gridTableViewer.setInput(personList);
shell.open();
while(!display.isDisposed())
{
if(!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
}
发表评论
-
Equinox OSGi系列之三 Equinox配置参数详解(转)
2013-03-22 15:20 6952Eclipse不提示的解决办法 我们知道,在Eclips ... -
RCP自定义扩展点的应用
2010-05-06 14:21 3036打开plugin.xml文件中Extensi ... -
Nebula 的几个常用的widgets的使用
2010-05-06 14:15 5644package com.easyway.tbs.commons ... -
多项编辑页的学习应用
2010-05-05 20:41 2760package com.easyway.plugin.dev. ... -
gef中自身实现的常用功能的原理和实现
2010-04-23 21:35 2378在gef中关于常用功能对应的action在org.eclip ... -
gef中几何对齐功能原理以及实现
2010-04-23 21:34 2745几何对齐功能也是为了方便用户排列图形元素的,如果打开了此功 ... -
gef中打印功能的原理和实现
2010-04-23 21:33 2816在gef中关于打印的功能,采用PrintGraphicalV ... -
gef中采用公共的快捷键功能的原理和实现
2010-04-23 21:27 2561在gef相关的编辑器类中采用快捷键处理器KeyHandler ... -
gef 上下文菜单的应用
2010-04-23 21:26 2871在gef的编辑器视图中添加相关的上下文菜单,经常需要是实 ... -
网上流传的一个RCP Table Grid打印实现原理和局限性
2010-04-22 20:11 3253package com.easyway.tbs.common ... -
gef中编辑图中添加背景图片原理以及实现
2010-04-22 20:01 2919GEF的RootEditPart对应的Figure是一个 ... -
gef中将流程图转换图片复制粘贴原理以及实现
2010-04-22 19:59 2914设计思路如下:将一个gef图元转换为一个图片(create ... -
gef编辑器中需要采用向导页
2010-04-22 19:57 2634在一般的gef编辑器中需要采用向导页,生成一个格式的 ... -
gef中拖动拽动原理以及实现(一)
2010-04-22 19:49 3229gef中拖动拽动原理以及实现 方案一: 创 ... -
gef中添加可折叠调色板原理以及实现(二)
2010-04-22 19:47 3158gef中添加可折叠调色板原理以及实现 中主要的Palette ... -
gef中添加可折叠调色板原理以及实现(一)
2010-04-22 19:45 3149最近心情不好,写 ... -
一个用RCP实现的简单的GEF程序
2010-04-17 22:02 3492最近在学习GEF,本例 ... -
RCP 线程的开发应用
2010-03-16 15:22 2430http://www.blogjava.net/gembin/ ... -
使用Eclipse自带的PropertySheet
2010-03-03 17:36 2714在项目中遇到一些小问 ... -
关于一个TableViewer的注解封装(转载)
2010-03-03 16:18 2806在项目你可能为多个TableViewer编写多个IC ...
相关推荐
`com.free.view.treeview`这个文件很可能包含了一个树形VIEWER的实现,这为学习和理解RCP的VIEWER机制提供了一个实例。通过研究这个例子,开发者可以更好地掌握如何在RCP中创建和使用自定义视图。
BIRT 报表 RCP Report Viewer 找了好久没有找到关于 BIRT 集成到RCP中的文章,现在先发两个例子先,详细待日后补充: Example of using the Report Viewer in an RCP application 见附件:
BIRT 报表 RCP Report Viewer 找了好久没有找到关于 BIRT 集成到RCP中的文章,现在先发两个例子先,详细待日后补充: Example of using the Report Viewer in an RCP application 见附件:
Eclipse Rich Client Platform (RCP)...总之,“基于Eclipse RCP的复合应用”是一个深入探讨如何利用Eclipse RCP框架构建复杂桌面应用的主题,对于希望在该领域学习和工作的开发者来说,这是一个非常有价值的学习资源。
在"eclipse rcp应用系统开发方法与实战源代码.zip"中,我们可以学习到以下关键知识点: 1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、...
9. **第23章:插件开发实例** - 这一章可能包含了一些实际的案例研究,演示了如何将前面学习的理论知识应用于实际项目,提供了从头到尾构建Eclipse RCP插件的详细步骤。 10. **第24章:GEF实例** - 作为对第22章的...
6. **程序集成功能**:学习如何打包RCP应用程序,包括生成产品配置、创建可执行的RCP发布版本,以及理解产品文件(product file)的作用。 7. **运行时环境**:理解Eclipse运行时环境的结构,包括如何设置启动配置...
5. **命令和服务**:Eclipse RCP中的命令(Command)和服务(Service)机制,用于实现应用的可扩展性和互操作性,读者将学习如何定义和使用这些组件。 6. **透视图和工作台**:透视图(Perspective)定义了工作空间...
非常好的一本JAVA RCP入门实战的书,兼顾理论和实战。
4. **Windows集成**:学习如何在RCP应用中嵌入和使用Active X控件,增强应用功能。 5. **3D图形**:探索如何将OpenGL与Eclipse RCP结合,为应用添加高性能的3D图形支持。 通过这些资料,开发者可以从基础到进阶全面...
**实现RCP应用程序的步骤详解** RCP(Rich Client Platform)是Eclipse框架提供的一种用于构建桌面应用程序的平台。它允许开发者利用Eclipse的强大功能来创建功能丰富的、可扩展的应用程序,而无需从零开始编写所有...
通过对《基于Eclipse.RCP的复合应用开发》的学习,开发者可以掌握构建强大、灵活的桌面应用程序的技术,这些应用程序可以满足各种业务需求,并具备优秀的用户体验。同时,Eclipse RCP的广泛应用也使其成为软件开发者...
标题中的"org.eclipse.nebula.widgets.grid_1.0.0.jar_gridview_everyt8y_"暗示了我们正在讨论的是Eclipse Nebula项目中的一个...通过学习和利用GridViewer,开发者可以创建出功能丰富、用户体验优良的桌面应用程序。
Eclipse Rich Client Platform (RCP) 是一个...通过深入学习"Eclipse RCP 应用系统开发方法与实战",开发者不仅可以掌握构建复杂桌面应用的技能,还能了解到如何利用Eclipse RCP的灵活性和强大功能来满足各种定制需求。
在这一章中,你还将学习如何调试和测试RCP应用,以及如何打包和部署应用程序,以便用户能够在本地机器上运行。这包括生成可执行的RCP产品和理解产品配置文件(product.ini)。 最后,我们还会讨论一些高级主题,如...
Eclipse RCP(Rich Client Platform)是Eclipse框架下的一个组件,它提供了一种构建桌面应用程序的强有力平台。本教程将通过实例引导你深入理解Eclipse RCP的开发过程,帮助你掌握如何利用Eclipse的强大功能来创建...
这个压缩包包含的“eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5”是针对Eclipse 3.5版本的一个学习资源,它涵盖了RCP应用开发的基础和如何创建自定义控制台插件。 首先,RCP项目源码是理解Eclipse RCP...
### 开发您的第一个 Eclipse RCP 应用程序 #### 富客户端平台 (RCP) 概述 **Eclipse Rich Client Platform (RCP)** 是一个强大的框架,旨在...随着不断深入学习和实践,您将能构建出更为复杂和专业的 RCP 应用程序。