Coverage Report - org.jtheque.core.managers.view.impl.frame.LogView
 
Classes in this File Line Coverage Branch Coverage Complexity
LogView
0 %
0/60
0 %
0/4
1.25
 
 1  
 package org.jtheque.core.managers.view.impl.frame;
 2  
 
 3  
 import org.jdesktop.swingx.JXTable;
 4  
 import org.jtheque.core.managers.event.EventLog;
 5  
 import org.jtheque.core.managers.view.able.ILogView;
 6  
 import org.jtheque.core.managers.view.able.components.IModel;
 7  
 import org.jtheque.core.managers.view.impl.actions.event.UpdateAction;
 8  
 import org.jtheque.core.managers.view.impl.components.model.EventsTableModel;
 9  
 import org.jtheque.core.managers.view.impl.components.model.LogComboBoxModel;
 10  
 import org.jtheque.core.managers.view.impl.frame.abstraction.SwingBuildedDialogView;
 11  
 import org.jtheque.core.utils.ui.Borders;
 12  
 import org.jtheque.core.utils.ui.PanelBuilder;
 13  
 import org.jtheque.utils.ui.GridBagUtils;
 14  
 
 15  
 import javax.swing.JComboBox;
 16  
 import javax.swing.JLabel;
 17  
 import javax.swing.JTextArea;
 18  
 import javax.swing.ListSelectionModel;
 19  
 import javax.swing.event.ListSelectionEvent;
 20  
 import javax.swing.event.ListSelectionListener;
 21  
 import java.awt.Insets;
 22  
 import java.awt.event.ItemEvent;
 23  
 import java.awt.event.ItemListener;
 24  
 import java.text.DateFormat;
 25  
 
 26  
 /*
 27  
  * This file is part of JTheque.
 28  
  *
 29  
  * JTheque is free software: you can redistribute it and/or modify
 30  
  * it under the terms of the GNU General Public License as published by
 31  
  * the Free Software Foundation, either version 3 of the License.
 32  
  *
 33  
  * JTheque is distributed in the hope that it will be useful,
 34  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 35  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 36  
  * GNU General Public License for more details.
 37  
  *
 38  
  * You should have received a copy of the GNU General Public License
 39  
  * along with JTheque.  If not, see <http://www.gnu.org/licenses/>.
 40  
  */
 41  
 
 42  
 /**
 43  
  * A log view implementation.
 44  
  *
 45  
  * @author Baptiste Wicht
 46  
  */
 47  
 public final class LogView extends SwingBuildedDialogView<IModel> implements ListSelectionListener, ItemListener, ILogView {
 48  
     private JXTable tableEvents;
 49  
     private EventsTableModel eventsModel;
 50  
 
 51  
     private JLabel labelTitle;
 52  
     private JLabel labelLog;
 53  
     private JLabel labelSource;
 54  
     private JLabel labelLevel;
 55  
     private JLabel labelDate;
 56  
     private JLabel labelTime;
 57  
 
 58  
     private JTextArea areaDetails;
 59  
 
 60  
     private final DateFormat dateFormat;
 61  
     private final DateFormat timeFormat;
 62  
 
 63  
     private static final int DEFAULT_WIDTH = 600;
 64  
     private static final int DEFAULT_HEIGHT = 450;
 65  
 
 66  
     /**
 67  
      * Construct a new LogView.
 68  
      *
 69  
      * @param dateFormat The dateformat to use.
 70  
      * @param timeFormat The image format to use. 
 71  
      */
 72  
     public LogView(DateFormat dateFormat, DateFormat timeFormat){
 73  0
         super();
 74  
 
 75  0
         this.dateFormat = dateFormat;
 76  0
         this.timeFormat = timeFormat;
 77  
 
 78  0
         build();
 79  0
     }
 80  
 
 81  
     @Override
 82  
     protected void initView(){
 83  0
         setTitleKey("log.view.title");
 84  0
         setResizable(false);
 85  0
         setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
 86  0
     }
 87  
 
 88  
     @Override
 89  
     protected void buildView(PanelBuilder builder){
 90  0
         builder.setDefaultInsets(new Insets(4, 4, 4, 4));
 91  
 
 92  0
         builder.addI18nLabel("log.view.log", builder.gbcSet(0, 0, GridBagUtils.NONE, GridBagUtils.LINE_END));
 93  
 
 94  0
         JComboBox comboLogs = builder.addComboBox(new LogComboBoxModel(), builder.gbcSet(1, 0, GridBagUtils.HORIZONTAL, GridBagUtils.LINE_START, 1.0, 0.0));
 95  0
         comboLogs.addItemListener(this);
 96  
 
 97  0
         eventsModel = new EventsTableModel();
 98  0
         eventsModel.setHeaders(new String[]{
 99  
                 getMessage("log.view.level"),
 100  
                 getMessage("log.view.date"),
 101  
                 getMessage("log.view.time"),
 102  
                 getMessage("log.view.source"),
 103  
                 getMessage("log.view.title")});
 104  
 
 105  0
         tableEvents = new JXTable(eventsModel);
 106  0
         tableEvents.getSelectionModel().addListSelectionListener(this);
 107  0
         tableEvents.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 108  0
         tableEvents.setVisibleRowCount(5);
 109  0
         tableEvents.setColumnControlVisible(true);
 110  0
         tableEvents.packAll();
 111  
 
 112  0
         builder.addScrolled(tableEvents, builder.gbcSet(0, 1, GridBagUtils.BOTH, GridBagUtils.LINE_START, 2, 1, 1.0, 0.67));
 113  
 
 114  0
         createInfosPanel(builder);
 115  
 
 116  0
         builder.addButton(new UpdateAction(), builder.gbcSet(1, 3, GridBagUtils.NONE, GridBagUtils.LINE_END));
 117  0
     }
 118  
 
 119  
     /**
 120  
      * Create the panel to display the informations of an event.
 121  
      *
 122  
      * @param parent The parent builder.
 123  
      */
 124  
     private void createInfosPanel(PanelBuilder parent) {
 125  0
         PanelBuilder builder = parent.addPanel(parent.gbcSet(0, 2, GridBagUtils.BOTH, GridBagUtils.LINE_START, 2, 1, 1.0, 0.33));
 126  
 
 127  0
         builder.setBorder(Borders.createTitledBorder("log.view.details"));
 128  
 
 129  0
         addLabels(builder);
 130  0
         addFieldLabels(builder);
 131  0
     }
 132  
 
 133  
     /**
 134  
      * Add all the fields.
 135  
      *
 136  
      * @param builder The frame builder.
 137  
      */
 138  
     private void addFieldLabels(PanelBuilder builder) {
 139  0
         labelTitle = builder.addLabel(builder.gbcSet(0, 0, GridBagUtils.NONE, GridBagUtils.BASELINE_LEADING, 4, 1));
 140  0
         labelLog = builder.addLabel(builder.gbcSet(1, 1, GridBagUtils.HORIZONTAL, GridBagUtils.BASELINE_LEADING, 0.5, 0.0));
 141  0
         labelSource = builder.addLabel(builder.gbcSet(1, 2, GridBagUtils.HORIZONTAL, GridBagUtils.BASELINE_LEADING, 0.5, 0.0));
 142  0
         labelLevel = builder.addLabel(builder.gbcSet(1, 3, GridBagUtils.HORIZONTAL, GridBagUtils.BASELINE_LEADING, 0.5, 0.0));
 143  0
         labelDate = builder.addLabel(builder.gbcSet(3, 1, GridBagUtils.HORIZONTAL, GridBagUtils.BASELINE_LEADING, 0.5, 0.0));
 144  0
         labelTime = builder.addLabel(builder.gbcSet(3, 2, GridBagUtils.HORIZONTAL, GridBagUtils.BASELINE_LEADING, 0.5, 0.0));
 145  
 
 146  0
         areaDetails = new JTextArea();
 147  0
         areaDetails.setRows(3);
 148  
 
 149  0
         builder.addScrolled(areaDetails, builder.gbcSet(0, 5, GridBagUtils.BOTH, GridBagUtils.LINE_START, 4, 1, 1.0, 1.0));
 150  0
     }
 151  
 
 152  
     /**
 153  
      * Add all the labels.
 154  
      *
 155  
      * @param builder The frame builder.
 156  
      */
 157  
     private static void addLabels(PanelBuilder builder) {
 158  0
         builder.addI18nLabel("log.view.log", PanelBuilder.BOLD, builder.gbcSet(0, 1, GridBagUtils.NONE, GridBagUtils.BASELINE_TRAILING));
 159  0
         builder.addI18nLabel("log.view.source", PanelBuilder.BOLD, builder.gbcSet(0, 2, GridBagUtils.NONE, GridBagUtils.BASELINE_TRAILING));
 160  0
         builder.addI18nLabel("log.view.level", PanelBuilder.BOLD, builder.gbcSet(0, 3, GridBagUtils.NONE, GridBagUtils.BASELINE_TRAILING));
 161  
 
 162  0
         builder.addI18nLabel("log.view.date", PanelBuilder.BOLD, builder.gbcSet(2, 1, GridBagUtils.NONE, GridBagUtils.BASELINE_TRAILING));
 163  0
         builder.addI18nLabel("log.view.time", PanelBuilder.BOLD, builder.gbcSet(2, 2, GridBagUtils.NONE, GridBagUtils.BASELINE_TRAILING));
 164  
 
 165  0
         builder.addI18nLabel("log.view.details", builder.gbcSet(0, 4, GridBagUtils.NONE, GridBagUtils.BASELINE_LEADING, 4, 1));
 166  0
     }
 167  
 
 168  
     @Override
 169  
     public void valueChanged(ListSelectionEvent e) {
 170  0
         if (tableEvents.getSelectedRowCount() > 0) {
 171  0
             EventLog event = eventsModel.getValueAt(tableEvents.getSelectedRow());
 172  
 
 173  0
             labelTitle.setText(getMessage(event.getTitleKey()));
 174  0
             labelLog.setText(event.getLog());
 175  0
             labelSource.setText(event.getSource());
 176  0
             labelLevel.setText(getMessage(event.getLevel().getKey()));
 177  0
             labelDate.setText(dateFormat.format(event.getDate()));
 178  0
             labelTime.setText(timeFormat.format(event.getDate()));
 179  0
             areaDetails.setText(getMessage(event.getDetailsKey()));
 180  
         }
 181  0
     }
 182  
 
 183  
     @Override
 184  
     public void itemStateChanged(ItemEvent e) {
 185  0
         if (e.getStateChange() == ItemEvent.SELECTED) {
 186  0
             eventsModel.setLog((String) e.getItem());
 187  
         }
 188  0
     }
 189  
 }