EMMA Coverage Report (generated Wed Feb 13 07:49:24 ICT 2008)
[all classes][net.sourceforge.hiveboard.command]

COVERAGE SUMMARY FOR SOURCE FILE [SaveBoardCommands.java]

nameclass, %method, %block, %line, %
SaveBoardCommands.java100% (4/4)78%  (14/18)60%  (221/367)73%  (58.8/80)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SaveBoardCommands$1100% (1/1)50%  (1/2)26%  (6/23)50%  (1/2)
confirm (File): boolean 0%   (0/1)0%   (0/17)0%   (0/1)
SaveBoardCommands$1 (SaveBoardCommands): void 100% (1/1)100% (6/6)100% (1/1)
     
class SaveBoardCommands$ImageWriterWarning100% (1/1)60%  (3/5)51%  (18/35)59%  (4.8/8)
getWarnings (): String [] 0%   (0/1)0%   (0/9)0%   (0/1)
warningOccurred (ImageWriter, int, String): void 0%   (0/1)0%   (0/6)0%   (0/2)
hasWarnings (): boolean 100% (1/1)75%  (6/8)75%  (0.8/1)
SaveBoardCommands$ImageWriterWarning (): void 100% (1/1)100% (8/8)100% (2/2)
reset (): void 100% (1/1)100% (4/4)100% (2/2)
     
class SaveBoardCommands100% (1/1)86%  (6/7)61%  (176/288)73%  (45/62)
saveBoardAs (): void 0%   (0/1)0%   (0/4)0%   (0/2)
doSave (boolean): void 100% (1/1)42%  (24/57)67%  (8/12)
save (): void 100% (1/1)47%  (58/123)65%  (15/23)
saveAs (): void 100% (1/1)86%  (63/73)81%  (13/16)
<static initializer> 100% (1/1)100% (4/4)100% (1/1)
SaveBoardCommands (ImageSaveChooser): void 100% (1/1)100% (23/23)100% (6/6)
saveBoard (): void 100% (1/1)100% (4/4)100% (2/2)
     
class SaveBoardCommands$BoardFile100% (1/1)100% (4/4)100% (21/21)100% (8/8)
SaveBoardCommands$BoardFile (ImageWriter, ImageWriteParam, File): void 100% (1/1)100% (12/12)100% (5/5)
getFile (): File 100% (1/1)100% (3/3)100% (1/1)
getWriteParam (): ImageWriteParam 100% (1/1)100% (3/3)100% (1/1)
getWriter (): ImageWriter 100% (1/1)100% (3/3)100% (1/1)

1//  Copyright 2004-2007 Jean-Francois Poilpret
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14 
15package net.sourceforge.hiveboard.command;
16 
17import java.awt.image.BufferedImage;
18import java.io.File;
19import java.io.IOException;
20import java.util.ArrayList;
21import java.util.HashMap;
22import java.util.List;
23import java.util.Map;
24 
25import javax.imageio.IIOImage;
26import javax.imageio.ImageIO;
27import javax.imageio.ImageWriteParam;
28import javax.imageio.ImageWriter;
29import javax.imageio.event.IIOWriteWarningListener;
30import javax.imageio.stream.ImageOutputStream;
31 
32import org.apache.commons.logging.Log;
33import org.apache.commons.logging.LogFactory;
34import org.jdesktop.application.Action;
35 
36import net.sourceforge.hivegui.component.ImageSaveChooser;
37import net.sourceforge.hivegui.component.OverwriteFileConfirmer;
38import net.sourceforge.hivegui.message.UserChoice;
39 
40/**
41 * @author Jean-Francois Poilpret
42 */
43public class SaveBoardCommands extends AbstractCommandHolder
44{
45        static private final Log        _logger = LogFactory.getLog(SaveBoardCommands.class);
46 
47        public SaveBoardCommands(ImageSaveChooser chooser)
48        {
49                _chooser = chooser;
50                _chooser.setOverwriteFileConfirmer(new OverwriteFileConfirmer()
51                {
52                        public boolean        confirm(File file)
53                        {
54                                return showMessage(        "confirm-overwrite-file", 
55                                                                        file.getName()) == UserChoice.YES;
56                        }
57                });
58        }
59        
60        @Action(enabledProperty = DRAW_BOARD_SELECTED)
61        public void        saveBoard()
62        {
63                doSave(false);
64        }
65        
66        @Action(enabledProperty = DRAW_BOARD_SELECTED)
67        public void        saveBoardAs()
68        {
69                doSave(true);
70        }
71        
72        protected void        doSave(boolean saveAs)
73        {
74                if (_guiContext.getImageModel() != null)
75                {
76                        int board = _guiContext.getDrawBoard().getId();
77                        try
78                        {
79                                if (        saveAs
80                                        ||        !_boardFiles.containsKey(board))
81                                {
82                                        // Show file save dialog
83                                        saveAs();
84                                }
85                                else
86                                {
87                                        save();
88                                }
89                        }
90                        catch (IOException e)
91                        {
92                                _logger.error("doExecute()", e);
93                                BoardFile info = _boardFiles.get(board);
94                                showMessage("io-error-when-saving",
95                                                        info.getFile().getName(),
96                                                        e,
97                                                        e.getMessage());
98                        }
99                }
100        }
101 
102        protected void        saveAs() throws IOException
103        {
104                BufferedImage image = _guiContext.getImageModel().getImage();
105                _chooser.setImage(image);
106                _chooser.setContext(_context);
107 
108                if (!_application.showDialog(_chooser))
109                {
110                        return;
111                }
112 
113                // Get File Path
114                ImageWriter writer = _chooser.getImageWriter();
115                if (writer == null)
116                {
117                        _logger.error("saveAs() no ImageWriter found");
118                        showMessage("unexpected-error");
119                        return;
120                }
121                ImageWriteParam params = _chooser.getImageWriteParam();
122                File file = _chooser.getSelectedFile();
123                _logger.debug("saveAs() selected file = " + file);
124                
125                _boardFiles.put(_guiContext.getDrawBoard().getId(), 
126                                                new BoardFile(writer, params, file));
127                // Transform into required format
128                save();
129        }
130 
131        protected void        save() throws IOException
132        {
133                int board = _guiContext.getDrawBoard().getId();
134                BoardFile info = _boardFiles.get(board);
135                ImageWriter writer = info.getWriter();
136                ImageWriteParam param = info.getWriteParam();
137                File file = info.getFile();
138                BufferedImage image = _guiContext.getImageModel().getImage();
139                _warnings.reset();
140                // Transform into required format
141                ImageOutputStream ios = ImageIO.createImageOutputStream(file);
142                writer.addIIOWriteWarningListener(_warnings);
143                writer.setOutput(ios);
144                writer.write(null, new IIOImage(image, null, null), param);
145                ios.flush();
146                ios.close();
147                
148                if (_warnings.hasWarnings())
149                {
150                        StringBuffer warn = new StringBuffer();
151                        String[] warnings = _warnings.getWarnings();
152                        _logger.debug("save() ImageWriter raised warnings for file " + file.getName());
153                        // Concatenate all warnings into one string with \n
154                        for (int i = 0; i < warnings.length; i++)
155                        {
156                                _logger.debug("Warning: " + warnings[i]);
157                                warn.append('\n');
158                                warn.append(warnings[i]);
159                        }
160                        showMessage("warning-when-saving", file.getName(), warn.toString());
161                }
162        }
163        
164        static protected class BoardFile
165        {
166                public BoardFile(        ImageWriter                writer,
167                                                        ImageWriteParam        param,
168                                                        File                        file)
169                {
170                        _writer = writer;
171                        _param = param;
172                        _file = file;
173                }
174                
175                public ImageWriter        getWriter()
176                {
177                        return _writer;
178                }
179                
180                public ImageWriteParam        getWriteParam()
181                {
182                        return _param;
183                }
184                
185                public File                getFile()
186                {
187                        return _file;
188                }
189                
190                private final ImageWriter                _writer;
191                private final ImageWriteParam        _param;
192                private final File                                _file;
193        }
194        
195        static protected class ImageWriterWarning implements IIOWriteWarningListener
196        {
197                public void        reset()
198                {
199                        _warnings.clear();
200                }
201                
202                public boolean        hasWarnings()
203                {
204                        return !_warnings.isEmpty();
205                }
206                
207                public String[]        getWarnings()
208                {
209                        return _warnings.toArray(new String[_warnings.size()]);
210                }
211                
212                public void        warningOccurred(ImageWriter source, int imageIndex, String warning)
213                {
214                        _warnings.add(warning);
215                }
216                
217                private List<String>        _warnings = new ArrayList<String>();
218        }
219 
220        protected final ImageSaveChooser                _chooser;
221        protected final Map<Integer, BoardFile>        _boardFiles = new HashMap<Integer, BoardFile>();
222        protected final ImageWriterWarning                _warnings = new ImageWriterWarning();
223}

[all classes][net.sourceforge.hiveboard.command]
EMMA 2.0.5312 (C) Vladimir Roubtsov