TableViewer, TreeViewer双击编辑

转自: http://bencode.javaeye.com/blog/39324
在TreeViewer或TableViewer中,可用CellEditor结合CellModifier可以很实现表格的编辑功能
但是默认的是单击,就会打开编辑区域。有时候我们会需要双击进行(或者其他),于是我写了一个
DoubleCellModifier,只要让你的CellModifier继承它,就可以很方便实现双击编辑。

具体代码如下:
    1 .   package  com.longthsoft.rcppart.ui;  
   
2 .   
   
3 import  org.eclipse.jface.viewers.ICellModifier;  
   
4 import  org.eclipse.jface.viewers.TableViewer;  
   
5 import  org.eclipse.jface.viewers.TreeViewer;  
   
6 import  org.eclipse.swt.events.MouseAdapter;  
   
7 import  org.eclipse.swt.events.MouseEvent;  
   
8 import  org.eclipse.swt.widgets.Item;  
   
9 .   
  
10 public   abstract   class  DoubleClickCellModifier  implements  ICellModifier  {  
  
11.      
  
12.     private boolean doubleClick;  
  
13.     private Object element;  
  
14.     private String property;  
  
15.      
  
16.     public DoubleClickCellModifier(final TableViewer tableViewer) {  
  
17.         tableViewer.getTable().addMouseListener(new MouseAdapter() {  
  
18.             @Override  
  
19.             public void mouseDoubleClick(MouseEvent e) {  
  
20.                 if (allowModify(element, property)) {  
  
21.                     int column = UIUtil.getPropertyColumnIndex(tableViewer, property);  
  
22.                     doubleClick = true;  
  
23.                     tableViewer.editElement(element, column);  
  
24.                     doubleClick = false;  
  
25.                 }
  
  
26.             }
  
  
27.         }
);  
  
28.     }
  
  
29.      
  
30.     public DoubleClickCellModifier(final TreeViewer treeViewer) {  
  
31.         treeViewer.getTree().addMouseListener(new MouseAdapter() {  
  
32.             public void mouseDoubleClick(MouseEvent e) {  
  
33.                 if (allowModify(element, property)) {  
  
34.                     int column =UIUtil.getPropertyColumnIndex(treeViewer, property);  
  
35.                     doubleClick = true;  
  
36.                     treeViewer.editElement(element, column);  
  
37.                     doubleClick = false;  
  
38.                 }
  
  
39.             }
  
  
40.         }
);  
  
41.     }
  
  
42.      
  
43.     public boolean canModify(Object element, String property) {  
  
44.         this.element = element;  
  
45.         this.property = property;  
  
46.         if (doubleClick) {  
  
47.             return true;  
  
48.         }
 else {  
  
49.             return false;  
  
50.         }
  
  
51.     }
  
  
52.      
  
53.     public void modify(Object element, String property, Object value) {  
  
54.         if (element instanceof Item) {  
  
55.             element = ((Item) element).getData();  
  
56.         }
  
  
57.         doModify(element, property, value);  
  
58.     }
  
  
59.      
  
60.     public boolean allowModify(Object element, String property) {  
  
61.         return true;  
  
62.     }
  
  
63.      
  
64.     public abstract void doModify(Object element, String property, Object value);  
  
65. }
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值