我试图用Vaadin创建一个表,在上下文菜单中有不同的选项,具体取决于您是否选择了单行或多行。Vaadin使用多个上下文菜单
我花了一段时间做到这一点,但现在我有一个工作解决方案。问题是,我觉得它不是很好的编程习惯,我很乐意接受任何建议,以便将我的“功能”分解成更小的类或函数。我可以创建一个独立的Action类吗?随意评论和建议,请注意,我刚刚开始与Vaadin =)!
Table contactList = new Table("Test table");
3 contactList.addListener(new Property.ValueChangeListener(){
4 public void valueChange(ValueChangeEvent event){
5 Set<?> value = (Set<?>) event.getProperty().getValue();
6 if(value == null || value.size() == 0){
7 getMainWindow().showNotification("NULL or 0");
8 }else if(value.size() == 1){
9 contactList.removeAllActionHandlers();
10 contactList.addActionHandler(new Action.Handler(){
11 public Action[] getActions(Object target, Object sender){
12 return ACTIONS_EDIT;
13 }
14 public void handleAction(Action action, Object sender, Object target){
15 getMainWindow().showNotification("ACTION_EDIT");
16 }
17 });
18 }else{
19 contactList.removeAllActionHandlers();
20 contactList.addActionHandler(new Action.Handler(){
21 public Action[] getActions(Object target, Object sender){
22 return ACTIONS_EDIT_ALL;
23 }
24 public void handleAction(Action action, Object sender, Object target){
25 getMainWindow().showNotification("ACTION_EDIT_ALL");
26 }
27 });
28 }
29 }
30 });
Thx任何帮助! /Marthin
感谢您的帮助,但是,这不是我在自己的答案做什么?或者我错过了什么? – Marthin 2011-04-11 10:51:11
这只适用于在Table.ValueChangeListener中的表上调用requestRepaint()方法,否则不会再调用操作处理函数的getActions()方法。 – 2011-10-04 14:09:26