root / branches / v10 / libraries / libjni-gdal / src / es / gva / cit / jgdal / DiagSignalHandler.java @ 10988
History | View | Annotate | Download (1.37 KB)
1 |
package es.gva.cit.jgdal; |
---|---|
2 |
import sun.misc.Signal; |
3 |
import sun.misc.SignalHandler; |
4 |
import java.lang.reflect.*; |
5 |
import java.awt.event.ActionEvent; |
6 |
import java.awt.event.ActionListener; |
7 |
import java.io.IOException; |
8 |
import javax.swing.JFrame; |
9 |
import javax.swing.JPanel; |
10 |
import javax.swing.JButton; |
11 |
import java.awt.BorderLayout; |
12 |
import javax.swing.JLabel; |
13 |
|
14 |
class DiagSignalHandler implements SignalHandler { |
15 |
|
16 |
private SignalHandler oldHandler;
|
17 |
private static boolean active = false; |
18 |
|
19 |
//Static method to install the signal handler
|
20 |
public static DiagSignalHandler install(String signalName) { |
21 |
Signal diagSignal = new Signal(signalName);
|
22 |
DiagSignalHandler diagHandler = new DiagSignalHandler();
|
23 |
diagHandler.oldHandler = Signal.handle(diagSignal,diagHandler); |
24 |
return diagHandler;
|
25 |
} |
26 |
// Signal handler method
|
27 |
public void handle(Signal sig) { |
28 |
if(active)
|
29 |
return;
|
30 |
active = true;
|
31 |
JFrame frame = new JFrame(); |
32 |
frame.setSize(400, 150); |
33 |
JPanel p = new JPanel(); |
34 |
JLabel l = new JLabel("SIGSEGV signal handler. Signal: " + sig); |
35 |
p.setLayout(new BorderLayout()); |
36 |
JButton b = new JButton("Close"); |
37 |
b.addActionListener(new ActionListener() { |
38 |
public void actionPerformed(ActionEvent e) { |
39 |
System.out.println("Handler test"); |
40 |
} |
41 |
}); |
42 |
p.add(l, BorderLayout.NORTH);
|
43 |
p.add(b, BorderLayout.SOUTH);
|
44 |
|
45 |
frame.getContentPane().add(p); |
46 |
frame.show(); |
47 |
} |
48 |
} |