EMMA Coverage Report (generated Sat Oct 08 11:41:37 CEST 2011)
[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-2011 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;
37 
38import org.apache.commons.logging.Log;
39import org.apache.commons.logging.LogFactory;
40 
41/**
42 *  JFrame to show progress and result of a conversion.
43 *
44 * @see       net.sf.jomic.comic.ConversionReport
45 * @author    Thomas Aglassinger
46 */
47class ConversionReportFrame extends JFrame implements ActionListener
48{
49    public static final String COMMAND_CANCEL = "cancel";
50    public static final String COMMAND_SKIP = "skip";
51    private static final int PREFERRED_REPORT_TABLE_HEIGHT = 200;
52    private static final int PREFERRED_REPORT_TABLE_WIDTH = 500;
53    private ActionDelegate actionDelegate;
54    private JButton cancelButton;
55    private JomicTools jomicTools;
56    private LocaleTools localeTools;
57    private Log logger;
58    private JProgressBar progressBar;
59    private ConversionReport report;
60    private JTable reportTable;
61    private Settings settings;
62    private UiTools uiTools;
63 
64    public ConversionReportFrame() {
65        logger = LogFactory.getLog(ConversionReportFrame.class);
66        jomicTools = JomicTools.instance();
67        localeTools = LocaleTools.instance();
68        uiTools = UiTools.instance();
69        settings = Settings.instance();
70        progressBar = new JProgressBar();
71        getContentPane().add(createMainPanel());
72        jomicTools.setIconToJomicLogo(this);
73        actionDelegate = new ActionDelegate(logger);
74 
75        String frameTitle = localeTools.getMessage("dialogs.conversionReport.title");
76 
77        setTitle(frameTitle);
78        pack();
79        settings.applyComponentAreaProperty(PropertyConstants.CONVERSION_REPORT_WINDOW, this);
80    }
81 
82    public void setReport(ConversionReport newReport) {
83        assert newReport != null;
84        report = newReport;
85        reportTable.setModel(report);
86 
87    }
88 
89    public JProgressBar getProgressBar() {
90        return progressBar;
91    }
92 
93    public void actionPerformed(ActionEvent event) {
94        try {
95            assert event != null;
96            String command = event.getActionCommand();
97 
98            assert command != null;
99            if (command.equals(COMMAND_CANCEL)) {
100                cancelButton.setEnabled(false);
101                actionDelegate.actionPerformed(event);
102            } else {
103                assert false : "command=" + command;
104            }
105        } catch (Exception error) {
106            jomicTools.showError(event, error);
107        }
108    }
109 
110    /**
111     *  Add listener to be notified when the "Cancel" button is pressed.
112     */
113    public void addActionListener(ActionListener listener) {
114        actionDelegate.addActionListener(listener);
115    }
116 
117    public void dispose() {
118        uiTools.attemptToRemoveActionListener(cancelButton, this);
119        report = null;
120        super.dispose();
121    }
122 
123    public void done() {
124        cancelButton.setEnabled(false);
125        progressBar.setValue(progressBar.getMaximum());
126        progressBar.setVisible(false);
127    }
128 
129    /**
130     *  Remove listener to be notified when the "Cancel" button is pressed.
131     */
132    public void removeActionListener(ActionListener listener) {
133        actionDelegate.removeActionListener(listener);
134    }
135 
136    private JPanel createButtonPanel() {
137        JPanel result = new JPanel();
138 
139        cancelButton = localeTools.createCancelButton();
140        cancelButton.setActionCommand(COMMAND_CANCEL);
141        cancelButton.addActionListener(this);
142        result.add(cancelButton);
143        return result;
144    }
145 
146    private JPanel createMainPanel() {
147        assert progressBar != null;
148        JPanel result = new JPanel();
149        JPanel buttonPanel = createButtonPanel();
150        JPanel progressAndButtonPanel = new JPanel();
151 
152        progressBar.setIndeterminate(true);
153        reportTable = new JTable();
154 
155        Dimension preferredTableSize =
156                new Dimension(PREFERRED_REPORT_TABLE_WIDTH, PREFERRED_REPORT_TABLE_HEIGHT);
157 
158        reportTable.setPreferredScrollableViewportSize(preferredTableSize);
159 
160        JScrollPane reportPane = new JScrollPane(reportTable);
161 
162        progressAndButtonPanel.setLayout(new BorderLayout());
163        progressAndButtonPanel.add(progressBar, BorderLayout.CENTER);
164        progressAndButtonPanel.add(buttonPanel, BorderLayout.LINE_END);
165 
166        result.setLayout(new BorderLayout());
167        result.add(progressAndButtonPanel, BorderLayout.PAGE_START);
168        result.add(reportPane, BorderLayout.CENTER);
169 
170        return result;
171    }
172}

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