IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NetBeans Java Discussion :

action delete sur tuto netbeans RPC CRUD app


Sujet :

NetBeans Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut 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 : 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 ajouter un nouvelle methode dans le Joueur_Viewer_TopComponent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        static void deleteLeaf() {
            System.out.print(explorerManager.getRootContext().getChildren().getNodes().length);
        }
    et modifier le code de ChildFactory en conséquence

    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

  2. #2
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    je pense avoir trouvé une réponse ;-)

    merci de m'indiquer s'il y en a une meilleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        static void deleteLeaf() {
            System.out.println(explorerManager.getSelectedNodes()[0].getDisplayName());
            for (Node leaf : explorerManager.getSelectedNodes()){
            System.out.println(leaf.getDisplayName());            
                try {
                    leaf.destroy();
                } catch (IOException ex) {
                    Exceptions.printStackTrace(ex);
                }
            }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Firebird] DELETE sur le résultat d'une requete d'un IBQUERY
    Par shashark dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/06/2005, 18h17
  2. delete sur une vue: rule
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 18/05/2004, 18h58
  3. [FLASH MX PRO] Action répétée sur bouton
    Par dens63 dans le forum Flash
    Réponses: 4
    Dernier message: 15/04/2004, 14h16
  4. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo