package org.signalml.plugin.bookreporter.ui;
import java.awt.Dialog;
import javax.swing.DefaultComboBoxModel;
import org.signalml.app.util.IconUtils;
import org.signalml.plugin.bookreporter.chart.preset.*;
import org.signalml.plugin.bookreporter.data.BookReporterFASPThreshold;
/**
* @author piotr@develancer.pl
*/
public class BookReporterNewChartDialog extends javax.swing.JDialog {
private Class<? extends BookReporterChartPreset> chartClass
= BookReporterChartPresetPercentage.class;
private BookReporterChartPreset chartPreset = null;
private BookReporterFASPThreshold threshold = null;
/**
* Creates new form BookReporterNewChartDialog
*/
public BookReporterNewChartDialog(Dialog parent, boolean modal) {
super(parent, modal);
initComponents();
}
public BookReporterChartPreset getChartPreset() {
return chartPreset;
}
private void updateThreshold() {
String wavesName = (String) this.waveTypeCombo.getSelectedItem();
BookReporterFASPThreshold newThreshold = BookReporterFASPThreshold.getPredefinedThreshold(wavesName);
if (newThreshold != null) {
threshold = newThreshold;
}
}
/**
* 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() {
diagramTypeButtonGroup = new javax.swing.ButtonGroup();
waveCountDiagramButton = new javax.swing.JRadioButton();
timePercentageDiagramButton = new javax.swing.JRadioButton();
singleOccurenceDiagramButton = new javax.swing.JRadioButton();
addChartButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
waveTypeCombo = new javax.swing.JComboBox();
timeIntervalPanel = new javax.swing.JPanel();
timeIntervalSpinner = new javax.swing.JSpinner();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
showHorizontalLinesCheckBox = new javax.swing.JCheckBox();
setTitle("New chart properties");
setModal(true);
setName("newChartDialog"); // NOI18N
setResizable(false);
diagramTypeButtonGroup.add(waveCountDiagramButton);
waveCountDiagramButton.setText("count (per time interval) of...");
waveCountDiagramButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
waveCountDiagramButtonActionPerformed(evt);
}
});
diagramTypeButtonGroup.add(timePercentageDiagramButton);
timePercentageDiagramButton.setSelected(true);
timePercentageDiagramButton.setText("time percentage occupied by...");
timePercentageDiagramButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
timePercentageDiagramButtonActionPerformed(evt);
}
});
diagramTypeButtonGroup.add(singleOccurenceDiagramButton);
singleOccurenceDiagramButton.setText("single occurences of...");
singleOccurenceDiagramButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
singleOccurenceDiagramButtonActionPerformed(evt);
}
});
addChartButton.setIcon(IconUtils.loadClassPathIcon("org/signalml/app/icon/add.png"));
addChartButton.setText("Add chart");
addChartButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addChartButtonActionPerformed(evt);
}
});
cancelButton.setIcon(IconUtils.loadClassPathIcon("org/signalml/app/icon/cancel.png"));
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
waveTypeCombo.setEditable(true);
waveTypeCombo.setModel(new DefaultComboBoxModel(BookReporterFASPThreshold.getPredefinedThresholdNames()));
waveTypeCombo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
waveTypeComboActionPerformed(evt);
}
});
timeIntervalSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(20), Integer.valueOf(1), null, Integer.valueOf(1)));
timeIntervalSpinner.setMinimumSize(new java.awt.Dimension(80, 28));
timeIntervalSpinner.setPreferredSize(new java.awt.Dimension(80, 28));
jLabel1.setText("in each");
jLabel2.setText("second interval");
javax.swing.GroupLayout timeIntervalPanelLayout = new javax.swing.GroupLayout(timeIntervalPanel);
timeIntervalPanel.setLayout(timeIntervalPanelLayout);
timeIntervalPanelLayout.setHorizontalGroup(
timeIntervalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, timeIntervalPanelLayout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(timeIntervalSpinner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2))
);
timeIntervalPanelLayout.setVerticalGroup(
timeIntervalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(timeIntervalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(timeIntervalSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)
.addComponent(jLabel2))
);
showHorizontalLinesCheckBox.setText("show horizontal lines for 20% and 50%");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(timeIntervalPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(addChartButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(cancelButton))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(waveTypeCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(waveCountDiagramButton)
.addComponent(timePercentageDiagramButton)
.addComponent(singleOccurenceDiagramButton)
.addComponent(showHorizontalLinesCheckBox))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(waveCountDiagramButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(timePercentageDiagramButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(singleOccurenceDiagramButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(waveTypeCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(timeIntervalPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(showHorizontalLinesCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(addChartButton)
.addComponent(cancelButton))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
this.setVisible(false);
}//GEN-LAST:event_cancelButtonActionPerformed
private void waveCountDiagramButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_waveCountDiagramButtonActionPerformed
this.chartClass = BookReporterChartPresetCount.class;
timeIntervalPanel.setVisible(true);
showHorizontalLinesCheckBox.setVisible(false);
}//GEN-LAST:event_waveCountDiagramButtonActionPerformed
private void timePercentageDiagramButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_timePercentageDiagramButtonActionPerformed
this.chartClass = BookReporterChartPresetPercentage.class;
timeIntervalPanel.setVisible(true);
showHorizontalLinesCheckBox.setVisible(true);
}//GEN-LAST:event_timePercentageDiagramButtonActionPerformed
private void singleOccurenceDiagramButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_singleOccurenceDiagramButtonActionPerformed
this.chartClass = BookReporterChartPresetOccurences.class;
timeIntervalPanel.setVisible(false);
showHorizontalLinesCheckBox.setVisible(false);
}//GEN-LAST:event_singleOccurenceDiagramButtonActionPerformed
private void addChartButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addChartButtonActionPerformed
String wavesName = (String) this.waveTypeCombo.getSelectedItem();
updateThreshold();
Integer timeInterval = (Integer) this.timeIntervalSpinner.getValue();
boolean showHorizontalLines = this.showHorizontalLinesCheckBox.isSelected();
try {
BookReporterChartPreset preset = this.chartClass.newInstance();
if (threshold != null) {
preset.setThreshold(threshold);
}
if (preset instanceof BookReporterChartPresetPerInterval) {
( (BookReporterChartPresetPerInterval) preset ).setTimeInterval(timeInterval);
}
if (preset instanceof BookReporterChartPresetPercentage) {
( (BookReporterChartPresetPercentage) preset ).setShowHorizontalLines(showHorizontalLines);
}
preset.setWavesName(wavesName);
this.chartPreset = preset;
this.setVisible(false);
} catch (IllegalAccessException ex) {
// nothing
} catch (IllegalArgumentException ex) {
// nothing
} catch (InstantiationException ex) {
// nothing
} catch (SecurityException ex) {
// nothing
}
}//GEN-LAST:event_addChartButtonActionPerformed
private void waveTypeComboActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_waveTypeComboActionPerformed
updateThreshold();
}//GEN-LAST:event_waveTypeComboActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton addChartButton;
private javax.swing.JButton cancelButton;
private javax.swing.ButtonGroup diagramTypeButtonGroup;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JCheckBox showHorizontalLinesCheckBox;
private javax.swing.JRadioButton singleOccurenceDiagramButton;
private javax.swing.JPanel timeIntervalPanel;
private javax.swing.JSpinner timeIntervalSpinner;
private javax.swing.JRadioButton timePercentageDiagramButton;
private javax.swing.JRadioButton waveCountDiagramButton;
private javax.swing.JComboBox waveTypeCombo;
// End of variables declaration//GEN-END:variables
}