action delete sur tuto netbeans RPC CRUD app
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
Code:
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 ajouter un nouvelle methode dans le Joueur_Viewer_TopComponent
Code:
1 2 3
| static void deleteLeaf() {
System.out.print(explorerManager.getRootContext().getChildren().getNodes().length);
} |
et modifier le code de ChildFactory en conséquence
Code:
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