\r
private class BurnTab extends JPanel {\r
private static final long serialVersionUID = 1L;\r
-\r
+ private Thread currentThread;\r
+ \r
public BurnTab() {\r
setLayout(new BorderLayout());\r
setName("Burn");\r
reBurn();\r
}\r
+ \r
+ private class BurnCanceled extends RuntimeException{\r
+ private static final long serialVersionUID = 1L;\r
+ };\r
\r
public void reBurn() {\r
removeAll();\r
- new Thread() {\r
+ currentThread = new Thread() {\r
public void run() {\r
+ final Thread me = this;\r
final JProgressBar bar = new JProgressBar(0, 100);\r
add(bar, BorderLayout.NORTH);\r
try {\r
@Override\r
public void setProgress(float f) {\r
bar.setValue((int) (f * 100));\r
+ if ( currentThread != me ){\r
+ throw new BurnCanceled();\r
+ }\r
}\r
});\r
\r
revalidate();\r
}\r
});\r
+ } catch (BurnCanceled c){\r
+ System.err.println("Burn Canceled!");\r
} catch (Exception e) {\r
remove(bar);\r
JTextArea t = new JTextArea(e.getMessage());\r
add(t);\r
}\r
}\r
- }.start();\r
+ };\r
+ currentThread.start();\r
}\r
}\r
\r