Bonjour,
je voudrais pouvoir effectuer une confirmation sur le cancel d'un job.
J'ai une classe qui implémente job. Je fais appel à la méthode doAbort de mon job pour savoir si je dois arrêter le traitement (précédemment, j'utilisais le monitor).
Lorsque je clique sur cancel, il rentre bien dans le if du monitor.isCanceled. Mais au moment du set pour annuler l'annulation, il ne met pas a jour le monitor. Donc j'y repasse à chaque fois.
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 public boolean doAbort() { // Update cancel value if (!cancelAccepted) { if (monitor != null) { if (monitor.isCanceled()) { Display.getDefault().syncExec(new Runnable() { /** * {@inheritDoc} * @see java.lang.Runnable#run() */ @Override public void run() { cancelAccepted = MessageDialog.openQuestion(Display.getDefault().getActiveShell(), "T'es sur ?", "Tu veux vraiment arrêter ?"); } }); monitor.setCanceled(cancelAccepted); } } } return cancelAccepted; }
Une recherche m'a mené jusqu'a un bout de code de ProgressManager :
Donc effectivement, on comprend vite pourquoi on ne peut pas repositionner la variable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void setCanceled(boolean value) { JobInfo info = getJobInfo(job); // Don't bother cancelling twice if (value && !info.isCanceled()) { info.cancel(); // Only inform the first time if (listener != null) { listener.setCanceled(value); } } }
Donc y a t'il un moyen de la repositionner a Faux?
Merci !!
Partager