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).

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;
	}
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.

Une recherche m'a mené jusqu'a un bout de code de ProgressManager :
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 effectivement, on comprend vite pourquoi on ne peut pas repositionner la variable.
Donc y a t'il un moyen de la repositionner a Faux?

Merci !!