Statistics
| Revision:

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
}