Vaadin mit mehreren Kontext-Menüs
Im Versuch, erstellen Sie eine Tabelle mit Vaadin wo Sie verschiedene Optionen im Kontextmenü abhängig davon, ob Sie gewählt haben, eine einzelne Zeile oder mehrere Zeilen.
Dauerte es eine Weile, dies zu tun, aber jetzt habe ich eine funktionierende Lösung. Das problem ist, dass ist das Gefühl, dass es nicht gut Programmieren, und ich würde gerne die Beratung, wie vielleicht mein split "Funktion" in kleinere Klassen oder Funktionen. Könnte ich vielleicht helfen, ein eigenständiges Action-Klasse?. Fühlen Sie sich frei zu kommentieren und Ratschläge und bitte beachten Sie, dass ich gerade angefangen mit 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 für jede Hilfe!!!
/Marthin
InformationsquelleAutor Marthin | 2011-04-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mir sieht es zu kompliziert.
Anstatt Sie zu verändern action-Handler, können Sie einfach überprüfen Sie die Anzahl der Auswahlen in der Prozedur. So etwas wie:
Nicht den code zu testen, um zu sehen, ob es funktioniert. Ich vermute, dass Sie müssen Kontaktliste.setImmediate(true), um sicherzustellen, dass der korrekte Kontext-Menü wird angezeigt.
Dies funktioniert nur, wenn Sie anrufen
requestRepaint()
auf dem Tisch in einerTable.ValueChangeListener
, da sonst diegetActions()
- Methode der action-handler wird nicht aufgerufen, wieder.InformationsquelleAutor Joonas
Also brach ich die anonymouse-Klassen und machte Sie zu inneren Klassen. Es sind auch einige neue Funktionalitäten. Alle feedback ist willkommen, natürlich, des Themas dies kann helfen, jemand anderes zu brechen Kostenlose anonymouse-Klassen, die Sie in Vaadin.
Beste Grüße
Marthin
InformationsquelleAutor Marthin