bonjour,
je voudrais mieux comprendre l'utilisation de netbeans RPC pour des petites app.
j'ai suivi le tuto CRUD APP que j'ai voulu appliquer pour une petite application de gestion.
et j'arrive à la création de l'action "delete" sur le BeanTreeView.
j'ai donc créé une nouvelle action
et ajouter un nouvelle methode dans le Joueur_Viewer_TopComponent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.openide.awt.ActionRegistration; import org.openide.awt.ActionReferences; import org.openide.awt.ActionID; import org.openide.util.NbBundle.Messages; @ActionID(category = "Joueur_LEAF", id = "lu.leglaude.whist.viewer.JoueurLeafDeleteAction") @ActionRegistration(displayName = "#CTL_JoueurLeafDeleteAction") @ActionReferences({}) @Messages("CTL_JoueurLeafDeleteAction=Delete") public final class JoueurLeafDeleteAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { Joueur_Viewer_TopComponent.deleteLeaf(); } }
et modifier le code de ChildFactory en conséquence
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 static void deleteLeaf() { System.out.print(explorerManager.getRootContext().getChildren().getNodes().length); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 import java.beans.IntrospectionException; import java.io.IOException; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.Persistence; import javax.swing.Action; import lu.leglaude.whist.entity.Joueur; import org.openide.nodes.BeanNode; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.util.Exceptions; import org.openide.util.Utilities; import org.openide.util.lookup.Lookups; /** * * @author ramcla */ class JoueurChildFactory extends ChildFactory<Joueur> { private List<Joueur> resultList; public JoueurChildFactory(List<Joueur> resultList) { this.resultList = resultList; } @Override protected boolean createKeys(List<Joueur> list) { for (Joueur Joueur : resultList) { list.add(Joueur); } return true; } @Override protected Node createNodeForKey(Joueur j) { try { return new CustomerBeanNode(j); } catch (IntrospectionException ex) { Exceptions.printStackTrace(ex); return null; } } private static class CustomerBeanNode extends BeanNode { public CustomerBeanNode(Joueur j) throws IntrospectionException { super(j, Children.LEAF, Lookups.singleton(j)); this.setDisplayName(j.getNom() + ' ' + j.getPrenom()); this.setShortDescription(j.getVille()); } @Override public Action[] getActions(boolean context) { List actionsForJoueur_LEAF = Utilities.actionsForPath("Actions/Joueur_LEAF"); return (Action[]) actionsForJoueur_LEAF.toArray(new Action[actionsForJoueur_LEAF.size()]); } @Override public boolean canDestroy() { Joueur joueur = this.getLookup().lookup(Joueur.class); return joueur != null; } @Override public void destroy() throws IOException { if (deleteJoueur(this.getLookup().lookup(Joueur.class).getId())) { super.destroy(); Joueur_Viewer_TopComponent.refreshNode(); } } private boolean deleteJoueur(Long id) { EntityManager entityManager = Persistence.createEntityManagerFactory("Whist_DB_LibraryPU").createEntityManager(); entityManager.getTransaction().begin(); try { Joueur toDelete = entityManager.find(Joueur.class, id); entityManager.remove(toDelete); // so far so good entityManager.getTransaction().commit(); } catch (Exception e) { entityManager.getTransaction().rollback(); } return true; } } }
voici ma question comment dans la méthode deleteLeaf() puis je obtenir le Node selectionné (c-a-d le joueur selectionné) ?
merci d'avance pour votre aide
Partager