/*
* Copyright (c) 2010-2012 Thiago T. Sá
*
* This file is part of CloudReports.
*
* CloudReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CloudReports is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For more information about your rights as a user of CloudReports,
* refer to the LICENSE file or see <http://www.gnu.org/licenses/>.
*/
package cloudreports.gui;
import cloudreports.business.SettingBusiness;
import cloudreports.dao.SettingDAO;
import cloudreports.models.Setting;
/**
* The SimulationSettings form.
* Most of its code is generated automatically by the NetBeans IDE.
*
* @author Thiago T. Sá
* @since 1.0
*/
public class SimulationSettings extends javax.swing.JDialog {
/** A private instance of the SettingDAO class. */
private SettingDAO sDAO;
/** Creates a new SimulationSettings form. */
public SimulationSettings() {
setModal(true);
initComponents();
sDAO = new SettingDAO();
numOfSimulationsSpinner.setValue(SettingBusiness.getNumberOfSimulations());
timeToSimulateSpinner.setValue(SettingBusiness.getTimeToSimulate());
htmlReportsCheckBox.setSelected(SettingBusiness.isHtmlReportsEnabled());
htmlReportsCheckBoxStateChanged(null);
rawDataReportsCheckBox.setSelected(SettingBusiness.isRawDataReportsEnabled());
rawDataReportsCheckBoxStateChanged(null);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
numOfSimulationsLabel = new javax.swing.JLabel();
numOfSimulationsSpinner = new javax.swing.JSpinner();
okButton = new javax.swing.JButton();
timeToSimulateLabel = new javax.swing.JLabel();
timeToSimulateSpinner = new javax.swing.JSpinner();
minutesLabel = new javax.swing.JLabel();
htmlReportsCheckBox = new javax.swing.JCheckBox();
rawDataReportsCheckBox = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Simulation settings");
setResizable(false);
numOfSimulationsLabel.setText("Number of repetitions:");
numOfSimulationsSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1), Integer.valueOf(1), null, Integer.valueOf(1)));
numOfSimulationsSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
numOfSimulationsSpinnerStateChanged(evt);
}
});
okButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cloudreports/gui/resources/ok.png"))); // NOI18N
okButton.setText("OK");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
timeToSimulateLabel.setText("Time to simulate:");
timeToSimulateSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(60), Integer.valueOf(1), null, Integer.valueOf(1)));
minutesLabel.setText("(minutes)");
htmlReportsCheckBox.setText("Generate HTML reports.");
htmlReportsCheckBox.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
htmlReportsCheckBoxStateChanged(evt);
}
});
rawDataReportsCheckBox.setText("Generate raw data reports.");
rawDataReportsCheckBox.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
rawDataReportsCheckBoxStateChanged(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(43, 43, 43)
.addComponent(timeToSimulateLabel))
.addComponent(numOfSimulationsLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(numOfSimulationsSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(timeToSimulateSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(4, 4, 4)
.addComponent(minutesLabel))))
.addComponent(htmlReportsCheckBox)
.addComponent(rawDataReportsCheckBox)))
.addComponent(okButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {numOfSimulationsSpinner, timeToSimulateSpinner});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(minutesLabel)
.addComponent(timeToSimulateSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(timeToSimulateLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(numOfSimulationsLabel)
.addComponent(numOfSimulationsSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(htmlReportsCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rawDataReportsCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(okButton)
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {numOfSimulationsSpinner, timeToSimulateSpinner});
pack();
}// </editor-fold>//GEN-END:initComponents
/**
* Saves the state of all components and closes the form when the OK button is clicked.
*
* @param evt an action event.
* @since 1.0
*/
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
Setting numberOfSimulations = sDAO.getSetting("NumberOfSimulations");
numberOfSimulations.setValue(String.valueOf(numOfSimulationsSpinner.getValue()));
sDAO.updateSetting(numberOfSimulations);
Setting timeToSimulate = sDAO.getSetting("TimeToSimulate");
timeToSimulate.setValue(String.valueOf(timeToSimulateSpinner.getValue()));
sDAO.updateSetting(timeToSimulate);
Setting htmlReportsEnabled = sDAO.getSetting("HtmlReports");
htmlReportsEnabled.setValue(String.valueOf(htmlReportsCheckBox.isSelected()));
sDAO.updateSetting(htmlReportsEnabled);
Setting rawDataReportsEnabled = sDAO.getSetting("RawDataReports");
rawDataReportsEnabled.setValue(String.valueOf(rawDataReportsCheckBox.isSelected()));
sDAO.updateSetting(rawDataReportsEnabled);
this.dispose();
}//GEN-LAST:event_okButtonActionPerformed
/**
* Enables/disables the generation of HTML reports according to the state of
* the checkbox.
*
* @param evt a change event.
* @since 1.1
*/
private void htmlReportsCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_htmlReportsCheckBoxStateChanged
if(htmlReportsCheckBox.isSelected()) {
rawDataReportsCheckBox.setEnabled(true);
}
else {
rawDataReportsCheckBox.setSelected(true);
rawDataReportsCheckBox.setEnabled(false);
}
}//GEN-LAST:event_htmlReportsCheckBoxStateChanged
/**
* Enables/disables the generation of raw data reports according to the state of
* the checkbox.
*
* @param evt a change event.
* @since 1.1
*/
private void rawDataReportsCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_rawDataReportsCheckBoxStateChanged
if(rawDataReportsCheckBox.isSelected()) {
htmlReportsCheckBox.setEnabled(true);
}
else {
htmlReportsCheckBox.setSelected(true);
htmlReportsCheckBox.setEnabled(false);
}
}//GEN-LAST:event_rawDataReportsCheckBoxStateChanged
/**
* Changes the number of simulations to be performed whenever the state of the
* simulations spinner changes.
*
* @param evt a change event.
* @since 1.0
*/
private void numOfSimulationsSpinnerStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_numOfSimulationsSpinnerStateChanged
}//GEN-LAST:event_numOfSimulationsSpinnerStateChanged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox htmlReportsCheckBox;
private javax.swing.JLabel minutesLabel;
private javax.swing.JLabel numOfSimulationsLabel;
private javax.swing.JSpinner numOfSimulationsSpinner;
private javax.swing.JButton okButton;
private javax.swing.JCheckBox rawDataReportsCheckBox;
private javax.swing.JLabel timeToSimulateLabel;
private javax.swing.JSpinner timeToSimulateSpinner;
// End of variables declaration//GEN-END:variables
}