在TreeViewer或
TableViewer中,可用CellEditor结合CellModifier可以很实现表格的编辑功能 但是默认的是单击,就会打开编辑区域。有时候我们会需要双击进行(或者其他),于是我写了一个 DoubleCellModifier,只要让你的CellModifier继承它,就可以很方便实现双击编辑。 具体代码如下:
java 代码
- packagecom.longthsoft.rcppart.ui;
- importorg.eclipse.jface.viewers.ICellModifier;
- importorg.eclipse.jface.viewers.TableViewer;
- importorg.eclipse.jface.viewers.TreeViewer;
- importorg.eclipse.swt.events.MouseAdapter;
- importorg.eclipse.swt.events.MouseEvent;
- importorg.eclipse.swt.widgets.Item;
- publicabstractclassDoubleClickCellModifierimplementsICellModifier{
- privatebooleandoubleClick;
- privateObjectelement;
- privateStringproperty;
- publicDoubleClickCellModifier(finalTableViewertableViewer){
- tableViewer.getTable().addMouseListener(newMouseAdapter(){
- @Override
- publicvoidmouseDoubleClick(MouseEvente){
- if(allowModify(element,property)){
- intcolumn=UIUtil.getPropertyColumnIndex(tableViewer,property);
- doubleClick=true;
- tableViewer.editElement(element,column);
- doubleClick=false;
- }
- }
- });
- }
- publicDoubleClickCellModifier(finalTreeViewertreeViewer){
- treeViewer.getTree().addMouseListener(newMouseAdapter(){
- publicvoidmouseDoubleClick(MouseEvente){
- if(allowModify(element,property)){
- intcolumn=UIUtil.getPropertyColumnIndex(treeViewer,property);
- doubleClick=true;
- treeViewer.editElement(element,column);
- doubleClick=false;
- }
- }
- });
- }
- publicbooleancanModify(Objectelement,Stringproperty){
- this.element=element;
- this.property=property;
- if(doubleClick){
- returntrue;
- }else{
- returnfalse;
- }
- }
- publicvoidmodify(Objectelement,Stringproperty,Objectvalue){
- if(elementinstanceofItem){
- element=((Item)element).getData();
- }
- doModify(element,property,value);
- }
- publicbooleanallowModify(Objectelement,Stringproperty){
- returntrue;
- }
- publicabstractvoiddoModify(Objectelement,Stringproperty,Objectvalue);
- }