update j2k_lib with new opj type
[openjpeg.git] / applications / jpip / util / opj_viewer_xerces / src / OptionPanel.java
1 /*
2  * $Id$
3  *
4  * Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
5  * Copyright (c) 2002-2011, Professor Benoit Macq
6  * Copyright (c) 2010-2011, Kaori Hagihara
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 import java.awt.*;
32 import java.awt.event.*;
33 import javax.swing.*;
34
35 public class OptionPanel extends JPanel implements ActionListener
36 {
37     private JButton roibutton;
38     private JButton imregbutton;
39     private ImageManager imgmanager;
40     private ImageViewer iv;
41     private JP2XMLparser xmlparser;
42     private JFrame regimwindow;
43     private RegimViewer regimgviewer;
44     
45     public OptionPanel( ImageManager manager, ImageViewer imgviewer)
46     {
47         this.setLayout(new BoxLayout( this, BoxLayout.Y_AXIS));
48
49         roibutton = new JButton("Region Of Interest");
50         imregbutton = new JButton("Image Registration");
51
52         roibutton.setAlignmentX( Component.CENTER_ALIGNMENT);
53         imregbutton.setAlignmentX( Component.CENTER_ALIGNMENT);
54         
55         add( roibutton);
56         add( imregbutton);
57         roibutton.addActionListener(this);
58         imregbutton.addActionListener(this);
59
60         imgmanager = manager;
61         iv = imgviewer;
62         xmlparser = null;
63     }
64
65     public void actionPerformed(ActionEvent e)
66     {
67         if( xmlparser == null){
68             byte []xmldata = imgmanager.getXML();
69             if( xmldata != null)
70                 xmlparser = new JP2XMLparser( xmldata);
71         }
72         if( e.getSource() == roibutton){
73             if( xmlparser != null){
74                 JP2XMLparser.ROIparams roi[] = xmlparser.getROIparams();
75                 iv.annotate( roi);
76             }
77         }
78         if( e.getSource() == imregbutton){
79             if( xmlparser != null){
80                 if( regimwindow == null){
81                     JP2XMLparser.IRTparams irt = xmlparser.getIRTparams();
82                     
83                     regimgviewer = new RegimViewer( irt.refimg, irt.mat);
84                     regimgviewer.setOpaque(false);
85
86                     regimwindow = new JFrame("Registered Image");
87                     regimwindow.getContentPane().add("Center", regimgviewer);
88                     regimwindow.pack();
89                     regimwindow.setLocation( 500, 50);
90                     regimwindow.setVisible(true);
91                 }
92                 regimgviewer.projection( iv.getImage(), (double)imgmanager.getRw()/(double)imgmanager.getOrigWidth());
93                 regimwindow.setSize( regimgviewer.get_imsize());
94                 regimwindow.show();
95             }
96         }
97     }
98 }