Job Monitor et confirmation de cancel
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:
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:
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? :calim2:
Merci !!