swt/jface使用EditingSupport 为同一列提供不同类型的编辑器CellEditor
2012-04-17 11:05
477 查看
自定义MyEditingSupport实现EditingSupport,代码如下 import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ComboBoxCellEditor; import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; public class MyEditingSupport extends EditingSupport { private static final String[] CROPPRING_SEASONS = { "1", "2" ,"3", "4", "5" }; private static final String[] GENERATION = { "F1DH", "F2" ,"F3", "F4", "F5" ,"F6", "F7" ,"F8"}; private static final String[] ROUNDS_INTER = { "1", "2" ,"3", "4:3" }; private static final String[] ROUNDS_SELFING = { "1", "2" ,"3", "4", "5" ,"6" ,"7" ,"8:5" }; private CellEditor[] editors; private StructuredViewer viewer; public MyEditingSupport(TableViewer viewer) { super(viewer); this.viewer = viewer; editors = new CellEditor[10]; editors[0] = new ComboBoxCellEditor(viewer.getTable(), CROPPRING_SEASONS, SWT.READ_ONLY); editors[1] = new TextCellEditor(viewer.getTable()); editors[2] = new ComboBoxCellEditor(viewer.getTable(), GENERATION, SWT.READ_ONLY); editors[3] = new ComboBoxCellEditor(viewer.getTable(), GENERATION, SWT.READ_ONLY); editors[4] = new ComboBoxCellEditor(viewer.getTable(), ROUNDS_INTER, SWT.READ_ONLY); editors[5] = new ComboBoxCellEditor(viewer.getTable(), ROUNDS_SELFING, SWT.READ_ONLY); editors[6] = new TextCellEditor(viewer.getTable()); editors[7] = new TextCellEditor(viewer.getTable()); editors[8] = new TextCellEditor(viewer.getTable()); editors[9] = new TextCellEditor(viewer.getTable()); } @Override protected CellEditor getCellEditor(Object element) { InputInfoItem item = (InputInfoItem) element; for(int i = 1 ; i<= 10 ; i++){ if(item.getId().equals(String.valueOf(i))) return editors[i-1]; } /*if (item.getId().equals("1")) { return editors[0]; } else if (item.getId().equals("2")) { return editors[1]; } */ return null; } @Override protected boolean canEdit(Object element) { return true; } @Override protected Object getValue(Object element) { InputInfoItem item = (InputInfoItem) element; if (item.getId().equals("1")) { for(int i = 0 ; i<CROPPRING_SEASONS.length ; i++){ if(CROPPRING_SEASONS[i].equals(item.getValue())) return new Integer(i); } } else if (item.getId().equals("2")) { return item.getValue(); } else if (item.getId().equals("3")) { for(int i = 0 ; i<GENERATION.length ; i++){ if(GENERATION[i].equals(item.getValue())) return new Integer(i); } } else if (item.getId().equals("4")) { for(int i = 0 ; i<GENERATION.length ; i++){ if(GENERATION[i].equals(item.getValue())) return new Integer(i); } } else if (item.getId().equals("5")) { for(int i = 0 ; i<ROUNDS_INTER.length ; i++){ if(ROUNDS_INTER[i].equals(item.getValue())) return new Integer(i); } } else if (item.getId().equals("6")) { for(int i = 0 ; i<ROUNDS_SELFING.length ; i++){ if(ROUNDS_SELFING[i].equals(item.getValue())) return new Integer(i); } } else if (item.getId().equals("7")) { return item.getValue(); } else if (item.getId().equals("8")) { return item.getValue(); } else if (item.getId().equals("9")) { return item.getValue(); } else if (item.getId().equals("10")) { return item.getValue(); } return null; } @Override protected void setValue(Object element, Object value) { InputInfoItem item = (InputInfoItem) element; if(item.getId().equals("1")) { item.setValue(CROPPRING_SEASONS[Integer.parseInt(value.toString())]); } else if(item.getId().equals("2")) { item.setValue(value.toString()); } else if(item.getId().equals("3")) { item.setValue(GENERATION[Integer.parseInt(value.toString())]); } else if(item.getId().equals("4")) { item.setValue(GENERATION[Integer.parseInt(value.toString())]); } else if(item.getId().equals("5")) { item.setValue(ROUNDS_INTER[Integer.parseInt(value.toString())]); } else if(item.getId().equals("6")) { item.setValue(ROUNDS_SELFING[Integer.parseInt(value.toString())]); } else if(item.getId().equals("7")) { item.setValue(value.toString()); } else if(item.getId().equals("8")) { item.setValue(value.toString()); } else if(item.getId().equals("9")) { item.setValue(value.toString()); } else if(item.getId().equals("10")) { item.setValue(value.toString()); } this.viewer.refresh(); } } 表格共有三列、十行,为第三列添加EditingSupport tableViewer = new TableViewer(this,SWT.FULL_SELECTION); table = tableViewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); TableColumn tableColumn = new TableColumn(table, SWT.NONE); tableColumn.setWidth(60); tableColumn.setText("ID"); TableColumn tableColumn1 = new TableColumn(table, SWT.NONE); tableColumn1.setWidth(220); tableColumn1.setText("Name"); TableColumn tableColumn2 = new TableColumn(table, SWT.NONE); tableColumn2.setWidth(80); tableColumn2.setText("Value"); this.setLayout(new FillLayout()); this.setBackground(new Color(Display.getCurrent(), 255, 255, 255)); TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer,tableColumn2); tableViewerColumn.setEditingSupport(new MyEditingSupport(tableViewer)); //省略具体添加 tableViewer.setLabelProvider() tableViewer.setContentProvider(); tableViewer.setInput(inputInfoList) |
相关文章推荐
- SWT/JFace中Table相同列多种类型CellEditor以及参照类型编辑器的实现
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- SWT/JFACE Viewer的cellEditor处理流程
- ligerUI实现grid同一列根据不同的值编辑时呈现不同类型的编辑器
- Swt/Jface treeViewer的使用
- SNMP 使用SNMP4J OID设置不同类型的参数值
- 使用指针类型参数和使用指针引用类型参数在函数内部用new给参数分配空间的不同结果
- IE11下使用eWebEditor编辑器
- 如何使用Java泛型映射不同的值类型
- QA:请问TCHAR,CHAR,LPSTR,LPCSTR,char这几个数据类型有何不同,该如何使用?
- 【Java/Android性能优 4】PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强
- 在AWT中使用swt时,出现MessageException类型无法加载的问题
- ewebeditor上传文件大小及在线编辑器jsp版使用心得
- Unity_DOTween动画的学习(十一)_DOTweenPath路径编辑器的使用补充_结合按钮触发不同点击事件控制播放状态_Waypoints
- Swt/Jface中提供的dialog
- 如何使用 Java 泛型映射不同的值类型
- JAVA使用poi进行EXCEL模板导入导出,XSSFCell数据类型
- Gitbook Editor编辑器中使用markdown语法总结
- 不要对不同类型使用三元运算符[C++]
- printf函数使用—针对不同数据类型的输出结果详解