org.harctoolbox.harchardware.misc.EzControlGUI Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of HarcHardware Show documentation
Show all versions of HarcHardware Show documentation
Helper functions for accessing hardware etc.
/*
Copyright (C) 2011, 2019 Bengt Martensson.
This program 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.
This program is distributed in the hope thlat 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.
You should have received a copy of the GNU General Public License along with
this program. If not, see http://www.gnu.org/licenses/.
*/
package org.harctoolbox.harchardware.misc;
import java.awt.Desktop;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.harctoolbox.harchardware.HarcHardwareException;
public final class EzControlGUI extends javax.swing.JFrame {
private static final Logger logger = Logger.getLogger(EzControlGUI.class.getName());
private boolean verbose = false;
private final HashMap filechooserdirs = new HashMap<>(4);
private File select_file(String title, String extension, String file_type_desc, boolean save, String defaultdir) {
String startdir = this.filechooserdirs.containsKey(title) ? this.filechooserdirs.get(title) : defaultdir;
JFileChooser chooser = new JFileChooser(startdir);
chooser.setDialogTitle(title);
if (extension == null) {
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
} else
chooser.setFileFilter(new FileNameExtensionFilter(file_type_desc, extension));
int result = save ? chooser.showSaveDialog(this) : chooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
filechooserdirs.put(title, chooser.getSelectedFile().getAbsoluteFile().getParent());
return chooser.getSelectedFile();
} else
return null;
}
private static class copy_clipboard_text implements ClipboardOwner {
@Override
public void lostOwnership(Clipboard c, Transferable t) {
}
public void to_clipboard(String str) {
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(str), this);
}
}
public EzControlGUI() {
initComponents();
enableHouseInputFields();
System.setErr(console_PrintStream);
}
// From Real Gagnon
private class FilteredStream extends FilterOutputStream {
FilteredStream(OutputStream aStream) {
super(aStream);
}
@Override
public void write(byte b[]) throws IOException {
String aString = new String(b);
console_TextArea.append(aString);
}
@Override
public void write(byte b[], int off, int len) throws IOException {
String aString = new String(b, off, len);
console_TextArea.append(aString);
console_TextArea.setCaretPosition(console_TextArea.getDocument().getLength());
}
}
private final PrintStream console_PrintStream
= new PrintStream(new FilteredStream(new ByteArrayOutputStream()));
/** 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")
// //GEN-BEGIN:initComponents
private void initComponents() {
ezcontrolPanel = new javax.swing.JPanel();
t10_address_TextField = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
ezcontrol_preset_no_ComboBox = new javax.swing.JComboBox<>();
ezcontrol_preset_name_TextField = new javax.swing.JTextField();
ezcontrol_preset_state_TextField = new javax.swing.JTextField();
ezcontrol_preset_on_Button = new javax.swing.JButton();
ezcontrol_preset_off_Button = new javax.swing.JButton();
t10_update_Button = new javax.swing.JButton();
t10_get_timers_Button = new javax.swing.JButton();
t10_get_status_Button = new javax.swing.JButton();
ezcontrol_system_ComboBox = new javax.swing.JComboBox<>();
ezcontrol_house_ComboBox = new javax.swing.JComboBox<>();
ezcontrol_deviceno_ComboBox = new javax.swing.JComboBox<>();
ezcontrol_onButton = new javax.swing.JButton();
ezcontrol_off_Button = new javax.swing.JButton();
n_ezcontrol_ComboBox = new javax.swing.JComboBox<>();
t10_browse_Button = new javax.swing.JButton();
ezcontrol_house_TextField = new javax.swing.JTextField();
ezcontrol_deviceno_TextField = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
console_TextArea = new javax.swing.JTextArea();
menuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
consoletext_save_MenuItem = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JSeparator();
exitMenuItem = new javax.swing.JMenuItem();
editMenu = new javax.swing.JMenu();
copy_console_to_clipboard_MenuItem = new javax.swing.JMenuItem();
jMenu1 = new javax.swing.JMenu();
verbose_CheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem();
miscMenu = new javax.swing.JMenu();
clear_console_MenuItem = new javax.swing.JMenuItem();
helpMenu = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("EZControl T10 GUI of HARCToolbox"); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
});
t10_address_TextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
t10_address_TextField.setText("192.168.1.42");
t10_address_TextField.setToolTipText("IP-Address of EzControl to use");
t10_address_TextField.setMinimumSize(new java.awt.Dimension(120, 27));
t10_address_TextField.setPreferredSize(new java.awt.Dimension(120, 27));
t10_address_TextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
t10_address_TextFieldActionPerformed(evt);
}
});
jLabel13.setText("IP");
ezcontrol_preset_no_ComboBox.setMaximumRowCount(16);
ezcontrol_preset_no_ComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32" }));
ezcontrol_preset_no_ComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ezcontrol_preset_no_ComboBoxActionPerformed(evt);
}
});
ezcontrol_preset_name_TextField.setEditable(false);
ezcontrol_preset_name_TextField.setText("?????????");
ezcontrol_preset_name_TextField.setToolTipText("Name of selected preset");
ezcontrol_preset_name_TextField.setMaximumSize(new java.awt.Dimension(150, 27));
ezcontrol_preset_name_TextField.setMinimumSize(new java.awt.Dimension(150, 27));
ezcontrol_preset_name_TextField.setPreferredSize(new java.awt.Dimension(150, 27));
ezcontrol_preset_state_TextField.setEditable(false);
ezcontrol_preset_state_TextField.setText("??");
ezcontrol_preset_state_TextField.setMaximumSize(new java.awt.Dimension(50, 2147483647));
ezcontrol_preset_state_TextField.setMinimumSize(new java.awt.Dimension(50, 27));
ezcontrol_preset_state_TextField.setPreferredSize(new java.awt.Dimension(50, 27));
ezcontrol_preset_on_Button.setText("On");
ezcontrol_preset_on_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ezcontrol_preset_on_ButtonActionPerformed(evt);
}
});
ezcontrol_preset_off_Button.setText("Off");
ezcontrol_preset_off_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ezcontrol_preset_off_ButtonActionPerformed(evt);
}
});
t10_update_Button.setText("Update");
t10_update_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
t10_update_ButtonActionPerformed(evt);
}
});
t10_get_timers_Button.setText("Get Timers");
t10_get_timers_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
t10_get_timers_ButtonActionPerformed(evt);
}
});
t10_get_status_Button.setText("Get Status");
t10_get_status_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
t10_get_status_ButtonActionPerformed(evt);
}
});
ezcontrol_system_ComboBox.setMaximumRowCount(16);
ezcontrol_system_ComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "FS10", "FS20", "RS200", "AB400", "AB601", "Intertechno", "REV", "BS-QU", "X10", "OA-FM", "Kopp First Control (1st gen)", "RS862" }));
ezcontrol_system_ComboBox.setSelectedIndex(5);
ezcontrol_system_ComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ezcontrol_system_ComboBoxActionPerformed(evt);
}
});
ezcontrol_house_ComboBox.setMaximumRowCount(16);
ezcontrol_house_ComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P" }));
ezcontrol_house_ComboBox.setToolTipText("House");
ezcontrol_deviceno_ComboBox.setMaximumRowCount(16);
ezcontrol_deviceno_ComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" }));
ezcontrol_deviceno_ComboBox.setToolTipText("device address");
ezcontrol_onButton.setText("On");
ezcontrol_onButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ezcontrol_onButtonActionPerformed(evt);
}
});
ezcontrol_off_Button.setText("Off");
ezcontrol_off_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ezcontrol_off_ButtonActionPerformed(evt);
}
});
n_ezcontrol_ComboBox.setMaximumRowCount(10);
n_ezcontrol_ComboBox.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }));
n_ezcontrol_ComboBox.setToolTipText("Number of times to send the command.");
t10_browse_Button.setText("Browse");
t10_browse_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
t10_browse_ButtonActionPerformed(evt);
}
});
ezcontrol_house_TextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
ezcontrol_house_TextField.setText("1111 1111");
ezcontrol_house_TextField.setToolTipText("IP-Address of EzControl to use");
ezcontrol_house_TextField.setMinimumSize(new java.awt.Dimension(120, 27));
ezcontrol_house_TextField.setPreferredSize(new java.awt.Dimension(120, 27));
ezcontrol_house_TextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ezcontrol_house_TextFieldActionPerformed(evt);
}
});
ezcontrol_deviceno_TextField.setText("1234");
ezcontrol_deviceno_TextField.setMaximumSize(new java.awt.Dimension(50, 2147483647));
ezcontrol_deviceno_TextField.setMinimumSize(new java.awt.Dimension(50, 27));
ezcontrol_deviceno_TextField.setPreferredSize(new java.awt.Dimension(50, 27));
javax.swing.GroupLayout ezcontrolPanelLayout = new javax.swing.GroupLayout(ezcontrolPanel);
ezcontrolPanel.setLayout(ezcontrolPanelLayout);
ezcontrolPanelLayout.setHorizontalGroup(
ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ezcontrolPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ezcontrolPanelLayout.createSequentialGroup()
.addGroup(ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ezcontrolPanelLayout.createSequentialGroup()
.addComponent(ezcontrol_preset_no_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(ezcontrol_preset_name_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(ezcontrol_preset_state_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ezcontrol_preset_on_Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ezcontrol_preset_off_Button))
.addGroup(ezcontrolPanelLayout.createSequentialGroup()
.addComponent(ezcontrol_system_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ezcontrol_house_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ezcontrol_house_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(t10_update_Button)
.addGroup(ezcontrolPanelLayout.createSequentialGroup()
.addComponent(ezcontrol_deviceno_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ezcontrol_deviceno_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(n_ezcontrol_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(ezcontrolPanelLayout.createSequentialGroup()
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(t10_address_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(t10_browse_Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(t10_get_status_Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(t10_get_timers_Button)))
.addGap(2, 2, 2)
.addComponent(ezcontrol_onButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ezcontrol_off_Button)
.addContainerGap())
);
ezcontrolPanelLayout.setVerticalGroup(
ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, ezcontrolPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ezcontrol_system_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ezcontrol_house_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ezcontrol_deviceno_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(n_ezcontrol_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ezcontrol_onButton)
.addComponent(ezcontrol_off_Button)
.addComponent(ezcontrol_house_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ezcontrol_deviceno_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ezcontrol_preset_no_ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ezcontrol_preset_name_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ezcontrol_preset_state_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ezcontrol_preset_on_Button)
.addComponent(ezcontrol_preset_off_Button)
.addComponent(t10_update_Button))
.addGap(18, 18, 18)
.addGroup(ezcontrolPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel13)
.addComponent(t10_address_TextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(t10_browse_Button)
.addComponent(t10_get_status_Button)
.addComponent(t10_get_timers_Button))
.addContainerGap(88, Short.MAX_VALUE))
);
console_TextArea.setEditable(false);
console_TextArea.setColumns(20);
console_TextArea.setLineWrap(true);
console_TextArea.setRows(5);
console_TextArea.setToolTipText("This is the console, where errors and messages go, instead of annoying you with popups.");
console_TextArea.setWrapStyleWord(true);
jScrollPane1.setViewportView(console_TextArea);
fileMenu.setMnemonic('F');
fileMenu.setText("File");
consoletext_save_MenuItem.setMnemonic('c');
consoletext_save_MenuItem.setText("Save console text as...");
consoletext_save_MenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
consoletext_save_MenuItemActionPerformed(evt);
}
});
fileMenu.add(consoletext_save_MenuItem);
fileMenu.add(jSeparator1);
exitMenuItem.setMnemonic('x');
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
editMenu.setMnemonic('E');
editMenu.setText("Edit");
copy_console_to_clipboard_MenuItem.setText("Copy Console to clipboard");
copy_console_to_clipboard_MenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
copy_console_to_clipboard_MenuItemActionPerformed(evt);
}
});
editMenu.add(copy_console_to_clipboard_MenuItem);
menuBar.add(editMenu);
jMenu1.setMnemonic('O');
jMenu1.setText("Options");
verbose_CheckBoxMenuItem.setMnemonic('v');
verbose_CheckBoxMenuItem.setText("Verbose");
verbose_CheckBoxMenuItem.setToolTipText("Report actual command sent to devices");
verbose_CheckBoxMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
verbose_CheckBoxMenuItemActionPerformed(evt);
}
});
jMenu1.add(verbose_CheckBoxMenuItem);
menuBar.add(jMenu1);
miscMenu.setMnemonic('M');
miscMenu.setText("Misc.");
clear_console_MenuItem.setText("Clear console");
clear_console_MenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clear_console_MenuItemActionPerformed(evt);
}
});
miscMenu.add(clear_console_MenuItem);
menuBar.add(miscMenu);
helpMenu.setMnemonic('H');
helpMenu.setText("Help");
menuBar.add(helpMenu);
setJMenuBar(menuBar);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1)
.addGroup(layout.createSequentialGroup()
.addComponent(ezcontrolPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(ezcontrolPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE))
);
pack();
}// //GEN-END:initComponents
private void do_exit() {
System.out.println("Exiting...");
System.exit(0);
}
private static void browse(URI uri) {
if (! Desktop.isDesktopSupported()) {
logger.severe("Desktop not supported");
return;
}
if (uri == null || uri.toString().isEmpty()) {
logger.severe("No URI.");
return;
}
try {
//if (HarcProps.get_instance().getVerbose())
logger.log(Level.INFO, "Browsing URI \"{0}\"", uri.toString());
Desktop.getDesktop().browse(uri);
} catch (IOException ex) {
logger.log(Level.SEVERE, "Could not start browser using uri \"{0}\".", uri.toString());
}
}
private static void browse(String url) {
try {
browse(new URI("http://" + url));
} catch (URISyntaxException ex) {
logger.log(Level.SEVERE, ex.getMessage());
}
}
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
do_exit();
}//GEN-LAST:event_exitMenuItemActionPerformed
private void verbose_CheckBoxMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_verbose_CheckBoxMenuItemActionPerformed
verbose = verbose_CheckBoxMenuItem.isSelected();
}//GEN-LAST:event_verbose_CheckBoxMenuItemActionPerformed
private void copy_console_to_clipboard_MenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copy_console_to_clipboard_MenuItemActionPerformed
(new copy_clipboard_text()).to_clipboard(console_TextArea.getText());
}//GEN-LAST:event_copy_console_to_clipboard_MenuItemActionPerformed
private void clear_console_MenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clear_console_MenuItemActionPerformed
console_TextArea.setText(null);
}//GEN-LAST:event_clear_console_MenuItemActionPerformed
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
System.out.println("asfkad");//do_exit();
}//GEN-LAST:event_formWindowClosed
private void consoletext_save_MenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_consoletext_save_MenuItemActionPerformed
File filename = select_file("Save console text as...", "txt", "Text file", true, null);
if (filename != null)
try (PrintStream ps = new PrintStream(new FileOutputStream(filename), true, "US-ASCII")) {
ps.println(console_TextArea.getText());
} catch (FileNotFoundException | UnsupportedEncodingException ex) {
logger.log(Level.SEVERE, ex.getMessage());
}
}//GEN-LAST:event_consoletext_save_MenuItemActionPerformed
private void t10_address_TextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_t10_address_TextFieldActionPerformed
}//GEN-LAST:event_t10_address_TextFieldActionPerformed
private void t10_get_timers_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_t10_get_timers_ButtonActionPerformed
System.err.println(EzControlT10.getTimers(t10_address_TextField.getText()));
}//GEN-LAST:event_t10_get_timers_ButtonActionPerformed
private void t10_get_status_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_t10_get_status_ButtonActionPerformed
System.err.println(EzControlT10.getStatus(t10_address_TextField.getText()));
}//GEN-LAST:event_t10_get_status_ButtonActionPerformed
private void t10_send_manual_command(EzControlT10.Command cmd) {
try {
EzControlT10.EZSystem system = EzControlT10.EZSystem.parse((String) ezcontrol_system_ComboBox.getSelectedItem());
String house = system.hasHouseLetter() ? (String) ezcontrol_house_ComboBox.getSelectedItem()
: ezcontrol_house_TextField.getText();
int address = Integer.parseInt(ezcontrol_system_ComboBox.getSelectedItem().equals("FS20")
? ezcontrol_deviceno_TextField.getText()
: (String) ezcontrol_deviceno_ComboBox.getModel().getSelectedItem());
(new EzControlT10(t10_address_TextField.getText(), verbose)).sendManual(
system,
house,
address,
cmd, -1,
Integer.parseInt((String) this.n_ezcontrol_ComboBox.getModel().getSelectedItem()));
} catch (RuntimeException | HarcHardwareException ex) {
logger.log(Level.SEVERE, ex.getMessage());
}
}
private void t10_send_preset_command(EzControlT10.Command cmd) {
try {
(new EzControlT10(t10_address_TextField.getText())).sendPreset(Integer.parseInt((String) ezcontrol_preset_no_ComboBox.getModel().getSelectedItem()), cmd);
} catch (NumberFormatException | HarcHardwareException ex) {
logger.log(Level.SEVERE, ex.getMessage());
}
}
private void ezcontrol_onButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ezcontrol_onButtonActionPerformed
t10_send_manual_command(EzControlT10.Command.power_on);
}//GEN-LAST:event_ezcontrol_onButtonActionPerformed
private void ezcontrol_off_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ezcontrol_off_ButtonActionPerformed
t10_send_manual_command(EzControlT10.Command.power_off);
}//GEN-LAST:event_ezcontrol_off_ButtonActionPerformed
private void ezcontrol_preset_on_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ezcontrol_preset_on_ButtonActionPerformed
t10_send_preset_command(EzControlT10.Command.power_on);
ezcontrol_preset_state_TextField.setText("on");
}//GEN-LAST:event_ezcontrol_preset_on_ButtonActionPerformed
private void ezcontrol_preset_off_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ezcontrol_preset_off_ButtonActionPerformed
t10_send_preset_command(EzControlT10.Command.power_off);
ezcontrol_preset_state_TextField.setText("off");
}//GEN-LAST:event_ezcontrol_preset_off_ButtonActionPerformed
private void ezcontrol_preset_no_ComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ezcontrol_preset_no_ComboBoxActionPerformed
EzControlT10 ez = new EzControlT10(this.t10_address_TextField.getText());
int preset_number = Integer.parseInt((String)ezcontrol_preset_no_ComboBox.getModel().getSelectedItem());
ezcontrol_preset_name_TextField.setText(ez.getPresetName(preset_number));
this.ezcontrol_preset_state_TextField.setText(ez.getPresetStatus(preset_number));
}//GEN-LAST:event_ezcontrol_preset_no_ComboBoxActionPerformed
private void t10_update_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_t10_update_ButtonActionPerformed
ezcontrol_preset_no_ComboBoxActionPerformed(evt);
}//GEN-LAST:event_t10_update_ButtonActionPerformed
private void t10_browse_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_t10_browse_ButtonActionPerformed
browse(t10_address_TextField.getText());
}//GEN-LAST:event_t10_browse_ButtonActionPerformed
private void ezcontrol_house_TextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ezcontrol_house_TextFieldActionPerformed
}//GEN-LAST:event_ezcontrol_house_TextFieldActionPerformed
private void ezcontrol_system_ComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ezcontrol_system_ComboBoxActionPerformed
enableHouseInputFields();
}//GEN-LAST:event_ezcontrol_system_ComboBoxActionPerformed
private void enableHouseInputFields() {
EzControlT10.EZSystem system = EzControlT10.EZSystem.parse((String)ezcontrol_system_ComboBox.getSelectedItem());
boolean hasHouseLetter = system.hasHouseLetter();
boolean hasAddressMenu = !ezcontrol_system_ComboBox.getSelectedItem().equals("FS20");
ezcontrol_house_ComboBox.setEnabled(hasHouseLetter);
ezcontrol_house_TextField.setEnabled(!hasHouseLetter);
ezcontrol_deviceno_ComboBox.setEnabled(hasAddressMenu);
ezcontrol_deviceno_TextField.setEnabled(!hasAddressMenu);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(() -> {
new EzControlGUI().setVisible(true);
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JMenuItem clear_console_MenuItem;
private javax.swing.JTextArea console_TextArea;
private javax.swing.JMenuItem consoletext_save_MenuItem;
private javax.swing.JMenuItem copy_console_to_clipboard_MenuItem;
private javax.swing.JMenu editMenu;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JPanel ezcontrolPanel;
private javax.swing.JComboBox ezcontrol_deviceno_ComboBox;
private javax.swing.JTextField ezcontrol_deviceno_TextField;
private javax.swing.JComboBox ezcontrol_house_ComboBox;
private javax.swing.JTextField ezcontrol_house_TextField;
private javax.swing.JButton ezcontrol_off_Button;
private javax.swing.JButton ezcontrol_onButton;
private javax.swing.JTextField ezcontrol_preset_name_TextField;
private javax.swing.JComboBox ezcontrol_preset_no_ComboBox;
private javax.swing.JButton ezcontrol_preset_off_Button;
private javax.swing.JButton ezcontrol_preset_on_Button;
private javax.swing.JTextField ezcontrol_preset_state_TextField;
private javax.swing.JComboBox ezcontrol_system_ComboBox;
private javax.swing.JMenu fileMenu;
private javax.swing.JMenu helpMenu;
private javax.swing.JLabel jLabel13;
private javax.swing.JMenu jMenu1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenu miscMenu;
private javax.swing.JComboBox n_ezcontrol_ComboBox;
private javax.swing.JTextField t10_address_TextField;
private javax.swing.JButton t10_browse_Button;
private javax.swing.JButton t10_get_status_Button;
private javax.swing.JButton t10_get_timers_Button;
private javax.swing.JButton t10_update_Button;
private javax.swing.JCheckBoxMenuItem verbose_CheckBoxMenuItem;
// End of variables declaration//GEN-END:variables
}