OSDN Git Service

451b27cf1297d5a80094960eade6fbcfe1b02c8d
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / BirthmarkExtractionResultPane.java
1 package jp.sourceforge.stigmata.ui.swing;
2
3 /*
4  * $Id$
5  */
6
7 import java.awt.BorderLayout;
8 import java.awt.event.ActionEvent;
9 import java.io.PrintWriter;
10
11 import javax.swing.AbstractAction;
12 import javax.swing.Action;
13 import javax.swing.Box;
14 import javax.swing.JButton;
15 import javax.swing.JComponent;
16 import javax.swing.JPanel;
17 import javax.swing.JPopupMenu;
18 import javax.swing.JScrollPane;
19
20 import jp.sourceforge.stigmata.ExtractionResultSet;
21 import jp.sourceforge.stigmata.ExtractionTarget;
22 import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
23 import jp.sourceforge.stigmata.printer.PrinterManager;
24 import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
25 import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction;
26 import jp.sourceforge.stigmata.ui.swing.actions.SaveAction;
27 import jp.sourceforge.stigmata.utils.AsciiDataWritable;
28 import jp.sourceforge.talisman.i18n.Messages;
29
30 /**
31  * @author Haruaki TAMADA
32  * @version $Revision$ 
33  */
34 public class BirthmarkExtractionResultPane extends JPanel{
35     private static final long serialVersionUID = 239084365756236543L;
36
37     private StigmataFrame frame;
38     private ExtractionResultSet extraction;
39
40     public BirthmarkExtractionResultPane(StigmataFrame stigmataFrame, ExtractionResultSet ers){
41         this.frame = stigmataFrame;
42         this.extraction = ers;
43
44         initLayouts();
45     }
46
47     private void initLayouts(){
48         JComponent southPanel = Box.createHorizontalBox();
49         Action saveAction = new SaveAction(frame, new AsciiDataWritable(){
50             @Override
51             public void writeAsciiData(PrintWriter out, String format){
52                 ResultPrinterSpi service = PrinterManager.getInstance().getService(format);
53                 if(service == null){
54                     service = PrinterManager.getDefaultFormatService();
55                 }
56
57                 ExtractionResultSetPrinter list = service.getExtractionResultSetPrinter();
58                 list.printResult(new PrintWriter(out), extraction);
59             }
60         });
61         Action compareAction = new AbstractAction(){
62             private static final long serialVersionUID = -1938101718384412339L;
63
64             @Override
65             public void actionPerformed(ActionEvent e){
66                 frame.compareExtractionResult(extraction);
67             }
68         };
69         Messages messages = frame.getMessages();
70         JButton saveButton = GUIUtility.createButton(messages, "savebirthmark", saveAction);
71         JButton compareButton = GUIUtility.createButton(messages, "comparebirthmark", compareAction);
72
73         JPopupMenu popup = new JPopupMenu();
74         popup.add(GUIUtility.createJMenuItem(messages, "savebirthmark", saveAction));
75         popup.add(GUIUtility.createJMenuItem(messages, "comparebirthmark", compareAction));
76
77         JScrollPane scroll = new JScrollPane();
78         scroll.setViewportView(new BirthmarkTree(frame, extraction.getBirthmarkSets(ExtractionTarget.TARGET_BOTH)));
79
80         setLayout(new BorderLayout());
81         add(popup);
82         add(scroll, BorderLayout.CENTER);
83         add(southPanel, BorderLayout.SOUTH);
84         southPanel.add(Box.createHorizontalGlue());
85         southPanel.add(saveButton);
86         southPanel.add(Box.createHorizontalGlue());
87         southPanel.add(compareButton);
88         southPanel.add(Box.createHorizontalGlue());
89
90         addMouseListener(new PopupShowAction(popup));
91     }
92 }