All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.harctoolbox.harchardware.misc.EzControlGUI Maven / Gradle / Ivy

There is a newer version: 2.4.1
Show newest version
/*
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
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy