EMMA Coverage Report (generated Sun Apr 20 22:38:01 CEST 2008)
[all classes][net.sf.jomic.ui]

COVERAGE SUMMARY FOR SOURCE FILE [ConversionReportFrame.java]

nameclass, %method, %block, %line, %
ConversionReportFrame.java100% (1/1)91%  (10/11)76%  (217/287)81%  (53.8/66)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ConversionReportFrame100% (1/1)91%  (10/11)76%  (217/287)81%  (53.8/66)
actionPerformed (ActionEvent): void 0%   (0/1)0%   (0/54)0%   (0/11)
setReport (ConversionReport): void 100% (1/1)76%  (13/17)88%  (3.5/4)
<static initializer> 100% (1/1)80%  (12/15)80%  (0.8/1)
ConversionReportFrame (): void 100% (1/1)92%  (58/63)99%  (14.9/15)
createMainPanel (): JPanel 100% (1/1)95%  (70/74)97%  (15.6/16)
addActionListener (ActionListener): void 100% (1/1)100% (5/5)100% (2/2)
createButtonPanel (): JPanel 100% (1/1)100% (24/24)100% (6/6)
dispose (): void 100% (1/1)100% (12/12)100% (4/4)
done (): void 100% (1/1)100% (15/15)100% (4/4)
getProgressBar (): JProgressBar 100% (1/1)100% (3/3)100% (1/1)
removeActionListener (ActionListener): void 100% (1/1)100% (5/5)100% (2/2)

1// Jomic - a viewer for comic book archives.
2// Copyright (C) 2004-2008 Thomas Aglassinger
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program.  If not, see <http://www.gnu.org/licenses/>.
16package net.sf.jomic.ui;
17 
18import java.awt.BorderLayout;
19import java.awt.Dimension;
20import java.awt.event.ActionEvent;
21import java.awt.event.ActionListener;
22 
23import javax.swing.JButton;
24import javax.swing.JFrame;
25import javax.swing.JPanel;
26import javax.swing.JProgressBar;
27import javax.swing.JScrollPane;
28import javax.swing.JTable;
29 
30import net.sf.jomic.comic.ConversionReport;
31import net.sf.jomic.common.JomicTools;
32import net.sf.jomic.common.PropertyConstants;
33import net.sf.jomic.common.Settings;
34import net.sf.jomic.tools.ActionDelegate;
35import net.sf.jomic.tools.LocaleTools;
36import net.sf.jomic.tools.UiTools;
37import net.sf.wraplog.Logger;
38 
39/**
40 *  JFrame to show progress and result of a conversion.
41 *
42 * @see       net.sf.jomic.comic.ConversionReport
43 * @author    Thomas Aglassinger
44 */
45class ConversionReportFrame extends JFrame implements ActionListener
46{
47    public static final String COMMAND_CANCEL = "cancel";
48    public static final String COMMAND_SKIP = "skip";
49    private static final int PREFERRED_REPORT_TABLE_HEIGHT = 200;
50    private static final int PREFERRED_REPORT_TABLE_WIDTH = 500;
51    private ActionDelegate actionDelegate;
52    private JButton cancelButton;
53    private JomicTools jomicTools;
54    private LocaleTools localeTools;
55    private Logger logger;
56    private JProgressBar progressBar;
57    private ConversionReport report;
58    private JTable reportTable;
59    private Settings settings;
60    private UiTools uiTools;
61 
62    public ConversionReportFrame() {
63        logger = Logger.getLogger(ConversionReportFrame.class);
64        jomicTools = JomicTools.instance();
65        localeTools = LocaleTools.instance();
66        uiTools = UiTools.instance();
67        settings = Settings.instance();
68        progressBar = new JProgressBar();
69        getContentPane().add(createMainPanel());
70        jomicTools.setIconToJomicLogo(this);
71        actionDelegate = new ActionDelegate(logger);
72 
73        String frameTitle = localeTools.getMessage("dialogs.conversionReport.title");
74 
75        setTitle(frameTitle);
76        pack();
77        settings.applyComponentAreaProperty(PropertyConstants.CONVERSION_REPORT_WINDOW, this);
78    }
79 
80    public void setReport(ConversionReport newReport) {
81        assert newReport != null;
82        report = newReport;
83        reportTable.setModel(report);
84 
85    }
86 
87    public JProgressBar getProgressBar() {
88        return progressBar;
89    }
90 
91    public void actionPerformed(ActionEvent event) {
92        try {
93            assert event != null;
94            String command = event.getActionCommand();
95 
96            assert command != null;
97            if (command.equals(COMMAND_CANCEL)) {
98                cancelButton.setEnabled(false);
99                actionDelegate.actionPerformed(event);
100            } else {
101                assert false : "command=" + command;
102            }
103        } catch (Exception error) {
104            jomicTools.showError(event, error);
105        }
106    }
107 
108    /**
109     *  Add listener to be notified when the "Cancel" button is pressed.
110     */
111    public void addActionListener(ActionListener listener) {
112        actionDelegate.addActionListener(listener);
113    }
114 
115    public void dispose() {
116        uiTools.attemptToRemoveActionListener(cancelButton, this);
117        report = null;
118        super.dispose();
119    }
120 
121    public void done() {
122        cancelButton.setEnabled(false);
123        progressBar.setValue(progressBar.getMaximum());
124        progressBar.setVisible(false);
125    }
126 
127    /**
128     *  Remove listener to be notified when the "Cancel" button is pressed.
129     */
130    public void removeActionListener(ActionListener listener) {
131        actionDelegate.removeActionListener(listener);
132    }
133 
134    private JPanel createButtonPanel() {
135        JPanel result = new JPanel();
136 
137        cancelButton = localeTools.createCancelButton();
138        cancelButton.setActionCommand(COMMAND_CANCEL);
139        cancelButton.addActionListener(this);
140        result.add(cancelButton);
141        return result;
142    }
143 
144    private JPanel createMainPanel() {
145        assert progressBar != null;
146        JPanel result = new JPanel();
147        JPanel buttonPanel = createButtonPanel();
148        JPanel progressAndButtonPanel = new JPanel();
149 
150        progressBar.setIndeterminate(true);
151        reportTable = new JTable();
152 
153        Dimension preferredTableSize =
154                new Dimension(PREFERRED_REPORT_TABLE_WIDTH, PREFERRED_REPORT_TABLE_HEIGHT);
155 
156        reportTable.setPreferredScrollableViewportSize(preferredTableSize);
157 
158        JScrollPane reportPane = new JScrollPane(reportTable);
159 
160        progressAndButtonPanel.setLayout(new BorderLayout());
161        progressAndButtonPanel.add(progressBar, BorderLayout.CENTER);
162        progressAndButtonPanel.add(buttonPanel, BorderLayout.LINE_END);
163 
164        result.setLayout(new BorderLayout());
165        result.add(progressAndButtonPanel, BorderLayout.PAGE_START);
166        result.add(reportPane, BorderLayout.CENTER);
167 
168        return result;
169    }
170}

[all classes][net.sf.jomic.ui]
EMMA 2.0.4217 (C) Vladimir Roubtsov