Coverage Report - org.homeunix.thecave.buddi.view.menu.items.FileQuit
 
Classes in this File Line Coverage Branch Coverage Complexity
FileQuit
66%
12/18
58%
7/12
4.5
 
 1  
 /*
 2  
  * Created on Aug 6, 2007 by wyatt
 3  
  */
 4  
 package org.homeunix.thecave.buddi.view.menu.items;
 5  
 
 6  
 import java.awt.Toolkit;
 7  
 import java.awt.event.ActionEvent;
 8  
 import java.awt.event.KeyEvent;
 9  
 import java.io.File;
 10  
 import java.util.LinkedList;
 11  
 import java.util.List;
 12  
 import java.util.logging.Logger;
 13  
 
 14  
 import javax.swing.KeyStroke;
 15  
 
 16  
 import org.homeunix.thecave.buddi.i18n.keys.MenuKeys;
 17  
 import org.homeunix.thecave.buddi.model.prefs.PrefsModel;
 18  
 import org.homeunix.thecave.buddi.view.MainFrame;
 19  
 
 20  
 import ca.digitalcave.moss.swing.ApplicationModel;
 21  
 import ca.digitalcave.moss.swing.MossFrame;
 22  
 import ca.digitalcave.moss.swing.MossMenuItem;
 23  
 
 24  
 public class FileQuit extends MossMenuItem {
 25  
         public static final long serialVersionUID = 0;
 26  
         
 27  
         public FileQuit(MossFrame frame) {
 28  5975
                 super(frame, PrefsModel.getInstance().getTranslator().get(MenuKeys.MENU_FILE_QUIT),
 29  
                                 KeyStroke.getKeyStroke(KeyEvent.VK_Q, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 30  5975
         }
 31  
         
 32  
         public void actionPerformed(ActionEvent e) {
 33  
                 
 34  22
                 List<MossFrame> frames = ApplicationModel.getInstance().getOpenFrames();
 35  22
                 List<File> openFiles = new LinkedList<File>();
 36  22
                 for (MossFrame frame : frames) {
 37  54
                         if (frame instanceof MainFrame){
 38  22
                                 openFiles.add(((MainFrame) frame).getDocument().getFile());
 39  
                         }
 40  
                 }
 41  22
                 if (openFiles.size() > 0)
 42  22
                         PrefsModel.getInstance().setLastDataFiles(openFiles);
 43  
                 
 44  22
                 PrefsModel.getInstance().save();
 45  
                 
 46  22
                 for (MossFrame frame : ApplicationModel.getInstance().getOpenFrames()) {
 47  49
                         if (!frame.canClose()){
 48  0
                                 Logger.getLogger(this.getClass().getName()).finest("Frame " + frame.getTitle() + " refused to quit; cancelling quit request.");
 49  0
                                 return;
 50  
                         }
 51  
                 }
 52  
                 
 53  
                 //We have already checked the windows; if none of them cancelled the request, we can just close.
 54  0
                 while (ApplicationModel.getInstance().getOpenFrames().size() > 0) {
 55  0
                         ApplicationModel.getInstance().getOpenFrames().get(0).closeWindowWithoutPrompting();
 56  
                 }
 57  
                 
 58  0
                 System.exit(0);
 59  0
         }
 60  
 }