Originariamente inviato da andbin
No, io semplicemente farei così (a prescindere dalla logica che hai fatto: inizialmente non editabile e poi con un pulsante lo rende editabile).
Nel valueChanged presumo invochi un metodo che fa tutta la gestione di scambio dei pannelli. Se il pannello corrente non è "modificato", ok tutto fila liscio e cambi il pannello. Se il pannello è "modificato" allora vuoi mostrare una dialog di richiesta di salvataggio con opzioni sì/no/annulla.
La dialog la mostri subito (e non fai ancora nulla sui pannelli, ovviamente). In base alla scelta:
- Sì: salvi i dati e cambi pannello
- No: non salvi i dati e cambi pannello
- Annulla: non salvi i dati e non cambi pannello. Invece fai un setSelectionPath() per settare il TreePath "old", che il TreeSelectionEvent fornisce. Questo causa un altro evento, ovviamente. Che richiederebbe di impostare il pannello che però è quello che hai già corrente! In questo caso non dovresti fare nulla. Insomma, la questione è solo poter testare: il pannello richiesto è quello corrente? Allora non c'è nulla da cambiare.