Coverage Report - org.jtheque.films.view.impl.panels.JPanelInfosFilm
 
Classes in this File Line Coverage Branch Coverage Complexity
JPanelInfosFilm
0 %
0/89
0 %
0/6
1.25
 
 1  
 package org.jtheque.films.view.impl.panels;
 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.jtheque.core.managers.error.JThequeError;
 20  
 import org.jtheque.core.utils.ui.PanelBuilder;
 21  
 import org.jtheque.core.utils.ui.constraints.ConstraintManager;
 22  
 import org.jtheque.films.persistence.od.able.Film;
 23  
 import org.jtheque.films.services.able.IRealizersService;
 24  
 import org.jtheque.films.utils.Constants.Properties;
 25  
 import org.jtheque.films.view.able.IInfosFilmView;
 26  
 import org.jtheque.films.view.impl.fb.IFilmFormBean;
 27  
 import org.jtheque.primary.od.able.Language;
 28  
 import org.jtheque.primary.od.able.Person;
 29  
 import org.jtheque.primary.od.able.Saga;
 30  
 import org.jtheque.primary.services.able.ILanguagesService;
 31  
 import org.jtheque.primary.services.able.ISagasService;
 32  
 import org.jtheque.primary.view.impl.actions.language.AcNewLanguage;
 33  
 import org.jtheque.primary.view.impl.actions.saga.NewSagaAction;
 34  
 import org.jtheque.primary.view.impl.listeners.ObjectChangedEvent;
 35  
 import org.jtheque.primary.view.impl.models.DataContainerCachedComboBoxModel;
 36  
 import org.jtheque.utils.ui.GridBagUtils;
 37  
 
 38  
 import javax.annotation.PostConstruct;
 39  
 import javax.annotation.Resource;
 40  
 import javax.swing.JButton;
 41  
 import javax.swing.JComboBox;
 42  
 import javax.swing.JComponent;
 43  
 import javax.swing.JFormattedTextField;
 44  
 import javax.swing.JPanel;
 45  
 import javax.swing.JTextArea;
 46  
 import javax.swing.text.DefaultFormatter;
 47  
 import java.text.NumberFormat;
 48  
 import java.util.Collection;
 49  
 
 50  
 /**
 51  
  * Panel for general informations of the film.
 52  
  *
 53  
  * @author Baptiste Wicht
 54  
  */
 55  0
 public final class JPanelInfosFilm extends JPanel implements IInfosFilmView {
 56  
     private DataContainerCachedComboBoxModel<Person> modelRealizer;
 57  
     private DataContainerCachedComboBoxModel<Language> modelLanguage;
 58  
     private DataContainerCachedComboBoxModel<Saga> modelSaga;
 59  
 
 60  
     private JComboBox comboRealizer;
 61  
     private JComboBox comboLanguage;
 62  
     private JComboBox comboSaga;
 63  
 
 64  
     private JFormattedTextField fieldYear;
 65  
     private JFormattedTextField fieldDuration;
 66  
     private JTextArea areaResume;
 67  
 
 68  
     private JButton buttonAddLanguage;
 69  
     private JButton buttonAddSaga;
 70  
 
 71  
     @Resource
 72  
     private ILanguagesService languagesService;
 73  
 
 74  
     @Resource
 75  
     private IRealizersService realizersService;
 76  
 
 77  
     @Resource
 78  
     private ISagasService sagasService;
 79  
 
 80  
     /**
 81  
      * Build the panel.
 82  
      */
 83  
     @PostConstruct
 84  
     private void build() {
 85  0
         PanelBuilder builder = new PanelBuilder(this);
 86  
 
 87  0
         addRealizerField(builder);
 88  
 
 89  0
         NumberFormat format = NumberFormat.getNumberInstance();
 90  0
         format.setParseIntegerOnly(true);
 91  0
         format.setGroupingUsed(false);
 92  
 
 93  0
         addYearField(builder, format);
 94  0
         addDurationField(builder, format);
 95  
 
 96  0
         addLanguageField(builder);
 97  
 
 98  0
         addSagaField(builder);
 99  
 
 100  0
         addResumeField(builder);
 101  0
     }
 102  
 
 103  
     /**
 104  
      * Add the realizer field.
 105  
      *
 106  
      * @param builder The builder of the panel.
 107  
      */
 108  
     private void addRealizerField(PanelBuilder builder) {
 109  0
         builder.addI18nLabel(Properties.Film.REALIZER, builder.gbcSet(0, 0));
 110  
 
 111  0
         modelRealizer = new DataContainerCachedComboBoxModel<Person>(realizersService);
 112  
 
 113  0
         comboRealizer = builder.addComboBox(modelRealizer, builder.gbcSet(1, 0));
 114  0
         comboRealizer.setEnabled(false);
 115  0
     }
 116  
 
 117  
     /**
 118  
      * Add the year field.
 119  
      *
 120  
      * @param builder The builder of the panel.
 121  
      * @param format  The format of the year.
 122  
      */
 123  
     private void addYearField(PanelBuilder builder, NumberFormat format) {
 124  0
         builder.addI18nLabel(Properties.Film.YEAR, builder.gbcSet(0, 1));
 125  
 
 126  0
         fieldYear = new JFormattedTextField(format);
 127  0
         fieldYear.setColumns(4);
 128  0
         ((DefaultFormatter) fieldYear.getFormatter()).setAllowsInvalid(false);
 129  0
         fieldYear.setEnabled(false);
 130  
 
 131  0
         ConstraintManager.configure(fieldYear, Properties.Film.YEAR);
 132  
 
 133  0
         builder.add(fieldYear, builder.gbcSet(1, 1));
 134  0
     }
 135  
 
 136  
     /**
 137  
      * Add the duration field.
 138  
      *
 139  
      * @param builder The builder of the panel.
 140  
      * @param format  The format of the duration.
 141  
      */
 142  
     private void addDurationField(PanelBuilder builder, NumberFormat format) {
 143  0
         builder.addI18nLabel(Properties.Film.DURATION, builder.gbcSet(0, 2));
 144  
 
 145  0
         fieldDuration = builder.add(new JFormattedTextField(format), builder.gbcSet(1, 2));
 146  0
         fieldDuration.setColumns(4);
 147  0
         fieldDuration.setEnabled(false);
 148  
 
 149  0
         ConstraintManager.configure(fieldDuration, Properties.Film.DURATION);
 150  0
     }
 151  
 
 152  
     /**
 153  
      * Add the language field.
 154  
      *
 155  
      * @param builder The builder of the panel.
 156  
      */
 157  
     private void addLanguageField(PanelBuilder builder) {
 158  0
         builder.addI18nLabel(Properties.Film.LANGUAGE, builder.gbcSet(0, 3));
 159  
 
 160  0
         modelLanguage = new DataContainerCachedComboBoxModel<Language>(languagesService);
 161  
 
 162  0
         comboLanguage = builder.addComboBox(modelLanguage, builder.gbcSet(1, 3));
 163  0
         comboLanguage.setEnabled(false);
 164  
         
 165  0
         buttonAddLanguage = builder.addButton(new AcNewLanguage("generic.view.actions.new"), builder.gbcSet(2, 3));
 166  0
         buttonAddLanguage.setEnabled(false);
 167  0
     }
 168  
 
 169  
     /**
 170  
      * Add the saga field.
 171  
      *
 172  
      * @param builder The builder of the panel.
 173  
      */
 174  
     private void addSagaField(PanelBuilder builder) {
 175  0
         builder.addI18nLabel(Properties.Film.SAGA, builder.gbcSet(0, 4));
 176  
 
 177  0
         modelSaga = new DataContainerCachedComboBoxModel<Saga>(sagasService);
 178  
 
 179  0
         comboSaga = builder.addComboBox(modelSaga, builder.gbcSet(1, 4));
 180  0
         comboSaga.setEnabled(false);
 181  
 
 182  0
         buttonAddSaga = builder.addButton(new NewSagaAction(), builder.gbcSet(2, 4));
 183  0
         buttonAddSaga.setEnabled(false);
 184  0
     }
 185  
 
 186  
     /**
 187  
      * Add the resume field.
 188  
      *
 189  
      * @param builder The builder of the panel.
 190  
      */
 191  
     private void addResumeField(PanelBuilder builder) {
 192  0
         builder.addI18nLabel(Properties.Film.RESUME, builder.gbcSet(0, 5));
 193  
 
 194  0
         areaResume = new JTextArea();
 195  0
         areaResume.setEnabled(false);
 196  0
         areaResume.setLineWrap(true);
 197  0
         areaResume.setWrapStyleWord(true);
 198  0
         areaResume.setAutoscrolls(true);
 199  
 
 200  0
         builder.addScrolled(areaResume, builder.gbcSet(0, 6, GridBagUtils.BOTH, GridBagUtils.ABOVE_BASELINE_LEADING, 0, 0, 1.0, 1.0));
 201  0
     }
 202  
 
 203  
     @Override
 204  
     public void objectChanged(ObjectChangedEvent event) {
 205  0
         Film film = (Film) event.getObject();
 206  
 
 207  0
         if (film.getTheRealizer() != null) {
 208  0
             modelRealizer.setSelectedItem(film.getTheRealizer());
 209  
         }
 210  
 
 211  0
         if (film.getTheLanguage() != null) {
 212  0
             modelLanguage.setSelectedItem(film.getTheLanguage());
 213  
         }
 214  
 
 215  0
         if (film.getTheSaga() != null) {
 216  0
             modelSaga.setSelectedItem(film.getTheSaga());
 217  
         }
 218  
 
 219  0
         fieldYear.setText(Integer.toString(film.getYear()));
 220  0
         fieldDuration.setText(Integer.toString(film.getDuration()));
 221  0
         areaResume.setText(film.getResume());
 222  0
     }
 223  
 
 224  
     /**
 225  
      * Fill the form bean.
 226  
      *
 227  
      * @param fb The form bean to fill.
 228  
      */
 229  
     @Override
 230  
     public void fillFilm(IFilmFormBean fb) {
 231  0
         fb.setRealizer(modelRealizer.getSelectedData());
 232  0
         fb.setLanguage(modelLanguage.getSelectedData());
 233  0
         fb.setYear(Integer.parseInt(fieldYear.getText()));
 234  0
         fb.setDuration(Integer.parseInt(fieldDuration.getText()));
 235  0
         fb.setResume(areaResume.getText());
 236  0
         fb.setSaga(modelSaga.getSelectedData());
 237  0
     }
 238  
 
 239  
     @Override
 240  
     public void setEnabled(boolean enabled) {
 241  0
         comboRealizer.setEnabled(enabled);
 242  0
         comboLanguage.setEnabled(enabled);
 243  0
         comboSaga.setEnabled(enabled);
 244  0
         fieldYear.setEnabled(enabled);
 245  0
         fieldDuration.setEnabled(enabled);
 246  0
         areaResume.setEnabled(enabled);
 247  0
         buttonAddLanguage.setEnabled(enabled);
 248  0
         buttonAddSaga.setEnabled(enabled);
 249  
 
 250  0
         super.setEnabled(enabled);
 251  0
     }
 252  
 
 253  
     /**
 254  
      * Validate the view.
 255  
      *
 256  
      * @param errors The errors list to fill.
 257  
      */
 258  
     @Override
 259  
     public void validate(Collection<JThequeError> errors) {
 260  0
         ConstraintManager.validate(Properties.Film.REALIZER, fieldYear.getText(), errors);
 261  0
         ConstraintManager.validate(Properties.Film.DURATION, fieldDuration.getText(), errors);
 262  0
         ConstraintManager.validate(Properties.Film.RESUME, areaResume.getText(), errors);
 263  0
         ConstraintManager.validate(Properties.Film.REALIZER, modelRealizer.getSelectedData(), errors);
 264  0
         ConstraintManager.validate(Properties.Film.SAGA, modelSaga.getSelectedData(), errors);
 265  0
         ConstraintManager.validate(Properties.Film.LANGUAGE, modelLanguage.getSelectedData(), errors);
 266  0
     }
 267  
 
 268  
     @Override
 269  
     public JComponent getImpl() {
 270  0
         return this;
 271  
     }
 272  
 }