package com.dreikraft.axbo.gui;
import com.dreikraft.events.ApplicationEventDispatcher;
import com.dreikraft.events.ApplicationExit;
import com.dreikraft.events.ApplicationMessageEvent;
import com.dreikraft.axbo.Axbo;
import com.dreikraft.axbo.OS;
import com.dreikraft.axbo.data.SleepData;
import com.dreikraft.axbo.events.AxboClear;
import com.dreikraft.axbo.events.AxboDisconnect;
import com.dreikraft.axbo.events.PrefsOpen;
import com.dreikraft.axbo.events.AxboReset;
import com.dreikraft.axbo.events.AxboStatusGet;
import com.dreikraft.axbo.events.AxboTimeSet;
import com.dreikraft.axbo.events.DataSearch;
import com.dreikraft.axbo.events.DiagramClose;
import com.dreikraft.axbo.events.DiagramPrint;
import com.dreikraft.axbo.events.SleepDataCompare;
import com.dreikraft.axbo.events.SleepDataDelete;
import com.dreikraft.axbo.events.SleepDataImport;
import com.dreikraft.axbo.events.SleepDataOpen;
import com.dreikraft.axbo.events.SoundPackageUpload;
import com.dreikraft.axbo.model.ChartType;
import com.dreikraft.axbo.model.MetaDataTableModel;
import com.dreikraft.axbo.util.BundleUtil;
import com.dreikraft.swing.SplashScreen;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.print.Book;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import org.apache.commons.logging.*;
/**
* AxboFrame
*
* @author jan.illetschko@3kraft.com
*/
public class AxboFrame extends JFrame {
private static final Log log = LogFactory.getLog(AxboFrame.class);
private SplashScreen splashScreen;
public void init() {
initComponents();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
modifyColumnWidths();
}
public void jumpToDataView(final DataFrame dataView) {
dataViewsPanel.revalidate();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final double dataViewPosY = dataView.getLocation().getY();
int scrollPosY = (int) dataViewPosY;
final int dataViewsHeight = dataViewsPanel.getHeight();
final int viewportHeight = dataScrollPane.getViewport().getHeight();
if (dataViewsHeight < viewportHeight + dataViewPosY) {
scrollPosY = dataViewsHeight - viewportHeight;
}
dataScrollPane.getViewport().setViewPosition(new Point(0, scrollPosY));
}
});
}
public List<DataFrame> getDataViews() {
final List<DataFrame> dataViews = new ArrayList<>();
for (final Component component : dataViewsPanel.getComponents()) {
if (component instanceof DataFrame) {
dataViews.add((DataFrame) component);
}
}
return dataViews;
}
/**
* Adds a sleep data frame to the data panel. Depending on the chart type
* different layout constraints will be set.
*
* @param view a view instance
* @param chartType the requested chart type
* @param sleepData the sleepData
*/
public void addDataView(final DataFrame view, final ChartType chartType,
final SleepData sleepData) {
final GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = GridBagConstraints.RELATIVE;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.anchor = GridBagConstraints.NORTH;
gbc.weightx = 1.0;
final int heightExt = sleepData.getComment() != null && sleepData
.getComment().trim().length() > 0 ? 16 : 0;
if (chartType.equals(ChartType.MOVING_AVG)) {
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weighty = 0;
view.setMinimumSize(new Dimension(300, 85 + heightExt));
view.setPreferredSize(new Dimension(300, 85 + heightExt));
view.setMaximumSize(new Dimension(300, 85 + heightExt));
} else {
gbc.fill = GridBagConstraints.BOTH;
gbc.weighty = 1.0;
view.setMinimumSize(new Dimension(300, 200 + heightExt));
view.setPreferredSize(new Dimension(300, 200 + heightExt));
}
dataViewsPanel.add(view, gbc);
}
public void updateDataViewsPanel() {
dataViewsPanel.revalidate();
dataViewsPanel.repaint();
}
private void modifyColumnWidths() {
metaDataTable.getColumnModel().getColumn(0).setPreferredWidth(85);
metaDataTable.getColumnModel().getColumn(0).setMaxWidth(85);
metaDataTable.getColumnModel().getColumn(0).setMinWidth(85);
metaDataTable.getColumnModel().getColumn(0).setResizable(false);
metaDataTable.getColumnModel().getColumn(1).setPreferredWidth(35);
metaDataTable.getColumnModel().getColumn(1).setMaxWidth(35);
metaDataTable.getColumnModel().getColumn(1).setMinWidth(35);
metaDataTable.getColumnModel().getColumn(1).setResizable(false);
metaDataTable.getColumnModel().getColumn(2).setPreferredWidth(70);
}
public void showMessage(final String msg, final boolean isErrorMsg) {
JOptionPane.showMessageDialog(this, msg, isErrorMsg ? BundleUtil.getMessage(
"errorMessageBox.title") : BundleUtil.getMessage("infoMessageBox.title"),
isErrorMsg ? JOptionPane.ERROR_MESSAGE : JOptionPane.INFORMATION_MESSAGE);
}
public int showOptionMessage(String msg, String title) {
return JOptionPane.showConfirmDialog(this, msg, title,
JOptionPane.OK_CANCEL_OPTION);
}
public MetaDataTableModel getMetaDataTableModel() {
return (MetaDataTableModel) metaDataTable.getModel();
}
public void showDeviceEnabled() {
this.statusTextLabel.setIcon(new javax.swing.ImageIcon(
getClass().getResource("/resources/images/link-16.png")));
this.statusTextLabel.setToolTipText(BundleUtil.getMessage(
"toolTip.deviceEnabled"));
}
public void showDeviceDisabled() {
this.statusTextLabel.setIcon(new javax.swing.ImageIcon(
getClass().getResource("/resources/images/link-broken-16.png")));
this.statusTextLabel.setToolTipText(BundleUtil.getMessage(
"toolTip.deviceDisabled"));
}
public void setMetaDataTableModel(final MetaDataTableModel model) {
metaDataTable.setModel(model);
modifyColumnWidths();
}
public void showStatusMessage(final String text) {
statusTextLabel.setText(text);
}
public void setStatusProgressBarLength(int len) {
statusProgressBar.setMaximum(len);
}
public void setStatusProgressBarStringPainted(boolean painted) {
statusProgressBar.setStringPainted(painted);
}
public void setStatusProgressBarValue(int val) {
statusProgressBar.setValue(val);
}
public void setStatusProgressBarIndeterminate(boolean b) {
statusProgressBar.setIndeterminate(b);
}
public void showSplashScreen() {
try {
this.splashScreen = new SplashScreen();
this.splashScreen.setImageURL(this.getClass().getResource(
"/resources/images/SplashScreen-11_07.gif"));
this.splashScreen.setVisible(true);
if (!this.isVisible()) {
Rectangle screenRect = this.getGraphicsConfiguration().getBounds();
splashScreen.setLocation(
screenRect.x + screenRect.width / 2 - splashScreen.getBounds().width
/ 2,
screenRect.y + screenRect.height / 2
- splashScreen.getBounds().height
/ 2);
} else {
Rectangle screenRect = this.getBounds();
splashScreen.setLocation(
screenRect.x + screenRect.width / 2 - splashScreen.getBounds().width
/ 2,
screenRect.y + screenRect.height / 2
- splashScreen.getBounds().height
/ 2);
}
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
}
}
public void hideSplashScreen() {
this.setVisible(true);
this.splashScreen.setVisible(false);
this.splashScreen = null;
}
public void showSummary(final long sumDuration, final long avgDuration,
final long minDuration, final long maxDuration, final long timeSaving,
final int count, final int countOpen) {
legendPanel.setVisible(getDataViews().size() > 0);
if (sumDuration != 0) {
summaryPanel.setVisible(true);
final Calendar cal = Calendar.getInstance(
TimeZone.getTimeZone("GMT"));
cal.setTime(new Date(minDuration));
lblSleepDurationMinValue.setText(String.format("%tT", cal));
cal.setTime(new Date(maxDuration));
lblSleepDurationMaxValue.setText(String.format("%tT", cal));
cal.setTime(new Date(avgDuration));
lblSleepDurationAvgValue.setText(String.format("%tT", cal));
cal.setTime(new Date(timeSaving));
lblTimeSavingsValue.setText(String.format("%tR", cal));
lblCountSelecetedVal.setText(String.format("%-2d", count));
lblCountOpenVal.setText(String.format("%-2d", countOpen));
} else {
summaryPanel.setVisible(false);
}
}
/**
* 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
sleepDataPopupMenu = new javax.swing.JPopupMenu();
viewPopupMenuItem = new javax.swing.JMenuItem();
deletePopupMenuItem = new javax.swing.JMenuItem();
toolbarPanel = new javax.swing.JPanel();
navToolbarPanel = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
spacerPanel = new javax.swing.JPanel();
mainToolbar = new javax.swing.JPanel();
dataToolbarPanel = new javax.swing.JPanel();
loadDataButton = new javax.swing.JButton();
btnCompare = new javax.swing.JButton();
btnPrint = new javax.swing.JButton();
btnCloseAll = new javax.swing.JButton();
mainPanel = new javax.swing.JPanel();
dataPanel = new javax.swing.JPanel();
dataListPanel = new javax.swing.JPanel();
tableScrollPane = new javax.swing.JScrollPane();
metaDataTable = new javax.swing.JTable();
searchTermsPanel = new javax.swing.JPanel();
searchNameLabel = new javax.swing.JLabel();
searchNameTextField = new javax.swing.JTextField();
searchDateFromLabel = new javax.swing.JLabel();
searchDateFromTextField = new org.jdesktop.swingx.JXDatePicker();
searchDateToLabel = new javax.swing.JLabel();
searchDateToTextField = new org.jdesktop.swingx.JXDatePicker();
searchButton = new javax.swing.JButton();
dataContainerPanel = new javax.swing.JPanel();
dataScrollPane = new javax.swing.JScrollPane();
dataViewsPanel = new com.dreikraft.swing.BackgroundImagePanel();
infoPanel = new javax.swing.JPanel();
summaryPanel = new javax.swing.JPanel();
lblCountOpen = new javax.swing.JLabel();
lblCountOpenVal = new javax.swing.JLabel();
lblSpacer4 = new javax.swing.JLabel();
lblCountSelected = new javax.swing.JLabel();
lblCountSelecetedVal = new javax.swing.JLabel();
lblSpacer = new javax.swing.JLabel();
lblSleepDuration = new javax.swing.JLabel();
lblSleepDurationMin = new javax.swing.JLabel();
lblSleepDurationMinValue = new javax.swing.JLabel();
lblSpacer1 = new javax.swing.JLabel();
lblSleepDurationMax = new javax.swing.JLabel();
lblSleepDurationMaxValue = new javax.swing.JLabel();
lblSpacer3 = new javax.swing.JLabel();
lblSleepDurationAvg = new javax.swing.JLabel();
lblSleepDurationAvgValue = new javax.swing.JLabel();
lblSpacer2 = new javax.swing.JLabel();
lblTimeSavings = new javax.swing.JLabel();
lblTimeSavingsValue = new javax.swing.JLabel();
legendPanel = new javax.swing.JPanel();
lblLegendSleepStartColor = new javax.swing.JLabel();
lblLegendSleepStart = new javax.swing.JLabel();
lblLegendWakeTimeColor = new javax.swing.JLabel();
lblLegendWakeTime = new javax.swing.JLabel();
lblLegendWakeIntervalColor = new javax.swing.JLabel();
lblLegendWakeInterval = new javax.swing.JLabel();
lblLegendKeyColor = new javax.swing.JLabel();
lblLegendKey = new javax.swing.JLabel();
lblLegendSnoozeColor = new javax.swing.JLabel();
lblLegendSnooze = new javax.swing.JLabel();
lblLegendMovementColor = new javax.swing.JLabel();
lblLegendMovement = new javax.swing.JLabel();
statusTextPanel = new javax.swing.JPanel();
statusTextLabel = new javax.swing.JLabel();
statusProgressBar = new javax.swing.JProgressBar();
menuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
viewMenuItem = new javax.swing.JMenuItem();
deleteMenuItem = new javax.swing.JMenuItem();
uploadSoundPackageMenuItem = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JSeparator();
prefsMenuItem = new javax.swing.JMenuItem();
jSeparator3 = new javax.swing.JSeparator();
exitMenuItem = new javax.swing.JMenuItem();
deviceMenu = new javax.swing.JMenu();
readStoredDataMenuItem = new javax.swing.JMenuItem();
clearDataMenuItem = new javax.swing.JMenuItem();
setClockDateMenuItem = new javax.swing.JMenuItem();
readStatusMenuItem = new javax.swing.JMenuItem();
resetClockMenuItem = new javax.swing.JMenuItem();
viewPopupMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/chart-bar-16.png"))); // NOI18N
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("resources/default"); // NOI18N
viewPopupMenuItem.setText(bundle.getString("menu.file.view")); // NOI18N
viewPopupMenuItem.setDoubleBuffered(true);
viewPopupMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
viewPopupMenuItemActionPerformed(evt);
}
});
sleepDataPopupMenu.add(viewPopupMenuItem);
deletePopupMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/bin-16.png"))); // NOI18N
deletePopupMenuItem.setText(bundle.getString("menu.file.delete")); // NOI18N
deletePopupMenuItem.setDoubleBuffered(true);
deletePopupMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deletePopupMenuItemActionPerformed(evt);
}
});
sleepDataPopupMenu.add(deletePopupMenuItem);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle(bundle.getString("mdiframe.title")); // NOI18N
setIconImage(new ImageIcon(getClass().getResource(Axbo.ICON_IMAGE_DEFAULT)).getImage());
setName("axboFrame"); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
});
getContentPane().setLayout(new java.awt.BorderLayout(5, 0));
toolbarPanel.setLayout(new java.awt.BorderLayout());
navToolbarPanel.setPreferredSize(new java.awt.Dimension(350, 20));
navToolbarPanel.setLayout(new java.awt.GridBagLayout());
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/aXbo-logo-software-small.png"))); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(0, 21, 0, 0);
navToolbarPanel.add(jLabel1, gridBagConstraints);
javax.swing.GroupLayout spacerPanelLayout = new javax.swing.GroupLayout(spacerPanel);
spacerPanel.setLayout(spacerPanelLayout);
spacerPanelLayout.setHorizontalGroup(
spacerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 239, Short.MAX_VALUE)
);
spacerPanelLayout.setVerticalGroup(
spacerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 47, Short.MAX_VALUE)
);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
gridBagConstraints.weightx = 1.0;
navToolbarPanel.add(spacerPanel, gridBagConstraints);
toolbarPanel.add(navToolbarPanel, java.awt.BorderLayout.WEST);
mainToolbar.setLayout(new java.awt.BorderLayout());
java.awt.GridBagLayout dataToolbarPanelLayout = new java.awt.GridBagLayout();
dataToolbarPanelLayout.columnWidths = new int[] {0, 5, 0, 5, 0, 5, 0};
dataToolbarPanelLayout.rowHeights = new int[] {0};
dataToolbarPanel.setLayout(dataToolbarPanelLayout);
loadDataButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/inbox-32.png"))); // NOI18N
loadDataButton.setText(bundle.getString("button.loadData")); // NOI18N
loadDataButton.setToolTipText(bundle.getString("button.loadData.tooltip")); // NOI18N
loadDataButton.setBorderPainted(false);
loadDataButton.setContentAreaFilled(false);
loadDataButton.setFocusable(false);
loadDataButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
loadDataButton.setIconTextGap(2);
loadDataButton.setMaximumSize(new java.awt.Dimension(120, 80));
loadDataButton.setMinimumSize(new java.awt.Dimension(120, 80));
loadDataButton.setMultiClickThreshhold(1000L);
loadDataButton.setPreferredSize(new java.awt.Dimension(120, 80));
loadDataButton.setRequestFocusEnabled(false);
loadDataButton.setVerticalAlignment(javax.swing.SwingConstants.TOP);
loadDataButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
loadDataButton.putClientProperty("JButton.buttonType", "segmentedTextured");
loadDataButton.putClientProperty("JButton.segmentPosition", "middle");
loadDataButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
loadDataButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
dataToolbarPanel.add(loadDataButton, gridBagConstraints);
btnCompare.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/ruler-32.png"))); // NOI18N
btnCompare.setText(bundle.getString("button.compare")); // NOI18N
btnCompare.setToolTipText(bundle.getString("button.compare.tooltip")); // NOI18N
btnCompare.setBorderPainted(false);
btnCompare.setContentAreaFilled(false);
btnCompare.setFocusable(false);
btnCompare.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnCompare.setIconTextGap(2);
btnCompare.setMaximumSize(new java.awt.Dimension(120, 80));
btnCompare.setMinimumSize(new java.awt.Dimension(120, 80));
btnCompare.setMultiClickThreshhold(1000L);
btnCompare.setPreferredSize(new java.awt.Dimension(120, 80));
btnCompare.setRequestFocusEnabled(false);
btnCompare.setVerticalAlignment(javax.swing.SwingConstants.TOP);
btnCompare.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnCompare.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCompareActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
dataToolbarPanel.add(btnCompare, gridBagConstraints);
btnPrint.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/printer-32.png"))); // NOI18N
btnPrint.setText(bundle.getString("button.print")); // NOI18N
btnPrint.setToolTipText(bundle.getString("button.print.tooltip")); // NOI18N
btnPrint.setBorderPainted(false);
btnPrint.setContentAreaFilled(false);
btnPrint.setFocusable(false);
btnPrint.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnPrint.setIconTextGap(2);
btnPrint.setMaximumSize(new java.awt.Dimension(120, 80));
btnPrint.setMinimumSize(new java.awt.Dimension(120, 80));
btnPrint.setMultiClickThreshhold(1000L);
btnPrint.setPreferredSize(new java.awt.Dimension(120, 80));
btnPrint.setRequestFocusEnabled(false);
btnPrint.setVerticalAlignment(javax.swing.SwingConstants.TOP);
btnPrint.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnPrint.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPrintActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
dataToolbarPanel.add(btnPrint, gridBagConstraints);
btnCloseAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/button-cross-32.png"))); // NOI18N
btnCloseAll.setText(bundle.getString("button.closeAll")); // NOI18N
btnCloseAll.setToolTipText(bundle.getString("button.closeAll.tooltip")); // NOI18N
btnCloseAll.setBorderPainted(false);
btnCloseAll.setContentAreaFilled(false);
btnCloseAll.setFocusable(false);
btnCloseAll.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnCloseAll.setIconTextGap(2);
btnCloseAll.setMaximumSize(new java.awt.Dimension(120, 80));
btnCloseAll.setMinimumSize(new java.awt.Dimension(120, 80));
btnCloseAll.setMultiClickThreshhold(1000L);
btnCloseAll.setPreferredSize(new java.awt.Dimension(120, 80));
btnCloseAll.setRequestFocusEnabled(false);
btnCloseAll.setVerticalAlignment(javax.swing.SwingConstants.TOP);
btnCloseAll.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnCloseAll.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCloseAllActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
dataToolbarPanel.add(btnCloseAll, gridBagConstraints);
mainToolbar.add(dataToolbarPanel, java.awt.BorderLayout.WEST);
toolbarPanel.add(mainToolbar, java.awt.BorderLayout.CENTER);
getContentPane().add(toolbarPanel, java.awt.BorderLayout.NORTH);
mainPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
mainPanel.setLayout(new java.awt.BorderLayout());
dataPanel.setLayout(new java.awt.BorderLayout(4, 0));
dataListPanel.setMinimumSize(new java.awt.Dimension(350, 84));
dataListPanel.setPreferredSize(new java.awt.Dimension(350, 10));
dataListPanel.setLayout(new java.awt.GridBagLayout());
tableScrollPane.setAutoscrolls(true);
tableScrollPane.setFocusable(false);
metaDataTable.setAutoCreateRowSorter(true);
metaDataTable.setModel(new MetaDataTableModel());
metaDataTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_LAST_COLUMN);
metaDataTable.setComponentPopupMenu(sleepDataPopupMenu);
metaDataTable.setFocusable(false);
metaDataTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
metaDataTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
metaDataTableMouseClicked(evt);
}
});
tableScrollPane.setViewportView(metaDataTable);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
dataListPanel.add(tableScrollPane, gridBagConstraints);
searchTermsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
searchTermsPanel.setLayout(new java.awt.GridBagLayout());
searchNameLabel.setLabelFor(searchNameTextField);
searchNameLabel.setText(bundle.getString("search.label.name")); // NOI18N
searchNameLabel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 3, 1, 1));
searchNameLabel.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
searchTermsPanel.add(searchNameLabel, gridBagConstraints);
searchNameTextField.putClientProperty("JTextField.variant", "search");
searchNameTextField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
searchTextFieldsKeyPressed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
searchTermsPanel.add(searchNameTextField, gridBagConstraints);
searchDateFromLabel.setLabelFor(searchDateFromTextField);
searchDateFromLabel.setText(bundle.getString("search.label.dateFrom")); // NOI18N
searchDateFromLabel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 3, 1, 1));
searchDateFromLabel.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
searchTermsPanel.add(searchDateFromLabel, gridBagConstraints);
searchDateFromTextField.setMinimumSize(new java.awt.Dimension(120, 28));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
searchTermsPanel.add(searchDateFromTextField, gridBagConstraints);
searchDateToLabel.setLabelFor(searchDateToTextField);
searchDateToLabel.setText(bundle.getString("search.label.dateTo")); // NOI18N
searchDateToLabel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 3, 1, 1));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
searchTermsPanel.add(searchDateToLabel, gridBagConstraints);
searchDateToTextField.setMaximumSize(new java.awt.Dimension(300, 28));
searchDateToTextField.setMinimumSize(new java.awt.Dimension(120, 28));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
searchTermsPanel.add(searchDateToTextField, gridBagConstraints);
searchButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/search-16.png"))); // NOI18N
searchButton.setToolTipText(bundle.getString("button.search.tooltip")); // NOI18N
searchButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
searchButton.putClientProperty("JButton.buttonType", "textured");
searchButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
searchButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
searchTermsPanel.add(searchButton, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(1, 0, 0, 0);
dataListPanel.add(searchTermsPanel, gridBagConstraints);
dataPanel.add(dataListPanel, java.awt.BorderLayout.WEST);
dataContainerPanel.setLayout(new java.awt.BorderLayout());
dataScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
dataViewsPanel.setLayout(new java.awt.GridBagLayout());
dataScrollPane.setViewportView(dataViewsPanel);
dataContainerPanel.add(dataScrollPane, java.awt.BorderLayout.CENTER);
infoPanel.setLayout(new java.awt.BorderLayout());
summaryPanel.setVisible(false);
summaryPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
summaryPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 2, 0));
lblCountOpen.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblCountOpen.setForeground(DataFrame.AXIS_COLOR);
lblCountOpen.setText(bundle.getString("lblCountOpen")); // NOI18N
summaryPanel.add(lblCountOpen);
lblCountOpenVal.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblCountOpenVal.setForeground(DataFrame.AXIS_COLOR);
lblCountOpenVal.setText("--");
summaryPanel.add(lblCountOpenVal);
lblSpacer4.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSpacer4.setForeground(DataFrame.AXIS_COLOR);
lblSpacer4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblSpacer4.setText("|");
lblSpacer4.setMaximumSize(new java.awt.Dimension(14, 14));
lblSpacer4.setMinimumSize(new java.awt.Dimension(14, 14));
lblSpacer4.setPreferredSize(new java.awt.Dimension(14, 14));
summaryPanel.add(lblSpacer4);
lblCountSelected.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblCountSelected.setForeground(DataFrame.AXIS_COLOR);
lblCountSelected.setText(bundle.getString("lblCountSelected")); // NOI18N
summaryPanel.add(lblCountSelected);
lblCountSelecetedVal.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblCountSelecetedVal.setForeground(DataFrame.AXIS_COLOR);
lblCountSelecetedVal.setText("--");
summaryPanel.add(lblCountSelecetedVal);
lblSpacer.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSpacer.setForeground(DataFrame.AXIS_COLOR);
lblSpacer.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblSpacer.setText("|");
lblSpacer.setMaximumSize(new java.awt.Dimension(14, 14));
lblSpacer.setMinimumSize(new java.awt.Dimension(14, 14));
lblSpacer.setPreferredSize(new java.awt.Dimension(14, 14));
summaryPanel.add(lblSpacer);
lblSleepDuration.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSleepDuration.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSleepDuration.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
lblSleepDuration.setText(bundle.getString("lblSleepDuration")); // NOI18N
summaryPanel.add(lblSleepDuration);
lblSleepDurationMin.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSleepDurationMin.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSleepDurationMin.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
lblSleepDurationMin.setText(bundle.getString("lblSleepDurationMin")); // NOI18N
summaryPanel.add(lblSleepDurationMin);
lblSleepDurationMinValue.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSleepDurationMinValue.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSleepDurationMinValue.setText("--:--:--");
summaryPanel.add(lblSleepDurationMinValue);
lblSpacer1.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSpacer1.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSpacer1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblSpacer1.setText("-");
lblSpacer1.setMaximumSize(new java.awt.Dimension(14, 14));
lblSpacer1.setMinimumSize(new java.awt.Dimension(14, 14));
lblSpacer1.setPreferredSize(new java.awt.Dimension(14, 14));
summaryPanel.add(lblSpacer1);
lblSleepDurationMax.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSleepDurationMax.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSleepDurationMax.setText(bundle.getString("lblSleepDurationMax")); // NOI18N
summaryPanel.add(lblSleepDurationMax);
lblSleepDurationMaxValue.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSleepDurationMaxValue.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSleepDurationMaxValue.setText("--:--:--");
summaryPanel.add(lblSleepDurationMaxValue);
lblSpacer3.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSpacer3.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSpacer3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblSpacer3.setText("/");
lblSpacer3.setMaximumSize(new java.awt.Dimension(14, 14));
lblSpacer3.setMinimumSize(new java.awt.Dimension(14, 14));
lblSpacer3.setPreferredSize(new java.awt.Dimension(14, 14));
summaryPanel.add(lblSpacer3);
lblSleepDurationAvg.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSleepDurationAvg.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSleepDurationAvg.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
lblSleepDurationAvg.setText(bundle.getString("lblSleepDurationAvg")); // NOI18N
summaryPanel.add(lblSleepDurationAvg);
lblSleepDurationAvgValue.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSleepDurationAvgValue.setForeground(DataFrame.SLEEP_DURATION_PAINT);
lblSleepDurationAvgValue.setText("--:--:--");
summaryPanel.add(lblSleepDurationAvgValue);
lblSpacer2.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblSpacer2.setForeground(DataFrame.AXIS_COLOR);
lblSpacer2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblSpacer2.setText("|");
lblSpacer2.setMaximumSize(new java.awt.Dimension(14, 14));
lblSpacer2.setMinimumSize(new java.awt.Dimension(14, 14));
lblSpacer2.setPreferredSize(new java.awt.Dimension(14, 14));
summaryPanel.add(lblSpacer2);
lblTimeSavings.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblTimeSavings.setForeground(DataFrame.WAKE_PAINT);
lblTimeSavings.setText(bundle.getString("lblTimeSaving")); // NOI18N
summaryPanel.add(lblTimeSavings);
lblTimeSavingsValue.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblTimeSavingsValue.setForeground(DataFrame.WAKE_PAINT);
lblTimeSavingsValue.setText("--:--");
summaryPanel.add(lblTimeSavingsValue);
infoPanel.add(summaryPanel, java.awt.BorderLayout.NORTH);
legendPanel.setVisible(false);
legendPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
legendPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 5, 0));
lblLegendSleepStartColor.setBackground(DataFrame.SLEEP_MARKER_PAINT);
lblLegendSleepStartColor.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendSleepStartColor.setText(" ");
lblLegendSleepStartColor.setOpaque(true);
legendPanel.add(lblLegendSleepStartColor);
lblLegendSleepStart.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendSleepStart.setForeground(DataFrame.SLEEP_MARKER_PAINT);
lblLegendSleepStart.setText(bundle.getString("lblLegendSleepStart")); // NOI18N
legendPanel.add(lblLegendSleepStart);
lblLegendWakeTimeColor.setBackground(DataFrame.WAKE_PAINT);
lblLegendWakeTimeColor.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendWakeTimeColor.setText(" ");
lblLegendWakeTimeColor.setOpaque(true);
legendPanel.add(lblLegendWakeTimeColor);
lblLegendWakeTime.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendWakeTime.setForeground(DataFrame.WAKE_PAINT);
lblLegendWakeTime.setText(bundle.getString("lblLegendWakeupTime")); // NOI18N
legendPanel.add(lblLegendWakeTime);
lblLegendWakeIntervalColor.setBackground(DataFrame.WAKE_INTERVALL_PAINT);
lblLegendWakeIntervalColor.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendWakeIntervalColor.setText(" ");
lblLegendWakeIntervalColor.setOpaque(true);
legendPanel.add(lblLegendWakeIntervalColor);
lblLegendWakeInterval.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendWakeInterval.setForeground(DataFrame.WAKE_INTERVALL_END_PAINT);
lblLegendWakeInterval.setText(bundle.getString("lblLegendWakeInterval")); // NOI18N
legendPanel.add(lblLegendWakeInterval);
lblLegendKeyColor.setBackground(DataFrame.KEY_PAINT);
lblLegendKeyColor.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendKeyColor.setText(" ");
lblLegendKeyColor.setOpaque(true);
legendPanel.add(lblLegendKeyColor);
lblLegendKey.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendKey.setForeground(DataFrame.KEY_PAINT);
lblLegendKey.setText(bundle.getString("lblLegendKeys")); // NOI18N
legendPanel.add(lblLegendKey);
lblLegendSnoozeColor.setBackground(DataFrame.SNOOZE_PAINT);
lblLegendSnoozeColor.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendSnoozeColor.setText(" ");
lblLegendSnoozeColor.setOpaque(true);
legendPanel.add(lblLegendSnoozeColor);
lblLegendSnooze.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendSnooze.setForeground(DataFrame.SNOOZE_PAINT);
lblLegendSnooze.setText(bundle.getString("lblLegendSnooze")); // NOI18N
legendPanel.add(lblLegendSnooze);
lblLegendMovementColor.setBackground(DataFrame.BAR_COLOR);
lblLegendMovementColor.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendMovementColor.setText(" ");
lblLegendMovementColor.setOpaque(true);
legendPanel.add(lblLegendMovementColor);
lblLegendMovement.setFont(new java.awt.Font("Lucida Grande", 0, 11)); // NOI18N
lblLegendMovement.setForeground(DataFrame.BAR_COLOR);
lblLegendMovement.setText(bundle.getString("lblLegendMovements")); // NOI18N
legendPanel.add(lblLegendMovement);
infoPanel.add(legendPanel, java.awt.BorderLayout.SOUTH);
dataContainerPanel.add(infoPanel, java.awt.BorderLayout.SOUTH);
dataPanel.add(dataContainerPanel, java.awt.BorderLayout.CENTER);
mainPanel.add(dataPanel, java.awt.BorderLayout.CENTER);
getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
statusTextPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 3, 1, 1));
statusTextPanel.setLayout(new java.awt.BorderLayout(5, 5));
statusTextLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/link-broken-16.png"))); // NOI18N
statusTextPanel.add(statusTextLabel, java.awt.BorderLayout.CENTER);
statusProgressBar.setFocusable(false);
statusProgressBar.setMaximumSize(new java.awt.Dimension(200, 20));
statusProgressBar.setMinimumSize(new java.awt.Dimension(20, 20));
statusProgressBar.setPreferredSize(new java.awt.Dimension(200, 20));
statusProgressBar.setRequestFocusEnabled(false);
statusProgressBar.putClientProperty("JProgressBar.style", "circular");
statusTextPanel.add(statusProgressBar, java.awt.BorderLayout.EAST);
getContentPane().add(statusTextPanel, java.awt.BorderLayout.SOUTH);
fileMenu.setText(bundle.getString("menu.file")); // NOI18N
viewMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/chart-bar-16.png"))); // NOI18N
viewMenuItem.setText(bundle.getString("menu.file.view")); // NOI18N
viewMenuItem.setDoubleBuffered(true);
viewMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
viewMenuItemActionPerformed(evt);
}
});
fileMenu.add(viewMenuItem);
deleteMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/bin-16.png"))); // NOI18N
deleteMenuItem.setText(bundle.getString("menu.file.delete")); // NOI18N
deleteMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteMenuItemActionPerformed(evt);
}
});
fileMenu.add(deleteMenuItem);
uploadSoundPackageMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/music-16.png"))); // NOI18N
uploadSoundPackageMenuItem.setText(bundle.getString("btnSoundPkgImport.text")); // NOI18N
uploadSoundPackageMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
uploadSoundPackageMenuItemActionPerformed(evt);
}
});
fileMenu.add(uploadSoundPackageMenuItem);
if (OS.Mac.isCurrent())
jSeparator1.setVisible(false);
fileMenu.add(jSeparator1);
if (OS.Mac.isCurrent())
prefsMenuItem.setVisible(false);
prefsMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/wrench-16.png"))); // NOI18N
prefsMenuItem.setText(bundle.getString("menu.file.prefs")); // NOI18N
prefsMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
prefsMenuItemActionPerformed(evt);
}
});
fileMenu.add(prefsMenuItem);
if (OS.Mac.isCurrent())
jSeparator3.setVisible(false);
fileMenu.add(jSeparator3);
if (OS.Mac.isCurrent())
exitMenuItem.setVisible(false);
exitMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/button-power-16.png"))); // NOI18N
exitMenuItem.setText(bundle.getString("menu.file.exit")); // NOI18N
exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
deviceMenu.setText(bundle.getString("menu.device")); // NOI18N
readStoredDataMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/inbox-16.png"))); // NOI18N
readStoredDataMenuItem.setText(bundle.getString("menu.device.readStoredData")); // NOI18N
readStoredDataMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
readStoredDataMenuItemActionPerformed(evt);
}
});
deviceMenu.add(readStoredDataMenuItem);
clearDataMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/bin-16.png"))); // NOI18N
clearDataMenuItem.setText(bundle.getString("menu.device.clearData")); // NOI18N
clearDataMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearDataMenuItemActionPerformed(evt);
}
});
deviceMenu.add(clearDataMenuItem);
setClockDateMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/clock-16.png"))); // NOI18N
setClockDateMenuItem.setText(bundle.getString("menu.device.setDate")); // NOI18N
setClockDateMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
setClockDateMenuItemActionPerformed(evt);
}
});
deviceMenu.add(setClockDateMenuItem);
readStatusMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/information-16.png"))); // NOI18N
readStatusMenuItem.setText(bundle.getString("menu.device.readStatus")); // NOI18N
readStatusMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
readStatusMenuItemActionPerformed(evt);
}
});
deviceMenu.add(readStatusMenuItem);
resetClockMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/images/button-synchronize-16.png"))); // NOI18N
resetClockMenuItem.setText(bundle.getString("menu.device.resetClock")); // NOI18N
resetClockMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
resetClockMenuItemActionPerformed(evt);
}
});
deviceMenu.add(resetClockMenuItem);
menuBar.add(deviceMenu);
setJMenuBar(menuBar);
pack();
}// </editor-fold>//GEN-END:initComponents
private void resetClockMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_resetClockMenuItemActionPerformed
{//GEN-HEADEREND:event_resetClockMenuItemActionPerformed
int result
= showOptionMessage(BundleUtil.getMessage("message.confirmReset"),
BundleUtil.getMessage("infoMessageBox.title"));
if (result == JOptionPane.OK_OPTION) {
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new AxboReset(
this));
}
}//GEN-LAST:event_resetClockMenuItemActionPerformed
private void deleteMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_deleteMenuItemActionPerformed
{//GEN-HEADEREND:event_deleteMenuItemActionPerformed
if (metaDataTable.getSelectedRowCount() > 0) {
int response = showOptionMessage(BundleUtil.getMessage(
"notification.message.delete"), BundleUtil.getMessage(
"infoMessageBox.title"));
if (response == JOptionPane.OK_OPTION) {
int selectedRows[] = metaDataTable.getSelectedRows();
ArrayList<SleepData> tmpSleepData = new ArrayList<>(Array
.getLength(selectedRows));
for (int selectedRowIdx : selectedRows) {
tmpSleepData.add(getMetaDataTableModel().getSleepDataAt(
metaDataTable.convertRowIndexToModel(selectedRowIdx)));
}
for (SleepData sleepData : tmpSleepData) {
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new SleepDataDelete(
this, sleepData));
}
}
} else {
showMessage(BundleUtil.getErrorMessage(
"MetaDataTableModel.nothingSelected"), true);
}
}//GEN-LAST:event_deleteMenuItemActionPerformed
private void formWindowClosed(java.awt.event.WindowEvent evt)//GEN-FIRST:event_formWindowClosed
{//GEN-HEADEREND:event_formWindowClosed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new AxboDisconnect(
this));
}//GEN-LAST:event_formWindowClosed
private void loadDataButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_loadDataButtonActionPerformed
{//GEN-HEADEREND:event_loadDataButtonActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new SleepDataImport(
this));
}//GEN-LAST:event_loadDataButtonActionPerformed
private void clearDataMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_clearDataMenuItemActionPerformed
{//GEN-HEADEREND:event_clearDataMenuItemActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new AxboClear(
this));
}//GEN-LAST:event_clearDataMenuItemActionPerformed
private void closeAllMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_closeAllMenuItemActionPerformed
{//GEN-HEADEREND:event_closeAllMenuItemActionPerformed
for (final Component component : dataViewsPanel.getComponents()) {
if (component instanceof DataFrame)
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new DiagramClose(
log, (DataFrame) component));
}
}//GEN-LAST:event_closeAllMenuItemActionPerformed
private void readStatusMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_readStatusMenuItemActionPerformed
{//GEN-HEADEREND:event_readStatusMenuItemActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new AxboStatusGet(
this));
}//GEN-LAST:event_readStatusMenuItemActionPerformed
private void setClockDateMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_setClockDateMenuItemActionPerformed
{//GEN-HEADEREND:event_setClockDateMenuItemActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new AxboTimeSet(
this));
}//GEN-LAST:event_setClockDateMenuItemActionPerformed
private void readStoredDataMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_readStoredDataMenuItemActionPerformed
{//GEN-HEADEREND:event_readStoredDataMenuItemActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new SleepDataImport(
this));
}//GEN-LAST:event_readStoredDataMenuItemActionPerformed
private void prefsMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_prefsMenuItemActionPerformed
{//GEN-HEADEREND:event_prefsMenuItemActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new PrefsOpen(
this, this));
}//GEN-LAST:event_prefsMenuItemActionPerformed
private void metaDataTableMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_metaDataTableMouseClicked
{//GEN-HEADEREND:event_metaDataTableMouseClicked
if (evt.getButton() == MouseEvent.BUTTON3) {
int row = metaDataTable.rowAtPoint(evt.getPoint());
metaDataTable.getSelectionModel().addSelectionInterval(row, row);
}
// is it a double click, open a new internal frame with the selected sleep data
if (evt.getClickCount() == 2) {
int[] selectedRows = metaDataTable.getSelectedRows();
final List<SleepData> sleepDataList = new ArrayList<>();
for (int row : selectedRows) {
sleepDataList.add(getMetaDataTableModel().getSleepDataAt(metaDataTable.
convertRowIndexToModel(row)));
}
if (sleepDataList.size() > 0) {
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new SleepDataOpen(
this, sleepDataList));
}
}
}//GEN-LAST:event_metaDataTableMouseClicked
private void searchTextFieldsKeyPressed(java.awt.event.KeyEvent evt)//GEN-FIRST:event_searchTextFieldsKeyPressed
{//GEN-HEADEREND:event_searchTextFieldsKeyPressed
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new DataSearch(
this, searchNameTextField.getText(), searchDateFromTextField.getDate(),
searchDateToTextField.getDate()));
}
}//GEN-LAST:event_searchTextFieldsKeyPressed
private void searchButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_searchButtonActionPerformed
{//GEN-HEADEREND:event_searchButtonActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(new DataSearch(
this, searchNameTextField.getText(), searchDateFromTextField.getDate(),
searchDateToTextField.getDate()));
}//GEN-LAST:event_searchButtonActionPerformed
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new ApplicationExit(
this));
}//GEN-LAST:event_exitMenuItemActionPerformed
private void deletePopupMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_deletePopupMenuItemActionPerformed
{//GEN-HEADEREND:event_deletePopupMenuItemActionPerformed
deleteMenuItemActionPerformed(evt);
}//GEN-LAST:event_deletePopupMenuItemActionPerformed
private void viewMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_viewMenuItemActionPerformed
{//GEN-HEADEREND:event_viewMenuItemActionPerformed
int[] selectedRows = metaDataTable.getSelectedRows();
if (selectedRows.length < 1) {
showMessage(BundleUtil.getErrorMessage(
"MetaDataTableModel.nothingSelected"), true);
return;
}
final List<SleepData> sleepDataList = new ArrayList<>(
selectedRows.length);
for (int selectedRowIdx : selectedRows) {
sleepDataList.add(getMetaDataTableModel().getSleepDataAt(metaDataTable.
convertRowIndexToModel(selectedRowIdx)));
}
if (sleepDataList.size() > 0) {
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new SleepDataOpen(
this, sleepDataList));
}
}//GEN-LAST:event_viewMenuItemActionPerformed
private void viewPopupMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_viewPopupMenuItemActionPerformed
{//GEN-HEADEREND:event_viewPopupMenuItemActionPerformed
viewMenuItemActionPerformed(evt);
}//GEN-LAST:event_viewPopupMenuItemActionPerformed
private void soundPackagesTableMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_soundPackagesTableMouseClicked
{//GEN-HEADEREND:event_soundPackagesTableMouseClicked
// if (evt.getButton() == MouseEvent.BUTTON3)
// {
// int row = soundPackagesTable.rowAtPoint(evt.getPoint());
// soundPackagesTable.getSelectionModel().addSelectionInterval(row, row);
// }
//
// if (evt.getClickCount() == 2)
// {
// ctrl.openSoundPkg(soundPackagesTable.getSelectedRow());
// }
}//GEN-LAST:event_soundPackagesTableMouseClicked
private void uploadSoundPackageMenuItemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_uploadSoundPackageMenuItemActionPerformed
{//GEN-HEADEREND:event_uploadSoundPackageMenuItemActionPerformed
final FileFilter filter = new FileFilter() {
@Override
public boolean accept(final File f) {
return f.getName().toLowerCase(Locale.ENGLISH)
.contains(Axbo.SOUND_DATA_FILE_EXT.
toLowerCase()) || f.isDirectory();
}
@Override
public String getDescription() {
return "Axbo Sound Package Files";
}
};
// open file chooser for directory with sleep data files
JFileChooser chooser = new JFileChooser(Axbo.SOUND_PACKAGES_DIR);
chooser.setFileFilter(filter);
chooser.setMultiSelectionEnabled(false);
chooser.setAcceptAllFileFilterUsed(false);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int returnVal = chooser.showOpenDialog(this);
// process selected directory
if (returnVal == JFileChooser.APPROVE_OPTION) {
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new SoundPackageUpload(this, chooser.getSelectedFile()));
}
}//GEN-LAST:event_uploadSoundPackageMenuItemActionPerformed
private void btnCompareActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnCompareActionPerformed
{//GEN-HEADEREND:event_btnCompareActionPerformed
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new SleepDataCompare(
this));
}//GEN-LAST:event_btnCompareActionPerformed
private void btnCloseAllActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnCloseAllActionPerformed
{//GEN-HEADEREND:event_btnCloseAllActionPerformed
closeAllMenuItemActionPerformed(evt);
}//GEN-LAST:event_btnCloseAllActionPerformed
private void btnPrintActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnPrintActionPerformed
{//GEN-HEADEREND:event_btnPrintActionPerformed
if (getDataViews().size() > 0) {
final PrinterJob job = PrinterJob.getPrinterJob();
if (job.printDialog()) {
final Book book = new Book();
job.setPageable(book);
job.setJobName("aXbo");
ApplicationEventDispatcher.getInstance().dispatchEvent(new DiagramPrint(
this, job, book));
try {
job.print();
} catch (PrinterException ex) {
final String msg = BundleUtil.getErrorMessage(
"globalError.printingFailed");
log.error(msg, ex);
ApplicationEventDispatcher.getInstance().dispatchGUIEvent(
new ApplicationMessageEvent(
this, msg, true));
}
}
}
}//GEN-LAST:event_btnPrintActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnCloseAll;
private javax.swing.JButton btnCompare;
private javax.swing.JButton btnPrint;
private javax.swing.JMenuItem clearDataMenuItem;
private javax.swing.JPanel dataContainerPanel;
private javax.swing.JPanel dataListPanel;
private javax.swing.JPanel dataPanel;
private javax.swing.JScrollPane dataScrollPane;
private javax.swing.JPanel dataToolbarPanel;
private com.dreikraft.swing.BackgroundImagePanel dataViewsPanel;
private javax.swing.JMenuItem deleteMenuItem;
private javax.swing.JMenuItem deletePopupMenuItem;
private javax.swing.JMenu deviceMenu;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
private javax.swing.JPanel infoPanel;
private javax.swing.JLabel jLabel1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JLabel lblCountOpen;
private javax.swing.JLabel lblCountOpenVal;
private javax.swing.JLabel lblCountSelecetedVal;
private javax.swing.JLabel lblCountSelected;
private javax.swing.JLabel lblLegendKey;
private javax.swing.JLabel lblLegendKeyColor;
private javax.swing.JLabel lblLegendMovement;
private javax.swing.JLabel lblLegendMovementColor;
private javax.swing.JLabel lblLegendSleepStart;
private javax.swing.JLabel lblLegendSleepStartColor;
private javax.swing.JLabel lblLegendSnooze;
private javax.swing.JLabel lblLegendSnoozeColor;
private javax.swing.JLabel lblLegendWakeInterval;
private javax.swing.JLabel lblLegendWakeIntervalColor;
private javax.swing.JLabel lblLegendWakeTime;
private javax.swing.JLabel lblLegendWakeTimeColor;
private javax.swing.JLabel lblSleepDuration;
private javax.swing.JLabel lblSleepDurationAvg;
private javax.swing.JLabel lblSleepDurationAvgValue;
private javax.swing.JLabel lblSleepDurationMax;
private javax.swing.JLabel lblSleepDurationMaxValue;
private javax.swing.JLabel lblSleepDurationMin;
private javax.swing.JLabel lblSleepDurationMinValue;
private javax.swing.JLabel lblSpacer;
private javax.swing.JLabel lblSpacer1;
private javax.swing.JLabel lblSpacer2;
private javax.swing.JLabel lblSpacer3;
private javax.swing.JLabel lblSpacer4;
private javax.swing.JLabel lblTimeSavings;
private javax.swing.JLabel lblTimeSavingsValue;
private javax.swing.JPanel legendPanel;
private javax.swing.JButton loadDataButton;
private javax.swing.JPanel mainPanel;
private javax.swing.JPanel mainToolbar;
private javax.swing.JMenuBar menuBar;
private javax.swing.JTable metaDataTable;
private javax.swing.JPanel navToolbarPanel;
private javax.swing.JMenuItem prefsMenuItem;
private javax.swing.JMenuItem readStatusMenuItem;
private javax.swing.JMenuItem readStoredDataMenuItem;
private javax.swing.JMenuItem resetClockMenuItem;
private javax.swing.JButton searchButton;
private javax.swing.JLabel searchDateFromLabel;
private org.jdesktop.swingx.JXDatePicker searchDateFromTextField;
private javax.swing.JLabel searchDateToLabel;
private org.jdesktop.swingx.JXDatePicker searchDateToTextField;
private javax.swing.JLabel searchNameLabel;
private javax.swing.JTextField searchNameTextField;
private javax.swing.JPanel searchTermsPanel;
private javax.swing.JMenuItem setClockDateMenuItem;
private javax.swing.JPopupMenu sleepDataPopupMenu;
private javax.swing.JPanel spacerPanel;
private javax.swing.JProgressBar statusProgressBar;
private javax.swing.JLabel statusTextLabel;
private javax.swing.JPanel statusTextPanel;
private javax.swing.JPanel summaryPanel;
private javax.swing.JScrollPane tableScrollPane;
private javax.swing.JPanel toolbarPanel;
private javax.swing.JMenuItem uploadSoundPackageMenuItem;
private javax.swing.JMenuItem viewMenuItem;
private javax.swing.JMenuItem viewPopupMenuItem;
// End of variables declaration//GEN-END:variables
}