/* * Copyright 2011 Research In Motion Limited. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * NewJFrame.java * * Created on Oct 12, 2011, 12:22:15 AM */ package eclserver; /** * * @author rbalsewich */ //import com.sun.xml.internal.ws.message.stream.StreamAttachment; import java.io.File; import java.util.Random; import java.util.Vector; import java.util.regex.Pattern; import java.net.URL; import java.util.List; import javax.swing.ImageIcon; import java.awt.Image; import javax.swing.SwingUtilities; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.sql.Connection; import java.util.HashMap; import javax.swing.JProgressBar; import javax.swing.JOptionPane; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.InetAddress; import eclserver.db.objects.BesListDao; import eclserver.db.objects.WebListDao; import eclserver.db.objects.RecListDao; import eclserver.db.objects.ContactsDao; import eclserver.db.objects.GroupsDao; import eclserver.db.ConnectionFactory; import eclserver.db.objects.ServerObject; import eclserver.db.objects.RecipientObject; import eclserver.db.objects.AddressObject; import eclserver.db.objects.GroupObject; import eclserver.threads.RecipientBESMatch; import eclserver.threads.ContactsLoader; import eclserver.threads.RecipientsLoader; import eclserver.threads.ContactsPush; import eclserver.threads.EmergencyCallPush; import eclserver.threads.EmergencyNotifyPush; import java.rmi.UnknownHostException; public class NewJFrame extends javax.swing.JFrame implements ActionListener{ private static final long serialVersionUID = -1833425591727608149L; // private static final Random _r = new Random(System.currentTimeMillis()); // private static final boolean debug = false; // private static Vector errors = new Vector(); // private static Vector quotationErrors = new Vector(); public static final String CSV_PATTERN = "\"([^\"]+?)\",?|([^,]+),?|,"; // private static Pattern csvRE; private ConnectionFactory dbFactory; private Connection dbConn; private BesListDao besListDao; private WebListDao webListDao; private RecListDao recListDao; private ContactsDao addressDao; private GroupsDao groupsDao; private WindowAdapter windowAdapter; private HashMap screenProperties; private RecipientsLoader recipientsLoader; private ContactsLoader contactsLoader; private RecipientBESMatch recipientBesMatcher; private ContactsPush contactsPusher; private EmergencyCallPush emergencyCallPusher; private EmergencyNotifyPush emergencyNotifyPusher; private ProgressListener listenerLoadingContacts; private String computerName; /** Creates new form NewJFrame */ public NewJFrame() { this.setTitle("RIM Push Application Sample"); initComponents(); loadFrameIcon(); windowAdapter = new WindowCloser(); this.addWindowListener(windowAdapter); try { computerName=InetAddress.getLocalHost().getHostName(); // System.out.println(computerName); dbFactory = new ConnectionFactory(); if(dbFactory.connect()){ System.out.println("Connection Established...populating application.\n"); dbConn = dbFactory.getConnection(); System.out.println("Building BES Lists.\n"); //DAO config panel: BES LIST config_BESList.addActionListener(this); besListDao = new BesListDao(dbConn); List<ServerObject> besEntries = besListDao.getListEntries(); // System.out.println("Adding list entries from BES List DAO.\n"); config_BESList.addListEntries(besEntries); //DAO config panel: WEB LIST config_WebList.addActionListener(this); webListDao = new WebListDao(dbConn); List<ServerObject> webEntries = webListDao.getListEntries(); // System.out.println("Adding list entries from Web List DAO.\n"); config_WebList.addListEntries(webEntries); //DAO Contacts: Group Name groupListPanel.addActionListener(this); groupsDao = new GroupsDao(dbConn); List<GroupObject> groupEntries = groupsDao.getListEntries(); // System.out.println("Adding Group Names form Dao"); groupListPanel.addListEntries(groupEntries); //DAO emergency call panel recListDao = new RecListDao(dbConn); List<RecipientObject> recEntries = recListDao.getListEntries(); // System.out.println("Adding Recipients Names from Dao"); recipientsPanel.setRecipientsListEntries(recEntries); recipientsPanel.addActionListener(this); //DAO for Loaded Contacts - Contact Editor // System.out.println("Adding Contacts panel from Dao"); contactsPanel.addActionListener(this); addressDao = new ContactsDao(dbConn); List<AddressObject> entries = addressDao.getListEntries(); contactsPanel.setContactsListEntries(entries); contactsPickerPanel.addActionListener(this); //Emergency Call threading emergencyCallPanel.addActionListener(this); emergencyNotificationPanel.addActionListener(this); //Properties File: Screen Settings screenProperties = dbFactory.getScreenProperties(); this.setupConfigScreen(screenProperties); System.out.println("Done with Appication Setup.\n"); } else { JOptionPane.showMessageDialog(this, "Unable to connect to database.. exiting Application" ); System.exit(1); } }catch (Exception ex) { JOptionPane.showMessageDialog(this, "Major issue in NewJFrame: " + ex.getMessage()); System.out.println("MAIN EXCEPTION: " + ex.getMessage()); } } /** * Load our own "address book" icon into our frame window. */ private void loadFrameIcon() { URL imgUrl = null; ImageIcon imgIcon = null; imgUrl = NewJFrame.class.getResource("images/Burn.png"); imgIcon = new ImageIcon(imgUrl); Image img = imgIcon.getImage(); this.setIconImage(img); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jDialog1 = new javax.swing.JDialog(); jPanel13 = new javax.swing.JPanel(); jTabbedPane1 = new javax.swing.JTabbedPane(); CONFIGPANEL = new javax.swing.JPanel(); jPanel10 = new javax.swing.JPanel(); jLabel18 = new javax.swing.JLabel(); config_AppPort = new javax.swing.JTextField(); config_BESList = new eclserver.panels.BesListPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jPanel11 = new javax.swing.JPanel(); jLabel9 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); config_WebVD = new javax.swing.JTextField(); config_WebList = new eclserver.panels.WebListPanel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); config_btSave = new javax.swing.JButton(); config_btReset = new javax.swing.JButton(); RECIPIENTSEDITORPANEL = new javax.swing.JPanel(); recipientsPanel = new eclserver.panels.RecipientsPanel(); CONTACTSPANEL = new javax.swing.JPanel(); jPanel16 = new javax.swing.JPanel(); jLabel12 = new javax.swing.JLabel(); groupListPanel = new eclserver.panels.GroupListPanel(); jPanel32 = new javax.swing.JPanel(); jScrollPane8 = new javax.swing.JScrollPane(); contactsResultsArea = new javax.swing.JTextArea(); btnNukeContacts = new javax.swing.JButton(); btnPushContacts = new javax.swing.JButton(); contactsPickerPanel = new eclserver.panels.contactsPickerPanel(); jLabel5 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); btnLoadContacts = new javax.swing.JButton(); btnCancelContacts = new javax.swing.JButton(); jLabel21 = new javax.swing.JLabel(); CONTACTSEDITORPANEL = new javax.swing.JPanel(); jPanel14 = new javax.swing.JPanel(); contactsPanel = new eclserver.panels.ContactsPanel(); CALLPANEL = new javax.swing.JPanel(); emergencyCallPanel = new eclserver.panels.EmergencyCallPanel(); NOTIFYPANEL = new javax.swing.JPanel(); emergencyNotificationPanel = new eclserver.panels.EmergencyNotificationPanel(); MONITORPANEL = new javax.swing.JPanel(); ADMINPANEL = new javax.swing.JPanel(); jPanel21 = new javax.swing.JPanel(); jLabel15 = new javax.swing.JLabel(); jTextField8 = new javax.swing.JTextField(); jButton5 = new javax.swing.JButton(); jPanel26 = new javax.swing.JPanel(); jLabel17 = new javax.swing.JLabel(); jTextField10 = new javax.swing.JTextField(); jButton6 = new javax.swing.JButton(); jPanel27 = new javax.swing.JPanel(); jLabel19 = new javax.swing.JLabel(); jTextField12 = new javax.swing.JTextField(); jButton7 = new javax.swing.JButton(); jPanel28 = new javax.swing.JPanel(); jLabel20 = new javax.swing.JLabel(); jTextField13 = new javax.swing.JTextField(); jButton8 = new javax.swing.JButton(); recipientsPickerPanel1 = new eclserver.panels.recipientsPickerPanel(); jLabel11 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); progressLoadingContacts = new javax.swing.JProgressBar(); listenerLoadingContacts = new ProgressListener(progressLoadingContacts); javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane()); jDialog1.getContentPane().setLayout(jDialog1Layout); jDialog1Layout.setHorizontalGroup( jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 400, Short.MAX_VALUE) ); jDialog1Layout.setVerticalGroup( jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 300, Short.MAX_VALUE) ); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanel13.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); jPanel13.setMaximumSize(null); jTabbedPane1.setAutoscrolls(true); jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder("BlackBerry Enterprise Server")); jLabel18.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel18.setText("Application Listening Port:"); config_AppPort.setToolTipText("Enter App Push Listener Port: e.g 1234"); jLabel1.setFont(new java.awt.Font("Tahoma", 3, 11)); jLabel1.setText("Enter your BES in list below. e.g.: localhost:8080"); jLabel2.setText("If you have a centralized push server configured in your env"); jLabel3.setText("you only need to list it once."); jLabel4.setFont(new java.awt.Font("Tahoma", 3, 11)); jLabel4.setText("The Application Listening port is configured in the client code."); javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10); jPanel10.setLayout(jPanel10Layout); jPanel10Layout.setHorizontalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1) .addComponent(jLabel2) .addComponent(jLabel3) .addGroup(jPanel10Layout.createSequentialGroup() .addComponent(jLabel18) .addGap(18, 18, 18) .addComponent(config_AppPort, javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel4))) .addGroup(jPanel10Layout.createSequentialGroup() .addGap(34, 34, 34) .addComponent(config_BESList, javax.swing.GroupLayout.PREFERRED_SIZE, 251, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(56, Short.MAX_VALUE)) ); jPanel10Layout.setVerticalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel2) .addGap(3, 3, 3) .addComponent(jLabel3) .addGap(14, 14, 14) .addComponent(config_BESList, javax.swing.GroupLayout.PREFERRED_SIZE, 156, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(config_AppPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel18, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(33, 33, 33)) ); jPanel11.setBorder(javax.swing.BorderFactory.createTitledBorder("Web Server Configuration")); jLabel9.setText("List of Response Servers:"); jLabel14.setFont(new java.awt.Font("Tahoma", 0, 12)); jLabel14.setText("Web Server Virtual Directory:"); config_WebVD.setToolTipText("enter Application and Callback handler \"e.g.: /pbdr/CallBack.ashx\""); jLabel6.setFont(new java.awt.Font("Tahoma", 3, 11)); jLabel6.setText("The Virtual Directory must match for each server.*"); jLabel7.setFont(new java.awt.Font("Tahoma", 3, 11)); jLabel7.setText("If you want to track user responses, Response Server components"); jLabel10.setFont(new java.awt.Font("Tahoma", 3, 11)); jLabel10.setText("can be configured. Additional server code must be in place if used."); javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11); jPanel11.setLayout(jPanel11Layout); jPanel11Layout.setHorizontalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() .addGap(16, 16, 16) .addComponent(jLabel14) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(config_WebVD, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 388, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel10) .addComponent(jLabel9) .addGroup(jPanel11Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel6)) .addGroup(jPanel11Layout.createSequentialGroup() .addGap(34, 34, 34) .addComponent(config_WebList, javax.swing.GroupLayout.PREFERRED_SIZE, 262, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel11Layout.setVerticalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel11Layout.createSequentialGroup() .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(config_WebList, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(config_WebVD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel14)) .addGap(30, 30, 30)) ); config_btSave.setMnemonic('S'); config_btSave.setText("Save"); config_btSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { config_btSaveActionPerformed(evt); } }); config_btReset.setMnemonic('R'); config_btReset.setText("Reset"); config_btReset.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { config_btResetActionPerformed(evt); } }); javax.swing.GroupLayout CONFIGPANELLayout = new javax.swing.GroupLayout(CONFIGPANEL); CONFIGPANEL.setLayout(CONFIGPANELLayout); CONFIGPANELLayout.setHorizontalGroup( CONFIGPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CONFIGPANELLayout.createSequentialGroup() .addGap(31, 31, 31) .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(39, 39, 39) .addComponent(jPanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(48, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, CONFIGPANELLayout.createSequentialGroup() .addContainerGap(565, Short.MAX_VALUE) .addComponent(config_btSave, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(config_btReset, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(265, 265, 265)) ); CONFIGPANELLayout.setVerticalGroup( CONFIGPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CONFIGPANELLayout.createSequentialGroup() .addGap(21, 21, 21) .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(220, Short.MAX_VALUE)) .addGroup(CONFIGPANELLayout.createSequentialGroup() .addGap(29, 29, 29) .addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(CONFIGPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(config_btReset, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(config_btSave, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(215, 215, 215)) ); jTabbedPane1.addTab("Configuration", CONFIGPANEL); javax.swing.GroupLayout RECIPIENTSEDITORPANELLayout = new javax.swing.GroupLayout(RECIPIENTSEDITORPANEL); RECIPIENTSEDITORPANEL.setLayout(RECIPIENTSEDITORPANELLayout); RECIPIENTSEDITORPANELLayout.setHorizontalGroup( RECIPIENTSEDITORPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(RECIPIENTSEDITORPANELLayout.createSequentialGroup() .addComponent(recipientsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 935, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(24, Short.MAX_VALUE)) ); RECIPIENTSEDITORPANELLayout.setVerticalGroup( RECIPIENTSEDITORPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(RECIPIENTSEDITORPANELLayout.createSequentialGroup() .addComponent(recipientsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 589, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Recipients Editor", RECIPIENTSEDITORPANEL); jPanel16.setBorder(javax.swing.BorderFactory.createTitledBorder("Contact Group")); jLabel12.setText("Add Contact Group:"); javax.swing.GroupLayout jPanel16Layout = new javax.swing.GroupLayout(jPanel16); jPanel16.setLayout(jPanel16Layout); jPanel16Layout.setHorizontalGroup( jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel16Layout.createSequentialGroup() .addGroup(jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel12) .addGroup(jPanel16Layout.createSequentialGroup() .addContainerGap() .addComponent(groupListPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel16Layout.setVerticalGroup( jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel16Layout.createSequentialGroup() .addComponent(jLabel12) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(groupListPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel32.setBorder(javax.swing.BorderFactory.createTitledBorder("Results")); contactsResultsArea.setColumns(20); contactsResultsArea.setLineWrap(true); contactsResultsArea.setRows(5); jScrollPane8.setViewportView(contactsResultsArea); javax.swing.GroupLayout jPanel32Layout = new javax.swing.GroupLayout(jPanel32); jPanel32.setLayout(jPanel32Layout); jPanel32Layout.setHorizontalGroup( jPanel32Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel32Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 843, Short.MAX_VALUE) .addContainerGap()) ); jPanel32Layout.setVerticalGroup( jPanel32Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel32Layout.createSequentialGroup() .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE) .addContainerGap()) ); btnNukeContacts.setText("Nuke Contacts"); btnNukeContacts.setToolTipText("This will Nuke all records in Contacts Table"); btnNukeContacts.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnNukeContactsActionPerformed(evt); } }); btnPushContacts.setText("Push Contacts"); btnPushContacts.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnPushContactsActionPerformed(evt); } }); jLabel5.setText("Use this screen to assign a \"Group Name\" to the type of contacts you will be loading."); jLabel8.setText("The mobile application organizes the contact information according to group on the Main screen. "); btnLoadContacts.setText("Load"); btnLoadContacts.setToolTipText("Clicking this spawns thread to handle contacts stuff"); btnLoadContacts.setEnabled(false); btnLoadContacts.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnLoadContactsActionPerformed(evt); } }); btnCancelContacts.setText("Cancel"); btnCancelContacts.setToolTipText("This will cancel thread"); btnCancelContacts.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCancelContactsActionPerformed(evt); } }); jLabel21.setFont(new java.awt.Font("Tahoma", 3, 11)); // NOI18N jLabel21.setText("Remember you can use the Contacts Editor to perform CRUD(s)."); javax.swing.GroupLayout CONTACTSPANELLayout = new javax.swing.GroupLayout(CONTACTSPANEL); CONTACTSPANEL.setLayout(CONTACTSPANELLayout); CONTACTSPANELLayout.setHorizontalGroup( CONTACTSPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CONTACTSPANELLayout.createSequentialGroup() .addContainerGap() .addGroup(CONTACTSPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel32, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(CONTACTSPANELLayout.createSequentialGroup() .addComponent(jPanel16, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(CONTACTSPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(contactsPickerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 449, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(CONTACTSPANELLayout.createSequentialGroup() .addComponent(btnLoadContacts, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(btnPushContacts, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(31, 31, 31) .addComponent(btnCancelContacts, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(btnNukeContacts)))) .addComponent(jLabel21) .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 434, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel8)) .addContainerGap(70, Short.MAX_VALUE)) ); CONTACTSPANELLayout.setVerticalGroup( CONTACTSPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CONTACTSPANELLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabel21) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel8) .addGroup(CONTACTSPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CONTACTSPANELLayout.createSequentialGroup() .addGap(49, 49, 49) .addComponent(contactsPickerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(CONTACTSPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnLoadContacts, javax.swing.GroupLayout.DEFAULT_SIZE, 56, Short.MAX_VALUE) .addComponent(btnPushContacts, javax.swing.GroupLayout.DEFAULT_SIZE, 56, Short.MAX_VALUE) .addComponent(btnCancelContacts, javax.swing.GroupLayout.DEFAULT_SIZE, 56, Short.MAX_VALUE) .addComponent(btnNukeContacts, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(CONTACTSPANELLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel16, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel32, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(53, 53, 53)) ); jTabbedPane1.addTab("Contacts", CONTACTSPANEL); CONTACTSEDITORPANEL.setEnabled(false); javax.swing.GroupLayout jPanel14Layout = new javax.swing.GroupLayout(jPanel14); jPanel14.setLayout(jPanel14Layout); jPanel14Layout.setHorizontalGroup( jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel14Layout.createSequentialGroup() .addComponent(contactsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 811, Short.MAX_VALUE) .addContainerGap()) ); jPanel14Layout.setVerticalGroup( jPanel14Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel14Layout.createSequentialGroup() .addComponent(contactsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 536, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(33, Short.MAX_VALUE)) ); javax.swing.GroupLayout CONTACTSEDITORPANELLayout = new javax.swing.GroupLayout(CONTACTSEDITORPANEL); CONTACTSEDITORPANEL.setLayout(CONTACTSEDITORPANELLayout); CONTACTSEDITORPANELLayout.setHorizontalGroup( CONTACTSEDITORPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CONTACTSEDITORPANELLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(128, Short.MAX_VALUE)) ); CONTACTSEDITORPANELLayout.setVerticalGroup( CONTACTSEDITORPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CONTACTSEDITORPANELLayout.createSequentialGroup() .addGap(19, 19, 19) .addComponent(jPanel14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Contacts Editor", CONTACTSEDITORPANEL); javax.swing.GroupLayout CALLPANELLayout = new javax.swing.GroupLayout(CALLPANEL); CALLPANEL.setLayout(CALLPANELLayout); CALLPANELLayout.setHorizontalGroup( CALLPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CALLPANELLayout.createSequentialGroup() .addComponent(emergencyCallPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); CALLPANELLayout.setVerticalGroup( CALLPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, CALLPANELLayout.createSequentialGroup() .addComponent(emergencyCallPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 606, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Emergency Call", CALLPANEL); javax.swing.GroupLayout NOTIFYPANELLayout = new javax.swing.GroupLayout(NOTIFYPANEL); NOTIFYPANEL.setLayout(NOTIFYPANELLayout); NOTIFYPANELLayout.setHorizontalGroup( NOTIFYPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(NOTIFYPANELLayout.createSequentialGroup() .addContainerGap() .addComponent(emergencyNotificationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 932, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(17, Short.MAX_VALUE)) ); NOTIFYPANELLayout.setVerticalGroup( NOTIFYPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(NOTIFYPANELLayout.createSequentialGroup() .addContainerGap() .addComponent(emergencyNotificationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(76, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Emergency Notification", NOTIFYPANEL); javax.swing.GroupLayout MONITORPANELLayout = new javax.swing.GroupLayout(MONITORPANEL); MONITORPANEL.setLayout(MONITORPANELLayout); MONITORPANELLayout.setHorizontalGroup( MONITORPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 959, Short.MAX_VALUE) ); MONITORPANELLayout.setVerticalGroup( MONITORPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 581, Short.MAX_VALUE) ); jTabbedPane1.addTab("Monitor", MONITORPANEL); jPanel21.setBorder(javax.swing.BorderFactory.createTitledBorder("Delete Group")); jLabel15.setText("Delete Group:"); jTextField8.setText("Group Name"); jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/Bin_Full.png"))); // NOI18N jButton5.setToolTipText("Enter Group Name to delete"); jButton5.setBorderPainted(false); jButton5.setContentAreaFilled(false); javax.swing.GroupLayout jPanel21Layout = new javax.swing.GroupLayout(jPanel21); jPanel21.setLayout(jPanel21Layout); jPanel21Layout.setHorizontalGroup( jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel21Layout.createSequentialGroup() .addContainerGap(38, Short.MAX_VALUE) .addComponent(jLabel15) .addGap(18, 18, 18) .addComponent(jTextField8, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(4, 4, 4) .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)) ); jPanel21Layout.setVerticalGroup( jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel21Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel15) .addComponent(jTextField8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(jButton5) ); jPanel26.setBorder(javax.swing.BorderFactory.createTitledBorder("Delete URL")); jLabel17.setText("URL:"); jTextField10.setText("http://"); jButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/Delete.png"))); // NOI18N jButton6.setToolTipText("Enter URL(s) to delete from mobile application"); jButton6.setBorderPainted(false); jButton6.setContentAreaFilled(false); javax.swing.GroupLayout jPanel26Layout = new javax.swing.GroupLayout(jPanel26); jPanel26.setLayout(jPanel26Layout); jPanel26Layout.setHorizontalGroup( jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel26Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel17) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jTextField10, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel26Layout.setVerticalGroup( jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel26Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel26Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTextField10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel17)) .addGap(290, 290, 290)) .addGroup(jPanel26Layout.createSequentialGroup() .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanel27.setBorder(javax.swing.BorderFactory.createTitledBorder("Update Email Address")); jLabel19.setText("Email Address:"); jTextField12.setToolTipText("test@email.com"); jButton7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/Edit.png"))); // NOI18N jButton7.setToolTipText("Enter email address to update mobile app"); jButton7.setBorderPainted(false); jButton7.setContentAreaFilled(false); javax.swing.GroupLayout jPanel27Layout = new javax.swing.GroupLayout(jPanel27); jPanel27.setLayout(jPanel27Layout); jPanel27Layout.setHorizontalGroup( jPanel27Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel27Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel19) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField12, javax.swing.GroupLayout.DEFAULT_SIZE, 115, Short.MAX_VALUE) .addGap(36, 36, 36) .addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanel27Layout.setVerticalGroup( jPanel27Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel27Layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(jPanel27Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel19) .addComponent(jTextField12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) ); jPanel28.setBorder(javax.swing.BorderFactory.createTitledBorder("Disable Application")); jLabel20.setText("Email Address:"); jTextField13.setText("test@email.com"); jButton8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/Burn.png"))); // NOI18N jButton8.setToolTipText("This will nuke the application on all recipients devices!"); jButton8.setBorderPainted(false); jButton8.setContentAreaFilled(false); javax.swing.GroupLayout jPanel28Layout = new javax.swing.GroupLayout(jPanel28); jPanel28.setLayout(jPanel28Layout); jPanel28Layout.setHorizontalGroup( jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel28Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel20) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField13, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButton8, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(18, Short.MAX_VALUE)) ); jPanel28Layout.setVerticalGroup( jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jButton8, 0, 0, Short.MAX_VALUE) .addGroup(jPanel28Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel28Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel20) .addComponent(jTextField13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) ); jLabel11.setText("This Tab will be for built-in administration for the client application."); jLabel13.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel13.setText("STAY TUNED... or feel free to implement push features you may need."); javax.swing.GroupLayout ADMINPANELLayout = new javax.swing.GroupLayout(ADMINPANEL); ADMINPANEL.setLayout(ADMINPANELLayout); ADMINPANELLayout.setHorizontalGroup( ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ADMINPANELLayout.createSequentialGroup() .addContainerGap() .addGroup(ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(ADMINPANELLayout.createSequentialGroup() .addComponent(jPanel21, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jPanel27, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(ADMINPANELLayout.createSequentialGroup() .addComponent(jPanel26, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jPanel28, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addGroup(ADMINPANELLayout.createSequentialGroup() .addGap(12, 12, 12) .addComponent(recipientsPickerPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ADMINPANELLayout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(jLabel11)) .addGroup(ADMINPANELLayout.createSequentialGroup() .addGap(39, 39, 39) .addComponent(jLabel13))))) .addContainerGap(96, Short.MAX_VALUE)) ); ADMINPANELLayout.setVerticalGroup( ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ADMINPANELLayout.createSequentialGroup() .addGap(38, 38, 38) .addGroup(ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(recipientsPickerPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(ADMINPANELLayout.createSequentialGroup() .addComponent(jLabel11) .addGap(11, 11, 11) .addComponent(jLabel13))) .addGap(46, 46, 46) .addGroup(ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jPanel21, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel27, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(39, 39, 39) .addGroup(ADMINPANELLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel28, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel26, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(219, 219, 219)) ); jTabbedPane1.addTab("Administration", ADMINPANEL); progressLoadingContacts.setEnabled(false); javax.swing.GroupLayout jPanel13Layout = new javax.swing.GroupLayout(jPanel13); jPanel13.setLayout(jPanel13Layout); jPanel13Layout.setHorizontalGroup( jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel13Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 964, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(progressLoadingContacts, javax.swing.GroupLayout.PREFERRED_SIZE, 367, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel13Layout.setVerticalGroup( jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel13Layout.createSequentialGroup() .addContainerGap() .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 609, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(progressLoadingContacts, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void config_btSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_config_btSaveActionPerformed // TODO add your handling code here: if(config_AppPort.getText().length() > 0) { saveConfigScreen(); } else { JOptionPane.showMessageDialog(this, "Check BES Settings"); } }//GEN-LAST:event_config_btSaveActionPerformed private void config_btResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_config_btResetActionPerformed // TODO add your handling code here: screenProperties = dbFactory.getScreenProperties(); this.setupConfigScreen(screenProperties); }//GEN-LAST:event_config_btResetActionPerformed private void btnLoadContactsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLoadContactsActionPerformed // TODO add your handling code here: if (groupListPanel.getSelectedIndex() > -1){ if (contactsLoader != null && !contactsLoader.isDone()) { // cancel current contacts load to begin a new one // only want one contacts load at a time. contactsLoader.cancel(true); contactsLoader = null; progressLoadingContacts.setEnabled(false); } String strFileLocation = contactsPickerPanel.getFileLocation(); String groupName = groupListPanel.getSelectedListEntry().getGroupName(); contactsResultsArea.append("Retrieving Contacts file at specified path :\n" + strFileLocation + "\n"); if ((strFileLocation.length() > 0) && (groupName.length() > 0)) { try{ progressLoadingContacts.setEnabled(true); File source = new File(strFileLocation); contactsLoader = new ContactsLoader(addressDao, contactsPanel, contactsResultsArea, groupName, source); contactsLoader.addPropertyChangeListener(listenerLoadingContacts); progressLoadingContacts.setIndeterminate(true); // start the Load! contactsLoader.execute(); // this event thread continues immediately here without blocking }catch (Exception ex){ System.out.println("Error Load Contacts Action. " + ex.getMessage()); contactsResultsArea.append("Excepection Load Contacts Starting thread."); contactsPickerPanel.showFields(); } } else { System.out.println("Please verify: GroupName selected = " + groupName + " FileLocation=" + strFileLocation); JOptionPane.showMessageDialog(this, "Please verify: GroupName selected = " + groupName + " FileLocation=" + strFileLocation); } } else { JOptionPane.showMessageDialog(this, "Please verify a GroupName is selected."); } }//GEN-LAST:event_btnLoadContactsActionPerformed private void btnCancelContactsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelContactsActionPerformed // TODO add your handling code here: try { progressLoadingContacts.setIndeterminate(false); progressLoadingContacts.setEnabled(false); btnLoadContacts.setEnabled(true); contactsPickerPanel.showFields(); if (contactsLoader != null && !contactsLoader.isDone()) { // cancel current contactsLoader load to begin a new one // only want one contactsLoader load at a time. contactsLoader.cancel(true); contactsLoader = null; } if (contactsPusher != null && !contactsPusher.isDone()) { // cancel current contactsPusher load to begin a new one // only want one contactsPusher load at a time. contactsPusher.cancel(true); contactsPusher = null; } }catch (Exception ex){ System.out.println("Error canceling contacts thread: " + ex.getMessage()); JOptionPane.showMessageDialog(this, "Threads have been nuked!" ); } }//GEN-LAST:event_btnCancelContactsActionPerformed private void btnNukeContactsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNukeContactsActionPerformed // TODO add your handling code here: boolean dDone = false; try { int result = JOptionPane.showOptionDialog(this, "Do you really want to nuke previously loaded contacts?", "Nuke Previous Contact Loads", JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE, null,null,null); System.out.println("User selected " + result); if (result == 0){ dDone = addressDao.nukeRecords(); contactsPanel.removeAllEntries(); btnLoadContacts.setEnabled(false); contactsPickerPanel.showFields(); contactsPanel.clearPanel(); } }catch (Exception ex) { System.out.println("Error canceling Nuke thread for Contacts: " + ex.getMessage()); contactsResultsArea.append("Exception canceling thread"); } if(dDone){ JOptionPane.showMessageDialog(this, "Goodbye Contacts Table, Nuked!" ); } }//GEN-LAST:event_btnNukeContactsActionPerformed private void btnPushContactsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPushContactsActionPerformed // TODO add your handling code here: if (threadsRunning()){ JOptionPane.showMessageDialog(this, "There are threads still running. " + "Cancel those before attempting another Push." ); } else { if (contactsPusher != null && !contactsPusher.isDone()) { // cancel current contactsPusher load to begin a new one // only want one contactsPusher load at a time. contactsResultsArea.setText(""); contactsPusher.cancel(true); contactsPusher = null; progressLoadingContacts.setEnabled(false); } try{ contactsResultsArea.setText(""); System.out.println("Pushing Contacts initiated"); progressLoadingContacts.setEnabled(true); String computername=InetAddress.getLocalHost().getHostName(); System.out.println(" from HOST: " + computername); List<ServerObject> webList = webListDao.getListEntries(); String confURL = ""; if(webList.size() < 1 ){ confURL = ""; } else { confURL = "http://" + webList.get(0).getServerHost() + ":" + webList.get(0).getServerPort() + "" + config_WebVD.getText().toString(); } System.out.println("This is the confirmation URL " + confURL); contactsPusher = new ContactsPush(besListDao, addressDao, recListDao, recipientsPanel, contactsResultsArea, config_AppPort.getText(), computername, confURL); contactsPusher.addPropertyChangeListener(listenerLoadingContacts); progressLoadingContacts.setIndeterminate(true); // start the Load! contactsPusher.execute(); // this event thread continues immediately here without blockin }catch (Exception ex){ System.out.println("Error Load Contacts Action. " + ex.getMessage()); contactsResultsArea.append("Excepection Starting thread."); // TODO: ARE THERE ANY BUTTONS TO RESET? } } }//GEN-LAST:event_btnPushContactsActionPerformed private void loadContacts(){ // System.out.println("Enabling Load button "); btnLoadContacts.setEnabled(true); } private void nukeRecipients(){ boolean dDone = false; try{ dDone = recListDao.nukeRecords(); }catch (Exception ex) { System.out.println("Error clearing Recipients table: " + ex.getMessage()); contactsResultsArea.append("Exception clearing Recipients table"); } if(dDone){ JOptionPane.showMessageDialog(this, "Goodbye Receipients table, Nuked!" ); } } private void cancelRecipientsFile(){ try { if (recipientsLoader != null && !recipientsLoader.isDone()) { // cancel current recipientsLoader load to begin a new one // only want one recipientsLoader load at a time. recipientsLoader.cancel(true); recipientsLoader = null; progressLoadingContacts.setEnabled(false); } if (recipientBesMatcher != null && !recipientBesMatcher.isDone()) { // cancel current recipientBesMatcher load to begin a new one // only want one recipientBesMatcher load at a time. recipientBesMatcher.cancel(true); recipientBesMatcher = null; progressLoadingContacts.setEnabled(false); } }catch (Exception ex){ System.out.println("Error canceling recipient thread: " + ex.getMessage()); JOptionPane.showMessageDialog(this, "You nuked those threads!" ); } } private void validateRecipients(){ // System.out.println("Validating recipients thread starting..."); try { if (recipientBesMatcher != null && !recipientBesMatcher.isDone()) { // cancel current recipientsLoader load to begin a new one // only want one recipientsLoader load at a time. recipientBesMatcher.cancel(true); recipientBesMatcher = null; progressLoadingContacts.setEnabled(false); } progressLoadingContacts.setEnabled(true); recipientBesMatcher = new RecipientBESMatch(recipientsPanel, recListDao, besListDao, config_AppPort.getText().toString()); recipientBesMatcher.addPropertyChangeListener(listenerLoadingContacts); progressLoadingContacts.setIndeterminate(true); // start the Load! recipientBesMatcher.execute(); // this event thread continues immediately here without blocking }catch (Exception ex){ System.out.println("Error canceling recipient thread: " + ex.getMessage()); JOptionPane.showMessageDialog(this, "Error stopping thread." ); } } private void readRecipientsFile() { if (recipientsLoader != null && !recipientsLoader.isDone()) { // cancel current recipientsLoader load to begin a new one // only want one recipientsLoader load at a time. recipientsLoader.cancel(true); recipientsLoader = null; progressLoadingContacts.setEnabled(false); } String strFileLocation = recipientsPanel.getFileLocation(); recipientsPanel.printToResults("Retrieving Contacts file at specified path :\n" + strFileLocation + "\n"); if (strFileLocation.length() > 0) { try{ progressLoadingContacts.setEnabled(true); File source = new File(strFileLocation); if (source.isFile() && source.getAbsolutePath().endsWith(".csv")) { recipientsLoader = new RecipientsLoader(recListDao, recipientsPanel, source); recipientsLoader.addPropertyChangeListener(listenerLoadingContacts); progressLoadingContacts.setIndeterminate(true); // start the Load! recipientsLoader.execute(); // this event thread continues immediately here without blocking } }catch (Exception ex){ System.out.println("Error Load Contacts Action. " + ex.getMessage()); recipientsPanel.printToResults("Excepection Starting thread."); recipientsPanel.resetButtons(); } } else { System.out.println("Please verify: FileLocation=" + strFileLocation); JOptionPane.showMessageDialog(this, "Please verify: FileLocation=" + strFileLocation); } } private void sendCall() { if (emergencyCallPusher != null && !emergencyCallPusher.isDone()) { // cancel current recipientsLoader load to begin a new one // only want one recipientsLoader load at a time. emergencyCallPusher.cancel(true); emergencyCallPusher = null; progressLoadingContacts.setEnabled(false); } String strFileLocation = recipientsPanel.getFileLocation(); recipientsPanel.printToResults("Retrieving Contacts file at specified path :\n" + strFileLocation + "\n"); if (strFileLocation.length() > 0) { try{ progressLoadingContacts.setEnabled(true); List<ServerObject> webList = webListDao.getListEntries(); String confURL = ""; if(webList.size() < 1 ){ confURL = ""; } else { confURL = "http://" + webList.get(0).getServerHost() + ":" + webList.get(0).getServerPort() + "" + config_WebVD.getText().toString(); } System.out.println("This is the confirmation URL " + confURL); emergencyCallPusher = new EmergencyCallPush(besListDao, recListDao, emergencyCallPanel, recipientsPanel, config_AppPort.getText(), computerName, confURL); emergencyCallPusher.addPropertyChangeListener(listenerLoadingContacts); progressLoadingContacts.setIndeterminate(true); // start the Load! emergencyCallPusher.execute(); // this event thread continues immediately here without blocking }catch (Exception ex){ System.out.println("Error Sending Emergency Call Action. " + ex.getMessage()); recipientsPanel.printToResults("Excepection Starting thread."); recipientsPanel.resetButtons(); } } else { System.out.println("Please verify: FileLocation=" + strFileLocation); JOptionPane.showMessageDialog(this, "Please verify: FileLocation=" + strFileLocation); } } private void sendNotification(){ if (emergencyNotifyPusher != null && !emergencyNotifyPusher.isDone()) { // cancel current contacts load to begin a new one // only want one contacts load at a time. emergencyNotifyPusher.cancel(true); emergencyNotifyPusher = null; progressLoadingContacts.setEnabled(false); } String notifyDetails = emergencyNotificationPanel.getNotifyDetails(); if (notifyDetails.length() > 0) { emergencyNotificationPanel.printToResults("Sending emergency notification:\n" + notifyDetails); try{ progressLoadingContacts.setEnabled(true); List<ServerObject> webList = webListDao.getListEntries(); String confURL = ""; if(webList.size() < 1 ){ confURL = ""; } else { confURL = "http://" + webList.get(0).getServerHost() + ":" + webList.get(0).getServerPort() + "" + config_WebVD.getText(); } System.out.println("This is the confirmation URL " + confURL); emergencyNotifyPusher = new EmergencyNotifyPush(besListDao, recListDao, emergencyNotificationPanel, recipientsPanel, config_AppPort.getText(), computerName, confURL); emergencyNotifyPusher.addPropertyChangeListener(listenerLoadingContacts); progressLoadingContacts.setIndeterminate(true); // start the Load! emergencyNotifyPusher.execute(); // this event thread continues immediately here without blocking }catch (Exception ex){ System.out.println("Error Sending Notification Action. " + ex.getMessage()); emergencyNotificationPanel.printToResults("Excepection Starting thread."); emergencyNotificationPanel.resetButtons(); } } else { System.out.println("Please verify Notification Details length.\n"); JOptionPane.showMessageDialog(this, "Notification Details must have something."); } } private void ensureEventThread() { if(SwingUtilities.isEventDispatchThread()) { return; } throw new RuntimeException("EXCEPTION: RuntimeException in ensureEventThread()"); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new NewJFrame().setVisible(true); } }); } public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); // System.out.println("ActionEvent: " + actionCommand); if (actionCommand.equalsIgnoreCase("DELETE_ADDRESS")) { deleteAddress(); } else if (actionCommand.equalsIgnoreCase("SAVE_ADDRESS")) { saveAddress(); } else if (actionCommand.equalsIgnoreCase("SAVE_WEB")) { saveWeb(); } else if (actionCommand.equalsIgnoreCase("DELETE_WEB")) { deleteWeb(); } else if (actionCommand.equalsIgnoreCase("LOAD_RECIPIENTS")){ readRecipientsFile(); } else if (actionCommand.equalsIgnoreCase("CHECK_RECIPIENTS")){ validateRecipients(); } else if (actionCommand.equalsIgnoreCase("CANCEL_RECIPIENTS")){ cancelRecipientsFile(); } else if (actionCommand.equalsIgnoreCase("NUKE_RECIPIENTS")){ nukeRecipients(); } else if (actionCommand.equalsIgnoreCase("SAVE_RECIPIENT")){ saveRecipient(); } else if (actionCommand.equalsIgnoreCase("DELETE_RECIPIENT")){ deleteRecipient(); } else if (actionCommand.equalsIgnoreCase("DELETE_CONTACT")){ deleteContact(); } else if (actionCommand.equalsIgnoreCase("SAVE_CONTACT")) { saveContact(); } else if (actionCommand.equalsIgnoreCase("LOAD_CONTACTS")){ loadContacts(); } else if (actionCommand.equalsIgnoreCase("SAVE_GROUP")){ saveGroup(); } else if (actionCommand.equalsIgnoreCase("DELETE_GROUP")){ deleteGroup(); } else if (actionCommand.equalsIgnoreCase("SEND_NOTIFICATION")){ sendNotification(); } else if (actionCommand.equalsIgnoreCase("SEND_CALL")) { sendCall(); } } private void saveAddress() { //This function tests to see if BES ADDRESS PROVIDED IS REACHABLE. try { String[] address = config_BESList.getServerPort().split(":"); if (address.length == 2){ int timeOut = 3000; // I recommend 3 seconds at least boolean status = InetAddress.getByName(address[0]).isReachable(timeOut); if (status) { ServerObject so = new ServerObject(address[0], address[1]); int id = besListDao.saveRecord(so); ServerObject entry = new ServerObject(address[0], address[1], id); config_BESList.addListEntry(entry); config_BESList.setServerPort(""); } else { JOptionPane.showMessageDialog(this, "Your Machine can't ping" + " this BES ADDESS so push won't work."); } } else { JOptionPane.showMessageDialog(this, "Value must be host name : port. e.g. local:8080"); } } catch (UnknownHostException une){ JOptionPane.showMessageDialog(this, "Saving Failed Check to make sure " + "host is reachable: " + une.getMessage()); }catch (Exception ex){ JOptionPane.showMessageDialog(this, "Saving Failed: " + ex.getMessage()); } } private void deleteAddress() { try{ int id = config_BESList.getSelectedEntry(); if (id != -1) { ServerObject sle = config_BESList.getSelectedListEntry(); System.out.println("Deleting sleID: " + sle.getId()); besListDao.deleteRecord(sle.getId()); config_BESList.deleteSelectedEntry(); } else { JOptionPane.showMessageDialog(this, "Select a list item to delete."); } }catch (Exception ex){ JOptionPane.showMessageDialog(this, "Delete Failed: " + ex.getMessage()); } } private void saveWeb() { try { String[] address = config_WebList.getWebPort().split(":"); if (address.length == 2){ ServerObject so = new ServerObject(address[0], address[1]); int id = webListDao.saveRecord(so); ServerObject entry = new ServerObject(address[0], address[1], id); config_WebList.addListEntry(entry); config_WebList.setWebPort(""); } else { JOptionPane.showMessageDialog(this, "Value must be host name : port. e.g. local:8080"); } } catch (Exception ex){ System.out.println("Error Saving Web Address " + ex.getMessage()); } } private void deleteWeb() { int id = config_WebList.getSelectedEntry(); if (id != -1) { ServerObject sle = config_WebList.getSelectedListEntry(); System.out.println("Deleting sleID: " + sle.getId()); webListDao.deleteRecord(sle.getId()); config_WebList.deleteSelectedEntry(); } else { JOptionPane.showMessageDialog(this, "Select a list item to delete."); } } private void deleteContact() { try{ AddressObject sle = contactsPanel.getSelectedListEntry(); System.out.println("Deleting sleID: " + sle.getId()); addressDao.deleteRecord(sle.getId()); contactsPanel.removeListEntry(); contactsPanel.resetButtons(); contactsPanel.clearPanel(); }catch (Exception ex){ JOptionPane.showMessageDialog(this, "Delete Failed: " + ex.getMessage()); } } private void saveContact() { try{ AddressObject ao = contactsPanel.getPanelEntry(); // System.out.println("Checling ao: " + ao.getId()); if(ao.getId() < 1) { System.out.println("Saving record"); int id = addressDao.saveRecord(contactsPanel.getPanelEntry()); AddressObject adObj = new AddressObject(ao.getGroupName(), ao.getLastName(), ao.getFirstName(), ao.getEmail(), ao.getHomePhone(), ao.getWorkPhone(), ao.getMobilePhone(), ao.getPin(), ao.getAddress1(), ao.getAddress2(), ao.getCity(), ao.getState(), ao.getZip(), ao.getCountry(), ao.getTitle(), ao.getCompany(), id); contactsPanel.addContactsListEntry(adObj); }else{ // System.out.println("Editing record."); // System.out.println("contactsPanel.getPanelEntry " + contactsPanel.getPanelEntry().getId()); addressDao.editRecord(ao); System.out.println("Updating: " + ao.getId() + " list number: " + contactsPanel.getListSelection()); contactsPanel.updateListEntry(ao, contactsPanel.getListSelection()); } contactsPanel.resetButtons(); contactsPanel.clearPanel(); }catch (Exception ex){ JOptionPane.showMessageDialog(this, "Saving Contact Failed: " + ex.getMessage()); } } private void deleteRecipient() { try{ RecipientObject sle = recipientsPanel.getSelectedListEntry(); System.out.println("Deleting sleID: " + sle.getId()); recListDao.deleteRecord(sle.getId()); recipientsPanel.removeListEntry(); recipientsPanel.resetButtons(); recipientsPanel.clearPanel(); }catch (Exception ex){ JOptionPane.showMessageDialog(this, "Saving Failed: " + ex.getMessage()); } } private void saveRecipient() { try{ // System.out.println("saveRec "); RecipientObject ro = recipientsPanel.getPanelEntry(); // System.out.println("Checling ro: " + ro.getId() + " email: " + ro.getRecEmail() + " bes: " + ro.getUserBes()); if(ro.getId() < 1) { // System.out.println("Saving record"); int id = recListDao.saveRecord(recipientsPanel.getPanelEntry()); RecipientObject recObj = new RecipientObject(ro.getRecEmail(), ro.getUserBes(), "N", "none", id); recipientsPanel.addRecipientsListEntry(recObj); }else{ // System.out.println("Editing record."); // System.out.println("recipientsPanel.getPanelEntry " + recipientsPanel.getPanelEntry().getId()); recListDao.editRecord(ro); // System.out.println("Updating: " + ro.getId() + " record: " + recipientsPanel.getListSelection()); recipientsPanel.updateListEntry(ro, recipientsPanel.getListSelection()); } recipientsPanel.resetButtons(); }catch (Exception ex){ JOptionPane.showMessageDialog(this, "Saving Failed: " + ex.getMessage()); } } private void saveGroup() { String address = groupListPanel.getGroupName(); if (address.length() > 1){ GroupObject go = new GroupObject(address); int id = groupsDao.saveRecord(go); GroupObject entry = new GroupObject(address, id); groupListPanel.addListEntry(entry); groupListPanel.setGroupName(null); } else { JOptionPane.showMessageDialog(this, "Value must be more than 1"); } } private void deleteGroup() { int id = groupListPanel.getSelectedEntry(); if (id != -1) { GroupObject sle = groupListPanel.getSelectedListEntry(); System.out.println("Deleting sleID: " + sle.getId()); groupsDao.deleteRecord(sle.getId()); groupListPanel.deleteSelectedEntry(); } else { JOptionPane.showMessageDialog(this, "Select a list item to delete."); } } public void setupConfigScreen(HashMap props){ try { config_AppPort.setText((String)props.get("screen.config_AppPort")); config_WebVD.setText((String)props.get("screen.config_WebVD")); } catch (Exception ex){ System.out.println("Error Setting Screen with properties hash: " + ex.getMessage()); } } public void saveConfigScreen(){ // System.out.println("SaveConfigScreen() called"); try { //String appPort, String webVD dbFactory.saveProperties(config_AppPort.getText(), config_WebVD.getText() ); } catch (Exception ex){ System.out.println("Error Setting Screen with properties hash: " + ex.getMessage()); } } private boolean threadsRunning(){ boolean vRun = false; if ((recipientsLoader!= null && !recipientsLoader.isDone()) || (contactsLoader!= null && !contactsLoader.isDone()) || (recipientBesMatcher!= null && !recipientBesMatcher.isDone()) || (contactsPusher!= null && !contactsPusher.isDone()) || (emergencyCallPusher!= null && !emergencyCallPusher.isDone()) || (emergencyNotifyPusher!= null && !emergencyNotifyPusher.isDone())){ vRun = true; } return vRun; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel ADMINPANEL; private javax.swing.JPanel CALLPANEL; private javax.swing.JPanel CONFIGPANEL; private javax.swing.JPanel CONTACTSEDITORPANEL; private javax.swing.JPanel CONTACTSPANEL; private javax.swing.JPanel MONITORPANEL; private javax.swing.JPanel NOTIFYPANEL; private javax.swing.JPanel RECIPIENTSEDITORPANEL; private javax.swing.JButton btnCancelContacts; private javax.swing.JButton btnLoadContacts; private javax.swing.JButton btnNukeContacts; private javax.swing.JButton btnPushContacts; private javax.swing.JTextField config_AppPort; private eclserver.panels.BesListPanel config_BESList; private eclserver.panels.WebListPanel config_WebList; private javax.swing.JTextField config_WebVD; private javax.swing.JButton config_btReset; private javax.swing.JButton config_btSave; private eclserver.panels.ContactsPanel contactsPanel; private eclserver.panels.contactsPickerPanel contactsPickerPanel; private javax.swing.JTextArea contactsResultsArea; private eclserver.panels.EmergencyCallPanel emergencyCallPanel; private eclserver.panels.EmergencyNotificationPanel emergencyNotificationPanel; private eclserver.panels.GroupListPanel groupListPanel; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JButton jButton8; private javax.swing.JDialog jDialog1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel10; private javax.swing.JPanel jPanel11; private javax.swing.JPanel jPanel13; private javax.swing.JPanel jPanel14; private javax.swing.JPanel jPanel16; private javax.swing.JPanel jPanel21; private javax.swing.JPanel jPanel26; private javax.swing.JPanel jPanel27; private javax.swing.JPanel jPanel28; private javax.swing.JPanel jPanel32; private javax.swing.JScrollPane jScrollPane8; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTextField jTextField10; private javax.swing.JTextField jTextField12; private javax.swing.JTextField jTextField13; private javax.swing.JTextField jTextField8; private javax.swing.JProgressBar progressLoadingContacts; private eclserver.panels.RecipientsPanel recipientsPanel; private eclserver.panels.recipientsPickerPanel recipientsPickerPanel1; // End of variables declaration//GEN-END:variables class WindowCloser extends WindowAdapter { public void windowClosing(WindowEvent e) { System.out.println("Shutting down application.\n Saving data..."); saveConfigScreen(); dbFactory.disconnect(); } } /** * ProgressListener listens to "progress" property * changes in the SwingWorkers that search and load * images. */ class ProgressListener implements PropertyChangeListener { // prevent creation without providing a progress bar private ProgressListener() {} ProgressListener(JProgressBar progressBar) { this.progressBar = progressBar; this.progressBar.setValue(0); } public void propertyChange(PropertyChangeEvent evt) { String strPropertyName = evt.getPropertyName(); if ("progress".equals(strPropertyName)) { progressBar.setIndeterminate(false); int progress = (Integer)evt.getNewValue(); progressBar.setValue(progress); } } private JProgressBar progressBar; } }