Coverage Report - org.jtheque.films.view.impl.frames.AutoImportVIew
 
Classes in this File Line Coverage Branch Coverage Complexity
AutoImportVIew
0 %
0/65
0 %
0/4
1.118
 
 1  
 package org.jtheque.films.view.impl.frames;
 2  
 
 3  
 /*
 4  
  * This file is part of JTheque.
 5  
  *
 6  
  * JTheque is free software: you can redistribute it and/or modify
 7  
  * it under the terms of the GNU General Public License as published by
 8  
  * the Free Software Foundation, either version 3 of the License.
 9  
  *
 10  
  * JTheque is distributed in the hope that it will be useful,
 11  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 12  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 13  
  * GNU General Public License for more details.
 14  
  *
 15  
  * You should have received a copy of the GNU General Public License
 16  
  * along with JTheque.  If not, see <http://www.gnu.org/licenses/>.
 17  
  */
 18  
 
 19  
 import org.jdesktop.swingx.JXRadioGroup;
 20  
 import org.jtheque.core.managers.error.JThequeError;
 21  
 import org.jtheque.core.managers.view.impl.components.model.SimpleComboBoxModel;
 22  
 import org.jtheque.core.managers.view.impl.components.panel.FileChooserPanel;
 23  
 import org.jtheque.core.managers.view.impl.frame.abstraction.SwingDialogView;
 24  
 import org.jtheque.core.utils.ui.PanelBuilder;
 25  
 import org.jtheque.core.utils.ui.ValidationUtils;
 26  
 import org.jtheque.films.utils.Constants.Site;
 27  
 import org.jtheque.films.view.able.IAutoImportView;
 28  
 import org.jtheque.films.view.impl.actions.CloseViewAction;
 29  
 import org.jtheque.films.view.impl.actions.auto.imports.AcAddTitle;
 30  
 import org.jtheque.films.view.impl.actions.auto.imports.AcDeleteTitle;
 31  
 import org.jtheque.films.view.impl.actions.auto.imports.AcSearchTitles;
 32  
 import org.jtheque.films.view.impl.actions.auto.imports.AcValidateAutoImportView;
 33  
 import org.jtheque.films.view.impl.models.able.IAutoImportFilm;
 34  
 
 35  
 import javax.swing.DefaultListModel;
 36  
 import javax.swing.JList;
 37  
 import javax.swing.ListSelectionModel;
 38  
 import java.awt.Color;
 39  
 import java.awt.Container;
 40  
 import java.awt.Frame;
 41  
 import java.awt.GridBagConstraints;
 42  
 import java.util.Collection;
 43  
 
 44  
 /**
 45  
  * View for the auto-import function.
 46  
  *
 47  
  * @author Baptiste Wicht
 48  
  */
 49  0
 public final class AutoImportVIew extends SwingDialogView implements IAutoImportView {
 50  
     private static final long serialVersionUID = 4633039680922071605L;
 51  
 
 52  
     private FileChooserPanel directoryChooser;
 53  
     private JList listTitles;
 54  
     private JXRadioGroup<String> fileMode;
 55  
     private JXRadioGroup<String> webMode;
 56  
 
 57  
     private SimpleComboBoxModel<Site> sitesModel;
 58  
     private DefaultListModel modelListTitles;
 59  
 
 60  0
     private int phase = PHASE_1;
 61  
 
 62  
     /**
 63  
      * Construct a new JFrameAutoImport.
 64  
      *
 65  
      * @param parent             The parent frame.
 66  
      */
 67  
     public AutoImportVIew(Frame parent) {
 68  0
         super(parent);
 69  
 
 70  0
         build();
 71  0
     }
 72  
 
 73  
     /**
 74  
      * Init the view.
 75  
      */
 76  
     private void build() {
 77  0
         setTitleKey("auto.import.view.title");
 78  0
         setContentPane(buildContentPane());
 79  0
         setResizable(false);
 80  0
         pack();
 81  
 
 82  0
         setLocationRelativeTo(getOwner());
 83  0
     }
 84  
 
 85  
     /**
 86  
      * Init the graphics user interface.
 87  
      *
 88  
      * @return The content pane.
 89  
      */
 90  
     private Container buildContentPane() {
 91  0
         PanelBuilder builder = new PanelBuilder();
 92  
 
 93  0
         addDirectoryChooser(builder);
 94  0
         addFileModeField(builder);
 95  
 
 96  0
         builder.addButtonBar(builder.gbcSet(0, 2, GridBagConstraints.HORIZONTAL, 2, 1), new AcSearchTitles());
 97  
 
 98  0
         addTitleList(builder);
 99  
 
 100  0
         builder.addButtonBar(builder.gbcSet(0, 4, GridBagConstraints.HORIZONTAL, 2, 1),
 101  
                 new AcDeleteTitle(), new AcAddTitle());
 102  
 
 103  0
         addWebModeField(builder);
 104  0
         addSiteField(builder);
 105  
 
 106  0
         builder.addButtonBar(builder.gbcSet(0, 7, GridBagConstraints.HORIZONTAL, 2, 1),
 107  
                 new AcValidateAutoImportView(), new CloseViewAction("generic.view.actions.cancel", this));
 108  
 
 109  0
         return builder.getPanel();
 110  
     }
 111  
 
 112  
     /**
 113  
      * Add the directory chooser.
 114  
      *
 115  
      * @param builder The panel builder.
 116  
      */
 117  
     private void addDirectoryChooser(PanelBuilder builder) {
 118  0
         directoryChooser = new FileChooserPanel();
 119  0
         directoryChooser.setDirectoriesOnly();
 120  0
         directoryChooser.setTextKey("auto.import.file.folder");
 121  
 
 122  0
         builder.add(directoryChooser, builder.gbcSet(0, 0, GridBagConstraints.HORIZONTAL, 2, 1));
 123  0
     }
 124  
 
 125  
     /**
 126  
      * Add file mode field.
 127  
      *
 128  
      * @param builder The panel builder.
 129  
      */
 130  
     private void addFileModeField(PanelBuilder builder) {
 131  0
         builder.addI18nLabel("auto.import.file.mode", builder.gbcSet(0, 1));
 132  
 
 133  0
         String[] values = {getMessage("auto.import.file.mode.file"), getMessage("auto.import.file.mode.directory")};
 134  
 
 135  0
         fileMode = new JXRadioGroup<String>(values);
 136  0
         fileMode.setBackground(Color.white);
 137  0
         fileMode.setSelectedValue(values[0]);
 138  
 
 139  0
         builder.add(fileMode, builder.gbcSet(1, 1));
 140  0
     }
 141  
 
 142  
     /**
 143  
      * Add the title list.
 144  
      *
 145  
      * @param builder The panel builder.
 146  
      */
 147  
     private void addTitleList(PanelBuilder builder) {
 148  0
         modelListTitles = new DefaultListModel();
 149  
 
 150  0
         listTitles = new JList(modelListTitles);
 151  0
         listTitles.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 152  0
         listTitles.setVisibleRowCount(5);
 153  
 
 154  0
         builder.addScrolled(listTitles, builder.gbcSet(0, 3, GridBagConstraints.HORIZONTAL, 2, 1));
 155  0
     }
 156  
 
 157  
     /**
 158  
      * Add the web mode field.
 159  
      *
 160  
      * @param builder The panel builder.
 161  
      */
 162  
     private void addWebModeField(PanelBuilder builder) {
 163  
         String[] values;
 164  0
         builder.addI18nLabel("auto.import.web.mode", builder.gbcSet(0, 5));
 165  
 
 166  0
         values = new String[]{getMessage("auto.import.web.mode.empty"), getMessage("auto.import.web.mode.fill")};
 167  
 
 168  0
         webMode = new JXRadioGroup<String>(values);
 169  0
         webMode.setBackground(Color.white);
 170  0
         webMode.setSelectedValue(values[0]);
 171  
 
 172  0
         builder.add(webMode, builder.gbcSet(1, 5));
 173  0
     }
 174  
 
 175  
     /**
 176  
      * Add site field.
 177  
      *
 178  
      * @param builder The panel builder.
 179  
      */
 180  
     private void addSiteField(PanelBuilder builder) {
 181  0
         builder.addI18nLabel("auto.import.web.site", builder.gbcSet(0, 6));
 182  
 
 183  0
         sitesModel = new SimpleComboBoxModel<Site>(Site.values());
 184  
 
 185  0
         builder.addComboBox(sitesModel, builder.gbcSet(1, 6));
 186  0
     }
 187  
 
 188  
     @Override
 189  
     public String getFolderPath() {
 190  0
         return directoryChooser.getFilePath();
 191  
     }
 192  
 
 193  
     @Override
 194  
     public String getSelectedTitle() {
 195  0
         return (String) listTitles.getSelectedValue();
 196  
     }
 197  
 
 198  
     @Override
 199  
     public DefaultListModel getModelTitles() {
 200  0
         return modelListTitles;
 201  
     }
 202  
 
 203  
     @Override
 204  
     public IAutoImportFilm getModel() {
 205  0
         return (IAutoImportFilm) super.getModel();
 206  
     }
 207  
 
 208  
     @Override
 209  
     public boolean isFileMode() {
 210  0
         return fileMode.getSelectedValue().equals(getMessage("auto.import.file.mode.file"));
 211  
     }
 212  
 
 213  
     @Override
 214  
     public boolean isWebMode() {
 215  0
         return webMode.getSelectedValue().equals(getMessage("auto.import.web.mode.fill"));
 216  
     }
 217  
 
 218  
     @Override
 219  
     public Site getSelectedSite() {
 220  0
         return sitesModel.getSelectedItem();
 221  
     }
 222  
 
 223  
     @Override
 224  
     protected void validate(Collection<JThequeError> errors) {
 225  0
         if (PHASE_1 == phase) {
 226  0
             ValidationUtils.rejectIfEmpty(directoryChooser.getFilePath(), "auto.import.file.folder", errors);
 227  0
         } else if (PHASE_2 == phase) {
 228  0
             ValidationUtils.rejectIfEmpty(getModel().getTitles(), "auto.import.view.title", errors);
 229  0
             ValidationUtils.rejectIfNothingSelected(sitesModel, "auto.import.web.site", errors);
 230  
         }
 231  0
     }
 232  
 
 233  
     @Override
 234  
     public boolean validateContent(int phase) {
 235  0
         this.phase = phase;
 236  
 
 237  0
         return validateContent();
 238  
     }
 239  
 }