TableViewer, TreeViewer双击编辑

在TreeViewer或 TableViewer中,可用CellEditor结合CellModifier可以很实现表格的编辑功能 但是默认的是单击,就会打开编辑区域。有时候我们会需要双击进行(或者其他),于是我写了一个 DoubleCellModifier,只要让你的CellModifier继承它,就可以很方便实现双击编辑。 具体代码如下:
java 代码
  1. packagecom.longthsoft.rcppart.ui;
  2. importorg.eclipse.jface.viewers.ICellModifier;
  3. importorg.eclipse.jface.viewers.TableViewer;
  4. importorg.eclipse.jface.viewers.TreeViewer;
  5. importorg.eclipse.swt.events.MouseAdapter;
  6. importorg.eclipse.swt.events.MouseEvent;
  7. importorg.eclipse.swt.widgets.Item;
  8. publicabstractclassDoubleClickCellModifierimplementsICellModifier{
  9. privatebooleandoubleClick;
  10. privateObjectelement;
  11. privateStringproperty;
  12. publicDoubleClickCellModifier(finalTableViewertableViewer){
  13. tableViewer.getTable().addMouseListener(newMouseAdapter(){
  14. @Override
  15. publicvoidmouseDoubleClick(MouseEvente){
  16. if(allowModify(element,property)){
  17. intcolumn=UIUtil.getPropertyColumnIndex(tableViewer,property);
  18. doubleClick=true;
  19. tableViewer.editElement(element,column);
  20. doubleClick=false;
  21. }
  22. }
  23. });
  24. }
  25. publicDoubleClickCellModifier(finalTreeViewertreeViewer){
  26. treeViewer.getTree().addMouseListener(newMouseAdapter(){
  27. publicvoidmouseDoubleClick(MouseEvente){
  28. if(allowModify(element,property)){
  29. intcolumn=UIUtil.getPropertyColumnIndex(treeViewer,property);
  30. doubleClick=true;
  31. treeViewer.editElement(element,column);
  32. doubleClick=false;
  33. }
  34. }
  35. });
  36. }
  37. publicbooleancanModify(Objectelement,Stringproperty){
  38. this.element=element;
  39. this.property=property;
  40. if(doubleClick){
  41. returntrue;
  42. }else{
  43. returnfalse;
  44. }
  45. }
  46. publicvoidmodify(Objectelement,Stringproperty,Objectvalue){
  47. if(elementinstanceofItem){
  48. element=((Item)element).getData();
  49. }
  50. doModify(element,property,value);
  51. }
  52. publicbooleanallowModify(Objectelement,Stringproperty){
  53. returntrue;
  54. }
  55. publicabstractvoiddoModify(Objectelement,Stringproperty,Objectvalue);
  56. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值