List of usage examples for javax.swing JPanel setBounds
public void setBounds(int x, int y, int width, int height)
From source file:Clavis.Windows.WShedule.java
/** * 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.//w w w. j a v a2 s . com */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanelInicial = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new org.jdesktop.swingx.JXTable(); ; jButtonSair = new javax.swing.JButton(); jXDatePickerInicio = new org.jdesktop.swingx.JXDatePicker(); jXDatePickerFim = new org.jdesktop.swingx.JXDatePicker(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jButtonImprimir = new javax.swing.JButton(); jComboBoxEstado = new javax.swing.JComboBox<>(); jLabel3 = new javax.swing.JLabel(); jButtonExportar = new javax.swing.JButton(); setMinimumSize(new java.awt.Dimension(900, 600)); setSize(new java.awt.Dimension(900, 600)); jPanelInicial.setBorder(javax.swing.BorderFactory.createCompoundBorder( javax.swing.BorderFactory.createLineBorder(painelcor, 4), javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)))); jPanelInicial.setMinimumSize(new java.awt.Dimension(900, 500)); jPanelInicial.setPreferredSize(new java.awt.Dimension(900, 500)); org.jdesktop.swingx.border.DropShadowBorder dropShadowBorder1 = new org.jdesktop.swingx.border.DropShadowBorder(); dropShadowBorder1.setCornerSize(6); dropShadowBorder1.setShadowSize(3); dropShadowBorder1.setShowLeftShadow(true); jScrollPane1.setBorder(javax.swing.BorderFactory.createCompoundBorder(dropShadowBorder1, javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)))); jTable1.setBorder(null); if (mat.getTypeOfMaterial().getMaterialTypeID() == 1) { jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {}, new String[] { lingua.translate("Utilizador"), lingua.translate("Horrio"), lingua.translate("Data"), lingua.translate("Atividade"), lingua.translate("Disciplina") })); jTable1.getColumnModel().getColumn(0).setPreferredWidth(250); jTable1.getColumnModel().getColumn(1).setMinWidth(90); jTable1.getColumnModel().getColumn(2).setMinWidth(90); jTable1.getColumnModel().getColumn(3).setMinWidth(150); jTable1.getColumnModel().getColumn(4).setMinWidth(150); } else { jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {}, new String[] { lingua.translate("Utilizador"), lingua.translate("Data inicial"), lingua.translate("Data final"), lingua.translate("Atividade") })); jTable1.getColumnModel().getColumn(0).setPreferredWidth(250); jTable1.getColumnModel().getColumn(1).setMinWidth(90); jTable1.getColumnModel().getColumn(2).setMinWidth(90); jTable1.getColumnModel().getColumn(3).setMinWidth(150); } jScrollPane1.setViewportView(jTable1); Border border = BorderFactory.createEmptyBorder(5, 5, 0, 0); UIManager.put("Table.focusCellHighlightBorder", border); jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); renderer.setHorizontalAlignment(javax.swing.JLabel.CENTER); renderer.setFocusable(false); javax.swing.JLabel lo = new javax.swing.JLabel(); lo.setBackground(new Color(100, 100, 100)); lo.setOpaque(true); jScrollPane1.setCorner(javax.swing.JScrollPane.UPPER_TRAILING_CORNER, lo); jTable1.setRowHeight(30); jTable1.setEditable(false); jTable1.setSelectionBackground(Color.DARK_GRAY); jTable1.getColumnModel().getColumn(1).setCellRenderer(renderer); jTable1.getColumnModel().getColumn(2).setCellRenderer(renderer); jTable1.getColumnModel().getColumn(3).setCellRenderer(renderer); if (mat.getTypeOfMaterial().getMaterialTypeID() == 1) { jTable1.getColumnModel().getColumn(4).setCellRenderer(renderer); } DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer() { private static final long serialVersionUID = 2L; @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); setFont(new Font("Cantarell", Font.PLAIN, 14)); this.setBorder(BorderFactory.createMatteBorder(0, 1, 1, 0, new Color(1, 1, 1))); return this; } }; DefaultTableCellRenderer headerRenderer2 = new DefaultTableCellRenderer() { private static final long serialVersionUID = 3L; @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); setFont(new Font("Cantarell", Font.PLAIN, 14)); this.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(1, 1, 1)), BorderFactory.createEmptyBorder(0, 20, 0, 0))); this.setBackground(new Color(100, 100, 100)); setForeground(Color.WHITE); setPreferredSize(new Dimension(100, 40)); return this; } }; headerRenderer.setBackground(new Color(100, 100, 100)); headerRenderer.setForeground(Color.WHITE); headerRenderer.setPreferredSize(new Dimension(100, 40)); headerRenderer.setHorizontalAlignment(javax.swing.JLabel.CENTER); for (int i = 0; i < jTable1.getColumnCount(); i++) { if (i == 0) { headerRenderer2.setHorizontalAlignment(javax.swing.JLabel.LEFT); jTable1.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer2); } else { jTable1.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer); } } jButtonSair.setBackground(new java.awt.Color(1, 1, 1)); jButtonSair.setToolTipText(""); jButtonSair.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); jButtonSair.setFocusPainted(false); jButtonSair.setMaximumSize(new java.awt.Dimension(90, 40)); jButtonSair.setMinimumSize(new java.awt.Dimension(90, 40)); jButtonSair.setPreferredSize(new java.awt.Dimension(90, 40)); jButtonSair.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSairActionPerformed(evt); } }); jXDatePickerInicio.setBackground(new java.awt.Color(254, 254, 254)); org.jdesktop.swingx.border.DropShadowBorder dropShadowBorder2 = new org.jdesktop.swingx.border.DropShadowBorder(); dropShadowBorder2.setCornerSize(6); dropShadowBorder2.setShadowSize(3); dropShadowBorder2.setShowLeftShadow(true); jXDatePickerInicio.setBorder(javax.swing.BorderFactory.createCompoundBorder(dropShadowBorder2, javax.swing.BorderFactory.createMatteBorder(0, 1, 1, 1, new java.awt.Color(0, 0, 0)))); jXDatePickerInicio.setFont(new java.awt.Font("Cantarell", 0, 12)); // NOI18N jXDatePickerInicio.setMaximumSize(new java.awt.Dimension(1155551, 26)); jXDatePickerInicio.setMinimumSize(new java.awt.Dimension(66, 26)); jXDatePickerInicio.setPreferredSize(new java.awt.Dimension(131, 26)); jXDatePickerInicio.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jXDatePickerInicioActionPerformed(evt); } }); jXDatePickerFim.setBackground(new java.awt.Color(254, 254, 254)); org.jdesktop.swingx.border.DropShadowBorder dropShadowBorder3 = new org.jdesktop.swingx.border.DropShadowBorder(); dropShadowBorder3.setCornerSize(6); dropShadowBorder3.setShadowSize(3); dropShadowBorder3.setShowLeftShadow(true); jXDatePickerFim.setBorder(javax.swing.BorderFactory.createCompoundBorder(dropShadowBorder3, javax.swing.BorderFactory.createMatteBorder(0, 1, 1, 1, new java.awt.Color(0, 0, 0)))); jXDatePickerFim.setFont(new java.awt.Font("Cantarell", 0, 12)); // NOI18N jXDatePickerFim.setMaximumSize(new java.awt.Dimension(1155551, 26)); jXDatePickerFim.setMinimumSize(new java.awt.Dimension(66, 26)); jXDatePickerFim.setPreferredSize(new java.awt.Dimension(121, 26)); jLabel1.setBackground(new java.awt.Color(100, 100, 100)); jLabel1.setFont(new java.awt.Font("Cantarell", 0, 12)); // NOI18N jLabel1.setForeground(new java.awt.Color(254, 254, 254)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Incio"); jLabel1.setVerticalAlignment(javax.swing.SwingConstants.TOP); jLabel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); jLabel1.setMaximumSize(new java.awt.Dimension(3343446, 96)); jLabel1.setMinimumSize(new java.awt.Dimension(36, 26)); jLabel1.setOpaque(true); jLabel1.setPreferredSize(new java.awt.Dimension(100, 20)); jLabel2.setBackground(new java.awt.Color(100, 100, 100)); jLabel2.setFont(new java.awt.Font("Cantarell", 0, 12)); // NOI18N jLabel2.setForeground(new java.awt.Color(254, 254, 254)); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel2.setText("Fim"); jLabel2.setVerticalAlignment(javax.swing.SwingConstants.TOP); jLabel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jLabel2.setMaximumSize(new java.awt.Dimension(355557, 96)); jLabel2.setMinimumSize(new java.awt.Dimension(37, 26)); jLabel2.setOpaque(true); jLabel2.setPreferredSize(new java.awt.Dimension(100, 20)); jButtonImprimir.setBackground(new java.awt.Color(51, 102, 153)); jButtonImprimir.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); jButtonImprimir.setFocusPainted(false); jButtonImprimir.setMaximumSize(new java.awt.Dimension(5345, 40)); jButtonImprimir.setPreferredSize(new java.awt.Dimension(90, 40)); jButtonImprimir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonImprimirActionPerformed(evt); } }); jComboBoxEstado.setBackground(new java.awt.Color(213, 213, 213)); jComboBoxEstado.setBorder(null); jComboBoxEstado.setFocusable(false); jComboBoxEstado.setMinimumSize(new java.awt.Dimension(35, 22)); jComboBoxEstado.setPreferredSize(new java.awt.Dimension(125, 28)); jComboBoxEstado.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBoxEstadoActionPerformed(evt); } }); jLabel3.setBackground(new java.awt.Color(100, 100, 100)); jLabel3.setFont(new java.awt.Font("Cantarell", 0, 12)); // NOI18N jLabel3.setForeground(new java.awt.Color(254, 254, 254)); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel3.setText("Estado"); jLabel3.setVerticalAlignment(javax.swing.SwingConstants.TOP); jLabel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jLabel3.setMaximumSize(new java.awt.Dimension(355557, 96)); jLabel3.setMinimumSize(new java.awt.Dimension(37, 26)); jLabel3.setOpaque(true); jLabel3.setPreferredSize(new java.awt.Dimension(100, 20)); jButtonExportar.setBackground(new java.awt.Color(51, 102, 153)); jButtonExportar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); jButtonExportar.setFocusPainted(false); jButtonExportar.setMaximumSize(new java.awt.Dimension(5345, 40)); jButtonExportar.setPreferredSize(new java.awt.Dimension(90, 40)); jButtonExportar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonExportarActionPerformed(evt); } }); javax.swing.GroupLayout jPanelInicialLayout = new javax.swing.GroupLayout(jPanelInicial); jPanelInicial.setLayout(jPanelInicialLayout); jPanelInicialLayout.setHorizontalGroup(jPanelInicialLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelInicialLayout.createSequentialGroup().addGap(42, 42, 42) .addGroup(jPanelInicialLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelInicialLayout.createSequentialGroup().addComponent(jScrollPane1) .addGap(42, 42, 42)) .addGroup(jPanelInicialLayout.createSequentialGroup().addGap(29, 29, 29) .addComponent(jButtonSair, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonExportar, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonImprimir, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(71, 71, 71)))) .addGroup(jPanelInicialLayout.createSequentialGroup().addGap(71, 71, 71) .addGroup(jPanelInicialLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jXDatePickerInicio, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelInicialLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 152, Short.MAX_VALUE) .addComponent(jXDatePickerFim, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 201, Short.MAX_VALUE) .addGroup(jPanelInicialLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jComboBoxEstado, 0, 241, Short.MAX_VALUE)) .addGap(71, 71, 71))); jPanelInicialLayout .setVerticalGroup(jPanelInicialLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelInicialLayout.createSequentialGroup().addGap(16, 16, 16) .addGroup(jPanelInicialLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 0, 0) .addGroup(jPanelInicialLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jXDatePickerInicio, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jXDatePickerFim, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jComboBoxEstado, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelInicialLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jButtonImprimir, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonSair, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonExportar, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(16, 16, 16))); try { if (Clavis.KeyQuest.class.getResource("Images/exit26x24.png") != null) { BufferedImage im = ImageIO.read(Clavis.KeyQuest.class.getResourceAsStream("Images/exit26x24.png")); ImageIcon imic = new ImageIcon(im); if (imic != null) { jButtonSair.setIcon(imic); } } } catch (IOException eo) { } jButtonSair.setToolTipText(lingua.translate("Voltar")); javax.swing.JPanel pan2 = new javax.swing.JPanel(null); String compoe = lingua.translate("Hoje dia") + ": " + new TimeDate.Date().toString(); javax.swing.JLabel fil2 = new javax.swing.JLabel(compoe); fil2.setBounds(0, 0, 300, 26); fil2.setHorizontalAlignment(SwingConstants.CENTER); pan2.setPreferredSize(new Dimension(300, 30)); pan2.setBounds(0, 0, 300, 30); pan2.add(fil2); jXDatePickerInicio.setLinkPanel(pan2); jXDatePickerInicio.setLocale(lingua.systemlocale); jXDatePickerInicio.getEditor().setSelectionColor(Color.DARK_GRAY); jXDatePickerInicio.getEditor().setBorder(BorderFactory.createEmptyBorder()); jXDatePickerInicio.getEditor().setHorizontalAlignment(SwingConstants.CENTER); javax.swing.JButton bbt2 = (javax.swing.JButton) jXDatePickerInicio.getComponent(1); bbt2.setBackground(Color.WHITE); jXDatePickerInicio.addActionListener(actionJXDatePicker()); jXDatePickerInicio.setFormats("dd/MM/yyyy"); javax.swing.JPanel pan = new javax.swing.JPanel(null); String compoe0 = lingua.translate("Hoje dia") + ": " + new TimeDate.Date().toString(); javax.swing.JLabel fil = new javax.swing.JLabel(compoe); fil.setBounds(0, 0, 300, 26); fil.setHorizontalAlignment(SwingConstants.CENTER); pan.setPreferredSize(new Dimension(300, 30)); pan.setBounds(0, 0, 300, 30); pan.add(fil); jXDatePickerFim.setLinkPanel(pan); Component[] t = jXDatePickerFim.getLinkPanel().getComponents(); jXDatePickerFim.setLocale(lingua.systemlocale); jXDatePickerFim.getEditor().setSelectionColor(Color.DARK_GRAY); jXDatePickerFim.getEditor().setBorder(BorderFactory.createEmptyBorder()); jXDatePickerFim.getEditor().setHorizontalAlignment(SwingConstants.CENTER); javax.swing.JButton bbt = (javax.swing.JButton) jXDatePickerFim.getComponent(1); bbt.setBackground(Color.WHITE); jXDatePickerFim.addActionListener(actionJXDatePicker()); jXDatePickerFim.setFormats("dd/MM/yyyy"); jLabel1.setText(lingua.translate("Incio")); jLabel2.setText(lingua.translate("Fim")); try { if (Clavis.KeyQuest.class.getResource("Images/print.png") != null) { BufferedImage im = ImageIO.read(Clavis.KeyQuest.class.getResourceAsStream("Images/print.png")); ImageIcon imic = new ImageIcon(im); if (imic != null) { jButtonImprimir.setIcon(imic); } } } catch (IOException eo) { } jButtonImprimir.setToolTipText(lingua.translate("Imprimir")); jComboBoxEstado.setModel(new javax.swing.DefaultComboBoxModel<>( new String[] { lingua.translate("todos"), lingua.translate("terminado"), lingua.translate("no realizado"), lingua.translate("por realizar") })); Clavis.KeyQuest.addVisualComboBox(jComboBoxEstado); ((javax.swing.JLabel) jComboBoxEstado.getRenderer()).setHorizontalAlignment(javax.swing.JLabel.CENTER); jLabel3.setText(lingua.translate("Estado")); try { if (Clavis.KeyQuest.class.getResource("Images/exportar.png") != null) { BufferedImage im = ImageIO.read(Clavis.KeyQuest.class.getResourceAsStream("Images/exportar.png")); ImageIcon imic = new ImageIcon(im); if (imic != null) { jButtonExportar.setIcon(imic); } } } catch (IOException eo) { } jButtonExportar.setToolTipText(lingua.translate("Exportar para excel")); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addComponent(jPanelInicial, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(0, 0, 0))); layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanelInicial, javax.swing.GroupLayout.DEFAULT_SIZE, 600, Short.MAX_VALUE)); }
From source file:com.funambol.exchange.admin.DefaultExchangeConnectorConfigPanel.java
/** * Create the panel/*w ww . j a v a 2 s .c om*/ */ private void init() { JLabel title, contactFolderLabel, eventFolderLabel, taskFolderLabel, noteFolderLabel, seccServerLabel, seccPortLabel, exchangeServerLabel; JPanel seccPanel, exchangePanel, sslPanel; title = new JLabel(); exchangePanel = new JPanel(); seccPanel = new JPanel(); sslPanel = new JPanel(); contactFolderValue = new JTextField(); eventFolderValue = new JTextField(); taskFolderValue = new JTextField(); noteFolderValue = new JTextField(); seccServerLabel = new JLabel(); seccServerValue = new JTextField(); seccPortLabel = new JLabel(); seccPortValue = new JTextField(); useSSLValue = new JCheckBox(); useFBAValue = new JCheckBox(); useKeyStoreValue = new JCheckBox(); keyStoreFileNameLabel = new JLabel(); keyStoreFileNameValue = new JTextField(); keyStorePasswordLabel = new JLabel(); keyStorePasswordValue = new JTextField(); exchangeServerLabel = new JLabel(); exchangeServerValue = new JTextField(); exchangeServerNameLabel = new JLabel(); exchangeServerNameValue = new JTextField(); setLayout(null); title.setFont(GuiFactory.titlePanelFont); title.setText("Funambol Exchange Connector"); title.setBounds(new Rectangle(14, 5, 316, 28)); title.setAlignmentX(SwingConstants.CENTER); title.setBorder(new TitledBorder("")); contactFolderLabel = new JLabel(); contactFolderLabel.setText("Contact Folder: "); contactFolderLabel.setBounds(14, 35, 116, 15); add(contactFolderLabel); contactFolderValue.setBounds(150, 35, 220, 19); add(contactFolderValue); eventFolderLabel = new JLabel(); eventFolderLabel.setText("Event Folder: "); eventFolderLabel.setBounds(14, 65, 116, 15); add(eventFolderLabel); eventFolderValue.setBounds(150, 65, 220, 19); add(eventFolderValue); taskFolderLabel = new JLabel(); taskFolderLabel.setText("Task Folder: "); taskFolderLabel.setBounds(14, 95, 116, 15); add(taskFolderLabel); taskFolderValue.setBounds(150, 95, 220, 19); add(taskFolderValue); noteFolderLabel = new JLabel(); noteFolderLabel.setText("Note Folder: "); noteFolderLabel.setBounds(14, 125, 116, 15); add(noteFolderLabel); noteFolderValue.setBounds(150, 125, 220, 19); add(noteFolderValue); seccPanel.setLayout(null); seccPanel.setBorder(new TitledBorder("HTTP Server Configuration")); seccServerLabel.setText("Server:"); seccPanel.add(seccServerLabel); seccServerLabel.setBounds(10, 20, 116, 15); seccPanel.add(seccServerValue); seccServerValue.setBounds(150, 20, 220, 19); seccServerValue.setFont(GuiFactory.defaultFont); seccPortLabel.setText("Port:"); seccPanel.add(seccPortLabel); seccPortLabel.setBounds(10, 50, 131, 15); seccPanel.add(seccPortValue); seccPortValue.setBounds(150, 50, 220, 19); seccPortValue.setFont(GuiFactory.defaultFont); add(seccPanel); seccPanel.setBounds(10, 155, 380, 80); exchangePanel.setLayout(null); exchangePanel.setBorder(new TitledBorder("WebDav Message Configuration")); exchangeServerLabel.setText("Server: "); exchangePanel.add(exchangeServerLabel); exchangeServerLabel.setBounds(10, 20, 150, 19); exchangePanel.add(exchangeServerValue); exchangeServerValue.setBounds(150, 20, 220, 19); exchangeServerValue.setFont(GuiFactory.defaultFont); exchangeServerNameLabel.setText("Name:"); exchangeServerNameLabel.setBounds(10, 50, 150, 19); exchangePanel.add(exchangeServerNameLabel); exchangeServerNameValue.setBounds(150, 50, 220, 19); exchangeServerNameValue.setFont(GuiFactory.defaultFont); exchangePanel.add(exchangeServerNameValue); add(exchangePanel); exchangePanel.setBounds(10, 255, 380, 80); //the ssl option panel sslPanel.setLayout(null); sslPanel.setBorder(new TitledBorder("SSL")); useSSLValue.setText("Use SSL"); useSSLValue.setSelected(false); useSSLValue.setBounds(5, 20, 150, 19); sslPanel.add(useSSLValue); useFBAValue.setText("Use Form-Based Authentication"); useFBAValue.setSelected(true); useFBAValue.setBounds(5, 40, 250, 19); sslPanel.add(useFBAValue); useKeyStoreValue.setText("Use Keystore"); useKeyStoreValue.setSelected(false); useKeyStoreValue.setBounds(5, 60, 200, 19); sslPanel.add(useKeyStoreValue); useKeyStoreValue.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent acEvent) { boolean enabled = useKeyStoreValue.isSelected(); keyStoreFileNameLabel.setEnabled(enabled); keyStoreFileNameValue.setEnabled(enabled); keyStorePasswordLabel.setEnabled(enabled); keyStorePasswordValue.setEnabled(enabled); } }); keyStoreFileNameLabel.setText("Key Store File: "); sslPanel.add(keyStoreFileNameLabel); keyStoreFileNameLabel.setEnabled(false); keyStoreFileNameLabel.setBounds(10, 80, 131, 15); sslPanel.add(keyStoreFileNameValue); keyStoreFileNameValue.setEnabled(false); keyStoreFileNameValue.setBounds(150, 80, 220, 19); keyStoreFileNameValue.setFont(GuiFactory.defaultFont); keyStorePasswordLabel.setText("Key Store Password: "); sslPanel.add(keyStorePasswordLabel); keyStorePasswordLabel.setEnabled(false); keyStorePasswordLabel.setBounds(10, 110, 131, 15); sslPanel.add(keyStorePasswordValue); keyStorePasswordValue.setEnabled(false); keyStorePasswordValue.setBounds(150, 110, 220, 19); keyStorePasswordValue.setFont(GuiFactory.defaultFont); add(sslPanel); sslPanel.setBounds(10, 355, 450, 140); confirmButton.setFont(GuiFactory.defaultFont); confirmButton.setText("Save"); add(confirmButton); confirmButton.setBounds(120, 500, 70, 25); confirmButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { getValues(); configPanel.saveDefaultConfig(event.getActionCommand()); configPanel.finishedDefaultConfig(); } }); cancelButton.setFont(GuiFactory.defaultFont); cancelButton.setText("Cancel"); add(cancelButton); cancelButton.setBounds(200, 500, 70, 25); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { configPanel.finishedDefaultConfig(); } }); // // Setting font... // Component[] components = getComponents(); for (int i = 0; (components != null) && (i < components.length); ++i) { components[i].setFont(GuiFactory.defaultFont); } // // We add it as the last one so that the font won't be changed // add(title); }
From source file:Tcpbw100.java
public void init() { //added applet parameters (country,language) to directly influence the language displayed if (getParameter("country") != null) country = getParameter("country"); if (getParameter("language") != null) lang = getParameter("language"); if (getParameter("client") != null) applet_id = getParameter("client"); // try to load the appropriate resource files try {//ww w . ja va 2 s . c om locale = new Locale(lang, country); System.out.println("Interface language set to " + locale.getLanguage() + "_" + locale.getCountry()); messages = ResourceBundle.getBundle("Tcpbw100_msgs", locale); res = ResourceBundle.getBundle("strings", locale); System.out.println("language loaded is :" + res.getLocale()); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error while loading language files:\n" + e.getMessage()); e.printStackTrace(); } JPanel advancedPanel = new JPanel(new BorderLayout()); final CardLayout cards = new CardLayout(); getContentPane().setLayout(cards); final JFrame popout = new JFrame("Network Diagnostic Tool"); popout.add(advancedPanel); popout.pack(); //blank the labels reset_labels(); showStatus(messages.getString("ready")); failed = false; Randomize = false; cancopy = false; results = new MyTextPane(); results.append("TCP/Web100 Network Diagnostic Tool v" + VERSION + "\n"); results.setEditable(false); advancedPanel.add(new JScrollPane(results), BorderLayout.CENTER); results.append(messages.getString("clickStart") + "\n"); Panel mPanel = new Panel(); startTest = new JButton(messages.getString("start")); startTest.addActionListener(this); startTest2 = new JButton(res.getString("start")); startTest2.addActionListener(this); //mPanel.add(startTest); sTatistics = new JButton(messages.getString("statistics")); sTatistics.addActionListener(this); if (getParameter("disableStatistics") == null) { mPanel.add(sTatistics); } sTatistics.setEnabled(false); deTails = new JButton(messages.getString("moreDetails")); deTails.addActionListener(this); if (getParameter("disableDetails") == null) { mPanel.add(deTails); } deTails.setEnabled(false); mailTo = new JButton(messages.getString("reportProblem")); mailTo.addActionListener(this); if (getParameter("disableMailto") == null) { //mPanel.add(mailTo); } mailTo.setEnabled(false); options = new JButton(messages.getString("options") + "..."); options.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { options.setEnabled(false); showOptions(); options.setEnabled(true); } }); if (getParameter("disableOptions") == null) { mPanel.add(options); } advancedPanel.add(mPanel, BorderLayout.SOUTH); preferIPv6 = new JCheckBox(messages.getString("preferIPv6")); preferIPv6.setSelected(true); defaultTest = new JCheckBox(messages.getString("defaultTests")); defaultTest.setSelected(true); defaultTest.setEnabled(false); SpinnerNumberModel model = new SpinnerNumberModel(); model.setMinimum(new Integer(0)); model.setValue(new Integer(1)); numOfTests.setModel(model); numOfTests.setPreferredSize(new Dimension(60, 20)); delay = new JComboBox(); for (int i = 0; i < delays.length; i++) { delay.addItem(messages.getString(delays[i])); } delay.setSelectedIndex(0); //Autorun functionality isAutoRun = getParameter("autoRun"); if ((isAutoRun != null) && isAutoRun.equals("true")) { pub_errmsg = "Test in progress."; runtest(); } //@@@ getContentPane().add(advancedPanel,""); //try to load the calibri font for the simplified interface. //this will not cause problems even if said font is not available Font very_small_font = new Font("Calibri", Font.PLAIN, 6); Font small_font = new Font("Calibri", Font.PLAIN, 14); Font big_font = new Font("Calibri", Font.PLAIN, 18); startTest2.setFont(small_font); //simplePanel will be the new face of the applet JPanel simplePanel = new JPanel(); simplePanel.setLayout(null); simplePanel.setBackground(Color.WHITE); //simplePanel.setLayout(new BorderLayout()); simplePanel.add(simple_progressBar, BorderLayout.SOUTH); getContentPane().add(simplePanel, ""); cards.last(getContentPane()); simple_progressBar.setMaximum(10); simple_progressBar.setBounds(3, 135, 394, 23); simple_progressBar.setFont(small_font); //simple_progressBar.setIndeterminate(true); simple_progressBar.setIndeterminate(false); simple_progressBar.setValue(0); simple_progressBar.setStringPainted(true); simple_progressBar.setString(res.getString("ready_to_measure")); //position the startTest2 button explicitly //was: simplePanel.add(startTest2,BorderLayout.NORTH); simplePanel.add(startTest2, ""); startTest2.setBounds(3, 164, 195, 30); final class switcherListener implements ActionListener { public void actionPerformed(ActionEvent e) { //@@@cards.next(getContentPane()); if (popout.isVisible()) { popout.setVisible(false); } else { popout.setVisible(true); popout.pack(); } } } //"show details button" - activates the classic NDT interface JButton switchPane = new JButton(res.getString("show_details")); switchPane.setFont(small_font); switchPane.addActionListener(new switcherListener()); simplePanel.add(switchPane, ""); switchPane.setBounds(202, 164, 195, 30); //masterArea, displays the measurement characteristics JPanel masterArea = new JPanel(new GridLayout(0, 2)); //position explicitly simplePanel.add(masterArea, ""); masterArea.setBounds(1, 1, 398, 130); masterArea.setBackground(Color.WHITE); //create the 5 tags that will be placed in the masterArea JLabel dnlTag = new JLabel(res.getString("download")); JLabel uplTag = new JLabel(res.getString("upload")); JLabel rttTag = new JLabel(res.getString("ping")); JLabel lossTag = new JLabel(res.getString("loss")); JLabel jitterTag = new JLabel(res.getString("jitter")); //make the masterAre pretty dnlTag.setHorizontalAlignment(JLabel.RIGHT); uplTag.setHorizontalAlignment(JLabel.RIGHT); rttTag.setHorizontalAlignment(JLabel.RIGHT); lossTag.setHorizontalAlignment(JLabel.RIGHT); jitterTag.setHorizontalAlignment(JLabel.RIGHT); dnlTag.setFont(big_font); uplTag.setFont(big_font); rttTag.setFont(big_font); lossTag.setFont(big_font); jitterTag.setFont(big_font); dnlLbl.setHorizontalAlignment(JLabel.LEFT); uplLbl.setHorizontalAlignment(JLabel.LEFT); rttLbl.setHorizontalAlignment(JLabel.LEFT); lossLbl.setHorizontalAlignment(JLabel.LEFT); jitterLbl.setHorizontalAlignment(JLabel.LEFT); dnlLbl.setFont(big_font); uplLbl.setFont(big_font); rttLbl.setFont(big_font); lossLbl.setFont(big_font); jitterLbl.setFont(big_font); //and finally, place the labels masterArea.add(dnlTag); masterArea.add(dnlLbl); masterArea.add(uplTag); masterArea.add(uplLbl); masterArea.add(rttTag); masterArea.add(rttLbl); masterArea.add(lossTag); masterArea.add(lossLbl); masterArea.add(jitterTag); masterArea.add(jitterLbl); // determine whether to prefer IPv6 or not, this is done only once if (getParameter("disable_ipv6") != null) { preferIPv6.setSelected(false); } }
From source file:eu.cassandra.training.gui.MainGUI.java
/** * Constructor of the Training Module GUI. * //from w w w . j av a 2 s . c o m * @throws UnsupportedLookAndFeelException * @throws IllegalAccessException * @throws InstantiationException * @throws ClassNotFoundException * @throws FileNotFoundException */ public MainGUI() throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException, FileNotFoundException { setForeground(new Color(0, 204, 51)); // Enable the closing of the frame when pressing the x on the upper corner // of the window addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { Utils.cleanFiles(); System.exit(0); } }); // Cleaning temporary files from the temp folder when starting the GUI. // Utils.cleanFiles(); // Change the platforms look and feel to Nimbus LookAndFeel lnf = new javax.swing.plaf.nimbus.NimbusLookAndFeel(); UIManager.put("NimbusLookAndFeel", Color.GREEN); UIManager.setLookAndFeel(lnf); // Setting the basic attributes of the Training Module GUI setTitle("Training Module (BETA)"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 1228, 799); // Creating the menu bar and adding the menu items JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu mnNewMenu = new JMenu("File"); menuBar.add(mnNewMenu); JMenuItem mntmExit = new JMenuItem("Exit"); mntmExit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Utils.cleanFiles(); System.exit(0); } }); mnNewMenu.add(mntmExit); JMenu mnExit = new JMenu("Help"); menuBar.add(mnExit); JMenuItem mntmManual = new JMenuItem("Manual"); mnExit.add(mntmManual); JMenuItem mntmAbout = new JMenuItem("About"); mnExit.add(mntmAbout); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); // Adding the tabbed pane to the content pane final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); GroupLayout gl_contentPane = new GroupLayout(contentPane); gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING) .addComponent(tabbedPane, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 1202, Short.MAX_VALUE)); gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING) .addGroup(gl_contentPane.createSequentialGroup() .addComponent(tabbedPane, GroupLayout.PREFERRED_SIZE, 736, GroupLayout.PREFERRED_SIZE) .addContainerGap(47, Short.MAX_VALUE))); // TABS // final JPanel importTab = new JPanel(); tabbedPane.addTab("Import Data", null, importTab, null); tabbedPane.setDisplayedMnemonicIndexAt(0, 0); tabbedPane.setEnabledAt(0, true); importTab.setLayout(null); final JPanel trainingTab = new JPanel(); tabbedPane.addTab("Train Activity Models", null, trainingTab, null); tabbedPane.setDisplayedMnemonicIndexAt(1, 1); tabbedPane.setEnabledAt(1, false); trainingTab.setLayout(null); final JPanel createResponseTab = new JPanel(); tabbedPane.addTab("Create Response Models", null, createResponseTab, null); tabbedPane.setEnabledAt(2, false); createResponseTab.setLayout(null); // RESPONSE MODEL TAB // final JPanel responseParametersPanel = new JPanel(); responseParametersPanel.setLayout(null); responseParametersPanel.setBorder( new TitledBorder(null, "Response Parameters", TitledBorder.LEADING, TitledBorder.TOP, null, null)); responseParametersPanel.setBounds(6, 6, 394, 271); createResponseTab.add(responseParametersPanel); final JPanel activityModelSelectionPanel = new JPanel(); activityModelSelectionPanel.setLayout(null); activityModelSelectionPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Activity Model Selection", TitledBorder.LEADING, TitledBorder.TOP, null, null)); activityModelSelectionPanel.setBounds(6, 516, 394, 192); createResponseTab.add(activityModelSelectionPanel); final JPanel responsePanel = new JPanel(); responsePanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Activity Model Change Preview", TitledBorder.LEADING, TitledBorder.TOP, null, null)); responsePanel.setBounds(417, 6, 770, 385); createResponseTab.add(responsePanel); responsePanel.setLayout(new BorderLayout(0, 0)); final JPanel pricingPreviewPanel = new JPanel(); pricingPreviewPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Pricing Scheme Preview", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pricingPreviewPanel.setBounds(417, 438, 770, 259); createResponseTab.add(pricingPreviewPanel); pricingPreviewPanel.setLayout(new BorderLayout(0, 0)); final JPanel pricingSchemePanel = new JPanel(); pricingSchemePanel.setLayout(null); pricingSchemePanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Pricing Scheme Selection", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pricingSchemePanel.setBounds(6, 274, 394, 243); createResponseTab.add(pricingSchemePanel); // ///////////////// // RESPONSE TAB // // //////////////// // RESPONSE PARAMETERS // final JLabel lblSensitivity = new JLabel("Sensitivity"); lblSensitivity.setBounds(10, 28, 78, 16); responseParametersPanel.add(lblSensitivity); final JSlider sensitivitySlider = new JSlider(); sensitivitySlider.setPaintLabels(true); sensitivitySlider.setSnapToTicks(true); sensitivitySlider.setPaintTicks(true); sensitivitySlider.setMinorTickSpacing(10); sensitivitySlider.setMajorTickSpacing(10); sensitivitySlider.setBounds(111, 28, 214, 45); responseParametersPanel.add(sensitivitySlider); final JLabel lblAwareness = new JLabel("Awareness"); lblAwareness.setBounds(10, 79, 78, 16); responseParametersPanel.add(lblAwareness); final JSlider awarenessSlider = new JSlider(); awarenessSlider.setPaintLabels(true); awarenessSlider.setPaintTicks(true); awarenessSlider.setMajorTickSpacing(10); awarenessSlider.setMinorTickSpacing(10); awarenessSlider.setSnapToTicks(true); awarenessSlider.setBounds(111, 79, 214, 45); responseParametersPanel.add(awarenessSlider); final JLabel label_7 = new JLabel("Response Model"); label_7.setBounds(10, 153, 103, 16); responseParametersPanel.add(label_7); final JRadioButton optimalCaseRadioButton = new JRadioButton("Optimal Case Scenario"); responseModelButtonGroup.add(optimalCaseRadioButton); optimalCaseRadioButton.setBounds(111, 131, 170, 18); responseParametersPanel.add(optimalCaseRadioButton); final JRadioButton normalCaseRadioButton = new JRadioButton("Normal Case Scenario"); normalCaseRadioButton.setSelected(true); responseModelButtonGroup.add(normalCaseRadioButton); normalCaseRadioButton.setBounds(111, 152, 170, 18); responseParametersPanel.add(normalCaseRadioButton); final JRadioButton discreteCaseRadioButton = new JRadioButton("Discrete Case Scenario"); discreteCaseRadioButton.setSelected(true); responseModelButtonGroup.add(discreteCaseRadioButton); discreteCaseRadioButton.setBounds(111, 173, 170, 18); responseParametersPanel.add(discreteCaseRadioButton); final JButton previewResponseButton = new JButton("Preview Response Model"); previewResponseButton.setEnabled(false); previewResponseButton.setBounds(24, 198, 157, 28); responseParametersPanel.add(previewResponseButton); final JButton createResponseButton = new JButton("Create Response Model"); createResponseButton.setEnabled(false); createResponseButton.setBounds(191, 198, 162, 28); responseParametersPanel.add(createResponseButton); final JButton createResponseAllButton = new JButton("Create Response All"); createResponseAllButton.setEnabled(false); createResponseAllButton.setBounds(111, 232, 157, 28); responseParametersPanel.add(createResponseAllButton); // SELECT ACTIVITY MODEL // final JLabel lblSelectedActivity = new JLabel("Selected Activity"); lblSelectedActivity.setBounds(10, 21, 130, 16); activityModelSelectionPanel.add(lblSelectedActivity); JScrollPane activityListScrollPane = new JScrollPane(); activityListScrollPane.setBounds(20, 39, 355, 143); activityModelSelectionPanel.add(activityListScrollPane); final JList<String> activitySelectList = new JList<String>(); activityListScrollPane.setViewportView(activitySelectList); activitySelectList.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); final JButton commitButton = new JButton("Commit"); commitButton.setEnabled(false); commitButton.setBounds(151, 209, 89, 23); pricingSchemePanel.add(commitButton); JLabel lblBasicSchema = new JLabel("Basic Schema (Start-End-Value)"); lblBasicSchema.setBounds(10, 18, 182, 14); pricingSchemePanel.add(lblBasicSchema); JLabel lblNewSchemastart = new JLabel("New Schema (Start-End-Value)"); lblNewSchemastart.setBounds(197, 18, 177, 14); pricingSchemePanel.add(lblNewSchemastart); JScrollPane basicPricingSchemeScrollPane = new JScrollPane(); basicPricingSchemeScrollPane.setBounds(10, 43, 177, 161); pricingSchemePanel.add(basicPricingSchemeScrollPane); final JTextPane basicPricingSchemePane = new JTextPane(); basicPricingSchemeScrollPane.setViewportView(basicPricingSchemePane); basicPricingSchemePane.setText("00:00-23:59-0.05"); JScrollPane newPricingScrollPane = new JScrollPane(); newPricingScrollPane.setBounds(197, 43, 177, 161); pricingSchemePanel.add(newPricingScrollPane); final JTextPane newPricingSchemePane = new JTextPane(); newPricingScrollPane.setViewportView(newPricingSchemePane); JPanel buttonPanel = new JPanel(); buttonPanel.setBounds(682, 390, 265, 33); createResponseTab.add(buttonPanel); final JButton dailyResponseButton = new JButton("Daily Times"); dailyResponseButton.setEnabled(false); buttonPanel.add(dailyResponseButton); final JButton startResponseButton = new JButton("Start Time"); startResponseButton.setEnabled(false); buttonPanel.add(startResponseButton); final JPanel exportTab = new JPanel(); tabbedPane.addTab("Export Models", null, exportTab, null); tabbedPane.setEnabledAt(3, false); exportTab.setLayout(null); // PANELS // // DATA IMPORT TAB // final JPanel dataFilePanel = new JPanel(); dataFilePanel .setBorder(new TitledBorder(null, "Data File", TitledBorder.LEADING, TitledBorder.TOP, null, null)); dataFilePanel.setBounds(6, 6, 622, 284); importTab.add(dataFilePanel); dataFilePanel.setLayout(null); final JPanel disaggregationPanel = new JPanel(); disaggregationPanel.setLayout(null); disaggregationPanel.setBorder( new TitledBorder(null, "Disaggregation", TitledBorder.LEADING, TitledBorder.TOP, null, null)); disaggregationPanel.setBounds(629, 6, 567, 284); importTab.add(disaggregationPanel); final JPanel dataReviewPanel = new JPanel(); dataReviewPanel.setBorder( new TitledBorder(null, "Data Preview", TitledBorder.LEADING, TitledBorder.TOP, null, null)); dataReviewPanel.setBounds(6, 293, 622, 407); importTab.add(dataReviewPanel); dataReviewPanel.setLayout(new BorderLayout(0, 0)); final JPanel consumptionModelPanel = new JPanel(); consumptionModelPanel.setBounds(629, 293, 567, 407); importTab.add(consumptionModelPanel); consumptionModelPanel.setBorder( new TitledBorder(null, "Consumption Model", TitledBorder.LEADING, TitledBorder.TOP, null, null)); consumptionModelPanel.setLayout(new BorderLayout(0, 0)); // TRAINING ACTIVITY TAB // final JPanel trainingParametersPanel = new JPanel(); trainingParametersPanel.setLayout(null); trainingParametersPanel.setBorder( new TitledBorder(null, "Training Parameters", TitledBorder.LEADING, TitledBorder.TOP, null, null)); trainingParametersPanel.setBounds(6, 6, 621, 256); trainingTab.add(trainingParametersPanel); final JPanel applianceSelectionPanel = new JPanel(); applianceSelectionPanel.setLayout(null); applianceSelectionPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Appliance/Activity Selection", TitledBorder.LEADING, TitledBorder.TOP, null, null)); applianceSelectionPanel.setBounds(630, 6, 557, 256); trainingTab.add(applianceSelectionPanel); final JPanel expectedPowerPanel = new JPanel(); expectedPowerPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Expected Power Preview", TitledBorder.LEADING, TitledBorder.TOP, null, null)); expectedPowerPanel.setBounds(630, 261, 557, 447); trainingTab.add(expectedPowerPanel); expectedPowerPanel.setLayout(new BorderLayout(0, 0)); contentPane.setLayout(gl_contentPane); // EXPORT TAB // JPanel modelExportPanel = new JPanel(); modelExportPanel.setLayout(null); modelExportPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Model Export Selection", TitledBorder.LEADING, TitledBorder.TOP, null, null)); modelExportPanel.setBounds(10, 11, 596, 267); exportTab.add(modelExportPanel); final JPanel exportPreviewPanel = new JPanel(); exportPreviewPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Export Model Preview", TitledBorder.LEADING, TitledBorder.TOP, null, null)); exportPreviewPanel.setBounds(10, 310, 1187, 387); exportTab.add(exportPreviewPanel); exportPreviewPanel.setLayout(new BorderLayout(0, 0)); JPanel exportButtonsPanel = new JPanel(); exportButtonsPanel.setBounds(322, 279, 536, 33); exportTab.add(exportButtonsPanel); JPanel connectionPanel = new JPanel(); connectionPanel.setLayout(null); connectionPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Connection Properties", TitledBorder.LEADING, TitledBorder.TOP, null, null)); connectionPanel.setBounds(606, 11, 581, 267); exportTab.add(connectionPanel); // COMPONENTS // // IMPORT TAB // // DATA IMPORT // final JLabel lblSource = new JLabel("Data Source:"); lblSource.setBounds(23, 47, 71, 16); dataFilePanel.add(lblSource); final JTextField pathField = new JTextField(); pathField.setEditable(false); pathField.setBounds(99, 41, 405, 28); dataFilePanel.add(pathField); pathField.setColumns(10); final JButton dataBrowseButton = new JButton("Browse"); dataBrowseButton.setBounds(516, 41, 87, 28); dataFilePanel.add(dataBrowseButton); final JButton resetButton = new JButton("Reset"); resetButton.setBounds(516, 81, 87, 28); dataFilePanel.add(resetButton); final JLabel lblDataMeasurementsFrom = new JLabel("Data Measurements From:"); lblDataMeasurementsFrom.setBounds(23, 90, 154, 16); dataFilePanel.add(lblDataMeasurementsFrom); final JRadioButton singleApplianceRadioButton = new JRadioButton("Single Appliance"); singleApplianceRadioButton.setEnabled(false); dataMeasurementsButtonGroup.add(singleApplianceRadioButton); singleApplianceRadioButton.setBounds(242, 110, 115, 18); dataFilePanel.add(singleApplianceRadioButton); final JRadioButton installationRadioButton = new JRadioButton("Installation"); installationRadioButton.setSelected(true); installationRadioButton.setEnabled(false); dataMeasurementsButtonGroup.add(installationRadioButton); installationRadioButton.setBounds(242, 89, 115, 18); dataFilePanel.add(installationRadioButton); final JLabel labelConsumptionModel = new JLabel("Consumption Model:"); labelConsumptionModel.setBounds(23, 179, 120, 16); dataFilePanel.add(labelConsumptionModel); final JButton importDataButton = new JButton("Import Data"); importDataButton.setEnabled(false); importDataButton.setBounds(23, 237, 126, 28); dataFilePanel.add(importDataButton); final JButton disaggregateButton = new JButton("Disaggregate"); disaggregateButton.setEnabled(false); disaggregateButton.setBounds(216, 237, 147, 28); dataFilePanel.add(disaggregateButton); final JButton createEventsButton = new JButton("Create Events Dataset"); createEventsButton.setEnabled(false); createEventsButton.setBounds(422, 237, 181, 28); dataFilePanel.add(createEventsButton); final JTextField consumptionPathField = new JTextField(); consumptionPathField.setEnabled(false); consumptionPathField.setEditable(false); consumptionPathField.setColumns(10); consumptionPathField.setBounds(99, 197, 405, 28); dataFilePanel.add(consumptionPathField); final JButton consumptionBrowseButton = new JButton("Browse"); consumptionBrowseButton.setEnabled(false); consumptionBrowseButton.setBounds(516, 197, 87, 28); dataFilePanel.add(consumptionBrowseButton); JLabel lblTypeOfMeasurements = new JLabel("Type of Measurements"); lblTypeOfMeasurements.setBounds(23, 141, 154, 16); dataFilePanel.add(lblTypeOfMeasurements); final JRadioButton activePowerRadioButton = new JRadioButton("Active Power (P)"); powerButtonGroup.add(activePowerRadioButton); activePowerRadioButton.setEnabled(false); activePowerRadioButton.setBounds(242, 140, 115, 18); dataFilePanel.add(activePowerRadioButton); final JRadioButton activeAndReactivePowerRadioButton = new JRadioButton("Active and Reactive Power (P, Q)"); activeAndReactivePowerRadioButton.setSelected(true); powerButtonGroup.add(activeAndReactivePowerRadioButton); activeAndReactivePowerRadioButton.setEnabled(false); activeAndReactivePowerRadioButton.setBounds(242, 161, 262, 18); dataFilePanel.add(activeAndReactivePowerRadioButton); // ////////////////// // DISAGGREGATION // // ///////////////// final JLabel lblAppliancesDetected = new JLabel("Detected Appliances "); lblAppliancesDetected.setBounds(18, 33, 130, 16); disaggregationPanel.add(lblAppliancesDetected); JScrollPane scrollPane_2 = new JScrollPane(); scrollPane_2.setBounds(145, 31, 396, 231); disaggregationPanel.add(scrollPane_2); final JList<String> detectedApplianceList = new JList<String>(); scrollPane_2.setViewportView(detectedApplianceList); detectedApplianceList.setEnabled(false); detectedApplianceList.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); // //////////////// // TRAINING TAB // // //////////////// // TRAINING PARAMETERS // final JLabel label_1 = new JLabel("Times Per Day"); label_1.setBounds(19, 40, 103, 16); trainingParametersPanel.add(label_1); final JRadioButton timesHistogramRadioButton = new JRadioButton("Histogram"); timesHistogramRadioButton.setSelected(true); timesDailyButtonGroup.add(timesHistogramRadioButton); timesHistogramRadioButton.setBounds(160, 38, 87, 18); trainingParametersPanel.add(timesHistogramRadioButton); final JRadioButton timesNormalRadioButton = new JRadioButton("Normal Distribution"); timesNormalRadioButton.setEnabled(false); timesDailyButtonGroup.add(timesNormalRadioButton); timesNormalRadioButton.setBounds(304, 40, 137, 18); trainingParametersPanel.add(timesNormalRadioButton); JRadioButton timesGaussianRadioButton = new JRadioButton("Gaussian Mixture"); timesGaussianRadioButton.setEnabled(false); timesDailyButtonGroup.add(timesGaussianRadioButton); timesGaussianRadioButton.setBounds(478, 38, 137, 18); trainingParametersPanel.add(timesGaussianRadioButton); final JLabel label_2 = new JLabel("Start Time"); label_2.setBounds(19, 133, 103, 16); trainingParametersPanel.add(label_2); final JRadioButton startHistogramRadioButton = new JRadioButton("Histogram"); startHistogramRadioButton.setSelected(true); startTimeButtonGroup.add(startHistogramRadioButton); startHistogramRadioButton.setBounds(160, 131, 87, 18); trainingParametersPanel.add(startHistogramRadioButton); final JRadioButton startNormalRadioButton = new JRadioButton("Normal Distribution"); // startNormalRadioButton.setEnabled(false); startTimeButtonGroup.add(startNormalRadioButton); startNormalRadioButton.setBounds(304, 133, 137, 18); trainingParametersPanel.add(startNormalRadioButton); final JRadioButton startGaussianRadioButton = new JRadioButton("Gaussian Mixture"); startGaussianRadioButton.setSelected(true); startTimeButtonGroup.add(startGaussianRadioButton); startGaussianRadioButton.setBounds(478, 131, 137, 18); trainingParametersPanel.add(startGaussianRadioButton); final JLabel label_3 = new JLabel("Duration"); label_3.setBounds(19, 86, 103, 16); trainingParametersPanel.add(label_3); final JRadioButton durationHistogramRadioButton = new JRadioButton("Histogram"); durationHistogramRadioButton.setSelected(true); durationButtonGroup.add(durationHistogramRadioButton); durationHistogramRadioButton.setBounds(160, 84, 87, 18); trainingParametersPanel.add(durationHistogramRadioButton); final JRadioButton durationNormalRadioButton = new JRadioButton("Normal Distribution"); durationNormalRadioButton.setSelected(true); durationButtonGroup.add(durationNormalRadioButton); durationNormalRadioButton.setBounds(304, 86, 137, 18); trainingParametersPanel.add(durationNormalRadioButton); final JRadioButton durationGaussianRadioButton = new JRadioButton("Gaussian Mixture"); durationButtonGroup.add(durationGaussianRadioButton); durationGaussianRadioButton.setBounds(478, 84, 137, 18); trainingParametersPanel.add(durationGaussianRadioButton); final JButton trainingButton = new JButton("Train"); trainingButton.setBounds(125, 194, 115, 28); trainingParametersPanel.add(trainingButton); final JButton trainAllButton = new JButton("Train All"); trainAllButton.setBounds(366, 194, 115, 28); trainingParametersPanel.add(trainAllButton); // APPLIANCE SELECTION // final JLabel label_4 = new JLabel("Selected Appliance"); label_4.setBounds(18, 33, 130, 16); applianceSelectionPanel.add(label_4); JScrollPane scrollPane_1 = new JScrollPane(); scrollPane_1.setBounds(128, 29, 419, 216); applianceSelectionPanel.add(scrollPane_1); final JList<String> selectedApplianceList = new JList<String>(); scrollPane_1.setViewportView(selectedApplianceList); selectedApplianceList.setEnabled(false); selectedApplianceList.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); // DISTRIBUTION SELECTION // JPanel distributionSelectionPanel = new JPanel(); distributionSelectionPanel.setBounds(80, 261, 482, 33); trainingTab.add(distributionSelectionPanel); final JButton dailyTimesButton = new JButton("Daily Times"); dailyTimesButton.setEnabled(false); distributionSelectionPanel.add(dailyTimesButton); final JButton durationButton = new JButton("Duration"); durationButton.setEnabled(false); distributionSelectionPanel.add(durationButton); final JButton startTimeButton = new JButton("Start Time"); startTimeButton.setEnabled(false); distributionSelectionPanel.add(startTimeButton); final JButton startTimeBinnedButton = new JButton("Start Time Binned"); startTimeBinnedButton.setEnabled(false); distributionSelectionPanel.add(startTimeBinnedButton); final JPanel distributionPreviewPanel = new JPanel(); distributionPreviewPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Distribution Preview", TitledBorder.LEADING, TitledBorder.TOP, null, null)); distributionPreviewPanel.setBounds(6, 299, 621, 409); trainingTab.add(distributionPreviewPanel); distributionPreviewPanel.setLayout(new BorderLayout(0, 0)); // ////////////////// // EXPORT TAB /////// // ///////////////// JLabel exportModelLabel = new JLabel("Select Model"); exportModelLabel.setBounds(10, 34, 151, 16); modelExportPanel.add(exportModelLabel); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(83, 32, 503, 212); modelExportPanel.add(scrollPane); final JList<String> exportModelList = new JList<String>(); scrollPane.setViewportView(exportModelList); exportModelList.setEnabled(false); exportModelList.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); // EXPORT TAB // final JButton exportDailyButton = new JButton("Daily Times"); exportDailyButton.setEnabled(false); exportButtonsPanel.add(exportDailyButton); final JButton exportDurationButton = new JButton("Duration"); exportDurationButton.setEnabled(false); exportButtonsPanel.add(exportDurationButton); final JButton exportStartButton = new JButton("Start Time"); exportStartButton.setEnabled(false); exportButtonsPanel.add(exportStartButton); final JButton exportStartBinnedButton = new JButton("Start Time Binned"); exportStartBinnedButton.setEnabled(false); exportButtonsPanel.add(exportStartBinnedButton); final JButton exportExpectedPowerButton = new JButton("Expected Power"); exportExpectedPowerButton.setEnabled(false); exportButtonsPanel.add(exportExpectedPowerButton); JLabel usernameLabel = new JLabel("Username:"); usernameLabel.setBounds(46, 27, 71, 16); connectionPanel.add(usernameLabel); final JTextField usernameTextField; usernameTextField = new JTextField(); usernameTextField.setText("user"); usernameTextField.setColumns(10); usernameTextField.setBounds(122, 21, 405, 28); connectionPanel.add(usernameTextField); final JButton exportButton = new JButton("Export Entity"); exportButton.setEnabled(false); exportButton.setBounds(46, 178, 147, 28); connectionPanel.add(exportButton); final JButton exportAllBaseButton = new JButton("Export All Base"); exportAllBaseButton.setEnabled(false); exportAllBaseButton.setBounds(203, 178, 177, 28); connectionPanel.add(exportAllBaseButton); final JButton exportAllResponseButton = new JButton("Export All Response"); exportAllResponseButton.setEnabled(false); exportAllResponseButton.setBounds(390, 178, 181, 28); connectionPanel.add(exportAllResponseButton); JLabel passwordLabel = new JLabel("Password:"); passwordLabel.setBounds(46, 62, 71, 16); connectionPanel.add(passwordLabel); JLabel UrlLabel = new JLabel("URL:"); UrlLabel.setBounds(46, 105, 71, 16); connectionPanel.add(UrlLabel); final JTextField urlTextField; urlTextField = new JTextField(); urlTextField.setText("https://160.40.50.233:8443/cassandra/api"); urlTextField.setColumns(10); urlTextField.setBounds(122, 99, 405, 28); connectionPanel.add(urlTextField); final JButton connectButton = new JButton("Connect"); connectButton.setEnabled(false); connectButton.setBounds(217, 138, 147, 28); connectionPanel.add(connectButton); final JPasswordField passwordField; passwordField = new JPasswordField(); passwordField.setBounds(122, 60, 405, 28); connectionPanel.add(passwordField); final JTextField householdNameTextField; householdNameTextField = new JTextField(); householdNameTextField.setEnabled(false); householdNameTextField.setBounds(166, 225, 405, 31); connectionPanel.add(householdNameTextField); householdNameTextField.setColumns(10); final JLabel householdNameLabel = new JLabel("Export Household Name:"); householdNameLabel.setBounds(24, 233, 147, 14); connectionPanel.add(householdNameLabel); JButton btnOpenPlatform = new JButton("Open Platform"); btnOpenPlatform.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { Desktop.getDesktop() .browse(new URL("https://cassandra.iti.gr:8443/cassandra/app.html").toURI()); } catch (Exception e) { e.printStackTrace(); } } }); btnOpenPlatform.setBounds(401, 138, 147, 28); connectionPanel.add(btnOpenPlatform); // ////////////////// // ACTIONS /////// // ///////////////// // IMPORT TAB // // DATA IMPORT //// dataBrowseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the browse button to * input the data file on the Data File panel of the Import Data tab. * */ @Override public void actionPerformed(ActionEvent e) { // Opens the browse panel to find the data set file JFileChooser fc = new JFileChooser("./"); // Adds a filter to the type of files acceptable for selection fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setFileFilter(new MyFilter2()); int returnVal = fc.showOpenDialog(contentPane); // After choosing the file some of the options in the Data File panel // are unlocked if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); pathField.setText(file.getAbsolutePath()); importDataButton.setEnabled(true); activePowerRadioButton.setEnabled(true); activeAndReactivePowerRadioButton.setEnabled(true); installationRadioButton.setEnabled(true); singleApplianceRadioButton.setEnabled(true); } } }); consumptionBrowseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the browse button to * input the consumption model file on the Data File panel of the Import * Data tab. * */ @Override public void actionPerformed(ActionEvent e) { // Opens the browse panel to find the consumption model file JFileChooser fc = new JFileChooser("./"); // Adds a filter to the type of files acceptable for selection fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setFileFilter(new MyFilter()); int returnVal = fc.showOpenDialog(contentPane); // After choosing the file some of the options in the Data File panel // are unlocked if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); consumptionPathField.setText(file.getAbsolutePath()); createEventsButton.setEnabled(true); } } }); resetButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the reset button * on the Data File panel of the Import Data tab. All the imported and * created entities are removed and the Training Module goes back to its * initial state. * */ @Override public void actionPerformed(ActionEvent e) { // Cleaning the Import Data tab components pathField.setText(""); consumptionPathField.setText(""); importDataButton.setEnabled(false); disaggregateButton.setEnabled(false); createEventsButton.setEnabled(false); installation = new Installation(); dataBrowseButton.setEnabled(true); consumptionBrowseButton.setEnabled(false); installationRadioButton.setEnabled(false); installationRadioButton.setSelected(true); singleApplianceRadioButton.setEnabled(false); activePowerRadioButton.setEnabled(false); activeAndReactivePowerRadioButton.setEnabled(false); activeAndReactivePowerRadioButton.setSelected(true); dataReviewPanel.removeAll(); dataReviewPanel.updateUI(); consumptionModelPanel.removeAll(); consumptionModelPanel.updateUI(); detectedApplianceList.setSelectedIndex(-1); detectedAppliances.clear(); detectedApplianceList.setListData(new String[0]); detectedApplianceList.repaint(); // Cleaning the Training Activity Models tab components distributionPreviewPanel.removeAll(); distributionPreviewPanel.updateUI(); expectedPowerPanel.removeAll(); expectedPowerPanel.updateUI(); selectedApplianceList.setSelectedIndex(-1); selectedAppliances.clear(); selectedApplianceList.setListData(new String[0]); selectedApplianceList.repaint(); timesHistogramRadioButton.setSelected(true); durationNormalRadioButton.setSelected(true); startGaussianRadioButton.setSelected(true); // Cleaning the Create Response Models tab components sensitivitySlider.setValue(50); awarenessSlider.setValue(50); normalCaseRadioButton.setSelected(true); previewResponseButton.setEnabled(false); createResponseButton.setEnabled(false); createResponseAllButton.setEnabled(false); pricingPreviewPanel.removeAll(); pricingPreviewPanel.updateUI(); responsePanel.removeAll(); responsePanel.updateUI(); activitySelectList.setSelectedIndex(-1); activityModels.clear(); activitySelectList.setListData(new String[0]); activitySelectList.repaint(); basicPricingSchemePane.setText("00:00-23:59-0.05"); newPricingSchemePane.setText(""); commitButton.setEnabled(false); dailyResponseButton.setEnabled(false); startResponseButton.setEnabled(false); // Cleaning the Export Models tab components exportModelList.setSelectedIndex(-1); exportModels.clear(); exportModelList.setListData(new String[0]); exportModelList.repaint(); exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); exportDailyButton.setEnabled(false); exportDurationButton.setEnabled(false); exportStartButton.setEnabled(false); exportStartBinnedButton.setEnabled(false); exportExpectedPowerButton.setEnabled(false); exportButton.setEnabled(false); exportAllBaseButton.setEnabled(false); exportAllResponseButton.setEnabled(false); householdNameTextField.setEnabled(false); // Disabling the necessary tabs tabbedPane.setEnabledAt(1, false); tabbedPane.setEnabledAt(2, false); tabbedPane.setEnabledAt(3, false); // Clearing the arrayList in need tempAppliances.clear(); tempActivities.clear(); // Removing temporary files Utils.cleanFiles(); trained = false; } }); singleApplianceRadioButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Single Appliance * radio button on the Data File panel of the Import Data tab. */ @Override public void actionPerformed(ActionEvent e) { consumptionPathField.setEnabled(false); consumptionBrowseButton.setEnabled(false); consumptionPathField.setText(""); } }); installationRadioButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Installation * radio button on the Data File panel of the Import Data tab. */ @Override public void actionPerformed(ActionEvent e) { consumptionPathField.setEnabled(false); consumptionBrowseButton.setEnabled(false); consumptionPathField.setText(""); } }); importDataButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Import Data * button on the Data File panel of the Import Data tab. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // Change the state of some components installationRadioButton.setEnabled(false); singleApplianceRadioButton.setEnabled(false); importDataButton.setEnabled(false); dataBrowseButton.setEnabled(false); activePowerRadioButton.setEnabled(false); activeAndReactivePowerRadioButton.setEnabled(false); // Check if both active and reactive activeOnly data set are available boolean power = activePowerRadioButton.isSelected(); int parse = -1; // Parsing the measurements file try { parse = Utils.parseMeasurementsFile(pathField.getText(), power); } catch (IOException e2) { e2.printStackTrace(); } // If everything is OK if (parse == -1) { try { // Creating new installation installation = new Installation(pathField.getText(), power); } catch (IOException e2) { e2.printStackTrace(); } // Show the measurements in the preview chart ChartPanel chartPanel = null; try { chartPanel = installation.measurementsChart(); } catch (IOException e1) { e1.printStackTrace(); } dataReviewPanel.add(chartPanel, BorderLayout.CENTER); dataReviewPanel.validate(); disaggregateButton.setEnabled(false); createEventsButton.setEnabled(false); // Enable the appropriate buttons given source of measurements if (installationRadioButton.isSelected()) { disaggregateButton.setEnabled(true); } else if (singleApplianceRadioButton.isSelected()) { consumptionPathField.setEnabled(true); consumptionBrowseButton.setEnabled(true); } // Add installation to the export models list exportModels.addElement(installation.toString()); exportModels.addElement(installation.getPerson().getName()); householdNameTextField.setText(installation.getName()); // Enable Export Models tab exportModelList.setEnabled(true); exportModelList.setModel(exportModels); tabbedPane.setEnabledAt(3, true); } // In case of an error during the measurement parsing show the line of // error and reset settings. else { JFrame error = new JFrame(); JOptionPane.showMessageDialog(error, "Parsing measurements file failed. The problem seems to be in line " + parse + ".Check the selected buttons and the file provided and try again.", "Inane error", JOptionPane.ERROR_MESSAGE); resetButton.doClick(); } } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); disaggregateButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Disaggregate * button on the Data File panel of the Import Data tab in order to * automatically analyse the data set and extract the appliances and * activities within. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // Get auxiliary files containing appliances and activities which are // the output of the disaggregation process. String filename = pathField.getText(); File file = new File(filename); String folder = file.getParent() + "/"; String fileNameWithExtension = file.getName(); String fileName = file.getName().substring(0, file.getName().length() - 4); filename = pathField.getText().substring(0, pathField.getText().length() - 4); File appliancesFile = new File(Constants.resultFolder + fileName + "ApplianceList.csv"); File activitiesFile = new File(Constants.resultFolder + fileName + "ActivityList.csv"); if ((Constants.USE_FILES == false) || (!appliancesFile.exists() && !activitiesFile.exists())) { try { System.out.println("IN!!!"); Disaggregate dis = new Disaggregate(folder, fileNameWithExtension); appliancesFile = new File(Constants.resultFolder + fileName + "ApplianceList.csv"); activitiesFile = new File(Constants.resultFolder + fileName + "ActivityList.csv"); } catch (Exception e2) { System.out.println("Missing File"); e2.printStackTrace(); } } // If these exist, disaggregation was successful and the procedure can // continue if (appliancesFile.exists() && activitiesFile.exists()) { // Read appliance file and start appliance parsing Scanner input = null; try { input = new Scanner(appliancesFile); } catch (FileNotFoundException e1) { e1.printStackTrace(); } String nextLine; String[] line; while (input.hasNext()) { nextLine = input.nextLine(); line = nextLine.split(","); String name = line[1] + " " + line[0]; // String activity = line[1]; String activity = name; String[] temp = line[0].split(" "); String type = ""; if (temp.length == 1) type = temp[0]; else { for (int i = 0; i < temp.length - 1; i++) type += temp[i] + " "; type = type.trim(); } boolean refFlag = activity.contains("Refrigeration"); boolean wmFlag = name.contains("Washing"); double p = 0, q = 0; int distance = 0, duration = 0; if (refFlag) { p = Double.parseDouble(line[2]); q = Double.parseDouble(line[3]); duration = Integer.parseInt(line[4]); distance = Integer.parseInt(line[5]); // For each appliance found in the file, an temporary Appliance // Entity is created. tempAppliances.add(new ApplianceTemp(name, installation.getName(), type, activity, p, q, duration, distance)); } else if (wmFlag) { double[] pValues = new double[line.length / 2 - 1]; double[] qValues = new double[line.length / 2 - 1]; // For each appliance found in the file, an temporary Appliance // Entity is created. for (int i = 0; i < pValues.length; i++) { pValues[i] = Double.parseDouble(line[2 + 2 * i]); qValues[i] = Double.parseDouble(line[3 + 2 * i]); } tempAppliances.add(new ApplianceTemp(name, installation.getName(), type, activity, pValues, qValues)); } else { p = Double.parseDouble(line[2]); q = Double.parseDouble(line[3]); // For each appliance found in the file, an temporary Appliance // Entity is created. tempAppliances .add(new ApplianceTemp(name, installation.getName(), type, activity, p, q)); } } System.out.println("Appliances:" + tempAppliances.size()); input.close(); // Read activity file and start activity parsing try { input = new Scanner(activitiesFile); } catch (FileNotFoundException e1) { System.out.println("Problem with activity file."); e1.printStackTrace(); } while (input.hasNext()) { nextLine = input.nextLine(); line = nextLine.split(","); // System.out.println(Arrays.toString(line)); // String name = line[0]; // String activity = line[1]; String activity = line[1] + " " + line[0]; String type = line[1]; int start = Integer.parseInt(line[2]); int end = Integer.parseInt(line[3]); // Search for existing activity int activityIndex = findActivity(activity); // if not found, create a new one if (activityIndex == -1) { // System.out.println("In!"); ActivityTemp newActivity = new ActivityTemp(activity, type); newActivity.addEvent(start, end); tempActivities.add(newActivity); // System.out.println(tempActivities.toString()); } // else add data to the found activity else tempActivities.get(activityIndex).addEvent(start, end); } // This is hard copied for now ArrayList<ActivityTemp> activities = findAllActivity("Refrigeration"); for (ActivityTemp activityTemp : activities) { tempActivities.remove(activityTemp); System.out.println("Refrigeration Removed"); } int index = findActivity("Standby"); if (index != -1) { tempActivities.remove(index); System.out.println("Standby Consumption Removed"); } // TODO Add these lines in case we want to remove activities with // small sampling number // System.out.println(tempActivities.size()); // for (int i = tempActivities.size() - 1; i >= 0; i--) // if (tempActivities.get(i).getEvents().size() < threshold) // tempActivities.remove(i); // Create an event file for each activity, in order to be able to // use // it for training the behaviour models if asked from the user for (int i = 0; i < tempActivities.size(); i++) { // tempActivities.get(i).status(); try { tempActivities.get(i).createEventFile(); } catch (IOException e1) { System.out.println("Problem with creating events file."); e1.printStackTrace(); } } input.close(); // Add each found appliance (after converting temporary appliance to // normal appliance) in the installation Entity, to the detected // appliance and export models list for (ApplianceTemp temp : tempAppliances) { Appliance tempAppliance = temp.toAppliance(); installation.addAppliance(tempAppliance); detectedAppliances.addElement(tempAppliance.toString()); exportModels.addElement(tempAppliance.toString()); } // Add appliances corresponding to each activity, remove activities // without appliances and add activities to the selected activities // list. for (int i = tempActivities.size() - 1; i >= 0; i--) { tempActivities.get(i).setAppliances(findAppliances(tempActivities.get(i))); if (tempActivities.get(i).getAppliances().size() == 0) { tempActivities.remove(i); } else selectedAppliances.addElement(tempActivities.get(i).toString()); } } // In case of an error. else { int temp = 8 + ((int) (Math.random() * 2)); for (int i = 0; i < temp; i++) { String name = "Appliance " + i; String powerModel = ""; String reactiveModel = ""; int tempIndex = i % 5; switch (tempIndex) { case 0: powerModel = "{\"n\":1,\"params\":[{\"n\":1,\"values\":[{\"p\":1900,\"d\":1,\"s\":0}]},{\"n\":0,\"values\":[{\"p\":300,\"d\":1,\"s\":0}]}]}"; reactiveModel = "{\"n\":1,\"params\":[{\"n\":1,\"values\":[{\"q\":-40,\"d\":1,\"s\":0}]},{\"n\":0,\"values\":[{\"q\":-10,\"d\":1,\"s\":0}]}]}"; break; case 1: powerModel = "{ \"n\" : 0, \"params\" : [{ \"n\" : 1, \"values\" : [ {\"p\" : 140.0, \"d\" : 20, \"s\": 0.0}]}]}"; reactiveModel = "{ \"n\" : 0, \"params\" : [{ \"n\" : 1, \"values\" : [ {\"q\" : 120.0, \"d\" : 20, \"s\": 0.0}]}]}"; break; case 2: powerModel = "{ \"n\" : 0, \"params\" : [{ \"n\" : 1, \"values\" : [ {\"p\" : 95.0, \"d\" : 20, \"s\": 0.0}, {\"p\" :80.0, \"d\" : 18, \"s\": 0.0}, {\"p\" : 0.0, \"d\" : 73, \"s\": 0.0}]}]}]}"; reactiveModel = "{ \"n\" : 0, \"params\" : [{ \"n\" : 1, \"values\" : [ {\"q\" : 0.0, \"d\" : 20, \"s\": 0.0}, {\"q\" : 0.0, \"d\" : 18, \"s\": 0.0}, {\"q\" : 0.0, \"d\" : 73, \"s\": 0.0}]}]}]}"; break; case 3: powerModel = "{ \"n\" : 0, \"params\" : [{ \"n\" : 1, \"values\" : [ {\"p\" : 30.0, \"d\" : 20, \"s\": 0.0}]}]}"; reactiveModel = "{ \"n\" : 0, \"params\" : [{ \"n\" : 1, \"values\" : [ {\"q\" : -5.0, \"d\" : 20, \"s\": 0.0}]}]}"; break; case 4: powerModel = "{\"n\":1,\"params\":[{\"n\":1,\"values\":[{\"p\":150,\"d\":25,\"s\":0},{\"p\":2000,\"d\":13,\"s\":0},{\"p\":100,\"d\":62,\"s\":0}]}]}"; reactiveModel = "{\"n\":1,\"params\":[{\"n\":1,\"values\":[{\"q\":400,\"d\":25,\"s\":0},{\"q\":200,\"d\":13,\"s\":0},{\"q\":300,\"d\":62,\"s\":0}]}]}"; break; } Appliance tempAppliance = new Appliance(name, installation.getName(), powerModel, reactiveModel, "Demo/eventsAll" + tempIndex + ".csv"); installation.addAppliance(tempAppliance); detectedAppliances.addElement(tempAppliance.toString()); selectedAppliances.addElement(tempAppliance.toString()); exportModels.addElement(tempAppliance.toString()); } } // Enable all appliance/activity lists detectedApplianceList.setEnabled(true); detectedApplianceList.setModel(detectedAppliances); detectedApplianceList.setSelectedIndex(0); tabbedPane.setEnabledAt(1, true); selectedApplianceList.setEnabled(true); selectedApplianceList.setModel(selectedAppliances); // exportModelList.setEnabled(true); // exportModelList.setModel(exportModels); // tabbedPane.setEnabledAt(3, true); // Disable unnecessary buttons. disaggregateButton.setEnabled(false); createEventsButton.setEnabled(false); } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); createEventsButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Create Events * button on the Data File panel of the Import Data tab. This button is * used when there is a single appliance with an known consumption model * so that the events can be extracted automatically from the data set. * Used for presentation purposes only since is depricated by the * disaggregation function. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // Parse the consumption model file File file = new File(consumptionPathField.getText()); String temp = file.getName(); temp = temp.replace(".", " "); String name = temp.split(" ")[0]; Appliance appliance = null; try { int rand = (int) (Math.random() * 5); appliance = new Appliance(name, consumptionPathField.getText(), consumptionPathField.getText(), "Demo/eventsAll" + rand + ".csv", installation, activePowerRadioButton.isSelected()); } catch (IOException e1) { e1.printStackTrace(); } // Add appliance to the installation entity installation.addAppliance(appliance); // Enable all appliance/activity lists detectedAppliances.addElement(appliance.toString()); selectedAppliances.addElement(appliance.toString()); exportModels.addElement(appliance.toString()); detectedApplianceList.setEnabled(true); detectedApplianceList.setModel(detectedAppliances); detectedApplianceList.setSelectedIndex(0); tabbedPane.setEnabledAt(1, true); selectedApplianceList.setEnabled(true); selectedApplianceList.setModel(selectedAppliances); // exportModelList.setEnabled(true); // exportModelList.setModel(exportModels); // tabbedPane.setEnabledAt(3, true); // Disable unnecessary buttons. disaggregateButton.setEnabled(false); createEventsButton.setEnabled(false); } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); // APPLIANCE DETECTION // detectedApplianceList.addListSelectionListener(new ListSelectionListener() { /** * This function is called when the user selects an appliance from the * list of Detected Appliances on the Disaggregation panel of the Import * Data tab. Then the corresponding consumption model is presented in the * Consumption Model Preview panel. */ @Override public void valueChanged(ListSelectionEvent e) { consumptionModelPanel.removeAll(); consumptionModelPanel.updateUI(); if (detectedAppliances.size() >= 1) { String selection = detectedApplianceList.getSelectedValue(); Appliance current = installation.findAppliance(selection); ChartPanel chartPanel = current.consumptionGraph(); consumptionModelPanel.add(chartPanel, BorderLayout.CENTER); consumptionModelPanel.validate(); } } }); // // TRAINING TAB // trainingTab.addComponentListener(new ComponentAdapter() { @Override public void componentShown(ComponentEvent arg0) { selectedApplianceList.setSelectedIndex(0); } }); trainingButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Train button on * the Training Parameters panel of the Train Activity Models tab. It * contains the procedure needed to create an activity model based on the * event set of the appliance or activity. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); responsePanel.removeAll(); responsePanel.validate(); pricingPreviewPanel.removeAll(); pricingPreviewPanel.validate(); previewResponseButton.setEnabled(false); createResponseButton.setEnabled(false); createResponseAllButton.setEnabled(false); dailyResponseButton.setEnabled(false); startResponseButton.setEnabled(false); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // Searching for existing activity or appliance. String selection = selectedApplianceList.getSelectedValue(); ActivityTemp activity = null; if (tempActivities.size() > 0) activity = tempActivities.get(findActivity(selection)); Appliance current = installation.findAppliance(selection); String startTime, duration, dailyTimes; // Check for the selected distribution methods for training. if (timesHistogramRadioButton.isSelected()) dailyTimes = "Histogram"; else if (timesNormalRadioButton.isSelected()) dailyTimes = "Normal"; else dailyTimes = "GMM"; if (durationHistogramRadioButton.isSelected()) duration = "Histogram"; else if (durationNormalRadioButton.isSelected()) duration = "Normal"; else duration = "GMM"; if (startHistogramRadioButton.isSelected()) startTime = "Histogram"; else if (startNormalRadioButton.isSelected()) startTime = "Normal"; else startTime = "GMM"; String[] distributions = { dailyTimes, duration, startTime, "Histogram" }; // If the selected object from the list is an appliance the training // procedure for the appliance begins. if (activity == null) { try { installation.getPerson().train(current, distributions); } catch (IOException e1) { e1.printStackTrace(); } } // If the selected object from the list is an activity the training // procedure for the activity begins. else { try { installation.getPerson().train(activity, distributions); } catch (IOException e1) { e1.printStackTrace(); } } // System.out.println("Training OK!"); distributionPreviewPanel.removeAll(); distributionPreviewPanel.updateUI(); expectedPowerPanel.removeAll(); expectedPowerPanel.updateUI(); // Show the distribution created on the Distribution Preview Panel ActivityModel activityModel = installation.getPerson().findActivity(selection, true); if (activityModel == null) activityModel = installation.getPerson().findActivity(current); ChartPanel chartPanel = activityModel.createDailyTimesDistributionChart(); distributionPreviewPanel.add(chartPanel, BorderLayout.CENTER); distributionPreviewPanel.validate(); chartPanel = activityModel.createExpectedPowerChart(); expectedPowerPanel.add(chartPanel, BorderLayout.CENTER); expectedPowerPanel.validate(); // Add the Activity model to the list of trained Activity models of // the Create Response Models tab int size = activitySelectList.getModel().getSize(); if (size > 0) { activityModels = (DefaultListModel<String>) activitySelectList.getModel(); if (activityModels.contains(activityModel.getName()) == false) activityModels.addElement(activityModel.getName()); } else { activityModels = new DefaultListModel<String>(); activityModels.addElement(activityModel.getName()); activitySelectList.setEnabled(true); } activitySelectList.setModel(activityModels); // Add the trained model to the export list also. size = exportModelList.getModel().getSize(); if (size > 0) { exportModels = (DefaultListModel<String>) exportModelList.getModel(); if (exportModels.contains(activityModel.getName()) == false) exportModels.addElement(activityModel.getName()); } else { exportModels = new DefaultListModel<String>(); exportModels.addElement(activityModel.getName()); exportModelList.setEnabled(true); } // Enable some buttons necessary to show the results. dailyTimesButton.setEnabled(true); durationButton.setEnabled(true); startTimeButton.setEnabled(true); startTimeBinnedButton.setEnabled(true); exportModelList.setModel(exportModels); exportDailyButton.setEnabled(true); exportDurationButton.setEnabled(true); exportStartButton.setEnabled(true); exportStartBinnedButton.setEnabled(true); tabbedPane.setEnabledAt(2, true); } finally { root.setCursor(Cursor.getDefaultCursor()); trained = true; } } }); trainAllButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Train All button on * the Training Parameters panel of the Train Activity Models tab. It * is iterating the aforementioned training procedure to each of the * objects on the list. */ @Override public void actionPerformed(ActionEvent e) { responsePanel.removeAll(); responsePanel.validate(); pricingPreviewPanel.removeAll(); pricingPreviewPanel.validate(); previewResponseButton.setEnabled(false); createResponseButton.setEnabled(false); createResponseAllButton.setEnabled(false); dailyResponseButton.setEnabled(false); startResponseButton.setEnabled(false); for (int i = 0; i < selectedApplianceList.getModel().getSize(); i++) { selectedApplianceList.setSelectedIndex(i); trainingButton.doClick(); } } }); dailyTimesButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Daily Times button on * the Distribution Preview panel of the Train Activity Models tab. It * shows the Daily Times Distribution for the selected object from the * list if available. */ @Override public void actionPerformed(ActionEvent arg0) { distributionPreviewPanel.removeAll(); distributionPreviewPanel.updateUI(); String selection = selectedApplianceList.getSelectedValue(); Appliance current = installation.findAppliance(selection); ActivityModel activityModel = installation.getPerson().findActivity(selection, true); if (activityModel == null) activityModel = installation.getPerson().findActivity(current); ChartPanel chartPanel = activityModel.createDailyTimesDistributionChart(); distributionPreviewPanel.add(chartPanel, BorderLayout.CENTER); distributionPreviewPanel.validate(); } }); startTimeBinnedButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Start Time Binned * button on the Distribution Preview panel of the Train Activity * Models tab. It shows the Start Time Binned Distribution for the * selected object from the list if available. */ @Override public void actionPerformed(ActionEvent arg0) { distributionPreviewPanel.removeAll(); distributionPreviewPanel.updateUI(); String selection = selectedApplianceList.getSelectedValue(); Appliance current = installation.findAppliance(selection); ActivityModel activityModel = installation.getPerson().findActivity(selection, true); if (activityModel == null) activityModel = installation.getPerson().findActivity(current); ChartPanel chartPanel = activityModel.createStartTimeBinnedDistributionChart(); distributionPreviewPanel.add(chartPanel, BorderLayout.CENTER); distributionPreviewPanel.validate(); } }); startTimeButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Start Time * button on the Distribution Preview panel of the Train Activity * Models tab. It shows the Start Time Distribution for the selected * object from the list if available. */ @Override public void actionPerformed(ActionEvent arg0) { distributionPreviewPanel.removeAll(); distributionPreviewPanel.updateUI(); String selection = selectedApplianceList.getSelectedValue(); Appliance current = installation.findAppliance(selection); ActivityModel activityModel = installation.getPerson().findActivity(selection, true); if (activityModel == null) activityModel = installation.getPerson().findActivity(current); ChartPanel chartPanel = activityModel.createStartTimeDistributionChart(); distributionPreviewPanel.add(chartPanel, BorderLayout.CENTER); distributionPreviewPanel.validate(); } }); durationButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Duration * button on the Distribution Preview panel of the Train Activity * Models tab. It shows the Duration Distribution for the selected * object from the list if available. */ @Override public void actionPerformed(ActionEvent arg0) { distributionPreviewPanel.removeAll(); distributionPreviewPanel.updateUI(); String selection = selectedApplianceList.getSelectedValue(); Appliance current = installation.findAppliance(selection); ActivityModel activityModel = installation.getPerson().findActivity(selection, true); if (activityModel == null) activityModel = installation.getPerson().findActivity(current); ChartPanel chartPanel = activityModel.createDurationDistributionChart(); distributionPreviewPanel.add(chartPanel, BorderLayout.CENTER); distributionPreviewPanel.validate(); } }); selectedApplianceList.addListSelectionListener(new ListSelectionListener() { /** * This function is called when the user selects an appliance or activity * from the list of Selected Appliances on the Appliance / Activity * Selection panel of the Train Activity Models tab. Then an example * corresponding consumption model is presented in the Consumption Model * Preview panel. */ @Override public void valueChanged(ListSelectionEvent arg0) { ChartPanel chartPanel = null, chartPanel2 = null, chartPanel3 = null; expectedPowerPanel.removeAll(); expectedPowerPanel.updateUI(); distributionPreviewPanel.removeAll(); distributionPreviewPanel.updateUI(); // If there are any appliances / activities on the list if (selectedAppliances.size() >= 1) { // Find the corresponding appliance / activity and show its // consumption model String selection = selectedApplianceList.getSelectedValue(); Appliance currentAppliance = installation.findAppliance(selection); ActivityModel activityModel = installation.getPerson().findActivity(selection, true); // If there is also an Activity model trained, show the corresponding // distribution charts on the Distribution Preview panel if (currentAppliance != null) activityModel = installation.getPerson().findActivity(currentAppliance); if (activityModel == null) activityModel = installation.getPerson().findActivity(selection, true); if (activityModel != null) { dailyTimesButton.setEnabled(true); durationButton.setEnabled(true); startTimeButton.setEnabled(true); startTimeBinnedButton.setEnabled(true); chartPanel2 = activityModel.createDailyTimesDistributionChart(); distributionPreviewPanel.add(chartPanel2, BorderLayout.CENTER); distributionPreviewPanel.validate(); distributionPreviewPanel.updateUI(); chartPanel3 = activityModel.createExpectedPowerChart(); expectedPowerPanel.add(chartPanel3, BorderLayout.CENTER); expectedPowerPanel.validate(); expectedPowerPanel.updateUI(); } else { dailyTimesButton.setEnabled(false); durationButton.setEnabled(false); startTimeButton.setEnabled(false); startTimeBinnedButton.setEnabled(false); } } } }); // RESPONSE TAB // createResponseTab.addComponentListener(new ComponentAdapter() { @Override public void componentHidden(ComponentEvent arg0) { activitySelectList.setSelectedIndex(0); } @Override public void componentShown(ComponentEvent arg0) { activitySelectList.setSelectedIndex(0); } }); previewResponseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Preview Response * button on the Response Parameters panel of the Create Response Models * tab. This button is enabled after selecting activity model, response * type and pricing for testing and presents a preview of the response * model that may be extracted. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); responsePanel.removeAll(); // Find the selected activity ActivityModel activity = installation.getPerson() .findActivity(activitySelectList.getSelectedValue(), false); int response = -1; // Check for the selected response type if (optimalCaseRadioButton.isSelected()) response = 0; else if (normalCaseRadioButton.isSelected()) response = 1; else response = 2; // Parse the pricing schemes double[] basicScheme = Utils.parseScheme(basicPricingSchemePane.getText()); double[] newScheme = Utils.parseScheme(newPricingSchemePane.getText()); float awareness = (float) (awarenessSlider.getValue()) / 100; float sensitivity = (float) (sensitivitySlider.getValue()) / 100; System.out.println("Awareness: " + awareness + " Sensitivity: " + sensitivity); // Create a preview chart of the response model ChartPanel chartPanel = installation.getPerson().previewResponse(activity, response, basicScheme, newScheme, awareness, sensitivity); responsePanel.add(chartPanel, BorderLayout.CENTER); responsePanel.validate(); createResponseButton.setEnabled(true); createResponseAllButton.setEnabled(true); dailyResponseButton.setEnabled(true); startResponseButton.setEnabled(true); } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); createResponseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Create Response Model * button on the Response Parameters panel of the Create Response Models * tab. This button is enabled after preview results of the selected * activity model, response type and pricing for testing and creates the * response model for the user. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); int responseType = -1; String responseString = ""; // Check for the selected response type if (optimalCaseRadioButton.isSelected()) { responseType = 0; responseString = "Optimal"; } else if (normalCaseRadioButton.isSelected()) { responseType = 1; responseString = "Normal"; } else if (discreteCaseRadioButton.isSelected()) { responseType = 2; responseString = "Discrete"; } // Parse the pricing schemes double[] basicScheme = Utils.parseScheme(basicPricingSchemePane.getText()); double[] newScheme = Utils.parseScheme(newPricingSchemePane.getText()); // Create the response model ActivityModel activity = installation.getPerson() .findActivity(activitySelectList.getSelectedValue(), false); String response = ""; float awareness = (float) (awarenessSlider.getValue()) / 100; float sensitivity = (float) (sensitivitySlider.getValue()) / 100; System.out.println("Awareness: " + awareness + " Sensitivity: " + sensitivity); try { response = installation.getPerson().createResponse(activity, responseType, basicScheme, newScheme, awareness, sensitivity); } catch (IOException exc) { exc.printStackTrace(); } // Add the response model extracted to the export model list. int size = exportModelList.getModel().getSize(); // System.out.println(size); if (size > 0) { exportModels = (DefaultListModel<String>) exportModelList.getModel(); String response2 = "", response3 = ""; if (responseString.equalsIgnoreCase("Optimal")) { response2 = response.replace(responseString, "Normal"); response3 = response.replace(responseString, "Discrete"); } else if (responseString.equalsIgnoreCase("Normal")) { response2 = response.replace(responseString, "Optimal"); response3 = response.replace(responseString, "Discrete"); } else { response2 = response.replace(responseString, "Optimal"); response3 = response.replace(responseString, "Normal"); } if (exportModels.contains(response2)) exportModels.removeElement(response2); if (exportModels.contains(response3)) exportModels.removeElement(response3); if (exportModels.contains(response) == false) exportModels.addElement(response); } else { exportModels = new DefaultListModel<String>(); exportModels.addElement(response); exportModelList.setEnabled(true); } exportModelList.setModel(exportModels); if (manyFlag == false) { JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The response model " + response + " was created successfully", "Response Model Created", JOptionPane.INFORMATION_MESSAGE); } } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); createResponseAllButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Create Response All * button on the Response Parameters panel of the Create Response Models * tab. This is achieved by iterating the procedure above for all the * available activity models in the list. */ @Override public void actionPerformed(ActionEvent arg0) { manyFlag = true; for (int i = 0; i < activitySelectList.getModel().getSize(); i++) { activitySelectList.setSelectedIndex(i); createResponseButton.doClick(); } JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The response models were created successfully", "Response Models Created", JOptionPane.INFORMATION_MESSAGE); manyFlag = false; } }); newPricingSchemePane.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent arg0) { commitButton.setEnabled(true); } }); basicPricingSchemePane.addCaretListener(new CaretListener() { @Override public void caretUpdate(CaretEvent arg0) { commitButton.setEnabled(true); } }); commitButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Commit button on the * Pricing Scheme panel of the Create Response Models tab. This button is * enabled after adding the two pricing schemes that are prerequisites for * the creation of a response model. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); boolean basicScheme = false; boolean newScheme = false; int parseBasic = 0; int parseNew = 0; pricingPreviewPanel.removeAll(); // Check if both pricing schemes are entered if (basicPricingSchemePane.getText().equalsIgnoreCase("") == false) basicScheme = true; if (newPricingSchemePane.getText().equalsIgnoreCase("") == false) newScheme = true; // Parse the pricing schemes for errors if (basicScheme) parseBasic = Utils.parsePricingScheme(basicPricingSchemePane.getText()); if (newScheme) parseNew = Utils.parsePricingScheme(newPricingSchemePane.getText()); // If errors are found then present the line the error may be at if (parseBasic != -1) { JFrame error = new JFrame(); JOptionPane.showMessageDialog(error, "Basic Pricing Scheme is not defined correctly. Please check your input in line " + parseBasic + " and try again.", "Inane error", JOptionPane.ERROR_MESSAGE); } else if (parseNew != -1) { JFrame error = new JFrame(); JOptionPane.showMessageDialog(error, "New Pricing Scheme is not defined correctly. Please check your input in line " + parseNew + " and try again.", "Inane error", JOptionPane.ERROR_MESSAGE); } // If no errors are found make a preview chart of the two pricing // schemes else { if (basicScheme && newScheme) { ChartPanel chartPanel = ChartUtils.parsePricingScheme(basicPricingSchemePane.getText(), newPricingSchemePane.getText()); pricingPreviewPanel.add(chartPanel, BorderLayout.CENTER); pricingPreviewPanel.validate(); previewResponseButton.setEnabled(true); } else { JFrame error = new JFrame(); JOptionPane.showMessageDialog(error, "You have not defined both pricing schemes.Please check your input and try again.", "Inane error", JOptionPane.ERROR_MESSAGE); previewResponseButton.setEnabled(false); } } responsePanel.removeAll(); responsePanel.validate(); createResponseButton.setEnabled(false); createResponseAllButton.setEnabled(false); dailyResponseButton.setEnabled(false); startResponseButton.setEnabled(false); } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); startResponseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the start time button on * the Preview Response panel of the Create Response Models tab. This * button is enabled after the user has pressed the Response Preview * button in order to see the results of his pricing scheme on a activity * model. It shows the changes in the start time distribution. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); responsePanel.removeAll(); // Find the selected activity ActivityModel activity = installation.getPerson() .findActivity(activitySelectList.getSelectedValue(), false); int response = -1; // Check for the selected response type if (optimalCaseRadioButton.isSelected()) response = 0; else if (normalCaseRadioButton.isSelected()) response = 1; else response = 2; // Parse the pricing schemes double[] basicScheme = Utils.parseScheme(basicPricingSchemePane.getText()); double[] newScheme = Utils.parseScheme(newPricingSchemePane.getText()); float awareness = (float) (awarenessSlider.getValue()) / 100; float sensitivity = (float) (sensitivitySlider.getValue()) / 100; System.out.println("Awareness: " + awareness + " Sensitivity: " + sensitivity); // Create a preview chart of the response model ChartPanel chartPanel = installation.getPerson().previewResponse(activity, response, basicScheme, newScheme, awareness, sensitivity); responsePanel.add(chartPanel, BorderLayout.CENTER); responsePanel.validate(); createResponseButton.setEnabled(true); createResponseAllButton.setEnabled(true); dailyResponseButton.setEnabled(true); startResponseButton.setEnabled(true); } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); dailyResponseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the start time button on * the Preview Response panel of the Create Response Models tab. This * button is enabled after the user has pressed the Response Preview * button in order to see the results of his pricing scheme on a activity * model. It shows the changes in the daily times distribution. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); responsePanel.removeAll(); // Find the selected activity ActivityModel activity = installation.getPerson() .findActivity(activitySelectList.getSelectedValue(), false); // Parse the pricing schemes double[] basicScheme = Utils.parseScheme(basicPricingSchemePane.getText()); double[] newScheme = Utils.parseScheme(newPricingSchemePane.getText()); float awareness = (float) (awarenessSlider.getValue()) / 100; float sensitivity = (float) (sensitivitySlider.getValue()) / 100; System.out.println("Awareness: " + awareness + " Sensitivity: " + sensitivity); // Create a preview chart of the response model ChartPanel chartPanel = installation.getPerson().previewDailyResponse(activity, basicScheme, newScheme, awareness, sensitivity); responsePanel.add(chartPanel, BorderLayout.CENTER); responsePanel.validate(); createResponseButton.setEnabled(true); createResponseAllButton.setEnabled(true); dailyResponseButton.setEnabled(true); startResponseButton.setEnabled(true); } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); // EXPORT TAB // exportTab.addComponentListener(new ComponentAdapter() { @Override public void componentShown(ComponentEvent arg0) { exportModelList.setSelectedIndex(0); } }); exportModelList.addListSelectionListener(new ListSelectionListener() { /** * This function is called when the user selects an entity from the * list of models on the Model Export Selection panel of the Export Models * tab. Then the corresponding preview of the entity model is presented in * the * Export Model Preview panel. */ @Override public void valueChanged(ListSelectionEvent arg0) { if (tabbedPane.getSelectedIndex() == 3) { exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); // Checking if the list has any object if (exportModels.size() > 1) { String selection = exportModelList.getSelectedValue(); // Check to see what type of entity is selected (Installation, // Person, Appliance, Activity, Response) Appliance appliance = installation.findAppliance(selection); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); // Create the appropriate chart for the selected entity and show it. ChartPanel chartPanel = null; if (selection.equalsIgnoreCase(installation.getName())) { try { chartPanel = installation.measurementsChart(); exportDailyButton.setEnabled(false); exportDurationButton.setEnabled(false); exportStartButton.setEnabled(false); exportStartBinnedButton.setEnabled(false); if (trained) exportExpectedPowerButton.setEnabled(true); else exportExpectedPowerButton.setEnabled(false); } catch (IOException e1) { e1.printStackTrace(); } } else if (selection.equalsIgnoreCase(installation.getPerson().getName())) { chartPanel = installation.getPerson().statisticGraphs(); exportDailyButton.setEnabled(false); exportDurationButton.setEnabled(false); exportStartButton.setEnabled(false); exportStartBinnedButton.setEnabled(false); exportExpectedPowerButton.setEnabled(false); } else if (appliance != null) { chartPanel = appliance.consumptionGraph(); exportDailyButton.setEnabled(false); exportDurationButton.setEnabled(false); exportStartButton.setEnabled(false); exportStartBinnedButton.setEnabled(false); exportExpectedPowerButton.setEnabled(false); } else if (activity != null) { chartPanel = activity.createDailyTimesDistributionChart(); activity.status(); exportDailyButton.setEnabled(true); exportDurationButton.setEnabled(true); exportStartButton.setEnabled(true); exportStartBinnedButton.setEnabled(true); exportExpectedPowerButton.setEnabled(true); } else if (response != null) { chartPanel = response.createDailyTimesDistributionChart(); exportDailyButton.setEnabled(true); exportDurationButton.setEnabled(true); exportStartButton.setEnabled(true); exportStartBinnedButton.setEnabled(true); exportExpectedPowerButton.setEnabled(true); } exportPreviewPanel.add(chartPanel, BorderLayout.CENTER); exportPreviewPanel.validate(); } } } }); exportDailyButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Daily Times * button on the Entity Preview panel of the Export Models tab. It shows * the Daily Times Distribution for the selected object from the list. */ @Override public void actionPerformed(ActionEvent arg0) { exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); String selection = exportModelList.getSelectedValue(); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); ChartPanel chartPanel = null; if (activity != null) chartPanel = activity.createDailyTimesDistributionChart(); else chartPanel = response.createDailyTimesDistributionChart(); exportPreviewPanel.add(chartPanel, BorderLayout.CENTER); exportPreviewPanel.validate(); } }); exportStartBinnedButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Start Time Binned * button on the Entity Preview panel of the Export Models tab. It shows * the Start Time Binned Distribution for the selected object from the * list. */ @Override public void actionPerformed(ActionEvent arg0) { exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); String selection = exportModelList.getSelectedValue(); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); ChartPanel chartPanel = null; if (activity != null) chartPanel = activity.createStartTimeBinnedDistributionChart(); else chartPanel = response.createStartTimeBinnedDistributionChart(); exportPreviewPanel.add(chartPanel, BorderLayout.CENTER); exportPreviewPanel.validate(); } }); exportStartButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Start Time * button on the Entity Preview panel of the Export Models tab. It shows * the Start Time Distribution for the selected object from the list. */ @Override public void actionPerformed(ActionEvent arg0) { exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); String selection = exportModelList.getSelectedValue(); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); ChartPanel chartPanel = null; if (activity != null) chartPanel = activity.createStartTimeDistributionChart(); else chartPanel = response.createStartTimeDistributionChart(); exportPreviewPanel.add(chartPanel, BorderLayout.CENTER); exportPreviewPanel.validate(); } }); exportDurationButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Duration * button on the Entity Preview panel of the Export Models tab. It shows * the Duration Distribution for the selected object from the list. */ @Override public void actionPerformed(ActionEvent arg0) { exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); String selection = exportModelList.getSelectedValue(); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); ChartPanel chartPanel = null; if (activity != null) chartPanel = activity.createDurationDistributionChart(); else chartPanel = response.createDurationDistributionChart(); exportPreviewPanel.add(chartPanel, BorderLayout.CENTER); exportPreviewPanel.validate(); } }); exportExpectedPowerButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { exportPreviewPanel.removeAll(); exportPreviewPanel.updateUI(); String selection = exportModelList.getSelectedValue(); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); ChartPanel chartPanel = null; if (selection.equalsIgnoreCase(installation.getName())) chartPanel = installation.createExpectedPowerChart(); else if (activity != null) chartPanel = activity.createExpectedPowerChart(); else chartPanel = response.createExpectedPowerChart(); exportPreviewPanel.add(chartPanel, BorderLayout.CENTER); exportPreviewPanel.validate(); } }); connectButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Connect button on the * Connection Properties panel of the Export Models tab. It helps the user * to connect to his Cassandra Library and export the models he created * there. */ @Override public void actionPerformed(ActionEvent e) { boolean result = false; // Reads the user credentials and the server to connect to. try { APIUtilities.setUrl(urlTextField.getText()); result = APIUtilities.sendUserCredentials(usernameTextField.getText(), passwordField.getPassword()); } catch (Exception e1) { e1.printStackTrace(); } // If the use credentials are correct if (result) { exportButton.setEnabled(true); exportAllBaseButton.setEnabled(true); exportAllResponseButton.setEnabled(true); householdNameTextField.setEnabled(true); } // Else a error message appears. else { JFrame error = new JFrame(); JOptionPane.showMessageDialog(error, "User Credentials are not correct! Please try again.", "Inane error", JOptionPane.ERROR_MESSAGE); passwordField.setText(""); } } }); passwordField.addCaretListener(new CaretListener() { @Override public void caretUpdate(CaretEvent e) { String pass = String.valueOf(passwordField.getPassword()); if (pass.equals("")) { connectButton.setEnabled(false); } else connectButton.setEnabled(true); } }); exportButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Export button on the * Connection Properties panel of the Export Models tab. The entity model * selected from the list is then exported to the User Library in * Cassandra Platform. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // Parsing the selected entity and find out what type of entity it is. String selection = exportModelList.getSelectedValue(); Appliance appliance = installation.findAppliance(selection); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); // If it is installation if (selection.equalsIgnoreCase(installation.getName())) { String oldName = installation.getName(); installation.setName(householdNameTextField.getText()); try { installation.setInstallationID(APIUtilities .sendEntity(installation.toJSON(APIUtilities.getUserID()).toString(), "/inst")); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } installation.setName(oldName); JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The installation model " + installation.getName() + " was exported successfully", "Installation Model Exported", JOptionPane.INFORMATION_MESSAGE); } // If it is person else if (selection.equalsIgnoreCase(installation.getPerson().getName())) { try { installation.getPerson().setPersonID(APIUtilities.sendEntity( installation.getPerson().toJSON(APIUtilities.getUserID()).toString(), "/pers")); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The person model " + installation.getPerson().getName() + " was exported successfully", "Person Model Exported", JOptionPane.INFORMATION_MESSAGE); } // If it is appliance else if (appliance != null) { try { appliance.setApplianceID(APIUtilities .sendEntity(appliance.toJSON(APIUtilities.getUserID()).toString(), "/app")); APIUtilities.sendEntity(appliance.powerConsumptionModelToJSON().toString(), "/consmod"); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The appliance model " + appliance.getName() + " was exported successfully", "Appliance Model Exported", JOptionPane.INFORMATION_MESSAGE); } // If it is activity else if (activity != null) { String[] applianceTemp = new String[activity.getAppliancesOf().length]; String activityTemp = ""; String durationTemp = ""; String dailyTemp = ""; String startTemp = ""; // For each appliance that participates in the activity for (int i = 0; i < activity.getAppliancesOf().length; i++) { Appliance activityAppliance = activity.getAppliancesOf()[i]; try { // In case the appliances contained in the Activity model are // not // in the database, we create the object there before sending // the // activity model if (activityAppliance.getApplianceID().equalsIgnoreCase("")) { activityAppliance.setApplianceID(APIUtilities.sendEntity( activityAppliance.toJSON(APIUtilities.getUserID()).toString(), "/app")); APIUtilities.sendEntity( activityAppliance.powerConsumptionModelToJSON().toString(), "/consmod"); } applianceTemp[i] = activityAppliance.getApplianceID(); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } try { String[] appliancesID = applianceTemp; // Creating the JSON of the activity model activity.setActivityModelID(APIUtilities.sendEntity( activity.toJSON(appliancesID, APIUtilities.getUserID()).toString(), "/actmod")); activityTemp = activity.getActivityModelID(); // Creating the JSON of the distributions activity.getDailyTimes().setDistributionID(APIUtilities.sendEntity( activity.getDailyTimes().toJSON(activityTemp).toString(), "/distr")); activity.setDailyID(activity.getDailyTimes().getDistributionID()); dailyTemp = activity.getDailyID(); activity.getDuration().setDistributionID(APIUtilities .sendEntity(activity.getDuration().toJSON(activityTemp).toString(), "/distr")); activity.setDurationID(activity.getDuration().getDistributionID()); durationTemp = activity.getDurationID(); activity.getStartTime().setDistributionID(APIUtilities .sendEntity(activity.getStartTime().toJSON(activityTemp).toString(), "/distr")); activity.setStartID(activity.getStartTime().getDistributionID()); startTemp = activity.getStartID(); // Adding the JSON of the distributions to the activity model APIUtilities.updateEntity( activity.toJSON(appliancesID, APIUtilities.getUserID()).toString(), "/actmod", activityTemp); } catch (AuthenticationException | NoSuchAlgorithmException | IOException e1) { e1.printStackTrace(); } JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The activity model " + activity.getName() + " was exported successfully", "Activity Model Exported", JOptionPane.INFORMATION_MESSAGE); } // If it is response else if (response != null) { String[] applianceTemp = new String[response.getAppliancesOf().length]; String responseTemp = ""; String durationTemp = ""; String dailyTemp = ""; String startTemp = ""; // For each appliance that participates in the activity for (int i = 0; i < response.getAppliancesOf().length; i++) { Appliance responseAppliance = response.getAppliancesOf()[i]; try { // In case the appliances contained in the Activity model are // not // in the database, we create the object there before sending // the // activity model if (responseAppliance.getApplianceID().equalsIgnoreCase("")) { responseAppliance.setApplianceID(APIUtilities.sendEntity( responseAppliance.toJSON(APIUtilities.getUserID()).toString(), "/app")); APIUtilities.sendEntity( responseAppliance.powerConsumptionModelToJSON().toString(), "/consmod"); } applianceTemp[i] = responseAppliance.getApplianceID(); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } try { String[] appliancesID = applianceTemp; // Creating the JSON of the response response.setActivityModelID(APIUtilities.sendEntity( response.toJSON(appliancesID, APIUtilities.getUserID()).toString(), "/actmod")); responseTemp = response.getActivityModelID(); // Creating the JSON of the distributions response.getDailyTimes().setDistributionID(APIUtilities.sendEntity( response.getDailyTimes().toJSON(responseTemp).toString(), "/distr")); response.setDailyID(response.getDailyTimes().getDistributionID()); dailyTemp = response.getDailyID(); response.getDuration().setDistributionID(APIUtilities .sendEntity(response.getDuration().toJSON(responseTemp).toString(), "/distr")); response.setDurationID(response.getDuration().getDistributionID()); durationTemp = response.getDurationID(); response.getStartTime().setDistributionID(APIUtilities .sendEntity(response.getStartTime().toJSON(responseTemp).toString(), "/distr")); response.setStartID(response.getStartTime().getDistributionID()); startTemp = response.getStartID(); // Adding the JSON of the distributions to the activity model APIUtilities.updateEntity( response.toJSON(appliancesID, APIUtilities.getUserID()).toString(), "/actmod", responseTemp); } catch (AuthenticationException | NoSuchAlgorithmException | IOException e1) { e1.printStackTrace(); } JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The response model " + response.getName() + " was exported successfully", "Response Model Exported", JOptionPane.INFORMATION_MESSAGE); } } finally { root.setCursor(Cursor.getDefaultCursor()); } } }); exportAllBaseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Export All Base * button on the Connection Properties panel of the Export Models tab. The * export procedure above is iterated through all the entities available * on the list except for the response models. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); for (int i = 0; i < exportModelList.getModel().getSize(); i++) { exportModelList.setSelectedIndex(i); String selection = exportModelList.getSelectedValue(); Appliance appliance = installation.findAppliance(selection); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); if (selection.equalsIgnoreCase(installation.getName())) { String oldName = installation.getName(); try { installation.setName(householdNameTextField.getText() + " Base"); installation.setInstallationID(APIUtilities.sendEntity( installation.toJSON(APIUtilities.getUserID()).toString(), "/inst")); installation.setName(oldName); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } else if (selection.equalsIgnoreCase(installation.getPerson().getName())) { try { installation.getPerson().setPersonID(APIUtilities.sendEntity(installation .getPerson().toJSON(installation.getInstallationID()).toString(), "/pers")); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } else if (appliance != null) { try { appliance.setApplianceID(APIUtilities.sendEntity( appliance.toJSON(installation.getInstallationID().toString()).toString(), "/app")); APIUtilities.sendEntity(appliance.powerConsumptionModelToJSON().toString(), "/consmod"); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } else if (activity != null) { String[] applianceTemp = new String[activity.getAppliancesOf().length]; String personTemp = ""; String activityTemp = ""; String durationTemp = ""; String dailyTemp = ""; String startTemp = ""; // For each appliance that participates in the activity for (int j = 0; j < activity.getAppliancesOf().length; j++) { Appliance activityAppliance = activity.getAppliancesOf()[j]; applianceTemp[j] = activityAppliance.getApplianceID(); } personTemp = installation.getPerson().getPersonID(); try { activity.setActivityID(APIUtilities .sendEntity(activity.activityToJSON(personTemp).toString(), "/act")); String[] appliancesID = applianceTemp; activity.setActivityModelID(APIUtilities .sendEntity(activity.toJSON(appliancesID).toString(), "/actmod")); activityTemp = activity.getActivityModelID(); activity.getDailyTimes().setDistributionID(APIUtilities.sendEntity( activity.getDailyTimes().toJSON(activityTemp).toString(), "/distr")); activity.setDailyID(activity.getDailyTimes().getDistributionID()); dailyTemp = activity.getDailyID(); activity.getDuration().setDistributionID(APIUtilities.sendEntity( activity.getDuration().toJSON(activityTemp).toString(), "/distr")); activity.setDurationID(activity.getDuration().getDistributionID()); durationTemp = activity.getDurationID(); activity.getStartTime().setDistributionID(APIUtilities.sendEntity( activity.getStartTime().toJSON(activityTemp).toString(), "/distr")); activity.setStartID(activity.getStartTime().getDistributionID()); startTemp = activity.getStartID(); APIUtilities.updateEntity(activity.toJSON(appliancesID).toString(), "/actmod", activityTemp); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } else if (response != null) { } } } finally { root.setCursor(Cursor.getDefaultCursor()); } JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The installation model " + installation.getName() + " for the base pricing scheme and all the entities contained within were exported successfully", "Installation Model Exported", JOptionPane.INFORMATION_MESSAGE); } }); exportAllResponseButton.addActionListener(new ActionListener() { /** * This function is called when the user presses the Export All Base * button on the Connection Properties panel of the Export Models tab. The * export procedure above is iterated through all the entities available * on the list except for the activity models. */ @Override public void actionPerformed(ActionEvent e) { Component root = SwingUtilities.getRoot((JButton) e.getSource()); try { root.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); for (int i = 0; i < exportModelList.getModel().getSize(); i++) { exportModelList.setSelectedIndex(i); String selection = exportModelList.getSelectedValue(); Appliance appliance = installation.findAppliance(selection); ActivityModel activity = installation.getPerson().findActivity(selection, false); ResponseModel response = installation.getPerson().findResponse(selection); if (selection.equalsIgnoreCase(installation.getName())) { String oldName = installation.getName(); try { installation.setName(householdNameTextField.getText() + " Response"); installation.setInstallationID(APIUtilities.sendEntity( installation.toJSON(APIUtilities.getUserID()).toString(), "/inst")); installation.setName(oldName); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } else if (selection.equalsIgnoreCase(installation.getPerson().getName())) { try { installation.getPerson().setPersonID(APIUtilities.sendEntity(installation .getPerson().toJSON(installation.getInstallationID()).toString(), "/pers")); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } else if (appliance != null) { try { appliance.setApplianceID(APIUtilities.sendEntity( appliance.toJSON(installation.getInstallationID().toString()).toString(), "/app")); APIUtilities.sendEntity(appliance.powerConsumptionModelToJSON().toString(), "/consmod"); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } else if (activity != null) { } else if (response != null) { String[] applianceTemp = new String[response.getAppliancesOf().length]; String personTemp = ""; String responseTemp = ""; String durationTemp = ""; String dailyTemp = ""; String startTemp = ""; // For each appliance that participates in the activity for (int j = 0; j < response.getAppliancesOf().length; j++) { Appliance responseAppliance = response.getAppliancesOf()[j]; applianceTemp[j] = responseAppliance.getApplianceID(); } personTemp = installation.getPerson().getPersonID(); try { response.setActivityID(APIUtilities .sendEntity(response.activityToJSON(personTemp).toString(), "/act")); String[] appliancesID = applianceTemp; response.setActivityModelID(APIUtilities .sendEntity(response.toJSON(appliancesID).toString(), "/actmod")); responseTemp = response.getActivityModelID(); response.getDailyTimes().setDistributionID(APIUtilities.sendEntity( response.getDailyTimes().toJSON(responseTemp).toString(), "/distr")); response.setDailyID(response.getDailyTimes().getDistributionID()); dailyTemp = response.getDailyID(); response.getDuration().setDistributionID(APIUtilities.sendEntity( response.getDuration().toJSON(responseTemp).toString(), "/distr")); response.setDurationID(response.getDuration().getDistributionID()); durationTemp = response.getDurationID(); response.getStartTime().setDistributionID(APIUtilities.sendEntity( response.getStartTime().toJSON(responseTemp).toString(), "/distr")); response.setStartID(response.getStartTime().getDistributionID()); startTemp = response.getStartID(); APIUtilities.updateEntity(response.toJSON(appliancesID).toString(), "/actmod", responseTemp); } catch (IOException | AuthenticationException | NoSuchAlgorithmException e1) { e1.printStackTrace(); } } } } finally { root.setCursor(Cursor.getDefaultCursor()); } JFrame success = new JFrame(); JOptionPane.showMessageDialog(success, "The installation model " + installation.getName() + " for the new pricing scheme and all the entities contained within were exported successfully", "Installation Model Exported", JOptionPane.INFORMATION_MESSAGE); } }); }
From source file:app.RunApp.java
/** * Create graph//from w w w .jav a 2 s . c o m * * @param jpanel Panel * @return ChartPanel with the generated graph */ private ChartPanel createGraph(JPanel jpanel) { XYDataset xydataset = new DefaultXYDataset(); JFreeChart chart = ChartFactory.createXYLineChart("Box diagram", "Values", "", xydataset, PlotOrientation.VERTICAL, false, true, false); XYPlot xyplot = (XYPlot) chart.getPlot(); xyplot.setBackgroundPaint(Color.white); xyplot.setDomainGridlinePaint(Color.gray); xyplot.setRangeGridlinePaint(Color.gray); //Hide Y axis xyplot.getRangeAxis().setTickLabelsVisible(false); ChartPanel cp1 = new ChartPanel(chart); cp1.setSize(new Dimension(450, 300)); cp1.setBounds(260, 100, 450, 300); cp1.setPreferredSize(new Dimension(450, 300)); cp1.repaint(); jpanel.setBounds(260, 100, 450, 300); jpanel.setLayout(new BorderLayout()); jpanel.add(cp1, BorderLayout.CENTER); jpanel.repaint(); jpanel.validate(); return cp1; }
From source file:app.RunApp.java
/** * Create Chart// w w w. j a v a2 s.co m * * @param jpanel Panel * @param type Chart type * @param titleX Title for X axis * @param titleY Title for Y axis * @param showXAxis Indicates if shows X axis * @param chartTitle Chart title * @return ChartPanel with the generated chart */ private ChartPanel createJChart(JPanel jpanel, String type, String titleX, String titleY, boolean showXAxis, String chartTitle) { DefaultCategoryDataset myData = new DefaultCategoryDataset(); JFreeChart chart1; CategoryPlot plot1; LineAndShapeRenderer lineandshaperenderer; //hide horizontal axis switch (type) { case "bar": chart1 = ChartFactory.createBarChart(chartTitle, titleY, titleX, myData, PlotOrientation.VERTICAL, false, true, false); plot1 = chart1.getCategoryPlot(); //Custom tooltips BarRenderer renderer = (BarRenderer) plot1.getRenderer(); switch (chartTitle.toLowerCase()) { case "label frequency": renderer.setBaseToolTipGenerator( new StandardCategoryToolTipGenerator("{0} = {2}", NumberFormat.getInstance())); break; case "labelset frequency": renderer.setBaseToolTipGenerator( new StandardCategoryToolTipGenerator("{0} = {2}", NumberFormat.getInstance())); break; case "labels histogram": renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator( "Instances with {1} labels = {2}", NumberFormat.getInstance())); break; case "ir inter class": renderer.setBaseToolTipGenerator( new StandardCategoryToolTipGenerator("{0} = {2}", NumberFormat.getInstance())); break; case "ir intra class": renderer.setBaseToolTipGenerator( new StandardCategoryToolTipGenerator("{0} = {2}", NumberFormat.getInstance())); break; case "ir per labelset": renderer.setBaseToolTipGenerator( new StandardCategoryToolTipGenerator("ID: {0} = {2}", NumberFormat.getInstance())); break; default: renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator()); break; } plot1.setBackgroundAlpha(0); plot1.setRangeGridlinePaint(Color.black); break; case "line_2_axis": chart1 = ChartFactory.createLineChart(" ", titleX, titleY, myData, PlotOrientation.VERTICAL, false, true, false); plot1 = chart1.getCategoryPlot(); plot1.setRangeGridlinePaint(Color.black); //show little rectangles lineandshaperenderer = (LineAndShapeRenderer) plot1.getRenderer(); lineandshaperenderer.setBaseShapesVisible(true); CategoryAxis domainAxis = plot1.getDomainAxis(); domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45); ValueAxis axis2 = new NumberAxis("# Labels"); plot1.setRangeAxis(1, axis2); plot1.mapDatasetToRangeAxis(1, 1); LineAndShapeRenderer renderer2 = new LineAndShapeRenderer(); plot1.setRenderer(1, renderer2); break; default: //type == "line") chart1 = ChartFactory.createLineChart(" ", titleX, titleY, myData, PlotOrientation.VERTICAL, false, true, false); plot1 = chart1.getCategoryPlot(); plot1.setRangeGridlinePaint(Color.black); //show little rectangles lineandshaperenderer = (LineAndShapeRenderer) plot1.getRenderer(); lineandshaperenderer.setBaseShapesVisible(true); break; } //Hide X axis plot1.getDomainAxis().setTickLabelsVisible(showXAxis); ChartPanel cp1 = new ChartPanel(chart1); cp1.setSize(new Dimension(450, 300)); cp1.setBounds(260, 100, 450, 300); cp1.setPreferredSize(new Dimension(450, 300)); cp1.repaint(); jpanel.setBounds(260, 100, 450, 300); jpanel.setLayout(new BorderLayout()); jpanel.add(cp1, BorderLayout.CENTER); jpanel.repaint(); jpanel.validate(); return cp1; }
From source file:atlas.kingj.roi.FrmMain.java
/** * Initialize the contents of the frame. *///from w w w .j av a2 s. c o m private void initialize() { frmTitanRoiCalculator = new JFrame(); frmTitanRoiCalculator.addWindowListener(new FrmTitanRoiCalculatorWindowListener()); frmTitanRoiCalculator.setResizable(false); frmTitanRoiCalculator.setTitle("Titan Production Calculator"); try { frmTitanRoiCalculator.setIconImage(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/logo.png")));//Toolkit.getDefaultToolkit().getImage(FrmMain.class.getResource("/atlas/logo.png"))); } catch (NullPointerException e) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } frmTitanRoiCalculator.setBounds(100, 100, 800, 600); frmTitanRoiCalculator.setLocationRelativeTo(null); frmTitanRoiCalculator.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//JFrame.EXIT_ON_CLOSE); JMenuBar menuBar = new JMenuBar(); frmTitanRoiCalculator.setJMenuBar(menuBar); JMenu mnFile = new JMenu("File"); mnFile.setMnemonic('F'); menuBar.add(mnFile); mntmOpen = new JMenuItem("Open"); mntmOpen.setMnemonic('O'); mntmOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); mntmOpen.addActionListener(new MntmOpenActionListener()); mnFile.add(mntmOpen); mntmSave = new JMenuItem("Save"); mntmSave.setMnemonic('S'); mntmSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK)); mntmSave.addActionListener(new MntmSaveActionListener()); mnFile.add(mntmSave); JMenuItem mntmExit = new JMenuItem("Exit"); mntmExit.setMnemonic('X'); mntmExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { SaveAndClose(); } }); mntmSaveAll = new JMenuItem("Save All"); mntmSaveAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { SaveAll(); } }); mntmOpenAll = new JMenuItem("Open All"); mntmOpenAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { OpenAll(); } }); mnFile.add(mntmOpenAll); mntmSaveAll.setMnemonic('V'); mnFile.add(mntmSaveAll); mnExport = new JMenu("Export"); mnFile.add(mnExport); mntmSpreadsheet = new JMenuItem("Spreadsheet"); mntmSpreadsheet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ResetStatusLabel(); fc = new OpenSaveFileChooser(); fc.setFileFilter(new XLSfilter()); fc.type = 3; int returnVal = fc.showSaveDialog(frmTitanRoiCalculator); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); String path = file.getAbsolutePath(); String extension = ".xls"; if (!path.endsWith(extension)) { file = new File(path + extension); } StatusDialog a = new StatusDialog("Generating spreadsheet..."); SaveFileWorker worker = new SaveFileWorker(file, a, false); worker.execute(); a.setLocationRelativeTo(frmTitanRoiCalculator); a.setVisible(true); if (FileSaveError) ShowMessage("File save error"); else if (FileSaveWarning) ShowMessage("File saved, but possible errors."); else ShowMessageSuccess("File saved."); } } }); mnExport.add(mntmSpreadsheet); mnFile.add(mntmExit); JMenu mnView = new JMenu("View"); mnView.setMnemonic('V'); menuBar.add(mnView); RoiData = new ROIData(); mntmUnitConverter = new JMenuItem("Unit Converter"); mntmUnitConverter.setMnemonic('C'); mntmUnitConverter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK)); mntmUnitConverter.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { new UnitConverter(); } }); mnView.add(mntmUnitConverter); mnSettings = new JMenu("Settings"); mnSettings.setMnemonic('E'); menuBar.add(mnSettings); mnUnits = new JMenu("Units"); mnUnits.setMnemonic('U'); mnSettings.add(mnUnits); rdbtnmntmImperial = new JRadioButtonMenuItem("Imperial"); rdbtnmntmImperial.setMnemonic('I'); rdbtnmntmImperial.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.CTRL_MASK)); rdbtnmntmImperial.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (metric) { // Change units from metric to imperial ChangeUnits(); } } }); mnUnits.add(rdbtnmntmImperial); rdbtnmntmMetric = new JRadioButtonMenuItem("Metric"); rdbtnmntmMetric.setMnemonic('M'); rdbtnmntmMetric.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_MASK)); rdbtnmntmMetric.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!metric) { // Change units from imperial to metric ChangeUnits(); } } }); rdbtnmntmMetric.setSelected(true); mnUnits.add(rdbtnmntmMetric); btnsUnits.add(rdbtnmntmMetric); btnsUnits.add(rdbtnmntmImperial); JMenuItem mntmOptions_1 = new JMenuItem("Options"); mntmOptions_1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK)); mntmOptions_1.setMnemonic('O'); mntmOptions_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Machine machine = null; if (listMachines.getSelectedIndex() > -1) machine = (Machine) listMachines.getSelectedValue(); OptionDialog options = new OptionDialog(environment, machine); options.setLocationRelativeTo(frmTitanRoiCalculator); options.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { UpdateAnalysis(); } }); options.setVisible(true); } }); mnTimings = new JMenu("Timings"); mnSettings.add(mnTimings); mntmSaveToFile = new JMenuItem("Save to File"); mntmSaveToFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { OperatorTimings times = environment.timings; fc = new OpenSaveFileChooser(); fc.setFileFilter(new OBJfilter(3)); fc.type = 1; int returnVal = fc.showSaveDialog(frmTitanRoiCalculator); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); String path = file.getAbsolutePath(); String extension = ".ser"; if (!path.endsWith(extension)) { file = new File(path + extension); } try { FileOutputStream fout = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fout); oos.writeObject(times); oos.close(); ShowMessageSuccess("File saved."); } catch (Exception e1) { JOptionPane.showMessageDialog(frmTitanRoiCalculator, "Error writing file.", "Error", JOptionPane.ERROR_MESSAGE); } } } }); mnTimings.add(mntmSaveToFile); mntmLoadFromFile = new JMenuItem("Load from File"); mntmLoadFromFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fc = new OpenSaveFileChooser(); fc.setFileFilter(new OBJfilter(3)); fc.type = 1; int returnVal = fc.showOpenDialog(frmTitanRoiCalculator); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); try { FileInputStream fin = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fin); environment.timings = (OperatorTimings) ois.readObject(); ois.close(); ShowMessageSuccess("File loaded."); } catch (Exception e1) { ShowMessage("File error."); } } } }); mnTimings.add(mntmLoadFromFile); mnSettings.add(mntmOptions_1); JMenu mnHelp = new JMenu("Help"); mnHelp.setMnemonic('H'); menuBar.add(mnHelp); JMenuItem mntmInstructions = new JMenuItem("Instructions"); mntmInstructions.setMnemonic('I'); mntmInstructions.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { InstructDialog instructions = new InstructDialog(); instructions.setLocationRelativeTo(frmTitanRoiCalculator); instructions.setVisible(true); } }); mnHelp.add(mntmInstructions); JMenuItem mntmAbout = new JMenuItem("About"); mntmAbout.setMnemonic('A'); mntmAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { AboutDialog about = new AboutDialog(); about.setLocationRelativeTo(frmTitanRoiCalculator); about.setVisible(true); } }); mnHelp.add(mntmAbout); tabbedPane = new JTabbedPane(JTabbedPane.TOP); tabbedPane.addChangeListener(TabChangeListener); frmTitanRoiCalculator.getContentPane().add(tabbedPane, BorderLayout.CENTER); pnlMachine = new JPanel(); tabbedPane.addTab("Machine Selection", null, pnlMachine, "Add and configure machine setups"); tabbedPane.setEnabledAt(0, true); pnlMachine.setLayout(null); grpMachines = new JPanel(); grpMachines.setFont(new Font("Tahoma", Font.PLAIN, 11)); grpMachines.setBounds(20, 72, 182, 256); grpMachines.setBorder( new TitledBorder(null, "Machine Type", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlMachine.add(grpMachines); grpMachines.setLayout(null); try { rdbtnER610 = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610.png")))); rdbtnER610.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_dis.png")))); rdbtnER610.setDisabledSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_dis.png")))); rdbtnER610.setEnabled(false); rdbtnER610.setToolTipText("Titan ER610"); } catch (NullPointerException e1) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } rdbtnER610.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rdbtnClick("ER610"); UpdateMachine(); listMachines.repaint(); } }); rdbtnER610.setSelected(true); rdbtnER610.setBounds(13, 24, 155, 40); try { rdbtnER610.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_down.png")))); rdbtnER610.setRolloverEnabled(true); rdbtnER610.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_over.png")))); rdbtnER610.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/er610_select.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } grpMachines.add(rdbtnER610); try { rdbtnSR9DS = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds.png")))); rdbtnSR9DS.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_dis.png")))); rdbtnSR9DS.setEnabled(false); rdbtnSR9DS.setToolTipText("Titan SR9-DS"); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } rdbtnSR9DS.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rdbtnClick("SR9DS"); UpdateMachine(); listMachines.repaint(); } }); try { rdbtnSR9DS.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_down.png")))); rdbtnSR9DS.setRolloverEnabled(true); rdbtnSR9DS.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_over.png")))); rdbtnSR9DS.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9ds_select.png")))); rdbtnSR9DS.setBounds(13, 68, 155, 40); grpMachines.add(rdbtnSR9DS); rdbtnSR9DT = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt.png")))); rdbtnSR9DT.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_dis.png")))); rdbtnSR9DT.setEnabled(false); rdbtnSR9DT.setToolTipText("Titan SR9-DT"); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } rdbtnSR9DT.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { rdbtnClick("SR9DT"); UpdateMachine(); listMachines.repaint(); } }); rdbtnSR9DT.setBounds(13, 112, 155, 40); try { rdbtnSR9DT.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_down.png")))); rdbtnSR9DT.setRolloverEnabled(true); rdbtnSR9DT.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_over.png")))); rdbtnSR9DT.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr9dt_select.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } grpMachines.add(rdbtnSR9DT); try { rdbtnSR800 = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800.png")))); rdbtnSR800.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_dis.png")))); rdbtnSR800.setEnabled(false); rdbtnSR800.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { rdbtnClick("SR800"); UpdateMachine(); listMachines.repaint(); } }); rdbtnSR800.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_down.png")))); rdbtnSR800.setRolloverEnabled(true); rdbtnSR800.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_over.png")))); rdbtnSR800.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/sr800_select.png")))); } catch (IOException e2) { e2.printStackTrace(); } rdbtnSR800.setToolTipText("Titan SR800"); rdbtnSR800.setRolloverEnabled(true); rdbtnSR800.setBounds(13, 156, 155, 40); grpMachines.add(rdbtnSR800); try { rdbtnCustom = new JRadioButton( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom.png")))); rdbtnCustom.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_dis.png")))); rdbtnCustom.setEnabled(false); rdbtnCustom.setPressedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_down.png")))); rdbtnCustom.setRolloverEnabled(true); rdbtnCustom.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_over.png")))); rdbtnCustom.setSelectedIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/custom_select.png")))); } catch (IOException e2) { e2.printStackTrace(); } rdbtnCustom.setToolTipText("Custom Machine"); rdbtnCustom.setRolloverEnabled(true); rdbtnCustom.setBounds(13, 200, 155, 40); grpMachines.add(rdbtnCustom); rdbtnCustom.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { rdbtnClick("Custom"); UpdateMachine(); ResetStatusLabel(); listMachines.repaint(); } }); rdbtnsMachines.add(rdbtnER610); rdbtnsMachines.add(rdbtnSR9DS); rdbtnsMachines.add(rdbtnSR9DT); rdbtnsMachines.add(rdbtnSR800); rdbtnsMachines.add(rdbtnCustom); grpVariants = new JPanel(); grpVariants.setFont(new Font("Tahoma", Font.PLAIN, 11)); grpVariants.setBounds(20, 339, 482, 112); grpVariants .setBorder(new TitledBorder(null, "Variants", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlMachine.add(grpVariants); grpVariants.setLayout(null); cmbCorepos = new JComboBox(); cmbCorepos.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbCorepos.setToolTipText("Set the core positioning system"); cmbCorepos.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbCorepos.setEnabled(false); cmbCorepos.setBounds(104, 70, 122, 20); grpVariants.add(cmbCorepos); cmbCorepos.setModel(new DefaultComboBoxModel(new String[] { "Manual", "Laser" })); lblCorePositioning = new JLabel("Core Positioning:"); lblCorePositioning.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblCorePositioning.setToolTipText("Set the core positioning system"); lblCorePositioning.setEnabled(false); lblCorePositioning.setHorizontalAlignment(SwingConstants.RIGHT); lblCorePositioning.setBounds(12, 73, 88, 14); grpVariants.add(lblCorePositioning); lblKnifeControl = new JLabel("Knife Control:"); lblKnifeControl.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKnifeControl.setToolTipText("Set the type of knife positioning system"); lblKnifeControl.setEnabled(false); lblKnifeControl.setHorizontalAlignment(SwingConstants.RIGHT); lblKnifeControl.setBounds(22, 48, 78, 14); grpVariants.add(lblKnifeControl); cmbKnives = new JComboBox(); cmbKnives.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbKnives.setToolTipText("Set the type of knife positioning system"); cmbKnives.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbKnives.setEnabled(false); cmbKnives.setBounds(104, 45, 122, 20); grpVariants.add(cmbKnives); cmbKnives.setModel(new DefaultComboBoxModel(new String[] { "Manual", "Auto" })); cmbUnloader = new JComboBox(); cmbUnloader.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbUnloader.setToolTipText("Set the unloader type"); cmbUnloader.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbUnloader.setEnabled(false); cmbUnloader.setBounds(350, 20, 122, 20); grpVariants.add(cmbUnloader); cmbUnloader.setModel(new DefaultComboBoxModel(new String[] { "Manual", "Pneumatic", "Electric" })); lblUnloader = new JLabel("Unloader:"); lblUnloader.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnloader.setToolTipText("Set the unloader type"); lblUnloader.setEnabled(false); lblUnloader.setHorizontalAlignment(SwingConstants.RIGHT); lblUnloader.setBounds(259, 23, 87, 14); grpVariants.add(lblUnloader); cmbSpeed = new JComboBox(); cmbSpeed.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbSpeed.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (formReady) UpdateMachine(); } }); cmbSpeed.setEnabled(false); cmbSpeed.setToolTipText("Machine top speed in metres/min"); cmbSpeed.setBounds(104, 20, 122, 20); grpVariants.add(cmbSpeed); cmbSpeed.setModel(new DefaultComboBoxModel(new String[] { "450", "550" })); lblSpeed = new JLabel("Speed:"); lblSpeed.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSpeed.setToolTipText("Machine top speed in metres/min"); lblSpeed.setEnabled(false); lblSpeed.setHorizontalAlignment(SwingConstants.RIGHT); lblSpeed.setBounds(54, 23, 46, 14); grpVariants.add(lblSpeed); cmbUnwindDrive = new JComboBox(); cmbUnwindDrive.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbUnwindDrive.setToolTipText("Unwind drive type"); cmbUnwindDrive.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbUnwindDrive.setEnabled(false); cmbUnwindDrive.setBounds(350, 45, 122, 20); grpVariants.add(cmbUnwindDrive); cmbUnwindDrive.setModel(new DefaultComboBoxModel(new String[] { "Single", "Double" })); lblUnwindDrive = new JLabel("Unwind Drive:"); lblUnwindDrive.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnwindDrive.setToolTipText("Unwind drive type"); lblUnwindDrive.setEnabled(false); lblUnwindDrive.setHorizontalAlignment(SwingConstants.RIGHT); lblUnwindDrive.setBounds(259, 48, 87, 14); grpVariants.add(lblUnwindDrive); lblRewindControlLoop = new JLabel("Rewind Control Loop:"); lblRewindControlLoop.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblRewindControlLoop.setToolTipText("Rewind control loop type"); lblRewindControlLoop.setEnabled(false); lblRewindControlLoop.setHorizontalAlignment(SwingConstants.RIGHT); lblRewindControlLoop.setBounds(224, 73, 122, 14); grpVariants.add(lblRewindControlLoop); cmbRewindCtrl = new JComboBox(); cmbRewindCtrl.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbRewindCtrl.setToolTipText("Rewind control loop type"); cmbRewindCtrl.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); } }); cmbRewindCtrl.setEnabled(false); cmbRewindCtrl.setBounds(350, 70, 122, 20); grpVariants.add(cmbRewindCtrl); cmbRewindCtrl.setModel(new DefaultComboBoxModel(new String[] { "Open", "Closed" })); listModel = new DefaultListModel(); jobModel = new DefaultListModel(); scheduleModel = new DefaultListModel(); listModel.removeAllElements(); /*listMachines.setModel(new AbstractListModel() { String[] values = new String[] {"ER610: My test 1", "SR9-DS: this is another test", "SR9-DT: third test", "ER610: test 2", "ER610: bla bla", "SR9-DS: this is another test", "SR9-DT: hello", "SR9-DT: third test"}; public int getSize() { return values.length; } public Object getElementAt(int index) { return values[index]; } });*/ JLabel lblMachines = new JLabel("Machines"); lblMachines.setFont(new Font("Tahoma", Font.BOLD, 12)); lblMachines.setBounds(522, 19, 85, 14); pnlMachine.add(lblMachines); btnMachDelete = new JButton(""); try { btnMachDelete .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete.png")))); btnMachDelete.setRolloverEnabled(true); btnMachDelete.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_over.png")))); btnMachDelete.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnMachDelete.setToolTipText("Delete machine"); btnMachDelete.setEnabled(false); btnMachDelete.addActionListener(new DeleteButtonListener()); btnMachDelete.setBounds(651, 460, 36, 36); pnlMachine.add(btnMachDelete); btnMachUp = new JButton(""); btnMachUp.setToolTipText("Move machine up"); btnMachUp.setEnabled(false); try { btnMachUp.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up.png")))); btnMachUp.setRolloverEnabled(true); btnMachUp.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_over.png")))); btnMachUp.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnMachUp.addActionListener(new UpListener()); btnMachUp.setBounds(700, 463, 30, 30); pnlMachine.add(btnMachUp); btnMachDown = new JButton(""); btnMachDown.setToolTipText("Move machine down"); btnMachDown.setEnabled(false); try { btnMachDown.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down.png")))); btnMachDown.setRolloverEnabled(true); btnMachDown.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_over.png")))); btnMachDown.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnMachDown.addActionListener(new DownListener()); btnMachDown.setBounds(737, 463, 30, 30); pnlMachine.add(btnMachDown); btnMachReset = new JButton("Reset"); btnMachReset.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnMachReset.setEnabled(false); btnMachReset.setToolTipText("Reset the form"); btnMachReset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ResetForm(); } }); btnMachReset.setBounds(20, 460, 100, 36); pnlMachine.add(btnMachReset); /*txtMachName.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (e.getKeyCode() == KeyEvent.VK_ENTER) btnAddMachine.doClick(); } });*/ btnNewMachine = new JButton("Add New"); btnNewMachine.setFont(new Font("Tahoma", Font.BOLD, 11)); btnNewMachine.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { formReady = false; ResetStatusLabel(); int index = listMachines.getSelectedIndex(); int size = listModel.getSize(); if (size >= Consts.MACH_LIST_LIMIT) { // Max list size ShowMessage( "Maximum number of machines allocated. Please delete before attempting to add more."); return; } String newName = getUniqueName("Machine"); txtMachName.setText(newName); machine = new Machine(newName); machNames.add(newName.toLowerCase()); //If no selection or if item in last position is selected, //add the new one to end of list, and select new one. if (index == -1 || (index + 1 == size)) { listModel.addElement(machine); listMachines.setSelectedIndex(size); RoiData.energies.add(RoiData.new EnergyData()); RoiData.maintenance.add(RoiData.new MaintData()); listCompare.addSelectionInterval(size, size); //Otherwise insert the new one after the current selection, //and select new one. } else { int[] sel = listCompare.getSelectedIndices(); int[] selection = new int[sel.length + 1]; System.arraycopy(sel, 0, selection, 0, sel.length); listCompare.setSelectedIndices(new int[] {}); listModel.insertElementAt(machine, index + 1); boolean max = false; for (int i = 0; i < selection.length; i++) { if (selection[i] >= index + 1 && !max) { if (i < selection.length - 1) System.arraycopy(selection, i, selection, i + 1, selection.length - i - 1); selection[i] = index + 1; max = true; } else if (selection[i] >= index + 1) selection[i] = selection[i] + 1; } RoiData.energies.add(index + 1, RoiData.new EnergyData()); RoiData.maintenance.add(index + 1, RoiData.new MaintData()); listCompare.setSelectedIndices(selection); //listCompareRoi.setSelectedIndices(selection); listMachines.setSelectedIndex(index + 1); //listCompare.addSelectionInterval(index + 1, index + 1); } ResetStatusLabel(); //UpdateForm(); already triggered in listchanged formReady = true; txtMachName.requestFocusInWindow(); } }); try { btnNewMachine .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/plus.png")))); } catch (IOException e1) { e1.printStackTrace(); } btnNewMachine.setToolTipText("Add new machine"); btnNewMachine.setBounds(522, 460, 110, 36); pnlMachine.add(btnNewMachine); grpOptions = new JPanel(); grpOptions.setFont(new Font("Tahoma", Font.PLAIN, 11)); grpOptions.setBounds(212, 72, 290, 256); pnlMachine.add(grpOptions); grpOptions.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Options", TitledBorder.LEADING, TitledBorder.TOP, null, null)); grpOptions.setLayout(null); chckbxFlag = new JCheckBox("Flag Detection"); chckbxFlag.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxFlag.setToolTipText("Whether an automatic flag detection system is used"); chckbxFlag.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxFlag.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxFlag.setEnabled(false); chckbxFlag.setBounds(155, 104, 109, 23); grpOptions.add(chckbxFlag); chckbxSpliceTable = new JCheckBox("Splice Table"); chckbxSpliceTable.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxSpliceTable.setToolTipText("Whether a splice table is fitted"); chckbxSpliceTable.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxSpliceTable.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxSpliceTable.setEnabled(false); chckbxSpliceTable.setBounds(22, 104, 109, 23); grpOptions.add(chckbxSpliceTable); chckbxAlignmentGuide = new JCheckBox("Alignment Guide"); chckbxAlignmentGuide.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAlignmentGuide.setToolTipText("Whether an alignment guide is fitted"); chckbxAlignmentGuide.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAlignmentGuide.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAlignmentGuide.setEnabled(false); chckbxAlignmentGuide.setBounds(22, 130, 127, 23); grpOptions.add(chckbxAlignmentGuide); chckbxRollConditioning = new JCheckBox("Roll Conditioning"); chckbxRollConditioning.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxRollConditioning.setToolTipText("Whether the machine supports roll conditioning"); chckbxRollConditioning.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxRollConditioning.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxRollConditioning.setEnabled(false); chckbxRollConditioning.setBounds(22, 156, 127, 23); grpOptions.add(chckbxRollConditioning); chckbxTurretSupport = new JCheckBox("Turret Support"); chckbxTurretSupport.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxTurretSupport.setToolTipText("For dual turret machines: extra turret support"); chckbxTurretSupport.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxTurretSupport.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxTurretSupport.setEnabled(false); chckbxTurretSupport.setBounds(22, 182, 127, 23); grpOptions.add(chckbxTurretSupport); chckbxAutostripping = new JCheckBox("Autostripping"); chckbxAutostripping.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutostripping.setToolTipText("Whether an autostripping feature is present for reel unloading"); chckbxAutostripping.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutostripping.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutostripping.setEnabled(false); chckbxAutostripping.setBounds(22, 208, 97, 23); grpOptions.add(chckbxAutostripping); chckbxExtraRewind = new JCheckBox("850mm Rewind"); chckbxExtraRewind.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxExtraRewind.setToolTipText("Extra wide 850mm max diameter rewind support"); chckbxExtraRewind.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxExtraRewind.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxExtraRewind.setEnabled(false); chckbxExtraRewind.setBounds(155, 208, 109, 23); grpOptions.add(chckbxExtraRewind); chckbxAutoCutoff = new JCheckBox("Auto Cut-off"); chckbxAutoCutoff.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutoCutoff.setToolTipText("Whether the web is cut automatically when a run completes"); chckbxAutoCutoff.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutoCutoff.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutoCutoff.setEnabled(false); chckbxAutoCutoff.setBounds(155, 130, 109, 23); grpOptions.add(chckbxAutoCutoff); chckbxAutoTapeCore = new JCheckBox("Auto Tape Core"); chckbxAutoTapeCore.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutoTapeCore.setToolTipText("Whether new reels are automatically taped before a run begins"); chckbxAutoTapeCore.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutoTapeCore.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutoTapeCore.setEnabled(false); chckbxAutoTapeCore.setBounds(155, 156, 109, 23); grpOptions.add(chckbxAutoTapeCore); chckbxAutoTapeTail = new JCheckBox("Auto Tape Tail"); chckbxAutoTapeTail.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxAutoTapeTail.setToolTipText("Whether the tails of completed reels are automatically taped down"); chckbxAutoTapeTail.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (formReady) UpdateMachine(); if (!chckbxAutoTapeTail.isSelected()) chckbxSelectAll.setSelected(false); else UpdateSelectAllChckbx(); } }); chckbxAutoTapeTail.setEnabled(false); chckbxAutoTapeTail.setBounds(155, 182, 109, 23); grpOptions.add(chckbxAutoTapeTail); txtMachName = new JTextField(); txtMachName.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtMachName.selectAll(); } }); txtMachName.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent arg0) { } @Override public void insertUpdate(DocumentEvent arg0) { UpdateMachineName(); } @Override public void removeUpdate(DocumentEvent arg0) { UpdateMachineName(); } }); txtMachName.setEnabled(false); txtMachName.setBounds(125, 35, 137, 28); grpOptions.add(txtMachName); txtMachName.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { } public void removeUpdate(DocumentEvent e) { // text was deleted } public void insertUpdate(DocumentEvent e) { // text was inserted } }); txtMachName.setToolTipText("Enter a name to refer to this particular machine by"); txtMachName.setFont(new Font("Tahoma", Font.BOLD, 12)); txtMachName.setColumns(10); lblMachName = new JLabel("Machine name:"); lblMachName.setToolTipText("Enter a name to refer to this particular machine by"); lblMachName.setEnabled(false); lblMachName.setBounds(26, 36, 91, 24); grpOptions.add(lblMachName); lblMachName.setFont(new Font("Tahoma", Font.PLAIN, 13)); chckbxSelectAll = new JCheckBox("Select All"); chckbxSelectAll.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxSelectAll.setToolTipText("Select all available options"); chckbxSelectAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (chckbxSelectAll.isSelected()) { if (chckbxAlignmentGuide.isEnabled()) chckbxAlignmentGuide.setSelected(true); if (chckbxAutoCutoff.isEnabled()) chckbxAutoCutoff.setSelected(true); if (chckbxAutostripping.isEnabled()) chckbxAutostripping.setSelected(true); if (chckbxAutoTapeCore.isEnabled()) chckbxAutoTapeCore.setSelected(true); if (chckbxAutoTapeTail.isEnabled()) chckbxAutoTapeTail.setSelected(true); if (chckbxExtraRewind.isEnabled()) chckbxExtraRewind.setSelected(true); if (chckbxFlag.isEnabled()) chckbxFlag.setSelected(true); if (chckbxRollConditioning.isEnabled()) chckbxRollConditioning.setSelected(true); if (chckbxSpliceTable.isEnabled()) chckbxSpliceTable.setSelected(true); if (chckbxTurretSupport.isEnabled()) chckbxTurretSupport.setSelected(true); } else { chckbxAlignmentGuide.setSelected(false); chckbxAutoCutoff.setSelected(false); chckbxAutostripping.setSelected(false); chckbxAutoTapeCore.setSelected(false); chckbxAutoTapeTail.setSelected(false); chckbxExtraRewind.setSelected(false); chckbxFlag.setSelected(false); chckbxRollConditioning.setSelected(false); chckbxSpliceTable.setSelected(false); chckbxTurretSupport.setSelected(false); } if (formReady) UpdateMachine(); } }); chckbxSelectAll.setEnabled(false); chckbxSelectAll.setBounds(22, 78, 97, 23); grpOptions.add(chckbxSelectAll); lblMachineConfiguration = new JLabel("Machine Configuration"); lblMachineConfiguration.setFont(new Font("Tahoma", Font.BOLD, 18)); lblMachineConfiguration.setBounds(29, 18, 269, 22); pnlMachine.add(lblMachineConfiguration); lblAddNewMachines = new JLabel( "Add new machines to the list on the right, then configure their options and variants below"); lblAddNewMachines.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAddNewMachines.setBounds(29, 45, 433, 14); pnlMachine.add(lblAddNewMachines); btnCustomMachine = new JButton("Custom Machine Options"); btnCustomMachine.setEnabled(false); btnCustomMachine.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnCustomMachine.setBounds(322, 460, 180, 36); pnlMachine.add(btnCustomMachine); btnCustomMachine.setToolTipText("Edit settings for a custom machine type"); scrollPane = new JScrollPane(); scrollPane.setBorder(null); scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.setBounds(522, 44, 245, 405); pnlMachine.add(scrollPane); panel_6 = new JPanel(); panel_6.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, new Color(192, 192, 192), null, null, null)); panel_6.setBackground(Color.WHITE); panel_6.setToolTipText("Select a machine to edit options, re-order, or delete"); scrollPane.setViewportView(panel_6); panel_6.setLayout(new BorderLayout(0, 0)); //Create the list and put it in a scroll pane. listMachines = new JList(listModel); panel_6.add(listMachines, BorderLayout.NORTH); listMachines.addListSelectionListener(new MachineListSelectionListener()); listMachines.setCellRenderer(new MachineListRenderer()); listMachines.setBorder(null); listMachines.setToolTipText("Select a machine to edit options, re-order, or delete"); listMachines.setFont(new Font("Tahoma", Font.PLAIN, 13)); listMachines.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); btnOverrideDefaultAcceleration = new JButton("Override Default Acceleration"); btnOverrideDefaultAcceleration.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnOverrideDefaultAcceleration .setToolTipText("Set new values for the acceleration/deceleration of this machine"); btnOverrideDefaultAcceleration.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { // check list selected listMachines.getSelectedIndex(); } catch (Exception e2) { return; } Machine currMachine = (Machine) listMachines.getSelectedValue(); AccelDecel dialog = new AccelDecel(currMachine); dialog.setLocationRelativeTo(frmTitanRoiCalculator); dialog.setVisible(true); } }); btnOverrideDefaultAcceleration.setEnabled(false); btnOverrideDefaultAcceleration.setBounds(130, 460, 182, 36); pnlMachine.add(btnOverrideDefaultAcceleration); btnCustomMachine.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetStatusLabel(); //rdbtnOther.doClick(); MachineBuilder newmach = new MachineBuilder(machine); newmach.setLocationRelativeTo(frmTitanRoiCalculator); newmach.setVisible(true); } }); pnlJob = new JPanel(); tabbedPane.addTab("Job Selection", null, pnlJob, "Add and configure machine jobs"); tabbedPane.setEnabledAt(1, true); pnlJob.setLayout(null); JPanel pnlMaterials = new JPanel(); pnlMaterials.setBounds(280, 72, 227, 124); pnlMaterials.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Material Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlJob.add(pnlMaterials); pnlMaterials.setLayout(null); Material[] materials = { new Material("Custom", 1.0, 20), new Material("Aluminium", 2.7, 40), new Material("Board", 1.3, 80), new Material("Cellophane", 1.5, 20), new Material("HDPE/BOPE", 0.94, 20), new Material("Laminate", 1.0, 20), new Material("LDPE/BOPE", 0.91, 20), new Material("LLDPE", 0.9, 20), new Material("MDPE", 0.925, 20), new Material("Nylon", 1.12, 20), new Material("Polypropylene", 0.91, 20), new Material("Polystyrene", 1.04, 20), new Material("Paper", 0.8, 100), new Material("PEEK", 1.3, 20), new Material("Polyester", 1.4, 20), new Material("PLA", 1.24, 20), new Material("Polyolefin", 0.92, 20), new Material("PSA Label", 1.1, 20), new Material("PVC", 1.36, 20), new Material("Shrink label", 0.91, 20), new Material("Tri. Lam.", 1.1, 20) }; cmbMaterials = new JComboBox(materials); cmbMaterials.setMaximumRowCount(20); cmbMaterials.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (jobFormReady) { Material m = (Material) cmbMaterials.getSelectedItem(); if (!(m.name.equals("Custom"))) { jobFormReady = false; txtThickness.setText(Double.toString(roundTwoDecimals(m.getThickness()))); if (lblGsm.getText().equals("(gsm)")) txtDensity.setText(Double.toString(roundTwoDecimals(m.getDensity()))); else txtDensity .setText(Double.toString(roundTwoDecimals(m.getDensity() * m.getThickness()))); if (!metric) { txtThickness .setText(Double.toString(roundTwoDecimals(Core.MicroToMil(m.getThickness())))); } jobFormReady = true; } UpdateJob(); } } }); cmbMaterials.setEnabled(false); cmbMaterials.setSelectedIndex(0); cmbMaterials.setToolTipText("Choose a preset material"); cmbMaterials.setBounds(81, 26, 117, 22); pnlMaterials.add(cmbMaterials); lblPresets = new JLabel("Presets:"); lblPresets.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPresets.setToolTipText("Choose a preset material"); lblPresets.setEnabled(false); lblPresets.setBounds(37, 29, 40, 15); pnlMaterials.add(lblPresets); lblThickness_1 = new JLabel("Thickness:"); lblThickness_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThickness_1.setToolTipText("Material thickness"); lblThickness_1.setEnabled(false); lblThickness_1.setHorizontalAlignment(SwingConstants.RIGHT); lblThickness_1.setBounds(7, 61, 70, 14); pnlMaterials.add(lblThickness_1); lblDensity_1 = new JLabel("Density:"); lblDensity_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblDensity_1.setToolTipText("Material density (per volume, not area)"); lblDensity_1.setEnabled(false); lblDensity_1.setHorizontalAlignment(SwingConstants.RIGHT); lblDensity_1.setBounds(31, 86, 46, 14); pnlMaterials.add(lblDensity_1); txtThickness = new JTextField(); txtThickness.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtThickness.selectAll(); } }); txtThickness.setEnabled(false); txtThickness.getDocument().addDocumentListener(new JobInputChangeListener()); txtThickness.setToolTipText("Material thickness"); txtThickness.setText("20"); txtThickness.setBounds(81, 58, 86, 20); pnlMaterials.add(txtThickness); txtThickness.setColumns(10); txtDensity = new JTextField(); txtDensity.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtDensity.selectAll(); } }); txtDensity.setEnabled(false); txtDensity.getDocument().addDocumentListener(new JobInputChangeListener()); txtDensity.setToolTipText("Material density (per volume, not area)"); txtDensity.setText("0.92"); txtDensity.setBounds(81, 83, 86, 20); pnlMaterials.add(txtDensity); txtDensity.setColumns(10); lblmicro0 = new JLabel("(\u00B5m)"); lblmicro0.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmicro0.setEnabled(false); lblmicro0.setBounds(177, 61, 46, 14); pnlMaterials.add(lblmicro0); lblgm3 = new JLabel("(g/cm )"); lblgm3.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblgm3.setEnabled(false); lblgm3.setBounds(177, 86, 46, 14); pnlMaterials.add(lblgm3); label_3 = new JLabel("3"); label_3.setEnabled(false); label_3.setFont(new Font("Tahoma", Font.PLAIN, 8)); label_3.setBounds(204, 83, 14, 14); pnlMaterials.add(label_3); JPanel pnlJobs = new JPanel(); pnlJobs.setBounds(20, 168, 250, 283); pnlJobs.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Rewind Settings", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); pnlJob.add(pnlJobs); pnlJobs.setLayout(null); lblTargetRewindLength = new JLabel("Rewind Output:"); lblTargetRewindLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblTargetRewindLength.setToolTipText("Quantity of rewind output"); lblTargetRewindLength.setEnabled(false); lblTargetRewindLength.setHorizontalAlignment(SwingConstants.RIGHT); lblTargetRewindLength.setBounds(17, 197, 88, 14); pnlJobs.add(lblTargetRewindLength); lblSlitWidth = new JLabel("Slit Width:"); lblSlitWidth.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSlitWidth.setToolTipText("Width of each output reel"); lblSlitWidth.setEnabled(false); lblSlitWidth.setHorizontalAlignment(SwingConstants.RIGHT); lblSlitWidth.setBounds(46, 60, 59, 14); pnlJobs.add(lblSlitWidth); lblSlitCount = new JLabel("Reel Count:"); lblSlitCount.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSlitCount.setToolTipText("Number of reels per set at the output"); lblSlitCount.setEnabled(false); lblSlitCount.setHorizontalAlignment(SwingConstants.RIGHT); lblSlitCount.setBounds(46, 33, 59, 14); pnlJobs.add(lblSlitCount); lblTrimtotal = new JLabel("Trim (total):"); lblTrimtotal.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblTrimtotal.setToolTipText("The trim resulting from the given slit widths"); lblTrimtotal.setEnabled(false); lblTrimtotal.setHorizontalAlignment(SwingConstants.RIGHT); lblTrimtotal.setBounds(20, 114, 85, 14); pnlJobs.add(lblTrimtotal); txtSlits = new JTextField(); txtSlits.setToolTipText("Number of reels per set at the output"); txtSlits.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtSlits.selectAll(); } }); txtSlits.getDocument().addDocumentListener(new JobInputChangeListener()); txtSlits.setEnabled(false); txtSlits.setText("1"); txtSlits.setBounds(109, 30, 86, 20); pnlJobs.add(txtSlits); txtSlits.setColumns(10); txtSlitWidth = new JTextField(); txtSlitWidth.setToolTipText("Width of each output reel"); txtSlitWidth.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtSlitWidth.selectAll(); } }); txtSlitWidth.getDocument().addDocumentListener(new JobInputChangeListener()); txtSlitWidth.setEnabled(false); txtSlitWidth.setText("1350"); txtSlitWidth.setBounds(109, 58, 86, 20); pnlJobs.add(txtSlitWidth); txtSlitWidth.setColumns(10); txtRewindAmount = new JTextField(); txtRewindAmount.setToolTipText("Quantity of rewind output"); txtRewindAmount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtRewindAmount.selectAll(); } }); txtRewindAmount.getDocument().addDocumentListener(new JobInputChangeListener()); txtRewindAmount.setEnabled(false); txtRewindAmount.setName("RewindLength"); txtRewindAmount.setText("1000"); txtRewindAmount.setBounds(109, 194, 86, 20); pnlJobs.add(txtRewindAmount); txtRewindAmount.setColumns(10); lblTrim = new JLabel("0 mm"); lblTrim.setToolTipText("The trim resulting from the given slit widths"); lblTrim.setEnabled(false); lblTrim.setBounds(111, 114, 65, 14); pnlJobs.add(lblTrim); cmbRewindCore = new JComboBox(); cmbRewindCore.setToolTipText("Core diameter of rewind reels"); ((JTextField) cmbRewindCore.getEditor().getEditorComponent()).getDocument() .addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); /*cmbRewindCore.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateJob(jobIndex); } });*/ cmbRewindCore.setEnabled(false); cmbRewindCore.setModel(new DefaultComboBoxModel(Consts.REWIND_CORE_MM)); cmbRewindCore.setSelectedIndex(1); cmbRewindCore.setBounds(109, 137, 87, 20); pnlJobs.add(cmbRewindCore); cmbRewindCore.setEditable(true); lblRewindCoremm = new JLabel("Rewind Core:"); lblRewindCoremm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblRewindCoremm.setToolTipText("Core diameter of rewind reels"); lblRewindCoremm.setEnabled(false); lblRewindCoremm.setBounds(40, 140, 65, 14); pnlJobs.add(lblRewindCoremm); lblPer_1 = new JLabel("per:"); lblPer_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPer_1.setToolTipText("Set whether rewind output is measured per reel or per set"); lblPer_1.setEnabled(false); lblPer_1.setBounds(85, 248, 20, 14); pnlJobs.add(lblPer_1); cmbJobDomain = new JComboBox(); cmbJobDomain.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateSetReel(); //UpdateJob(); } }); cmbJobDomain.setEnabled(false); cmbJobDomain.setToolTipText("Set whether rewind output is measured per reel or per set"); cmbJobDomain.setModel(new DefaultComboBoxModel(new String[] { "Reel", "Set" })); cmbJobDomain.setBounds(109, 246, 95, 20); pnlJobs.add(cmbJobDomain); lblmm3 = new JLabel("(mm)"); lblmm3.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm3.setEnabled(false); lblmm3.setBounds(205, 61, 27, 14); pnlJobs.add(lblmm3); lblmm2 = new JLabel("(mm)"); lblmm2.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm2.setEnabled(false); lblmm2.setBounds(206, 140, 27, 14); pnlJobs.add(lblmm2); pnlUnwinds = new JPanel(); pnlUnwinds.setLayout(null); pnlUnwinds.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Unwind Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlUnwinds.setBounds(280, 207, 227, 162); pnlJob.add(pnlUnwinds); lblUnwindLength = new JLabel("Unwind Size:"); lblUnwindLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnwindLength.setToolTipText("Quantity of material per mother roll"); lblUnwindLength.setEnabled(false); lblUnwindLength.setHorizontalAlignment(SwingConstants.RIGHT); lblUnwindLength.setBounds(21, 104, 66, 14); pnlUnwinds.add(lblUnwindLength); txtUnwindAmount = new JTextField(); txtUnwindAmount.setToolTipText("Quantity of material per mother roll"); txtUnwindAmount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtUnwindAmount.selectAll(); } }); txtUnwindAmount.getDocument().addDocumentListener(new JobInputChangeListener()); txtUnwindAmount.setEnabled(false); txtUnwindAmount.setName("UnwindLength"); txtUnwindAmount.setText("10000"); txtUnwindAmount.setBounds(92, 100, 86, 20); pnlUnwinds.add(txtUnwindAmount); txtUnwindAmount.setColumns(10); lblWebWidthmm = new JLabel("Web Width:"); lblWebWidthmm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblWebWidthmm.setToolTipText("Width of mother rolls"); lblWebWidthmm.setEnabled(false); lblWebWidthmm.setBounds(31, 29, 57, 14); pnlUnwinds.add(lblWebWidthmm); lblUnwindCoremm = new JLabel("Unwind Core:"); lblUnwindCoremm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblUnwindCoremm.setToolTipText("Core diameter of mother rolls"); lblUnwindCoremm.setEnabled(false); lblUnwindCoremm.setBounds(22, 54, 66, 14); pnlUnwinds.add(lblUnwindCoremm); cmbUnwindCore = new JComboBox(); cmbUnwindCore.setToolTipText("Core diameter of mother rolls"); ((JTextField) cmbUnwindCore.getEditor().getEditorComponent()).getDocument() .addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); cmbUnwindCore.setEnabled(false); cmbUnwindCore.setModel(new DefaultComboBoxModel(new String[] { "76", "152", "254" })); cmbUnwindCore.setBounds(92, 51, 86, 20); pnlUnwinds.add(cmbUnwindCore); cmbUnwindCore.setEditable(true); lblmm0 = new JLabel("(mm)"); lblmm0.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm0.setEnabled(false); lblmm0.setBounds(189, 29, 32, 14); pnlUnwinds.add(lblmm0); lblmm1 = new JLabel("(mm)"); lblmm1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmm1.setEnabled(false); lblmm1.setBounds(189, 53, 32, 14); pnlUnwinds.add(lblmm1); pnlEnviron = new JPanel(); tabbedPane.addTab("Job Scheduling", null, pnlEnviron, "Edit the schedule of jobs to be analysed"); tabbedPane.setEnabledAt(2, true); pnlEnviron.setLayout(null); JPanel pnlShifts = new JPanel(); pnlShifts.setLayout(null); pnlShifts.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Shift Options", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlShifts.setBounds(20, 72, 287, 162); pnlEnviron.add(pnlShifts); JLabel lblShiftLength = new JLabel("Shift Length:"); lblShiftLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblShiftLength.setToolTipText("Hours per working shift"); lblShiftLength.setHorizontalAlignment(SwingConstants.RIGHT); lblShiftLength.setBounds(15, 28, 108, 14); pnlShifts.add(lblShiftLength); JLabel lblDayLength = new JLabel("Day Length:"); lblDayLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblDayLength.setToolTipText("Working hours per day"); lblDayLength.setHorizontalAlignment(SwingConstants.RIGHT); lblDayLength.setBounds(29, 78, 94, 14); pnlShifts.add(lblDayLength); JLabel lblShiftsDay = new JLabel("Shifts per Day:"); lblShiftsDay.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblShiftsDay.setToolTipText("Shifts per day"); lblShiftsDay.setHorizontalAlignment(SwingConstants.RIGHT); lblShiftsDay.setBounds(15, 53, 108, 14); pnlShifts.add(lblShiftsDay); JLabel lblDays = new JLabel("Days per Year:"); lblDays.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblDays.setToolTipText("Days per year"); lblDays.setHorizontalAlignment(SwingConstants.RIGHT); lblDays.setBounds(0, 106, 123, 14); pnlShifts.add(lblDays); txtShiftLength = new JTextField(); txtShiftLength.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtShiftLength.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtShiftLength.selectAll(); } }); txtShiftLength.setToolTipText("Hours per working shift"); txtShiftLength.setText("8"); txtShiftLength.setBounds(133, 25, 86, 20); pnlShifts.add(txtShiftLength); txtShiftLength.setColumns(10); txtShiftCount = new JTextField(); txtShiftCount.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtShiftCount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtShiftCount.selectAll(); } }); txtShiftCount.setToolTipText("Shifts per day"); txtShiftCount.setText("3"); txtShiftCount.setBounds(133, 50, 86, 20); pnlShifts.add(txtShiftCount); txtShiftCount.setColumns(10); txtDaysYear = new JTextField(); txtDaysYear.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateShifts(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtDaysYear.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtDaysYear.selectAll(); } }); txtDaysYear.setToolTipText("Days per year"); txtDaysYear.setText("250"); txtDaysYear.setBounds(133, 103, 86, 20); pnlShifts.add(txtDaysYear); txtDaysYear.setColumns(10); lblDayLength2 = new JLabel("24 hours"); lblDayLength2.setToolTipText("Working hours per day"); lblDayLength2.setBounds(133, 78, 86, 14); pnlShifts.add(lblDayLength2); lblHoursYear = new JLabel("Hours per Year:"); lblHoursYear.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblHoursYear.setToolTipText("Working hours per year"); lblHoursYear.setBounds(47, 131, 76, 14); pnlShifts.add(lblHoursYear); lblHoursYear2 = new JLabel("6000 hours"); lblHoursYear2.setToolTipText("Working hours per year"); lblHoursYear2.setBounds(133, 131, 86, 14); pnlShifts.add(lblHoursYear2); lblHrs = new JLabel("hrs"); lblHrs.setBounds(229, 28, 46, 14); pnlShifts.add(lblHrs); btnAddAll = new JButton("Add All"); btnAddAll.setToolTipText("Add all jobs to the schedule in order"); btnAddAll.setFont(new Font("Tahoma", Font.BOLD, 11)); btnAddAll.setEnabled(false); try { btnAddAll.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/plus.png")))); } catch (IOException e1) { e1.printStackTrace(); } btnAddAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i = 0; i < jobModel.getSize(); ++i) { listJobsAvail.setSelectedIndex(i); btnAddJob.doClick(); } } }); btnAddAll.setBounds(327, 460, 110, 36); pnlEnviron.add(btnAddAll); btnAddJob = new JButton(""); btnAddJob.setToolTipText("Add this job to the schedule"); btnAddJob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //AddToSchedule(listJobsAvail.getSelectedValue()); ResetStatusLabel(); int index = listSchedule.getSelectedIndex(); //int source_index = listJobsAvail.getSelectedIndex(); Job sel = (Job) listJobsAvail.getSelectedValue(); JobItem j = environment.getSchedule().new JobItem(sel, 0, sel.getTotWeight(), sel.getTotLength()); int size = scheduleModel.getSize(); // no limit now there are scroll bars /* if(size >= Consts.JOB_LIST_LIMIT){ // Max list size ShowMessage("Maximum number of jobs scheduled. Please delete before attempting to add more."); return; }*/ //If no selection or if item in last position is selected, //add the new one to end of list, and select new one. if (index == -1 || (index + 1 == size)) { scheduleModel.addElement(sel); listSchedule.setSelectedIndex(size); environment.getSchedule().addJob(j); //Otherwise insert the new one after the current selection, //and select new one. } else { scheduleModel.insertElementAt(sel, index + 1); listSchedule.setSelectedIndex(index + 1); environment.getSchedule().insertJob(j, index + 1); } btnClearSchedule.setEnabled(true); } }); btnAddJob.setEnabled(false); try { btnAddJob.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/add_job.png")))); btnAddJob.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/add_job_dis.png")))); btnAddJob.setRolloverEnabled(true); btnAddJob.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/add_job_over.png")))); } catch (NullPointerException e111) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnAddJob.setBounds(521, 178, 54, 54); pnlEnviron.add(btnAddJob); btnRemoveJob = new JButton(""); btnRemoveJob.setToolTipText("Remove job from schedule"); btnRemoveJob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetStatusLabel(); // Uncomment this code to allow jobs to be saved back after removal from schedule /*if(listSchedule.getSelectedIndex() > -1){ Job j = (Job) listSchedule.getSelectedValue(); String name = j.getName().toLowerCase(); if(!jobNames.contains(name) && !jobModel.contains(j)){ if(jobModel.size() < Consts.JOB_LIST_LIMIT){ jobNames.add(name); jobFormReady = true; int index = -1; if(listJobsAvail.getSelectedIndex() > -1) index = listJobsAvail.getSelectedIndex(); if(index < 0){ jobModel.addElement(j); listJobsAvail.setSelectedIndex(jobModel.size()-1); listJobs.setSelectedIndex(jobModel.size()-1); }else{ jobModel.insertElementAt(j, index+1); listJobsAvail.setSelectedIndex(index+1); listJobs.setSelectedIndex(index+1); } } } }*/ ListSelectionModel lsm = listSchedule.getSelectionModel(); int firstSelected = lsm.getMinSelectionIndex(); int lastSelected = lsm.getMaxSelectionIndex(); scheduleModel.removeRange(firstSelected, lastSelected); environment.getSchedule().remove(firstSelected); int size = scheduleModel.size(); if (size == 0) { //List is empty: disable delete, up, and down buttons. btnClearSchedule.setEnabled(false); btnUpSchedule.setEnabled(false); btnDownSchedule.setEnabled(false); listSchedule.clearSelection(); btnRemoveJob.setEnabled(false); btnViewSchedule.setEnabled(false); } else { //Adjust the selection. if (firstSelected == scheduleModel.getSize()) { //Removed item in last position. firstSelected--; } listSchedule.setSelectedIndex(firstSelected); if (size == 21) { // No longer full list ResetStatusLabel(); } } } }); btnRemoveJob.setEnabled(false); try { btnRemoveJob .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/del_job.png")))); btnRemoveJob.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/del_job_dis.png")))); btnRemoveJob.setRolloverEnabled(true); btnRemoveJob.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/del_job_over.png")))); } catch (NullPointerException e111) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnRemoveJob.setBounds(520, 243, 54, 54); pnlEnviron.add(btnRemoveJob); lblJobSchedule_1 = new JLabel("Job Schedule"); lblJobSchedule_1.setFont(new Font("Tahoma", Font.BOLD, 18)); lblJobSchedule_1.setBounds(29, 18, 269, 22); pnlEnviron.add(lblJobSchedule_1); lblScheduleJobsTo = new JLabel("Schedule jobs to the right, then set shift options below"); lblScheduleJobsTo.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblScheduleJobsTo.setBounds(29, 45, 279, 14); pnlEnviron.add(lblScheduleJobsTo); lblAvailableJobs_1 = new JLabel("Available Jobs"); lblAvailableJobs_1.setFont(new Font("Tahoma", Font.BOLD, 12)); lblAvailableJobs_1.setBounds(327, 19, 137, 14); pnlEnviron.add(lblAvailableJobs_1); lblJobSchedule_2 = new JLabel("Job Schedule"); lblJobSchedule_2.setFont(new Font("Tahoma", Font.BOLD, 12)); lblJobSchedule_2.setBounds(577, 19, 110, 14); pnlEnviron.add(lblJobSchedule_2); panel = new JPanel(); panel.setLayout(null); panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Schedule Options", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel.setBounds(20, 245, 287, 104); pnlEnviron.add(panel); btnViewSchedule = new JButton("View Schedule Diagram"); btnViewSchedule.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnViewSchedule.setToolTipText("View chart of schedule timings"); btnViewSchedule.setEnabled(false); btnViewSchedule.setBounds(33, 27, 170, 29); panel.add(btnViewSchedule); chckbxSimulateScheduleStart = new JCheckBox("Ignore machine config & knife positioning times"); chckbxSimulateScheduleStart.setFont(new Font("Tahoma", Font.PLAIN, 11)); chckbxSimulateScheduleStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!initialising) environment.StartStopTimes = !chckbxSimulateScheduleStart.isSelected(); } }); chckbxSimulateScheduleStart.setToolTipText( "WARNING: Use ONLY when you wish to model the output of a single job over a long time period \u2013 such that the initial set-up time has no material impact on the production volume"); chckbxSimulateScheduleStart.setBounds(30, 62, 251, 18); panel.add(chckbxSimulateScheduleStart); lblhoverForInfo = new JLabel("(hover for info)"); lblhoverForInfo.setToolTipText( "WARNING: Use ONLY when you wish to model the output of a single job over a long time period \u2013 such that the initial set-up time has no material impact on the production volume"); lblhoverForInfo.setForeground(Color.GRAY); lblhoverForInfo.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblhoverForInfo.setBounds(34, 80, 147, 14); panel.add(lblhoverForInfo); btnUpSchedule = new JButton(""); btnUpSchedule.setToolTipText("Move job earlier in schedule"); btnUpSchedule.addActionListener(new ScheduleUpListener()); try { btnUpSchedule.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up.png")))); btnUpSchedule.setRolloverEnabled(true); btnUpSchedule.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_over.png")))); btnUpSchedule.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnUpSchedule.setEnabled(false); btnUpSchedule.setBounds(700, 463, 30, 30); pnlEnviron.add(btnUpSchedule); btnDownSchedule = new JButton(""); btnDownSchedule.setToolTipText("Move job later in schedule"); btnDownSchedule.addActionListener(new ScheduleDownListener()); try { btnDownSchedule .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down.png")))); btnDownSchedule.setRolloverEnabled(true); btnDownSchedule.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_over.png")))); btnDownSchedule.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnDownSchedule.setEnabled(false); btnDownSchedule.setBounds(737, 463, 30, 30); pnlEnviron.add(btnDownSchedule); btnClearSchedule = new JButton("Clear"); btnClearSchedule.setToolTipText("Clear all jobs from the schedule"); btnClearSchedule.setFont(new Font("Tahoma", Font.BOLD, 11)); btnClearSchedule.setEnabled(false); try { btnClearSchedule .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete.png")))); btnClearSchedule.setRolloverEnabled(true); btnClearSchedule.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_over.png")))); btnClearSchedule.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnClearSchedule.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scheduleModel.removeAllElements(); environment.getSchedule().empty(); } }); btnClearSchedule.setBounds(577, 460, 110, 36); pnlEnviron.add(btnClearSchedule); //listSchedule.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); //listSchedule.setBounds(577, 44, 190, 405); //pnlEnviron.add(listSchedule); btnViewSchedule.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ScheduleChart ch = new ScheduleChart(environment.getSchedule()); ch.pack(); try { ch.setIconImage(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/logo.png"))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e) { e.printStackTrace(); } ch.setLocationRelativeTo(frmTitanRoiCalculator); ch.setVisible(true); } }); scrlSchedule = new JScrollPane(); scrlSchedule.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrlSchedule.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); scrlSchedule.setBounds(577, 44, 190, 405); scrlSchedule.getVerticalScrollBar().setUnitIncrement(16); pnlEnviron.add(scrlSchedule); panel_8 = new JPanel(); panel_8.setToolTipText("Select job to re-order or remove from schedule"); panel_8.setBackground(Color.WHITE); panel_8.setBorder(null); scrlSchedule.setViewportView(panel_8); panel_8.setLayout(new BorderLayout(0, 0)); listSchedule = new JList(scheduleModel); panel_8.add(listSchedule, BorderLayout.NORTH); listSchedule.setToolTipText("Select job to re-order or remove from schedule"); listSchedule.addListSelectionListener(new ScheduleSelectionListener()); listSchedule.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); listSchedule.setCellRenderer(new JobListRenderer()); panel_5 = new JPanel(); panel_5.setLayout(null); panel_5.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Notes", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_5.setBounds(20, 360, 287, 136); pnlEnviron.add(panel_5); lblToViewAnalysis = new JLabel("To view analysis for 1 job only, add just that job"); lblToViewAnalysis.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblToViewAnalysis.setBounds(24, 24, 241, 14); panel_5.add(lblToViewAnalysis); lblToTheSchedule = new JLabel("to the schedule."); lblToTheSchedule.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblToTheSchedule.setBounds(24, 38, 241, 14); panel_5.add(lblToTheSchedule); lblToModelMaintenance = new JLabel("To model maintenance or other downtime, edit the"); lblToModelMaintenance.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblToModelMaintenance.setBounds(24, 59, 253, 14); panel_5.add(lblToModelMaintenance); lblShiftOptionsAbove = new JLabel("shift options above. This will affect annual output,"); lblShiftOptionsAbove.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblShiftOptionsAbove.setBounds(24, 73, 253, 14); panel_5.add(lblShiftOptionsAbove); lblButNotThe = new JLabel("but not the rates or efficiencies. For these, use the"); lblButNotThe.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblButNotThe.setBounds(24, 87, 253, 14); panel_5.add(lblButNotThe); lbladvancedTabIn = new JLabel("'advanced' tab in the options menu box."); lbladvancedTabIn.setFont(new Font("Tahoma", Font.PLAIN, 11)); lbladvancedTabIn.setBounds(24, 101, 253, 14); panel_5.add(lbladvancedTabIn); scrollPane_2 = new JScrollPane(); scrollPane_2.setBorder(null); scrollPane_2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_2.setBounds(327, 44, 190, 405); pnlEnviron.add(scrollPane_2); panel_9 = new JPanel(); panel_9.setToolTipText("Select job to be added"); scrollPane_2.setViewportView(panel_9); panel_9.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_9.setBackground(Color.WHITE); panel_9.setLayout(new BorderLayout(0, 0)); listJobsAvail = new JList(jobModel); panel_9.add(listJobsAvail, BorderLayout.NORTH); listJobsAvail.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "add"); listJobsAvail.getActionMap().put("add", new AddScheduleBtn()); listJobsAvail.setToolTipText("Select job to be added"); listJobsAvail.addListSelectionListener(new JobAvailSelectionListener()); listJobsAvail.setCellRenderer(new JobListRenderer()); listJobsAvail.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); listJobsAvail.setBorder(null); pnlCompare = new JPanel(); tabbedPane.addTab("Productivity Comparison", null, pnlCompare, "Productivity comparison data & graphs"); tabbedPane.setEnabledAt(3, true); pnlCompare.setLayout(null); pnlResults = new JPanel(); pnlResults.setBorder( new TitledBorder(null, "Numerical Results", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlResults.setBounds(20, 72, 479, 134); pnlCompare.add(pnlResults); pnlResults.setLayout(null); lblOutputLength = new JLabel("Output length over time period:"); lblOutputLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblOutputLength.setEnabled(false); lblOutputLength.setToolTipText("Quantity produced"); lblOutputLength.setBounds(220, 54, 152, 14); pnlResults.add(lblOutputLength); lblOutputWeight = new JLabel("Output weight over time period:"); lblOutputWeight.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblOutputWeight.setEnabled(false); lblOutputWeight.setToolTipText("Quantity produced"); lblOutputWeight.setBounds(220, 79, 162, 14); pnlResults.add(lblOutputWeight); cmbTimeRef = new JComboBox(); cmbTimeRef.setEnabled(false); cmbTimeRef.setToolTipText("Select a time range to display results over"); cmbTimeRef.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Refresh analyses UpdateNumericalAnalysis(); } }); cmbTimeRef.setModel( new DefaultComboBoxModel(new String[] { "Schedule", "Year", "Hour", "Shift", "Day"/*, "Week"*/ })); cmbTimeRef.setBounds(247, 98, 125, 24); pnlResults.add(cmbTimeRef); lblPer = new JLabel("Per:"); lblPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPer.setEnabled(false); lblPer.setBounds(220, 103, 20, 14); pnlResults.add(lblPer); lblAverageMmin = new JLabel("Average rate:"); lblAverageMmin.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAverageMmin.setEnabled(false); lblAverageMmin.setToolTipText("Average quantity processed"); lblAverageMmin.setBounds(20, 54, 95, 14); pnlResults.add(lblAverageMmin); lblNumericsWeight = new JLabel("0.0 tons"); lblNumericsWeight.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsWeight.setEnabled(false); lblNumericsWeight.setToolTipText("Quantity produced"); lblNumericsWeight.setBounds(380, 79, 89, 14); pnlResults.add(lblNumericsWeight); lblNumericsLength = new JLabel("0.0 metres"); lblNumericsLength.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsLength.setEnabled(false); lblNumericsLength.setToolTipText("Quantity produced"); lblNumericsLength.setBounds(380, 54, 89, 14); pnlResults.add(lblNumericsLength); lblNumericsRate = new JLabel("0.0 m/hr"); lblNumericsRate.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsRate.setEnabled(false); lblNumericsRate.setToolTipText("Average quantity processed"); lblNumericsRate.setBounds(128, 54, 82, 14); pnlResults.add(lblNumericsRate); lblEfficiency = new JLabel("Machine running:"); lblEfficiency.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblEfficiency.setEnabled(false); lblEfficiency.setToolTipText("Proportion of total time for which the machine is running"); lblEfficiency.setBounds(20, 104, 95, 14); pnlResults.add(lblEfficiency); cmbMachines = new JComboBox(); cmbMachines.setMaximumRowCount(15); cmbMachines.setFont(new Font("Tahoma", Font.BOLD, 11)); cmbMachines.setEnabled(false); cmbMachines.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateNumericalAnalysis(); } }); cmbMachines.setToolTipText("Select machine"); cmbMachines.setBounds(128, 20, 244, 24); pnlResults.add(cmbMachines); lblMachine = new JLabel("Select Machine:"); lblMachine.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblMachine.setEnabled(false); lblMachine.setToolTipText("Select machine"); lblMachine.setBounds(20, 25, 77, 14); pnlResults.add(lblMachine); lblNumericsEff = new JLabel("0.0 %"); lblNumericsEff.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblNumericsEff.setEnabled(false); lblNumericsEff.setToolTipText("Machine efficiency"); lblNumericsEff.setBounds(128, 104, 65, 14); pnlResults.add(lblNumericsEff); lblscheduletimelbl = new JLabel("Time to run schedule:"); lblscheduletimelbl.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblscheduletimelbl.setToolTipText("Time to run schedule"); lblscheduletimelbl.setEnabled(false); lblscheduletimelbl.setBounds(20, 79, 103, 14); pnlResults.add(lblscheduletimelbl); lblscheduletime = new JLabel("0.0 hr"); lblscheduletime.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblscheduletime.setToolTipText("Time to run schedule"); lblscheduletime.setEnabled(false); lblscheduletime.setBounds(128, 79, 77, 14); pnlResults.add(lblscheduletime); pnlROI = new JPanel(); tabbedPane.addTab("Return on Investment", (Icon) null, pnlROI, "Return on investment comparison and analysis"); pnlROI.setLayout(null); tabbedPane.setEnabledAt(4, true); lblProductivityComparison = new JLabel("Productivity Comparison"); lblProductivityComparison.setFont(new Font("Tahoma", Font.BOLD, 18)); lblProductivityComparison.setBounds(29, 18, 269, 22); pnlCompare.add(lblProductivityComparison); lblSelectMultipleMachines = new JLabel( "Select multiple machines from the list on the right, then compare them below"); lblSelectMultipleMachines.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSelectMultipleMachines.setBounds(29, 45, 433, 14); pnlCompare.add(lblSelectMultipleMachines); label_2 = new JLabel("Machines"); label_2.setFont(new Font("Tahoma", Font.BOLD, 12)); label_2.setBounds(522, 19, 85, 14); pnlCompare.add(label_2); pnlProdGraph = new JPanel(); pnlProdGraph.setBounds(20, 222, 479, 274); pnlCompare.add(pnlProdGraph); pnlProdGraph.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Graphical Results", TitledBorder.LEADING, TitledBorder.TOP, null, null)); pnlProdGraph.setLayout(null); btnShowGraph = new JButton("Open Graph"); btnShowGraph.setFont(new Font("Tahoma", Font.BOLD, 11)); btnShowGraph.setToolTipText("Open graph in new window"); btnShowGraph.setEnabled(false); btnShowGraph.setBounds(366, 51, 99, 39); pnlProdGraph.add(btnShowGraph); btnSaveToFile = new JButton("Save to File"); btnSaveToFile.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnSaveToFile.setToolTipText("Save image to disk"); btnSaveToFile.setEnabled(false); btnSaveToFile.addActionListener(SaveActionListener); btnSaveToFile.setBounds(366, 97, 99, 24); pnlProdGraph.add(btnSaveToFile); pnlPreview = new JPanel(); pnlPreview.setBackground(Color.WHITE); pnlPreview.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlPreview.setBounds(21, 51, 335, 205); pnlProdGraph.add(pnlPreview); pnlPreview.setLayout(null); pnlGraph = new ChartPanel(chart); pnlGraph.setBounds(2, 2, 331, 201); //pnlGraph.setPreferredSize(new java.awt.Dimension(243, 171)); pnlPreview.add(pnlGraph); try { picLabel = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } picLabel.setBounds(2, 2, 331, 201); pnlPreview.add(picLabel); pnlGraph.setVisible(false); lblPreview = new JLabel("Graph Preview"); lblPreview.setForeground(Color.DARK_GRAY); lblPreview.setFont(new Font("Tahoma", Font.BOLD, 12)); lblPreview.setEnabled(false); lblPreview.setBounds(21, 24, 99, 16); pnlProdGraph.add(lblPreview); lblType = new JLabel("Graph Type:"); lblType.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblType.setEnabled(false); lblType.setToolTipText("Choose measurement type"); lblType.setBounds(184, 26, 65, 14); pnlProdGraph.add(lblType); btnShowTimings = new JButton("Machine Runs"); btnShowTimings.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnShowTimings.setToolTipText("Show timing diagram for a single machine run"); btnShowTimings.setEnabled(false); btnShowTimings.addActionListener(new BtnShowTimingsActionListener()); btnShowTimings.setBounds(366, 201, 99, 24); pnlProdGraph.add(btnShowTimings); btnDowntime = new JButton("Productivity"); btnDowntime.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnDowntime.setToolTipText("View productivity breakdown charts for the selected machines"); btnDowntime.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ShowTimingBreakdown(); } }); btnDowntime.setEnabled(false); btnDowntime.setBounds(366, 232, 99, 24); pnlProdGraph.add(btnDowntime); lblbreakdown1 = new JLabel("Show timing"); lblbreakdown1.setEnabled(false); lblbreakdown1.setBounds(370, 166, 99, 14); pnlProdGraph.add(lblbreakdown1); lblbreakdown2 = new JLabel("breakdown for:"); lblbreakdown2.setEnabled(false); lblbreakdown2.setBounds(370, 182, 99, 14); pnlProdGraph.add(lblbreakdown2); panel_3 = new JPanel(); panel_3.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_3.setBounds(522, 459, 245, 37); pnlCompare.add(panel_3); panel_3.setLayout(null); btnNone = new JButton("None"); btnNone.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnNone.setEnabled(false); btnNone.setBounds(172, 7, 57, 23); panel_3.add(btnNone); btnNone.setToolTipText("Clear machine selection"); btnAll = new JButton("All"); btnAll.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnAll.setEnabled(false); btnAll.setBounds(105, 7, 57, 23); panel_3.add(btnAll); btnAll.setToolTipText("Select all machines"); lblSelect = new JLabel("Select:"); lblSelect.setEnabled(false); lblSelect.setBounds(37, 11, 46, 14); panel_3.add(lblSelect); scrollPane_3 = new JScrollPane(); scrollPane_3.setBorder(null); scrollPane_3.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_3.setBounds(522, 44, 245, 405); pnlCompare.add(scrollPane_3); panel_10 = new JPanel(); panel_10.setToolTipText( "Click a machine to select it. Select multiple machines to compare their performance under the chosen job schedule."); panel_10.setBackground(Color.WHITE); scrollPane_3.setViewportView(panel_10); panel_10.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_10.setLayout(new BorderLayout(0, 0)); listCompare = new JList(listModel); panel_10.add(listCompare, BorderLayout.NORTH); listCompare.setCellRenderer(new MachineListRenderer()); listCompare.setToolTipText( "Click a machine to select it. Select multiple machines to compare their performance under the chosen job schedule."); listCompare.setBorder(null); listCompare.addListSelectionListener(new MultiSelectionListener()); btnAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int[] count = new int[listModel.size()]; for (int i = 0; i < listModel.size(); ++i) count[i] = i; listCompare.setSelectedIndices(count); } }); btnNone.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { listCompare.clearSelection(); } }); btnShowGraph.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // TODO base on cmbGraphType: or not if just using chart /*PieChart test = new PieChart("title","this is a pie chart"); test.pack(); test.setVisible(true); test.setLocationRelativeTo(null);*/ JFrame popGraph = new JFrame(); JFreeChart chartBig = null; try { chartBig = (JFreeChart) chart.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } //chartBig.setTitle("Productivity Comparison"); ChartPanel cpanel = new ChartPanel(chartBig); cpanel.setPreferredSize(new java.awt.Dimension(500, 300)); popGraph.setContentPane(cpanel); try { popGraph.setIconImage(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/logo.png"))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e) { e.printStackTrace(); } popGraph.setTitle("Productivity Graph"); popGraph.setSize(450, 300); popGraph.pack(); popGraph.setVisible(true); popGraph.setLocationRelativeTo(frmTitanRoiCalculator); } }); cmbGraphType = new JComboBox(); cmbGraphType.setMaximumRowCount(10); cmbGraphType.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbGraphType.setEnabled(false); cmbGraphType.setToolTipText("Choose measurement type"); cmbGraphType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Refresh analyses UpdateGraph(); } }); cmbGraphType.setModel(new DefaultComboBoxModel(new String[] { "Schedule Time", "Length per Hour", "Weight per Hour", "Length per Year", "Weight per Year", "Run Percentage" })); cmbGraphType.setSelectedIndex(0); cmbGraphType.setBounds(251, 21, 105, 24); pnlProdGraph.add(cmbGraphType); lblReturnOnInvestment = new JLabel("Return on Investment"); lblReturnOnInvestment.setFont(new Font("Tahoma", Font.BOLD, 18)); lblReturnOnInvestment.setBounds(29, 18, 269, 22); pnlROI.add(lblReturnOnInvestment); lblSelectMultipleMachines_1 = new JLabel( "Select multiple machines from the list on the right, then compare them below"); lblSelectMultipleMachines_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSelectMultipleMachines_1.setBounds(29, 45, 433, 14); pnlROI.add(lblSelectMultipleMachines_1); lblCompareroiList = new JLabel("Machines"); lblCompareroiList.setFont(new Font("Tahoma", Font.BOLD, 12)); lblCompareroiList.setBounds(522, 19, 85, 14); pnlROI.add(lblCompareroiList); panel_4 = new JPanel(); panel_4.setLayout(null); panel_4.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_4.setBounds(522, 459, 245, 37); pnlROI.add(panel_4); btnROIselectnone = new JButton("None"); btnROIselectnone.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnROIselectnone.setEnabled(false); btnROIselectnone.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { listCompareRoi.clearSelection(); } }); btnROIselectnone.setToolTipText("Clear machine selection"); btnROIselectnone.setBounds(172, 7, 57, 23); panel_4.add(btnROIselectnone); btnROIselectall = new JButton("All"); btnROIselectall.setFont(new Font("Tahoma", Font.PLAIN, 11)); btnROIselectall.setEnabled(false); btnROIselectall.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int[] count = new int[listModel.size()]; for (int i = 0; i < listModel.size(); ++i) count[i] = i; listCompareRoi.setSelectedIndices(count); } }); btnROIselectall.setToolTipText("Select all machines"); btnROIselectall.setBounds(105, 7, 57, 23); panel_4.add(btnROIselectall); lblROIselect = new JLabel("Select:"); lblROIselect.setEnabled(false); lblROIselect.setBounds(37, 11, 46, 14); panel_4.add(lblROIselect); tabsROI = new JTabbedPane(JTabbedPane.TOP); tabsROI.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent arg0) { try { ResetStatusLabel(); } catch (NullPointerException e) { // Form is still initialising return; } int tab = tabsROI.getSelectedIndex(); switch (tab) { case 0: UpdateROIProd(); break; case 1: UpdateROIEnergy(); break; case 2: UpdateROIMaint(); break; case 3: UpdateROIWaste(); break; } } }); tabsROI.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); tabsROI.setBounds(29, 72, 470, 424); pnlROI.add(tabsROI); pnlProdROI = new JPanel(); pnlProdROI.setBackground(Color.WHITE); tabsROI.addTab("Productivity", null, pnlProdROI, "ROI based on productivity"); pnlProdROI.setLayout(null); lblThisToolIlllustrates = new JLabel( "This tool illlustrates the long-term financial benfits of particular machines and options in"); lblThisToolIlllustrates.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThisToolIlllustrates.setForeground(Color.GRAY); lblThisToolIlllustrates.setBounds(10, 11, 439, 14); pnlProdROI.add(lblThisToolIlllustrates); lblInTermsOf = new JLabel("terms of productivity gains."); lblInTermsOf.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblInTermsOf.setForeground(Color.GRAY); lblInTermsOf.setBounds(10, 27, 317, 14); pnlProdROI.add(lblInTermsOf); pnlGraphProd = new JPanel(); pnlGraphProd.setBackground(Color.WHITE); pnlGraphProd.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphProd.setBounds(10, 100, 439, 230); pnlProdROI.add(pnlGraphProd); pnlGraphProd.setLayout(null); pnlGraphProdInner = new ChartPanel(null); pnlGraphProdInner.setBounds(2, 2, 435, 226); //pnlGraphProd.add(pnlGraphProdInner); try { lblNoGraph = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph.setBounds(2, 2, 435, 226); pnlGraphProd.add(lblNoGraph); lblSellingPrice = new JLabel("Selling price:"); lblSellingPrice.setEnabled(false); lblSellingPrice.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblSellingPrice.setBounds(10, 52, 60, 14); pnlProdROI.add(lblSellingPrice); txtsellingprice = new JTextField(); txtsellingprice.setToolTipText("Average selling price of the material per unit weight"); txtsellingprice.setEnabled(false); txtsellingprice.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtsellingprice.selectAll(); } }); txtsellingprice.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent arg0) { } @Override public void insertUpdate(DocumentEvent arg0) { UpdateROIValue(); } @Override public void removeUpdate(DocumentEvent arg0) { UpdateROIValue(); } }); txtsellingprice.setFont(new Font("Tahoma", Font.PLAIN, 11)); txtsellingprice.setBounds(90, 49, 65, 20); pnlProdROI.add(txtsellingprice); txtsellingprice.setColumns(10); lblPerTonne = new JLabel("per tonne"); lblPerTonne.setEnabled(false); lblPerTonne.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPerTonne.setBounds(160, 52, 70, 14); pnlProdROI.add(lblPerTonne); lblContribution = new JLabel("Contribution:"); lblContribution.setEnabled(false); lblContribution.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblContribution.setBounds(10, 75, 70, 14); pnlProdROI.add(lblContribution); txtcontribution = new JTextField(); txtcontribution.setToolTipText("Contribution percentage"); txtcontribution.setEnabled(false); txtcontribution.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtcontribution.selectAll(); } }); txtcontribution.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { UpdateROIValue(); } @Override public void removeUpdate(DocumentEvent e) { UpdateROIValue(); } }); txtcontribution.setFont(new Font("Tahoma", Font.PLAIN, 11)); txtcontribution.setBounds(90, 73, 65, 20); pnlProdROI.add(txtcontribution); txtcontribution.setColumns(10); lblpercent = new JLabel("%"); lblpercent.setEnabled(false); lblpercent.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblpercent.setBounds(160, 76, 11, 14); pnlProdROI.add(lblpercent); lblValueAddedlbl = new JLabel("Value added:"); lblValueAddedlbl.setEnabled(false); lblValueAddedlbl.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblValueAddedlbl.setBounds(279, 52, 70, 14); pnlProdROI.add(lblValueAddedlbl); lblvalueadded = new JLabel("\u00A30.00 / tonne"); lblvalueadded.setToolTipText("Value added per unit weight"); lblvalueadded.setEnabled(false); lblvalueadded.setFont(new Font("Tahoma", Font.BOLD, 12)); lblvalueadded.setBounds(279, 71, 170, 20); pnlProdROI.add(lblvalueadded); cmbMarg1 = new JComboBox(); cmbMarg1.setToolTipText("Old machine"); cmbMarg1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIProd(); } }); cmbMarg1.setEnabled(false); cmbMarg1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMarg1.setBounds(10, 359, 111, 20); pnlProdROI.add(cmbMarg1); cmbMarg2 = new JComboBox(); cmbMarg2.setToolTipText("New machine"); cmbMarg2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIProd(); } }); cmbMarg2.setEnabled(false); cmbMarg2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMarg2.setBounds(141, 359, 111, 20); pnlProdROI.add(cmbMarg2); lblMarginalImprovement = new JLabel("\u00A30.00 per annum"); lblMarginalImprovement.setToolTipText("Marginal improvement"); lblMarginalImprovement.setEnabled(false); lblMarginalImprovement.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalImprovement.setBounds(279, 358, 170, 20); pnlProdROI.add(lblMarginalImprovement); lblSelectMachines = new JLabel("Select 2 machines to view the marginal improvement between them:"); lblSelectMachines.setForeground(Color.GRAY); lblSelectMachines.setFont(new Font("Tahoma", Font.BOLD, 11)); lblSelectMachines.setBounds(10, 338, 412, 14); pnlProdROI.add(lblSelectMachines); lblpound1 = new JLabel("\u00A3"); lblpound1.setEnabled(false); lblpound1.setBounds(80, 52, 11, 14); pnlProdROI.add(lblpound1); lblTo = new JLabel("to"); lblTo.setForeground(Color.GRAY); lblTo.setFont(new Font("Tahoma", Font.BOLD, 11)); lblTo.setBounds(125, 362, 16, 14); pnlProdROI.add(lblTo); label = new JLabel("="); label.setForeground(Color.GRAY); label.setFont(new Font("Tahoma", Font.BOLD, 13)); label.setBounds(259, 362, 11, 14); pnlProdROI.add(label); pnlEnergy = new JPanel(); pnlEnergy.setBackground(Color.WHITE); tabsROI.addTab("Energy Efficiency", null, pnlEnergy, "ROI based on machine power usage"); pnlEnergy.setLayout(null); lblThisToolHighlights = new JLabel( "This tool highlights power consumption differences between machines, and the resulting"); lblThisToolHighlights.setForeground(Color.GRAY); lblThisToolHighlights.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThisToolHighlights.setBounds(10, 11, 439, 14); pnlEnergy.add(lblThisToolHighlights); lblImpactOnFinancial = new JLabel("impact on financial returns."); lblImpactOnFinancial.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblImpactOnFinancial.setForeground(Color.GRAY); lblImpactOnFinancial.setBounds(10, 27, 439, 14); pnlEnergy.add(lblImpactOnFinancial); rdbtnAveragePower = new JRadioButton("Average power"); rdbtnAveragePower.setToolTipText("Select \"average power\" input type"); rdbtnAveragePower.setFont(new Font("Tahoma", Font.PLAIN, 11)); rdbtnAveragePower.setEnabled(false); rdbtnAveragePower.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { ClearPowerTxts(); txtaveragepower.setEnabled(true); txthourlyusage.setEnabled(false); txtannualusage.setEnabled(false); lblKw.setEnabled(true); lblKwh.setEnabled(false); lblKwh_1.setEnabled(false); txtaveragepower.requestFocusInWindow(); UpdateEnergyData(); } }); rdbtnAveragePower.setSelected(true); rdbtnAveragePower.setBackground(Color.WHITE); rdbtnAveragePower.setBounds(349, 44, 109, 23); pnlEnergy.add(rdbtnAveragePower); rdbtnHourlyUsage = new JRadioButton("Hourly usage"); rdbtnHourlyUsage.setToolTipText("Select \"hourly usage\" input type"); rdbtnHourlyUsage.setFont(new Font("Tahoma", Font.PLAIN, 11)); rdbtnHourlyUsage.setEnabled(false); rdbtnHourlyUsage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ClearPowerTxts(); txtaveragepower.setEnabled(false); txthourlyusage.setEnabled(true); txtannualusage.setEnabled(false); lblKw.setEnabled(false); lblKwh.setEnabled(true); lblKwh_1.setEnabled(false); txthourlyusage.requestFocusInWindow(); UpdateEnergyData(); } }); rdbtnHourlyUsage.setBackground(Color.WHITE); rdbtnHourlyUsage.setBounds(349, 70, 109, 23); pnlEnergy.add(rdbtnHourlyUsage); rdbtnAnnualUsage = new JRadioButton("Annual usage"); rdbtnAnnualUsage.setToolTipText("Select \"annual usage\" input type"); rdbtnAnnualUsage.setFont(new Font("Tahoma", Font.PLAIN, 11)); rdbtnAnnualUsage.setEnabled(false); rdbtnAnnualUsage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ClearPowerTxts(); txtaveragepower.setEnabled(false); txthourlyusage.setEnabled(false); txtannualusage.setEnabled(true); lblKw.setEnabled(false); lblKwh.setEnabled(false); lblKwh_1.setEnabled(true); txtannualusage.requestFocusInWindow(); UpdateEnergyData(); } }); rdbtnAnnualUsage.setBackground(Color.WHITE); rdbtnAnnualUsage.setBounds(349, 97, 109, 23); pnlEnergy.add(rdbtnAnnualUsage); rdbtnsPower.add(rdbtnAveragePower); rdbtnsPower.add(rdbtnHourlyUsage); rdbtnsPower.add(rdbtnAnnualUsage); lblEnergyCostl = new JLabel("Energy cost:"); lblEnergyCostl.setEnabled(false); lblEnergyCostl.setFont(new Font("Tahoma", Font.BOLD, 11)); lblEnergyCostl.setBounds(10, 101, 72, 14); pnlEnergy.add(lblEnergyCostl); lblpound2 = new JLabel("\u00A3"); lblpound2.setEnabled(false); lblpound2.setFont(new Font("Tahoma", Font.PLAIN, 12)); lblpound2.setBounds(91, 100, 13, 14); pnlEnergy.add(lblpound2); txtenergycost = new JTextField(); txtenergycost.setToolTipText("Raw energy cost, per kWh"); txtenergycost.setEnabled(false); txtenergycost.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtenergycost.selectAll(); } }); txtenergycost.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateROIEnergy(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateROIEnergy(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtenergycost.setFont(new Font("Tahoma", Font.PLAIN, 12)); txtenergycost.setBounds(102, 98, 74, 20); pnlEnergy.add(txtenergycost); txtenergycost.setColumns(10); lblPerKwh = new JLabel("per kWh"); lblPerKwh.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPerKwh.setEnabled(false); lblPerKwh.setBounds(179, 101, 46, 14); pnlEnergy.add(lblPerKwh); txtaveragepower = new JTextField(); txtaveragepower.setToolTipText("Average power in kW"); txtaveragepower.setEnabled(false); txtaveragepower.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateEnergyData(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateEnergyData(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtaveragepower.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtaveragepower.selectAll(); } }); txtaveragepower.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { if (!txtaveragepower.isEnabled()) { rdbtnAveragePower.doClick(); } } } }); txtaveragepower.setBounds(233, 47, 86, 20); pnlEnergy.add(txtaveragepower); txtaveragepower.setColumns(10); txthourlyusage = new JTextField(); txthourlyusage.setToolTipText("Average hourly energy usage"); txthourlyusage.setEnabled(false); txthourlyusage.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void insertUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void changedUpdate(DocumentEvent e) { } }); txthourlyusage.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txthourlyusage.selectAll(); } }); txthourlyusage.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { if (!txthourlyusage.isEnabled()) rdbtnHourlyUsage.doClick(); } } }); txthourlyusage.setColumns(10); txthourlyusage.setBounds(233, 73, 86, 20); pnlEnergy.add(txthourlyusage); txtannualusage = new JTextField(); txtannualusage.setToolTipText("Average annual energy usage"); txtannualusage.setEnabled(false); txtannualusage.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void insertUpdate(DocumentEvent e) { UpdateEnergyData(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtannualusage.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtannualusage.selectAll(); } }); txtannualusage.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { if (!txtannualusage.isEnabled()) rdbtnAnnualUsage.doClick(); } } }); txtannualusage.setColumns(10); txtannualusage.setBounds(233, 99, 86, 20); pnlEnergy.add(txtannualusage); cmbMachineEnergy = new JComboBox(); cmbMachineEnergy.setEnabled(false); cmbMachineEnergy.setToolTipText("Select machine to edit"); cmbMachineEnergy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateEnergyView(); } }); cmbMachineEnergy.setBounds(69, 46, 152, 23); pnlEnergy.add(cmbMachineEnergy); lblMachine_1 = new JLabel("Machine:"); lblMachine_1.setEnabled(false); lblMachine_1.setFont(new Font("Tahoma", Font.BOLD, 11)); lblMachine_1.setBounds(10, 50, 59, 14); pnlEnergy.add(lblMachine_1); lblKw = new JLabel("kW"); lblKw.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKw.setEnabled(false); lblKw.setBounds(323, 50, 15, 14); pnlEnergy.add(lblKw); lblKwh = new JLabel("kWh"); lblKwh.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKwh.setEnabled(false); lblKwh.setBounds(323, 76, 26, 14); pnlEnergy.add(lblKwh); lblKwh_1 = new JLabel("MWh"); lblKwh_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKwh_1.setEnabled(false); lblKwh_1.setBounds(323, 102, 26, 14); pnlEnergy.add(lblKwh_1); pnlGraphEnergy = new JPanel(); pnlGraphEnergy.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphEnergy.setBackground(Color.WHITE); pnlGraphEnergy.setBounds(10, 126, 439, 226); pnlEnergy.add(pnlGraphEnergy); pnlGraphEnergy.setLayout(null); try { lblNoGraph2 = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph2.setBounds(2, 2, 435, 222); pnlGraphEnergy.add(lblNoGraph2); lblPleaseSetPower = new JLabel("Please set power usage for each machine"); lblPleaseSetPower.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPleaseSetPower.setEnabled(false); lblPleaseSetPower.setForeground(Color.GRAY); lblPleaseSetPower.setBounds(10, 74, 215, 14); pnlEnergy.add(lblPleaseSetPower); lblMarginalEnergy = new JLabel("\u00A30.00 per annum"); lblMarginalEnergy.setToolTipText("Marginal improvement"); lblMarginalEnergy.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalEnergy.setEnabled(false); lblMarginalEnergy.setBounds(279, 358, 170, 20); pnlEnergy.add(lblMarginalEnergy); label_4 = new JLabel("="); label_4.setForeground(Color.GRAY); label_4.setFont(new Font("Tahoma", Font.BOLD, 13)); label_4.setBounds(259, 362, 11, 14); pnlEnergy.add(label_4); cmbMargEnergy2 = new JComboBox(); cmbMargEnergy2.setToolTipText("New machine"); cmbMargEnergy2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIEnergy(); } }); cmbMargEnergy2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargEnergy2.setEnabled(false); cmbMargEnergy2.setBounds(141, 359, 111, 20); pnlEnergy.add(cmbMargEnergy2); label_5 = new JLabel("to"); label_5.setForeground(Color.GRAY); label_5.setFont(new Font("Tahoma", Font.BOLD, 11)); label_5.setBounds(125, 362, 16, 14); pnlEnergy.add(label_5); cmbMargEnergy1 = new JComboBox(); cmbMargEnergy1.setToolTipText("Old machine"); cmbMargEnergy1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateROIEnergy(); } }); cmbMargEnergy1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargEnergy1.setEnabled(false); cmbMargEnergy1.setBounds(10, 359, 111, 20); pnlEnergy.add(cmbMargEnergy1); pnlMaint = new JPanel(); pnlMaint.setBackground(Color.WHITE); tabsROI.addTab("Maintenance", null, pnlMaint, "ROI based on maintenance costs"); tabsROI.setMnemonicAt(2, 65); pnlMaint.setLayout(null); lblThisToolDemonstrates_1 = new JLabel( "This tool demonstrates the maintenance reduction benefits of machines."); lblThisToolDemonstrates_1.setBounds(10, 11, 421, 14); lblThisToolDemonstrates_1.setForeground(Color.GRAY); lblThisToolDemonstrates_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); pnlMaint.add(lblThisToolDemonstrates_1); lblMaintenanceHoursPer = new JLabel("Annual downtime:"); lblMaintenanceHoursPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblMaintenanceHoursPer.setEnabled(false); lblMaintenanceHoursPer.setBounds(10, 64, 86, 14); pnlMaint.add(lblMaintenanceHoursPer); lblRepairCostsPer = new JLabel("Labour costs per hour:"); lblRepairCostsPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblRepairCostsPer.setEnabled(false); lblRepairCostsPer.setBounds(255, 36, 111, 14); pnlMaint.add(lblRepairCostsPer); lblPartsCostsPer = new JLabel("Parts costs per year:"); lblPartsCostsPer.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPartsCostsPer.setEnabled(false); lblPartsCostsPer.setBounds(255, 64, 101, 14); pnlMaint.add(lblPartsCostsPer); cmbMachinesmaintenance = new JComboBox(); cmbMachinesmaintenance.setEnabled(false); cmbMachinesmaintenance.setToolTipText("Please set maintenance costs for each machine"); cmbMachinesmaintenance.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ViewMaintCosts(); } }); cmbMachinesmaintenance.setBounds(79, 30, 152, 23); pnlMaint.add(cmbMachinesmaintenance); txtmaintenancehours = new JTextField(); txtmaintenancehours.setToolTipText("Hours per year for which machine is not running due to maintenance"); txtmaintenancehours.setEnabled(false); txtmaintenancehours.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtmaintenancehours.selectAll(); } }); txtmaintenancehours.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void insertUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtmaintenancehours.setBounds(106, 61, 67, 20); pnlMaint.add(txtmaintenancehours); txtmaintenancehours.setColumns(10); txtmaintenanceperhour = new JTextField(); txtmaintenanceperhour.setToolTipText("Hourly labour costs for maintenance"); txtmaintenanceperhour.setEnabled(false); txtmaintenanceperhour.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtmaintenanceperhour.selectAll(); } }); txtmaintenanceperhour.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void insertUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtmaintenanceperhour.setColumns(10); txtmaintenanceperhour.setBounds(382, 33, 67, 20); pnlMaint.add(txtmaintenanceperhour); txtmaintenanceparts = new JTextField(); txtmaintenanceparts.setToolTipText("Annual cost of maintenance parts for this machine"); txtmaintenanceparts.setEnabled(false); txtmaintenanceparts.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtmaintenanceparts.selectAll(); } }); txtmaintenanceparts.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void insertUpdate(DocumentEvent e) { UpdateMaintCosts(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtmaintenanceparts.setColumns(10); txtmaintenanceparts.setBounds(382, 61, 67, 20); pnlMaint.add(txtmaintenanceparts); lbltotalmaintcost = new JLabel("\u00A30.00 / year"); lbltotalmaintcost.setToolTipText("Total annual spend on maintenance for this machine (labour + parts)"); lbltotalmaintcost.setForeground(Color.GRAY); lbltotalmaintcost.setEnabled(false); lbltotalmaintcost.setHorizontalAlignment(SwingConstants.LEFT); lbltotalmaintcost.setFont(new Font("Tahoma", Font.BOLD, 11)); lbltotalmaintcost.setBounds(344, 87, 105, 14); pnlMaint.add(lbltotalmaintcost); lblpound10 = new JLabel("\u00A3"); lblpound10.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblpound10.setEnabled(false); lblpound10.setBounds(373, 36, 11, 14); pnlMaint.add(lblpound10); lblpound11 = new JLabel("\u00A3"); lblpound11.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblpound11.setEnabled(false); lblpound11.setBounds(373, 64, 11, 14); pnlMaint.add(lblpound11); pnlGraphMaint = new JPanel(); pnlGraphMaint.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphMaint.setBackground(Color.WHITE); pnlGraphMaint.setBounds(10, 110, 439, 242); pnlMaint.add(pnlGraphMaint); pnlGraphMaint.setLayout(null); try { lblNoGraph3 = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph3.setBounds(2, 2, 435, 238); pnlGraphMaint.add(lblNoGraph3); cmbMargMaint1 = new JComboBox(); cmbMargMaint1.setToolTipText("Old machine"); cmbMargMaint1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIMaint(); } }); cmbMargMaint1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargMaint1.setEnabled(false); cmbMargMaint1.setBounds(10, 359, 111, 20); pnlMaint.add(cmbMargMaint1); label_8 = new JLabel("to"); label_8.setForeground(Color.GRAY); label_8.setFont(new Font("Tahoma", Font.BOLD, 11)); label_8.setBounds(125, 362, 16, 14); pnlMaint.add(label_8); cmbMargMaint2 = new JComboBox(); cmbMargMaint2.setToolTipText("New machine"); cmbMargMaint2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIMaint(); } }); cmbMargMaint2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargMaint2.setEnabled(false); cmbMargMaint2.setBounds(141, 359, 111, 20); pnlMaint.add(cmbMargMaint2); label_9 = new JLabel("="); label_9.setForeground(Color.GRAY); label_9.setFont(new Font("Tahoma", Font.BOLD, 13)); label_9.setBounds(259, 362, 11, 14); pnlMaint.add(label_9); lblMarginalMaint = new JLabel("\u00A30.00 per annum"); lblMarginalMaint.setToolTipText("Marginal improvement"); lblMarginalMaint.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalMaint.setEnabled(false); lblMarginalMaint.setBounds(279, 358, 170, 20); pnlMaint.add(lblMarginalMaint); lblProdLoss = new JLabel("\u00A30.00 / year"); lblProdLoss.setToolTipText("Loss in production value due to downtime"); lblProdLoss.setForeground(Color.GRAY); lblProdLoss.setEnabled(false); lblProdLoss.setHorizontalAlignment(SwingConstants.LEFT); lblProdLoss.setFont(new Font("Tahoma", Font.BOLD, 11)); lblProdLoss.setBounds(106, 87, 125, 14); pnlMaint.add(lblProdLoss); lblHrs_1 = new JLabel("hrs"); lblHrs_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblHrs_1.setEnabled(false); lblHrs_1.setBounds(180, 64, 16, 14); pnlMaint.add(lblHrs_1); label_10 = new JLabel("Machine:"); label_10.setEnabled(false); label_10.setFont(new Font("Tahoma", Font.BOLD, 11)); label_10.setBounds(10, 34, 59, 14); pnlMaint.add(label_10); label_11 = new JLabel("="); label_11.setEnabled(false); label_11.setForeground(Color.GRAY); label_11.setFont(new Font("Tahoma", Font.BOLD, 13)); label_11.setBounds(88, 87, 11, 14); pnlMaint.add(label_11); label_12 = new JLabel("="); label_12.setEnabled(false); label_12.setForeground(Color.GRAY); label_12.setFont(new Font("Tahoma", Font.BOLD, 13)); label_12.setBounds(323, 87, 11, 14); pnlMaint.add(label_12); lblAnnualTotal = new JLabel("Annual total"); lblAnnualTotal.setEnabled(false); lblAnnualTotal.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAnnualTotal.setBounds(255, 87, 67, 14); pnlMaint.add(lblAnnualTotal); lblProductionLoss = new JLabel("Production loss"); lblProductionLoss.setEnabled(false); lblProductionLoss.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblProductionLoss.setBounds(10, 87, 77, 14); pnlMaint.add(lblProductionLoss); pnlWaste = new JPanel(); pnlWaste.setBackground(Color.WHITE); tabsROI.addTab("Waste Reduction", null, pnlWaste, "ROI based on waste reduction"); pnlWaste.setLayout(null); lblThisToolDemonstrates = new JLabel( "This tool demonstrates the waste reduction capabilities of particular machines."); lblThisToolDemonstrates.setForeground(Color.GRAY); lblThisToolDemonstrates.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblThisToolDemonstrates.setBounds(10, 11, 439, 14); pnlWaste.add(lblThisToolDemonstrates); lblWasteSavedPer_1 = new JLabel("Waste saved per splice due to flag detection camera:"); lblWasteSavedPer_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblWasteSavedPer_1.setEnabled(false); lblWasteSavedPer_1.setBounds(10, 39, 256, 14); pnlWaste.add(lblWasteSavedPer_1); txtwastesavedflags = new JTextField(); txtwastesavedflags.setToolTipText("Saving per splice"); txtwastesavedflags.setEnabled(false); txtwastesavedflags.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtwastesavedflags.selectAll(); } }); txtwastesavedflags.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void insertUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtwastesavedflags.setBounds(286, 36, 86, 20); pnlWaste.add(txtwastesavedflags); txtwastesavedflags.setColumns(10); lblM_1 = new JLabel("m"); lblM_1.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblM_1.setEnabled(false); lblM_1.setBounds(378, 39, 46, 14); pnlWaste.add(lblM_1); lblWasteSavedPer_2 = new JLabel("Waste saved per mother roll due to alignment guide:"); lblWasteSavedPer_2.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblWasteSavedPer_2.setEnabled(false); lblWasteSavedPer_2.setBounds(10, 64, 256, 14); pnlWaste.add(lblWasteSavedPer_2); txtwastesavedguide = new JTextField(); txtwastesavedguide.setToolTipText("Saving per mother roll"); txtwastesavedguide.setEnabled(false); txtwastesavedguide.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void insertUpdate(DocumentEvent e) { UpdateROIWaste(); } @Override public void changedUpdate(DocumentEvent e) { } }); txtwastesavedguide.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtwastesavedguide.selectAll(); } }); txtwastesavedguide.setBounds(286, 61, 86, 20); pnlWaste.add(txtwastesavedguide); txtwastesavedguide.setColumns(10); lblM_2 = new JLabel("m"); lblM_2.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblM_2.setEnabled(false); lblM_2.setBounds(378, 64, 46, 14); pnlWaste.add(lblM_2); pnlGraphWaste = new JPanel(); pnlGraphWaste.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); pnlGraphWaste.setBackground(Color.WHITE); pnlGraphWaste.setBounds(10, 90, 439, 262); pnlWaste.add(pnlGraphWaste); pnlGraphWaste.setLayout(null); try { lblNoGraph4 = new JLabel( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/no_preview.png")))); } catch (IOException e2) { e2.printStackTrace(); } lblNoGraph4.setBounds(2, 2, 435, 258); pnlGraphWaste.add(lblNoGraph4); cmbMargWaste1 = new JComboBox(); cmbMargWaste1.setToolTipText("Old machine"); cmbMargWaste1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIWaste(); } }); cmbMargWaste1.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargWaste1.setEnabled(false); cmbMargWaste1.setBounds(10, 359, 111, 20); pnlWaste.add(cmbMargWaste1); label_1 = new JLabel("to"); label_1.setForeground(Color.GRAY); label_1.setFont(new Font("Tahoma", Font.BOLD, 11)); label_1.setBounds(125, 362, 16, 14); pnlWaste.add(label_1); cmbMargWaste2 = new JComboBox(); cmbMargWaste2.setToolTipText("New machine"); cmbMargWaste2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateROIWaste(); } }); cmbMargWaste2.setFont(new Font("Tahoma", Font.PLAIN, 11)); cmbMargWaste2.setEnabled(false); cmbMargWaste2.setBounds(141, 359, 111, 20); pnlWaste.add(cmbMargWaste2); label_6 = new JLabel("="); label_6.setForeground(Color.GRAY); label_6.setFont(new Font("Tahoma", Font.BOLD, 13)); label_6.setBounds(259, 362, 11, 14); pnlWaste.add(label_6); lblMarginalWaste = new JLabel("0.00m per annum"); lblMarginalWaste.setToolTipText("Marginal improvement"); lblMarginalWaste.setFont(new Font("Tahoma", Font.BOLD, 13)); lblMarginalWaste.setEnabled(false); lblMarginalWaste.setBounds(279, 355, 170, 16); pnlWaste.add(lblMarginalWaste); lblMarginalWasteValue = new JLabel("(\u00A30.00 per annum)"); lblMarginalWasteValue.setToolTipText("Marginal improvement value"); lblMarginalWasteValue.setForeground(Color.GRAY); lblMarginalWasteValue.setFont(new Font("Tahoma", Font.BOLD, 11)); lblMarginalWasteValue.setBounds(279, 370, 170, 16); pnlWaste.add(lblMarginalWasteValue); machNames = new HashSet<String>(); jobNames = new HashSet<String>(); lblStatus = new JLabel(" Ready."); lblStatus.setFont(new Font("Tahoma", Font.PLAIN, 12)); frmTitanRoiCalculator.getContentPane().add(lblStatus, BorderLayout.SOUTH); lblmmin = new JLabel("(m/min)"); lblmmin.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblmmin.setEnabled(false); lblmmin.setBounds(206, 168, 44, 14); pnlJobs.add(lblmmin); objfilter = new OBJfilter(1); // labels for unit conversion labs = new JLabel[7]; labs[0] = lblmm0; labs[1] = lblmm1; labs[2] = lblmm2; labs[3] = lblgm3; labs[4] = lblmm3; labs[5] = lblmicro0; lblGsm = new JLabel("(gsm)"); lblGsm.setToolTipText("Switch the input type for density between gsm and g/cc"); lblGsm.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblGsm.setEnabled(false); lblGsm.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (lblGsm.isEnabled() && lblGsm.contains(arg0.getPoint())) { jobFormReady = false; try { //double oldval = Double.parseDouble(txtDensity.getText()); //double thickness = Double.parseDouble(txtThickness.getText()); double oldval = ((Job) listJobs.getSelectedValue()).getDensity(); double thickness = ((Job) listJobs.getSelectedValue()).getThickness(); if (lblGsm.getText().equals("(gsm)")) { lblGsm.setText("(g/cc)"); label_3.setVisible(false); lblgm3.setText("(gsm)"); txtDensity.setText(Double.toString(roundTwoDecimals(oldval * thickness))); ((Job) listJobs.getSelectedValue()).gsm = true; } else { lblGsm.setText("(gsm)"); label_3.setVisible(true); lblgm3.setText("(g/cm )"); txtDensity.setText(Double.toString(roundTwoDecimals(oldval))); ((Job) listJobs.getSelectedValue()).gsm = false; } } catch (Exception e) { lblGsm.setText("(gsm)"); label_3.setVisible(true); lblgm3.setText("(g/cm )"); txtDensity.setText("0.92"); } jobFormReady = true; } } @Override public void mouseEntered(MouseEvent arg0) { lblGsm.setForeground(new Color(0, 0, 128)); } @Override public void mouseExited(MouseEvent e) { lblGsm.setForeground(Color.black); } }); lblGsm.setForeground(new Color(0, 0, 0)); lblGsm.setCursor(new Cursor(Cursor.HAND_CURSOR)); lblGsm.setBounds(177, 102, 46, 14); pnlMaterials.add(lblGsm); lblOr = new JLabel("or:"); lblOr.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblOr.setEnabled(false); lblOr.setBounds(155, 102, 14, 14); pnlMaterials.add(lblOr); labs[6] = lblmmin; cmbUnwindType = new JComboBox(); cmbUnwindType.setToolTipText("Type of measure to use for the unwind quantity above"); cmbUnwindType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateUnwindAmount(); } }); cmbUnwindType.setEnabled(false); cmbUnwindType .setModel(new DefaultComboBoxModel(new String[] { "Length (m)", "Weight (kg)", "Diameter (mm)" })); cmbUnwindType.setBounds(92, 124, 95, 20); pnlUnwinds.add(cmbUnwindType); txtWebWidth = new JTextField(); txtWebWidth.setToolTipText("Width of mother rolls"); txtWebWidth.setText("1350"); txtWebWidth.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtWebWidth.selectAll(); } }); txtWebWidth.setEnabled(false); txtWebWidth.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJob(); } @Override public void changedUpdate(DocumentEvent arg0) { } }); txtWebWidth.setBounds(92, 26, 86, 20); pnlUnwinds.add(txtWebWidth); txtWebWidth.setColumns(10); lblAverageFlags = new JLabel("Average Flags:"); lblAverageFlags.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAverageFlags.setToolTipText("The average number of flags in each mother roll"); lblAverageFlags.setEnabled(false); lblAverageFlags.setBounds(14, 79, 75, 14); pnlUnwinds.add(lblAverageFlags); txtFlagCount = new JTextField(); txtFlagCount.setToolTipText("The average number of flags in each mother roll"); txtFlagCount.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { txtFlagCount.selectAll(); } }); txtFlagCount.getDocument().addDocumentListener(new JobInputChangeListener()); txtFlagCount.setEnabled(false); txtFlagCount.setText("1"); txtFlagCount.setBounds(92, 76, 43, 20); pnlUnwinds.add(txtFlagCount); txtFlagCount.setColumns(10); lblPerRoll = new JLabel("per roll"); lblPerRoll.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblPerRoll.setEnabled(false); lblPerRoll.setBounds(140, 79, 46, 14); pnlUnwinds.add(lblPerRoll); txtLimitRunSpeed = new JTextField(); txtLimitRunSpeed.setToolTipText( "Override for top machine speed (may be required for particular materials or environments)"); txtLimitRunSpeed.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent arg0) { if (txtLimitRunSpeed.contains(arg0.getPoint())) { txtLimitRunSpeed.setEnabled(true); chckbxLimitRunSpeed.setSelected(true); txtLimitRunSpeed.requestFocusInWindow(); txtLimitRunSpeed.selectAll(); UpdateJob(); } } }); txtLimitRunSpeed.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { if (txtLimitRunSpeed.isEnabled()) { txtLimitRunSpeed.selectAll(); chckbxLimitRunSpeed.setSelected(true); } } }); txtLimitRunSpeed.getDocument().addDocumentListener(new JobInputChangeListener()); txtLimitRunSpeed.setEnabled(false); txtLimitRunSpeed.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { chckbxLimitRunSpeed.setSelected(true); } }); txtLimitRunSpeed.setText("800"); txtLimitRunSpeed.setColumns(10); txtLimitRunSpeed.setBounds(130, 165, 65, 20); pnlJobs.add(txtLimitRunSpeed); cmbRewindType = new JComboBox(); cmbRewindType.setToolTipText("Type of measure to use for rewind output above"); cmbRewindType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateRewindAmount(); //UpdateJob(); } }); cmbRewindType.setEnabled(false); cmbRewindType .setModel(new DefaultComboBoxModel(new String[] { "Length (m)", "Weight (kg)", "Diameter (mm)" })); cmbRewindType.setBounds(109, 218, 95, 20); pnlJobs.add(cmbRewindType); chckbxLimitRunSpeed = new JCheckBox(""); chckbxLimitRunSpeed.setToolTipText( "Override for top machine speed (may be required for particular materials or environments)"); chckbxLimitRunSpeed.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (chckbxLimitRunSpeed.isSelected()) { txtLimitRunSpeed.setEnabled(true); txtLimitRunSpeed.requestFocusInWindow(); txtLimitRunSpeed.selectAll(); } else { txtLimitRunSpeed.setEnabled(false); } UpdateJob(); } }); chckbxLimitRunSpeed.setEnabled(false); chckbxLimitRunSpeed.setBounds(105, 164, 20, 20); pnlJobs.add(chckbxLimitRunSpeed); lblLimitRunSpeed = new JLabel("Speed Limit:"); lblLimitRunSpeed.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblLimitRunSpeed.setToolTipText( "Override for top machine speed (may be required for particular materials or environments)"); lblLimitRunSpeed.setEnabled(false); lblLimitRunSpeed.setBounds(47, 168, 59, 14); pnlJobs.add(lblLimitRunSpeed); lblKnifeType = new JLabel("Knife Type:"); lblKnifeType.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblKnifeType.setToolTipText("Select knife type for this job"); lblKnifeType.setEnabled(false); lblKnifeType.setHorizontalAlignment(SwingConstants.RIGHT); lblKnifeType.setBounds(46, 89, 59, 14); pnlJobs.add(lblKnifeType); cmbKnifeType = new JComboBox(); cmbKnifeType.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { UpdateJob(); } }); cmbKnifeType.setModel(new DefaultComboBoxModel(new String[] { "Razor in Air", "Rotary Shear" })); cmbKnifeType.setToolTipText("Select knife type for this job"); cmbKnifeType.setEnabled(false); cmbKnifeType.setBounds(109, 86, 95, 20); pnlJobs.add(cmbKnifeType); tabbedPane.setMnemonicAt(0, KeyEvent.VK_M); tabbedPane.setMnemonicAt(1, KeyEvent.VK_J); tabbedPane.setMnemonicAt(2, KeyEvent.VK_S); tabbedPane.setMnemonicAt(3, KeyEvent.VK_P); tabbedPane.setMnemonicAt(4, KeyEvent.VK_R); tabsROI.setMnemonicAt(0, KeyEvent.VK_D); tabsROI.setMnemonicAt(1, KeyEvent.VK_N); tabsROI.setMnemonicAt(3, KeyEvent.VK_W); scrollPane_4 = new JScrollPane(); scrollPane_4.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_4.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_4.setBorder(null); scrollPane_4.setBounds(522, 44, 245, 405); pnlROI.add(scrollPane_4); panel_11 = new JPanel(); panel_11.setToolTipText( "Click a machine to select it. Select two or more machines to compare their ROI measures."); scrollPane_4.setViewportView(panel_11); panel_11.setBackground(Color.WHITE); panel_11.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_11.setLayout(new BorderLayout(0, 0)); listCompareRoi = new JList(listModel); panel_11.add(listCompareRoi, BorderLayout.NORTH); listCompareRoi.setToolTipText( "Click a machine to select it. Select two or more machines to compare their ROI measures."); listCompareRoi.setBorder(null); listCompareRoi.setSelectionModel(new DefaultListSelectionModel() { private static final long serialVersionUID = 1L; boolean gestureStarted = false; @Override public void setSelectionInterval(int index0, int index1) { if (!gestureStarted) { if (isSelectedIndex(index0)) { super.removeSelectionInterval(index0, index1); } else { super.addSelectionInterval(index0, index1); } } gestureStarted = true; } @Override public void setValueIsAdjusting(boolean isAdjusting) { if (isAdjusting == false) { gestureStarted = false; } } }); listCompareRoi.addListSelectionListener(new ROIListSelectionListener()); listCompareRoi.setCellRenderer(new MachineListRenderer()); listCompare.setSelectionModel(listCompareRoi.getSelectionModel()); btnJobUp = new JButton(""); btnJobUp.setToolTipText("Move job up"); btnJobUp.addActionListener(new JobUpListener()); try { btnJobUp.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up.png")))); btnJobUp.setRolloverEnabled(true); btnJobUp.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_over.png")))); btnJobUp.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/up_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnJobUp.setEnabled(false); btnJobUp.setBounds(700, 463, 30, 30); pnlJob.add(btnJobUp); btnJobDown = new JButton(""); btnJobDown.setToolTipText("Move job down"); btnJobDown.addActionListener(new JobDownListener()); try { btnJobDown.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down.png")))); btnJobDown.setRolloverEnabled(true); btnJobDown.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_over.png")))); btnJobDown.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/down_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnJobDown.setEnabled(false); btnJobDown.setBounds(737, 463, 30, 30); pnlJob.add(btnJobDown); btnNewJob = new JButton("Add New"); btnNewJob.setFont(new Font("Tahoma", Font.BOLD, 11)); btnNewJob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jobFormReady = false; ResetStatusLabel(); EnableJobForm(); // new ResetJobForm(); lblGsm.setText("(gsm)"); label_3.setVisible(true); lblgm3.setText("(g/cm )"); txtDensity.setText("0.92"); btnJobDelete.setEnabled(true); btnAddAll.setEnabled(true); /*if(listJobs.getSelectedIndex() == 0) btnJobUp.setEnabled(false); else btnJobUp.setEnabled(true); if(listJobs.getSelectedIndex() == jobModel.getSize()-1) btnJobDown.setEnabled(false); else btnJobDown.setEnabled(true);*/ int index = listJobs.getSelectedIndex(); int size = jobModel.getSize(); if (size >= Consts.JOB_LIST_LIMIT) { // Max list size ShowMessage("Maximum number of jobs allocated. Please delete before attempting to add more."); return; } String newName = getUniqueJobName("Job"); txtJobName.setText(newName); job = new Job(newName); jobNames.add(newName.toLowerCase()); //If no selection or if item in last position is selected, //add the new one to end of list, and select new one. if (index == -1 || (index + 1 == size)) { jobModel.addElement(job); listJobs.setSelectedIndex(size); listJobsAvail.setSelectedIndex(size); if (size > 0) btnJobUp.setEnabled(true); //Otherwise insert the new one after the current selection, //and select new one. } else { jobModel.insertElementAt(job, index + 1); listJobs.setSelectedIndex(index + 1); listJobsAvail.setSelectedIndex(index + 1); } // TODO don't reset form, or add copy button ResetStatusLabel(); jobFormReady = true; UpdateJob(); txtJobName.requestFocusInWindow(); } }); try { btnNewJob.setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/plus.png")))); } catch (IOException e1) { e1.printStackTrace(); } btnNewJob.setToolTipText("Add new job"); btnNewJob.setBounds(522, 460, 110, 36); pnlJob.add(btnNewJob); lblJobConfiguration = new JLabel("Job Configuration"); lblJobConfiguration.setFont(new Font("Tahoma", Font.BOLD, 18)); lblJobConfiguration.setBounds(29, 18, 269, 22); pnlJob.add(lblJobConfiguration); btnJobDelete = new JButton(""); btnJobDelete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetStatusLabel(); Job selected = (Job) listJobs.getSelectedValue(); jobNames.remove(selected.getName().toLowerCase()); ListSelectionModel lsm = listJobs.getSelectionModel(); int firstSelected = lsm.getMinSelectionIndex(); int lastSelected = lsm.getMaxSelectionIndex(); jobModel.removeRange(firstSelected, lastSelected); int size = jobModel.size(); if (size == 0) { //List is empty: disable delete, up, and down buttons. /*btnJobDelete.setEnabled(false); btnJobUp.setEnabled(false); btnJobDown.setEnabled(false);*/ } else { //Adjust the selection. if (firstSelected == jobModel.getSize()) { //Removed item in last position. firstSelected--; } listJobs.setSelectedIndex(firstSelected); if (size == 21) { // No longer full list ResetStatusLabel(); } job = (Job) listJobs.getSelectedValue(); } } }); try { btnJobDelete .setIcon(new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete.png")))); btnJobDelete.setRolloverEnabled(true); btnJobDelete.setRolloverIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_over.png")))); btnJobDelete.setDisabledIcon( new ImageIcon(ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/delete_dis.png")))); } catch (NullPointerException e11) { System.out.println("Image load error"); } catch (IOException e1) { e1.printStackTrace(); } btnJobDelete.setToolTipText("Delete job"); btnJobDelete.setRolloverEnabled(true); btnJobDelete.setEnabled(false); btnJobDelete.setBounds(651, 460, 36, 36); pnlJob.add(btnJobDelete); lblAddNewJobs = new JLabel( "Add new jobs to the list on the right, then configure unwind, rewind and material settings below"); lblAddNewJobs.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblAddNewJobs.setBounds(29, 45, 483, 14); pnlJob.add(lblAddNewJobs); lblJobs = new JLabel("Jobs"); lblJobs.setFont(new Font("Tahoma", Font.BOLD, 12)); lblJobs.setBounds(522, 19, 85, 14); pnlJob.add(lblJobs); panel_1 = new JPanel(); panel_1.setLayout(null); panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Total Output", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel_1.setBounds(280, 380, 227, 116); pnlJob.add(panel_1); lblTargetOutputFor = new JLabel("Target output for job:"); lblTargetOutputFor.setEnabled(false); lblTargetOutputFor.setBounds(30, 22, 129, 14); panel_1.add(lblTargetOutputFor); txtTargetTotal = new JTextField(); txtTargetTotal.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtTargetTotal.selectAll(); } }); txtTargetTotal.getDocument().addDocumentListener(new JobInputChangeListener()); txtTargetTotal.setToolTipText("Total output quantity for this job"); txtTargetTotal.setText("10000"); txtTargetTotal.setEnabled(false); txtTargetTotal.setColumns(10); txtTargetTotal.setBounds(30, 43, 118, 20); panel_1.add(txtTargetTotal); cmbTargetTotal = new JComboBox(); cmbTargetTotal.setToolTipText("Type of measure to use for output quantity above"); cmbTargetTotal.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { UpdateTotalsAmount(); } }); cmbTargetTotal.setModel( new DefaultComboBoxModel(new String[] { "Length (m)", "Weight (kg)", "Weight (tonnes)" })); cmbTargetTotal.setEnabled(false); cmbTargetTotal.setBounds(30, 67, 118, 20); panel_1.add(cmbTargetTotal); lblCounts = new JLabel("0 reel(s), 0 set(s), 0 mother(s)"); lblCounts.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblCounts.setForeground(Color.GRAY); lblCounts.setBounds(30, 92, 187, 14); panel_1.add(lblCounts); panel_2 = new JPanel(); panel_2.setLayout(null); panel_2.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Name", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); panel_2.setBounds(20, 72, 250, 83); pnlJob.add(panel_2); txtJobName = new JTextField(); txtJobName.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { txtJobName.selectAll(); } }); txtJobName.setBounds(90, 30, 145, 28); panel_2.add(txtJobName); txtJobName.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent arg0) { } @Override public void insertUpdate(DocumentEvent arg0) { UpdateJobName(); } @Override public void removeUpdate(DocumentEvent arg0) { UpdateJobName(); } }); txtJobName.setToolTipText("Set the name of this job"); txtJobName.setFont(new Font("Tahoma", Font.BOLD, 12)); txtJobName.setEnabled(false); txtJobName.setColumns(10); lblJobName = new JLabel("Job name:"); lblJobName.setToolTipText("Set the name of this job"); lblJobName.setEnabled(false); lblJobName.setBounds(22, 31, 60, 24); panel_2.add(lblJobName); lblJobName.setFont(new Font("Tahoma", Font.PLAIN, 13)); btnResetJobs = new JButton("Reset"); btnResetJobs.setBounds(20, 460, 100, 36); pnlJob.add(btnResetJobs); btnResetJobs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ResetJobForm(); UpdateJob(); } }); btnResetJobs.setToolTipText("Reset the form"); btnResetJobs.setEnabled(false); scrollPane_1 = new JScrollPane(); scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); scrollPane_1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); scrollPane_1.setBorder(null); scrollPane_1.setBounds(522, 44, 245, 405); pnlJob.add(scrollPane_1); panel_7 = new JPanel(); panel_7.setToolTipText("Select a job to edit options, re-order, or delete"); scrollPane_1.setViewportView(panel_7); panel_7.setBackground(Color.WHITE); panel_7.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, Color.LIGHT_GRAY, null, null, null)); panel_7.setLayout(new BorderLayout(0, 0)); listJobs = new JList(jobModel); listJobs.setSelectionModel(listJobsAvail.getSelectionModel()); panel_7.add(listJobs, BorderLayout.NORTH); listJobs.setToolTipText("Select a job to edit options, re-order, or delete"); listJobs.addListSelectionListener(new JobListSelectionListener()); listJobs.setBorder(null); listJobs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); listJobs.setCellRenderer(new JobListRenderer()); pnlJob.setFocusTraversalPolicy(new FocusTraversalOnArray( new Component[] { cmbMaterials, txtThickness, txtDensity, cmbUnwindCore, txtUnwindAmount, txtSlits, txtSlitWidth, cmbRewindCore, txtRewindAmount, cmbJobDomain, lblPresets, lblThickness_1, lblDensity_1, pnlMaterials, lblWebWidthmm, lblmm0, lblUnwindCoremm, lblmm1, lblUnwindLength, pnlUnwinds, lblmicro0, lblgm3, label_3, pnlJobs, lblTargetRewindLength, lblSlitWidth, lblSlitCount, lblTrimtotal, lblTrim, lblRewindCoremm, lblPer_1, lblmm3, lblmm2 })); Image img = null; try { img = ImageIO.read(FrmMain.class.getResourceAsStream("/atlas/refresh.png")); } catch (IOException e1) { e1.printStackTrace(); } BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics g = bi.createGraphics(); g.drawImage(img, 0, 0, 25, 25, null); LoadSettings(); DoLicenceCheck(); initialising = false; }
From source file:org.eclipse.om2m.ipe.sample.gui.GUI.java
/** * Creates the frame./*from w w w.ja v a 2 s . c o m*/ */ public GUI() { setLocationByPlatform(true); setVisible(false); setResizable(false); setTitle("Sample Simulated IPE"); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width - 500) / 2, (screenSize.height - 570) / 2, 497, 570); contentPanel = new JPanel(); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPanel); contentPanel.setLayout(null); // Lamp0 Switcher0 JPanel panel_Lamp0 = new JPanel(); panel_Lamp0.setBounds(10, 5, 319, 260); contentPanel.add(panel_Lamp0); panel_Lamp0.setBorder(new LineBorder(new Color(0, 0, 0), 1, true)); panel_Lamp0.setLayout(null); LABEL_LAMP_0.setIcon(iconLampOFF); LABEL_LAMP_0.setHorizontalTextPosition(SwingConstants.CENTER); LABEL_LAMP_0.setHorizontalAlignment(SwingConstants.CENTER); LABEL_LAMP_0.setBounds(10, 9, 149, 240); panel_Lamp0.add(LABEL_LAMP_0); // Lamp0 Switch Button JButton button_Lamp0 = new JButton(); button_Lamp0.setOpaque(false); button_Lamp0.setPressedIcon(iconButtonON); button_Lamp0.setIcon(iconButtonOFF); button_Lamp0.setBounds(187, 44, 122, 155); panel_Lamp0.add(button_Lamp0); button_Lamp0.setMinimumSize(new Dimension(30, 23)); button_Lamp0.setMaximumSize(new Dimension(30, 23)); button_Lamp0.setPreferredSize(new Dimension(30, 23)); JLabel labelSwitcher0 = new JLabel("Switch LAMP_0"); labelSwitcher0.setFont(new Font("Vani", Font.BOLD | Font.ITALIC, 14)); labelSwitcher0.setFocusCycleRoot(true); labelSwitcher0.setBorder(null); labelSwitcher0.setAutoscrolls(true); labelSwitcher0.setBounds(187, 199, 118, 29); panel_Lamp0.add(labelSwitcher0); // Listener for Lamp0 Switch Button button_Lamp0.addActionListener(new java.awt.event.ActionListener() { // Button Clicked public void actionPerformed(java.awt.event.ActionEvent evt) { // Change Lamp0 State new Thread() { public void run() { // Send switch request to switch lamp0 state SampleMonitor.switchLamp(LAMP_0); } }.start(); } }); // Lamp1 Switcher 1 JPanel panel_Lamp1 = new JPanel(); panel_Lamp1.setBounds(10, 271, 319, 260); contentPanel.add(panel_Lamp1); panel_Lamp1.setBorder(new LineBorder(new Color(0, 0, 0), 1, true)); panel_Lamp1.setLayout(null); LABEL_LAMP_1.setIcon(iconLampOFF); LABEL_LAMP_1.setHorizontalTextPosition(SwingConstants.CENTER); LABEL_LAMP_1.setHorizontalAlignment(SwingConstants.CENTER); LABEL_LAMP_1.setBounds(10, 9, 154, 240); panel_Lamp1.add(LABEL_LAMP_1); // Lamp1 Switch Button JButton button_Lamp1 = new JButton(); button_Lamp1.setOpaque(false); button_Lamp1.setPressedIcon(iconButtonON); button_Lamp1.setIcon(iconButtonOFF); button_Lamp1.setBounds(187, 44, 122, 156); panel_Lamp1.add(button_Lamp1); button_Lamp1.setMinimumSize(new Dimension(30, 23)); button_Lamp1.setMaximumSize(new Dimension(30, 23)); button_Lamp1.setPreferredSize(new Dimension(30, 23)); JLabel labelSwitcher1 = new JLabel("Switch LAMP_1"); labelSwitcher1.setFont(new Font("Vani", Font.BOLD | Font.ITALIC, 14)); labelSwitcher1.setFocusCycleRoot(true); labelSwitcher1.setBorder(null); labelSwitcher1.setAutoscrolls(true); labelSwitcher1.setBounds(187, 199, 118, 29); panel_Lamp1.add(labelSwitcher1); // Listener for Lamp1 Switch Button button_Lamp1.addActionListener(new java.awt.event.ActionListener() { //Switch Button clicked public void actionPerformed(java.awt.event.ActionEvent evt) { // Change Lamp1 State new Thread() { public void run() { // Send switch request to switch lamp1 state SampleMonitor.switchLamp(LAMP_1); } }.start(); } }); // Switcher All lamps JButton buttonAllLamp = new JButton(); buttonAllLamp.setOpaque(false); buttonAllLamp.setPressedIcon(iconButtonON); buttonAllLamp.setIcon(iconButtonOFF); buttonAllLamp.setBounds(339, 190, 145, 168); contentPanel.add(buttonAllLamp); buttonAllLamp.setMinimumSize(new Dimension(30, 23)); buttonAllLamp.setMaximumSize(new Dimension(30, 23)); buttonAllLamp.setPreferredSize(new Dimension(30, 23)); JLabel labelSwitchAll = new JLabel("Switch All"); labelSwitchAll.setAutoscrolls(true); labelSwitchAll.setFont(new Font("Vani", Font.BOLD | Font.ITALIC, 14)); labelSwitchAll.setFocusCycleRoot(true); labelSwitchAll.setBorder(null); labelSwitchAll.setBounds(371, 369, 85, 29); contentPanel.add(labelSwitchAll); // Listener of Switch all Button buttonAllLamp.addActionListener(new java.awt.event.ActionListener() { // Switch Button Clicked public void actionPerformed(java.awt.event.ActionEvent evt) { // Change all lamps states new Thread() { public void run() { // Send switch all request to create a content with the current State SampleMonitor.switchAll(); } }.start(); } }); lampObserver = new SampleModel.LampObserver() { @Override public void onLampStateChange(String lampId, boolean state) { setLabel(lampId, state); } }; SampleModel.addObserver(lampObserver); }
From source file:org.eclipse.om2m.ipu.sample.GUI.java
/** * Creates the frame.//from ww w. j a va 2s . c om */ public GUI() { setLocationByPlatform(true); setResizable(false); setTitle("Sample Simulated IPU"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width - 500) / 2, (screenSize.height - 570) / 2, 497, 570); contentPanel = new JPanel(); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPanel); contentPanel.setLayout(null); // Lamp0 Switcher0 JPanel panel_Lamp0 = new JPanel(); panel_Lamp0.setBounds(10, 5, 319, 260); contentPanel.add(panel_Lamp0); panel_Lamp0.setBorder(new LineBorder(new Color(0, 0, 0), 1, true)); panel_Lamp0.setLayout(null); LABEL_LAMP_0.setIcon(iconLampOFF); LABEL_LAMP_0.setHorizontalTextPosition(SwingConstants.CENTER); LABEL_LAMP_0.setHorizontalAlignment(SwingConstants.CENTER); LABEL_LAMP_0.setBounds(10, 9, 149, 240); panel_Lamp0.add(LABEL_LAMP_0); // Lamp0 Switch Button JButton button_Lamp0 = new JButton(); button_Lamp0.setOpaque(false); button_Lamp0.setPressedIcon(iconButtonON); button_Lamp0.setIcon(iconButtonOFF); button_Lamp0.setBounds(187, 44, 122, 155); panel_Lamp0.add(button_Lamp0); button_Lamp0.setMinimumSize(new Dimension(30, 23)); button_Lamp0.setMaximumSize(new Dimension(30, 23)); button_Lamp0.setPreferredSize(new Dimension(30, 23)); JLabel labelSwitcher0 = new JLabel("Switch LAMP_0"); labelSwitcher0.setFont(new Font("Vani", Font.BOLD | Font.ITALIC, 14)); labelSwitcher0.setFocusCycleRoot(true); labelSwitcher0.setBorder(null); labelSwitcher0.setAutoscrolls(true); labelSwitcher0.setBounds(187, 199, 118, 29); panel_Lamp0.add(labelSwitcher0); // Listener for Lamp0 Switch Button button_Lamp0.addActionListener(new java.awt.event.ActionListener() { // Button Clicked public void actionPerformed(java.awt.event.ActionEvent evt) { // Change Lamp0 State new Thread() { public void run() { // Send switch request to switch lamp0 state Switchs.switchLamp(LAMP_0, !SampleMonitor.LAMPS.get(LAMP_0).getState()); } }.start(); } }); // Lamp1 Switcher 1 JPanel panel_Lamp1 = new JPanel(); panel_Lamp1.setBounds(10, 271, 319, 260); contentPanel.add(panel_Lamp1); panel_Lamp1.setBorder(new LineBorder(new Color(0, 0, 0), 1, true)); panel_Lamp1.setLayout(null); LABEL_LAMP_1.setIcon(iconLampOFF); LABEL_LAMP_1.setHorizontalTextPosition(SwingConstants.CENTER); LABEL_LAMP_1.setHorizontalAlignment(SwingConstants.CENTER); LABEL_LAMP_1.setBounds(10, 9, 154, 240); panel_Lamp1.add(LABEL_LAMP_1); // Lamp1 Switch Button JButton button_Lamp1 = new JButton(); button_Lamp1.setOpaque(false); button_Lamp1.setPressedIcon(iconButtonON); button_Lamp1.setIcon(iconButtonOFF); button_Lamp1.setBounds(187, 44, 122, 156); panel_Lamp1.add(button_Lamp1); button_Lamp1.setMinimumSize(new Dimension(30, 23)); button_Lamp1.setMaximumSize(new Dimension(30, 23)); button_Lamp1.setPreferredSize(new Dimension(30, 23)); JLabel labelSwitcher1 = new JLabel("Switch LAMP_1"); labelSwitcher1.setFont(new Font("Vani", Font.BOLD | Font.ITALIC, 14)); labelSwitcher1.setFocusCycleRoot(true); labelSwitcher1.setBorder(null); labelSwitcher1.setAutoscrolls(true); labelSwitcher1.setBounds(187, 199, 118, 29); panel_Lamp1.add(labelSwitcher1); // Listener for Lamp1 Switch Button button_Lamp1.addActionListener(new java.awt.event.ActionListener() { //Switch Button clicked public void actionPerformed(java.awt.event.ActionEvent evt) { // Change Lamp1 State new Thread() { public void run() { // Send switch request to switch lamp1 state Switchs.switchLamp(LAMP_1, !SampleMonitor.LAMPS.get(LAMP_1).getState()); } }.start(); } }); // Switcher All lamps JButton buttonAllLamp = new JButton(); buttonAllLamp.setOpaque(false); buttonAllLamp.setPressedIcon(iconButtonON); buttonAllLamp.setIcon(iconButtonOFF); buttonAllLamp.setBounds(339, 190, 145, 168); contentPanel.add(buttonAllLamp); buttonAllLamp.setMinimumSize(new Dimension(30, 23)); buttonAllLamp.setMaximumSize(new Dimension(30, 23)); buttonAllLamp.setPreferredSize(new Dimension(30, 23)); JLabel labelSwitchAll = new JLabel("Switch All"); labelSwitchAll.setAutoscrolls(true); labelSwitchAll.setFont(new Font("Vani", Font.BOLD | Font.ITALIC, 14)); labelSwitchAll.setFocusCycleRoot(true); labelSwitchAll.setBorder(null); labelSwitchAll.setBounds(371, 369, 85, 29); contentPanel.add(labelSwitchAll); // Listener of Switch all Button buttonAllLamp.addActionListener(new java.awt.event.ActionListener() { // Switch Button Clicked public void actionPerformed(java.awt.event.ActionEvent evt) { // Change all lamps states new Thread() { public void run() { // Send switch all request to create a content with the current State Switchs.switchAll(!(SampleMonitor.LAMPS.get(LAMP_0).getState() && SampleMonitor.LAMPS.get(LAMP_1).getState())); } }.start(); } }); }
From source file:org.ow2.aspirerfid.demos.warehouse.management.UI.WMS.java
/** * Initialize the contents of the frame/*from w w w.j a va2 s . c o m*/ */ private void initialize() { final JLabel entryDateLabel_2; final JLabel entryDateLabel_3_1_1; final JScrollPane scrollPane; final JButton printReportButton; final JButton saveReportButton; final JButton clearReportButton; frame = new JFrame(); frame.setResizable(false); frame.addWindowListener(new FrameWindowListener()); frame.getContentPane().setLayout(new BorderLayout()); frame.setTitle("Warehouse Management"); frame.setBounds(100, 100, 757, 625); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); tabbedPane = new JTabbedPane(); frame.getContentPane().add(tabbedPane); deliveryTableModel = new DefaultTableModel();// All Clients Items deliveryTableModel.addColumn("Company"); deliveryTableModel.addColumn("Item Code"); deliveryTableModel.addColumn("Description"); deliveryTableModel.addColumn("Quantity Delivered"); deliveryTableModel.addColumn("Expected Quantity"); deliveryTableModel.addColumn("Quantity Remain"); deliveryTableModel.addColumn("Delivery Date"); deliveryTableModel.addColumn("Measurement ID"); deliveryInfoModel = new DefaultTableModel();// All Clients Items deliveryInfoModel.addColumn("Company"); deliveryInfoModel.addColumn("Item Code"); deliveryInfoModel.addColumn("Description"); deliveryInfoModel.addColumn("Expected Quantity"); deliveryInfoModel.addColumn("Measurement ID"); shipmentPanel = new JPanel(); shipmentPanel.setLayout(null); tabbedPane.addTab("Shipment", null, shipmentPanel, null); submitShipmentButton = new JButton(); submitShipmentButton.addActionListener(new SubmitShipmentButtonActionListener()); submitShipmentButton.setText("Submit"); submitShipmentButton.setBounds(275, 89, 112, 25); shipmentPanel.add(submitShipmentButton); final JLabel selectAvaiableInvoiceLabel = new JLabel(); selectAvaiableInvoiceLabel.setText("Select avaiable invoice to track"); selectAvaiableInvoiceLabel.setBounds(58, 26, 195, 15); shipmentPanel.add(selectAvaiableInvoiceLabel); shipmentsCb = new JComboBox(); shipmentsCb.setModel(new DefaultComboBoxModel(new String[] {})); shipmentsCb.setSelectedItem(null); shipmentsCb.addActionListener(new ShipmentsCbActionListener()); shipmentsCb.setBounds(269, 21, 382, 24); shipmentPanel.add(shipmentsCb); final JPanel panel = new JPanel(); panel.setLayout(null); panel.setBorder(new TitledBorder(null, "Shipment information", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); panel.setBounds(10, 170, 722, 327); shipmentPanel.add(panel); final JScrollPane scrollPane_1 = new JScrollPane(); scrollPane_1.setBounds(10, 27, 702, 300); panel.add(scrollPane_1); deliveryInfo = new JTable(deliveryInfoModel); deliveryInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane_1.setViewportView(deliveryInfo); deliveryPanel = new JPanel(); deliveryPanel.setLayout(null); tabbedPane.addTab("Delivery Counter", null, deliveryPanel, null); entryDateLabel_2 = new JLabel(); entryDateLabel_2.setText("Invoice ID "); entryDateLabel_2.setBounds(10, 23, 117, 16); deliveryPanel.add(entryDateLabel_2); entryDateLabel_3_1_1 = new JLabel(); entryDateLabel_3_1_1.setText("Offering Date"); entryDateLabel_3_1_1.setBounds(391, 25, 117, 16); deliveryPanel.add(entryDateLabel_3_1_1); invoiceIDTextField = new JTextField(); invoiceIDTextField.setEditable(false); invoiceIDTextField.setBounds(105, 21, 270, 20); deliveryPanel.add(invoiceIDTextField); offeringDateTextField = new JTextField(); offeringDateTextField.setEditable(false); offeringDateTextField.setBounds(511, 23, 230, 20); deliveryPanel.add(offeringDateTextField); scrollPane = new JScrollPane(); scrollPane.setBounds(10, 81, 731, 403); deliveryPanel.add(scrollPane); deliveryTable = new JTable(deliveryTableModel); deliveryTable.setFont(new Font("Arial Narrow", Font.PLAIN, 10)); deliveryTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scrollPane.setViewportView(deliveryTable); printReportButton = new JButton(); printReportButton.setText("Print Report"); printReportButton.setBounds(459, 520, 117, 26); deliveryPanel.add(printReportButton); saveReportButton = new JButton(); saveReportButton.setText("Save Report"); saveReportButton.setBounds(213, 520, 117, 26); deliveryPanel.add(saveReportButton); clearReportButton = new JButton(); clearReportButton.addMouseListener(new ClearReportButtonMouseListener()); clearReportButton.setText("Clear Report"); clearReportButton.setBounds(336, 520, 117, 26); deliveryPanel.add(clearReportButton); }