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