Author Topic: NPE à l'ajout d'une source et autres demandes  (Read 3707 times)

0 Members and 1 Guest are viewing this topic.

Offline roptat

  • VIP
  • Jr. Member
  • *
  • Posts: 18
    • View Profile
NPE à l'ajout d'une source et autres demandes
« on: October 27, 2024, 17:32:47 »
Bonjour, je reviens avec encore trois problèmes similaires :)

Je suis sous Ancestris 13, avec l'éditeur Cygnus. Je souhaite créer une nouvelle source.

Si l'événement a déjà une source, je clique sur le + et je choisi nouvelle source. C'est un peu une demande de flemmard, mais comme la dernière source est sélectionnée par défaut, ça m'oblige à remonter toute la liste pour sélectionner « nouvelle source ». Est-ce qu'il serait possible d'avoir un petit bouton pour ce cas-là ?

Une fois la nouvelle source ajoutée, je peux remplir les champs ou ajouter une photo, mais le bouton « Indique le dépôt de la source » reste grisé, et je dois d'abord sélectionner une autre personne et revenir avant de pouvoir ajouter les informations du dépôt. Je crois que ça avait déjà été corrigé avant, mais ce n'est plus le cas. Est-ce qu'il est possible de le rendre cliquable dès qu'un des champs est rempli, ou qu'on a sélectionné une image ?

Par contre, si l'événement n'a pas encore de source, je peux en ajouter une directement en remplissant les champs ou en ajoutant une image. Si je sélectionne une image, le bouton « Indique le dépôt de la source » devient cliquable, mais reste grisé même en remplissant tous les autres champs si aucune image n'est ajoutée à la source. Comme avant, il faut cliquer sur une autre personne, et revenir, avant de pouvoir utiliser ce bouton. Ou alors, ajouter une image bidon et la supprimer, mais je tombe dans le même cas qu'en-dessous. Est-ce qu'il est possible de le rendre cliquable dès qu'on écrit dans les champs ?

Si j'ai sélectionné une image, je peux alors cliquer sur le bouton «Indique le dépôt de la source ». Dans la nouvelle fenêtre, quand j'essaye de sélectionner un dépôt, j'obtiens l'icône de sens interdit, avec le message suivant :


java.lang.NullPointerException: Cannot invoke "genj.gedcom.Source.getDisplayTitle(boolean)" because "entry" is null
   at ancestris.modules.editors.standard.tools.RepoChooser$SourceListCellRenderer.getListCellRendererComponent(RepoChooser.java:1278)
   at java.desktop/javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
   at java.desktop/javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
   at java.desktop/javax.swing.plaf.basic.BasicListUI.paintImpl(Unknown Source)
   at java.desktop/javax.swing.plaf.basic.BasicListUI.paint(Unknown Source)
   at java.desktop/javax.swing.plaf.ComponentUI.update(Unknown Source)
   at java.desktop/javax.swing.JComponent.paintComponent(Unknown Source)
   at java.desktop/javax.swing.JComponent.paint(Unknown Source)
   at java.desktop/javax.swing.JComponent.paintToOffscreen(Unknown Source)
   at java.desktop/javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
   at java.desktop/javax.swing.RepaintManager.paint(Unknown Source)
   at java.desktop/javax.swing.JComponent._paintImmediately(Unknown Source)
   at java.desktop/javax.swing.JComponent.paintImmediately(Unknown Source)
   at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
   at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
   at java.base/java.security.AccessController.doPrivileged(Unknown Source)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
   at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
   at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
   at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
   at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
   at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
   at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
   at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
   at java.base/java.security.AccessController.doPrivileged(Unknown Source)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
   at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
[catch] at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
   at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
   at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
   at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
   at java.base/java.security.AccessController.doPrivileged(Unknown Source)
   at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
   at java.desktop/java.awt.Dialog.show(Unknown Source)
   at org.netbeans.core.windows.services.NbPresenter.superShow(NbPresenter.java:1074)
   at org.netbeans.core.windows.services.NbPresenter.doShow(NbPresenter.java:1124)
   at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:1096)
   at org.netbeans.core.windows.services.NbPresenter.run(NbPresenter.java:106)
   at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:123)
   at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:77)
   at org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71)
   at org.openide.util.Mutex.readAccess(Mutex.java:199)
   at org.netbeans.core.windows.services.NbPresenter.show(NbPresenter.java:1081)
   at java.desktop/java.awt.Component.show(Unknown Source)
   at java.desktop/java.awt.Component.setVisible(Unknown Source)
   at java.desktop/java.awt.Window.setVisible(Unknown Source)
   at java.desktop/java.awt.Dialog.setVisible(Unknown Source)
   at ancestris.util.swing.DialogManager$ADialog.show(DialogManager.java:374)
   at ancestris.modules.editors.standard.IndiPanel.chooseRepository(IndiPanel.java:4105)
   at ancestris.modules.editors.standard.IndiPanel.repoEditButtonActionPerformed(IndiPanel.java:2032)
   at ancestris.modules.editors.standard.IndiPanel$67.actionPerformed(IndiPanel.java:1603)
   at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
   at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
   at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
   at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.desktop/java.awt.Component.processEvent(Unknown Source)
   at java.desktop/java.awt.Container.processEvent(Unknown Source)
   at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
   at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
   at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
   at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
   at java.base/java.security.AccessController.doPrivileged(Unknown Source)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
   at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
   at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
   at java.base/java.security.AccessController.doPrivileged(Unknown Source)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
   at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
   at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
   at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)


Cela n'arrive que si c'est une nouvelle source, qu'il n'y en avait pas avant, et que je viens de la créer, sans être allé sur le profil d'une autre personne avant. Comme dans le cas où le bouton n'est pas cliquable, si je vais d'abord sur une autre personne et que je reviens, je n'ai aucune erreur.

Offline FredericL

  • VIP
  • Hero Member
  • *
  • Posts: 929
    • View Profile
    • Généalogie personnelle et logiciel gratuit Ancestris
Re: NPE à l'ajout d'une source et autres demandes
« Reply #1 on: October 30, 2024, 21:09:35 »
Bonsoir,

En préambule: vous semblez avoir mis le mode éditeur "sans confirmation des changements" (préférences/édition), ce qui fait que dans Cygnus, la validation des modifications se fait en changeant d'individu. Tant que vous êtes en train d'éditer un individu, toutes les modifications sont non confirmées et donc en "suspension" si je puis dire.
A l'inverse, si vous étiez en mode "Avec confirmation", un bouton OK apparaitrait et c'est l'appui sur ce bouton OK qui confirme les modifications. Personnellement dans Cygnus, je recommande plutôt le mode avec confirmation, on voit mieux ce qui se passe.

Quote
Si l'événement a déjà une source, je clique sur le + et je choisi nouvelle source. C'est un peu une demande de flemmard, mais comme la dernière source est sélectionnée par défaut, ça m'oblige à remonter toute la liste pour sélectionner « nouvelle source ». Est-ce qu'il serait possible d'avoir un petit bouton pour ce cas-là ?

Bouton ajouté.

Quote
Une fois la nouvelle source ajoutée, je peux remplir les champs ou ajouter une photo, mais le bouton « Indique le dépôt de la source » reste grisé, et je dois d'abord sélectionner une autre personne et revenir avant de pouvoir ajouter les informations du dépôt. Je crois que ça avait déjà été corrigé avant, mais ce n'est plus le cas. Est-ce qu'il est possible de le rendre cliquable dès qu'un des champs est rempli, ou qu'on a sélectionné une image ?

Je pensais que le bouton dépôt n'était cliquable que quand la source était ajoutée et validée, mais ajoutée seule suffit. J'ai corrigé. Le bouton devient cliquable dans ce cas là.

Quote
Par contre, si l'événement n'a pas encore de source, je peux en ajouter une directement en remplissant les champs ou en ajoutant une image. Si je sélectionne une image, le bouton « Indique le dépôt de la source » devient cliquable,
Si j'ai sélectionné une image, je peux alors cliquer sur le bouton «Indique le dépôt de la source ». Dans la nouvelle fenêtre, quand j'essaye de sélectionner un dépôt, j'obtiens l'icône de sens interdit

Oui c'était un autre bug. C'est corrigé.

Merci de me dire si cela répond à tous les points.

Cordialement,
Frédéric

« Last Edit: October 30, 2024, 22:46:50 by FredericL »

Offline roptat

  • VIP
  • Jr. Member
  • *
  • Posts: 18
    • View Profile
Re: NPE à l'ajout d'une source et autres demandes
« Reply #2 on: November 04, 2024, 17:28:19 »
Bonsoir,

En préambule: vous semblez avoir mis le mode éditeur "sans confirmation des changements" (préférences/édition), ce qui fait que dans Cygnus, la validation des modifications se fait en changeant d'individu. Tant que vous êtes en train d'éditer un individu, toutes les modifications sont non confirmées et donc en "suspension" si je puis dire.
A l'inverse, si vous étiez en mode "Avec confirmation", un bouton OK apparaitrait et c'est l'appui sur ce bouton OK qui confirme les modifications. Personnellement dans Cygnus, je recommande plutôt le mode avec confirmation, on voit mieux ce qui se passe.

Effectivement, je n'avais pas trouvé le bouton de validation, alors j'étais passé en mode « sans confirmation » pour éviter d'avoir une boîte de dialogue en plus à chaque fois que je changeait de personne.

Quote
Merci de me dire si cela répond à tous les points.

C'est presque bon, mais il reste deux soucis :

Quand les modifications ne sont pas enregistrées, je peux lier la source à un dépôt, mais l'affichage est un peu étrange. Quand je clique sur le bouton « Indique le dépôt de la source », je peux sélectionner un dépôt et remplir les informations comme la côte du document. Quand je fais « Sauvegarder et attacher », la source est ajoutée à la liste (à gauche au milieu) avec la mention « (attachée à aucun dépôt) », ce qui est étrange, vu que je viens de l'attacher. Si je ferme la fenêtre, le dépôt est bien affiché, mais en l'ouvrant de nouveau (toujours sans rien sauvegarder), la côte et les autres informations de la source ont disparu. Si je sauvegarde, toutes les informations saisies initialement restent invisibles, mais la mention « attachée à aucun dépôt » disparaît.

Le bouton « Indique le dépôt de la source » reste grisé quand on saisit les informations de la source mais qu'on n'ajoute pas d'image, et que c'est la première source de l'événement.

Le bouton est bien cliquable quand on rajoute des sources supplémentaires, même sans ajouter d'information, ce qui est parfait.

Merci déjà pour toutes les améliorations que vous avez apportées jusqu'ici :)