/*
* 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.
*/
package eclserver.panels;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.event.EventListenerList;
import javax.swing.JList;
import java.util.List;
import javax.swing.JOptionPane;
import eclserver.db.objects.RecipientObject;
/**
*
* @author rbalsewich
*/
public class RecipientsPanel extends javax.swing.JPanel
implements ActionListener {
/** Creates new form RecipientsPanel */
public RecipientsPanel() {
listeners = new EventListenerList();
initComponents();
recipientsPickerPanel.addActionListener(this);
recipientPanel.setEditable(false);
recipientPanel.setEnabled(false);
recipientPanel.clear();
}
/** 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() {
recipientsList = new eclserver.panels.RecipientsListPanel();
recipientPanel = new eclserver.panels.RecipientPanel();
jPanel33 = new javax.swing.JPanel();
jScrollPane9 = new javax.swing.JScrollPane();
recipientsResultsArea = new javax.swing.JTextArea();
recipientsPickerPanel = new eclserver.panels.recipientsPickerPanel();
jLabel22 = new javax.swing.JLabel();
jLabel23 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel24 = new javax.swing.JLabel();
btnNewRecord = new javax.swing.JButton();
btnDeleteRecord = new javax.swing.JButton();
btnSaveRecord = new javax.swing.JButton();
btnCancelRecord = new javax.swing.JButton();
btnLoadRecipients = new javax.swing.JButton();
btnCheckRecipients = new javax.swing.JButton();
btnCancelContacts = new javax.swing.JButton();
btnNukeRecipients = new javax.swing.JButton();
setMaximumSize(new java.awt.Dimension(900, 600));
setPreferredSize(new java.awt.Dimension(900, 578));
recipientsList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
recipientsListValueChanged(evt);
}
});
jPanel33.setBorder(javax.swing.BorderFactory.createTitledBorder("Results"));
recipientsResultsArea.setColumns(20);
recipientsResultsArea.setLineWrap(true);
recipientsResultsArea.setRows(5);
jScrollPane9.setViewportView(recipientsResultsArea);
javax.swing.GroupLayout jPanel33Layout = new javax.swing.GroupLayout(jPanel33);
jPanel33.setLayout(jPanel33Layout);
jPanel33Layout.setHorizontalGroup(
jPanel33Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel33Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 861, Short.MAX_VALUE)
.addContainerGap())
);
jPanel33Layout.setVerticalGroup(
jPanel33Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane9, javax.swing.GroupLayout.PREFERRED_SIZE, 156, javax.swing.GroupLayout.PREFERRED_SIZE)
);
jLabel22.setFont(new java.awt.Font("Tahoma", 3, 11));
jLabel22.setText("YOU MUST FIRST USE THE CONFIGURATION TAB BEFORE LOADING FILES.");
jLabel23.setFont(new java.awt.Font("Tahoma", 3, 11));
jLabel23.setText("Remember you can use the Recipients Editor to perform CRUD(s).");
jLabel13.setText("Use this screen to create, read, update, delete Recipients for your Push.");
jLabel24.setText("During loading of files, application will validate ");
btnNewRecord.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/action_add.png"))); // NOI18N
btnNewRecord.setToolTipText("Add new recipient");
btnNewRecord.setActionCommand("ADD_RECIPIENT");
btnNewRecord.setBorderPainted(false);
btnNewRecord.setContentAreaFilled(false);
btnNewRecord.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNewRecordActionPerformed(evt);
}
});
btnDeleteRecord.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/action_delete.png"))); // NOI18N
btnDeleteRecord.setActionCommand("DELETE_RECIPIENT");
btnDeleteRecord.setBorderPainted(false);
btnDeleteRecord.setContentAreaFilled(false);
btnDeleteRecord.setEnabled(false);
btnDeleteRecord.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDeleteRecordActionPerformed(evt);
}
});
btnSaveRecord.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/action_save.png"))); // NOI18N
btnSaveRecord.setToolTipText("Click to save changes");
btnSaveRecord.setActionCommand("SAVE_RECIPIENT");
btnSaveRecord.setBorderPainted(false);
btnSaveRecord.setContentAreaFilled(false);
btnSaveRecord.setEnabled(false);
btnSaveRecord.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSaveRecordActionPerformed(evt);
}
});
btnCancelRecord.setIcon(new javax.swing.ImageIcon(getClass().getResource("/eclserver/images/action_cancel.png"))); // NOI18N
btnCancelRecord.setToolTipText("Click to cancel changes");
btnCancelRecord.setActionCommand("CANCEL_RECIPIENT");
btnCancelRecord.setBorderPainted(false);
btnCancelRecord.setContentAreaFilled(false);
btnCancelRecord.setMargin(new java.awt.Insets(2, 14, 2, 5));
btnCancelRecord.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCancelRecordActionPerformed(evt);
}
});
btnLoadRecipients.setText("Load");
btnLoadRecipients.setToolTipText("Clicking this spawns thread to handle contacts stuff");
btnLoadRecipients.setActionCommand("LOAD_RECIPIENTS");
btnLoadRecipients.setEnabled(false);
btnLoadRecipients.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLoadRecipientsActionPerformed(evt);
}
});
btnCheckRecipients.setText("Check Recipients");
btnCheckRecipients.setActionCommand("CHECK_RECIPIENTS");
btnCheckRecipients.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCheckRecipientsActionPerformed(evt);
}
});
btnCancelContacts.setText("Cancel");
btnCancelContacts.setToolTipText("This will cancel thread");
btnCancelContacts.setActionCommand("CANCEL_RECIPIENTS");
btnCancelContacts.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCancelContactsActionPerformed(evt);
}
});
btnNukeRecipients.setText("Nuke Recipients");
btnNukeRecipients.setToolTipText("This will Nuke all records in Contacts Table");
btnNukeRecipients.setActionCommand("NUKE_RECIPIENTS");
btnNukeRecipients.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNukeRecipientsActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(recipientsPickerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jLabel22)
.addGap(39, 39, 39))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel23)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 64, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(107, 107, 107)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addComponent(btnNewRecord)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnDeleteRecord)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnSaveRecord)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnCancelRecord))
.addComponent(recipientPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 379, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addGap(17, 17, 17)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(btnLoadRecipients, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnCancelContacts, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnNukeRecipients)
.addComponent(btnCheckRecipients)))
.addComponent(jLabel24)
.addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 434, javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addComponent(recipientsList, javax.swing.GroupLayout.PREFERRED_SIZE, 533, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanel33, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel22)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel23)
.addGap(6, 6, 6)
.addComponent(recipientsPickerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(23, 23, 23)
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel24)
.addGap(6, 6, 6)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnLoadRecipients, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnCheckRecipients, javax.swing.GroupLayout.DEFAULT_SIZE, 56, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnCancelContacts, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnNukeRecipients, javax.swing.GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE))
.addGap(15, 15, 15)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addComponent(recipientPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 8, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnNewRecord)
.addComponent(btnSaveRecord)
.addComponent(btnDeleteRecord)
.addComponent(btnCancelRecord)))
.addComponent(recipientsList, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel33, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(24, 24, 24))
);
}// </editor-fold>//GEN-END:initComponents
private void contactsListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_contactsListValueChanged
// TODO add your handling code here:
if (evt.getValueIsAdjusting() == false) {
JList entryList = (JList) evt.getSource();
// System.out.println("List item selected: " + entryList.getSelectedIndex());
selectedEntry = entryList.getSelectedIndex();
int selList = recipientsList.setSelectedIndex(selectedEntry);
// System.out.println("getting selList " + selList);
if (recipientsList.getSelectedIndex() == -1) {
//No selection, disable fire button.
//recipientActionPanel.btnDeleteContact.setEnabled(false);
this.btnDeleteRecord.setEnabled(false);
} else {
//Selection, enable the fire button.\
// System.out.println("Clicked " + recipientsList.getSelectedListEntry().getId() +
// " Email: " + recipientsList.getSelectedListEntry().getRecEmail());
recipientPanel.setRecipient(recipientsList.getSelectedListEntry());
recipientPanel.setRecUserBes(recipientsList.getSelectedListEntry().getUserBes());
recipientPanel.setEditable(true);
btnDeleteRecord.setEnabled(true);
btnSaveRecord.setEnabled(true);
btnNewRecord.setEnabled(false);
}
}
}//GEN-LAST:event_contactsListValueChanged
private void btnNewRecordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNewRecordActionPerformed
// TODO add your handling code here:
recipientPanel.setEnabled(true);
recipientPanel.setEditable(true);
btnSaveRecord.setEnabled(true);
btnNewRecord.setEnabled(false);
}//GEN-LAST:event_btnNewRecordActionPerformed
private void btnDeleteRecordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteRecordActionPerformed
// TODO add your handling code here:
try{
int id = recipientsList.getSelectedIndex();
if (id != -1) {
fireActionEvent(evt);
} else {
JOptionPane.showMessageDialog(this, "Select a list item to delete.");
}
}catch (Exception ex){
JOptionPane.showMessageDialog(this, "Delete Failed: " + ex.getMessage());
}
}//GEN-LAST:event_btnDeleteRecordActionPerformed
private void btnSaveRecordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveRecordActionPerformed
// TODO add your handling code here:
// TODO: ADD VALID EMAIL CHECK BEFORE SAVE
try{
// System.out.println("Validating required fields... length = " + recipientPanel.getRecEmail().length());
if (recipientPanel.getRecEmail().length() > 0 ) {
fireActionEvent(evt);
} else {
JOptionPane.showMessageDialog(this, "Email is required.");
}
}catch (Exception ex){
System.out.println("Error Saving Recipient:" + ex.getMessage());
}
}//GEN-LAST:event_btnSaveRecordActionPerformed
private void btnCancelRecordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelRecordActionPerformed
// TODO add your handling code here:
try{
resetButtons();
clearPanel();
}catch (Exception ex){
JOptionPane.showMessageDialog(this, "Clear Failed: " + ex.getMessage());
}
}//GEN-LAST:event_btnCancelRecordActionPerformed
private void recipientsListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_recipientsListValueChanged
// TODO add your handling code here:
if (evt.getValueIsAdjusting() == false) {
JList entryList = (JList) evt.getSource();
// System.out.println("List item selected: " + entryList.getSelectedIndex());
selectedEntry = entryList.getSelectedIndex();
int selList = recipientsList.setSelectedIndex(selectedEntry);
// System.out.println("getting selList " + selList);
if (recipientsList.getSelectedIndex() == -1) {
//No selection, disable fire button.
btnDeleteRecord.setEnabled(false);
} else {
//Selection, enable the fire button.\
System.out.println("Clicked " + recipientsList.getSelectedListEntry().getId() +
" Email: " + recipientsList.getSelectedListEntry().getRecEmail());
recipientPanel.setRecipient(recipientsList.getSelectedListEntry());
recipientPanel.setEditable(true);
btnDeleteRecord.setEnabled(true);
btnSaveRecord.setEnabled(true);
btnNewRecord.setEnabled(false);
}
}
}//GEN-LAST:event_recipientsListValueChanged
private void btnNukeRecipientsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNukeRecipientsActionPerformed
// TODO add your handling code here:
boolean dDone = false;
try {
int result = JOptionPane.showOptionDialog(this, "Do you really want to nuke "
+ "previously loaded recipients?", "Nuke Previous Recipient Loads",
JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE, null,null,null);
// System.out.println("User selected " + result);
if (result == 0){
fireActionEvent(evt);
recipientsList.deleteAllEntries();
btnLoadRecipients.setEnabled(false);
recipientsPickerPanel.showFields();
recipientPanel.clear();
}
}catch (Exception ex) {
System.out.println("Error canceling Load thread for Contacts: " + ex.getMessage());
recipientsResultsArea.append("Exception canceling thread");
}
if(dDone){
JOptionPane.showMessageDialog(this, "Well there are no more contacts in table." );
}
}//GEN-LAST:event_btnNukeRecipientsActionPerformed
private void btnLoadRecipientsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLoadRecipientsActionPerformed
// TODO add your handling code here:
File source = new File(getFileLocation());
if (source.isFile() && source.getAbsolutePath().endsWith(".csv")) {
if (recipientsPickerPanel.getFileLocation().length() > 0){
fireActionEvent(evt);
} else {
System.out.println("Seems file location is < 0 . Check file was chosen.");
}
} else {
JOptionPane.showMessageDialog(this, "Please verify a CSV file was selected.");
}
}//GEN-LAST:event_btnLoadRecipientsActionPerformed
private void btnCancelContactsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelContactsActionPerformed
// TODO add your handling code here:
try {
btnLoadRecipients.setEnabled(true);
recipientsPickerPanel.showFields();
fireActionEvent(evt);
}catch (Exception ex) {
System.out.println("Error canceling Load thread for Contacts: " + ex.getMessage());
recipientsResultsArea.append("Exception canceling thread");
}
}//GEN-LAST:event_btnCancelContactsActionPerformed
private void btnCheckRecipientsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheckRecipientsActionPerformed
// TODO add your handling code here:
try {
fireActionEvent(evt);
}catch (Exception ex) {
System.out.println("Error firing event to check recipients: " + ex.getMessage());
recipientsResultsArea.append("Exception canceling thread");
}
}//GEN-LAST:event_btnCheckRecipientsActionPerformed
private void fireActionEvent(ActionEvent evt) {
ActionListener[] listenerList = listeners.getListeners(ActionListener.class);
for (int i = listenerList.length-1; i>=0; --i) {
listenerList[i].actionPerformed(evt);
}
}
public void addActionListener(ActionListener listener) {
listeners.add(ActionListener.class, listener);
}
public void removeActionListener(ActionListener listener) {
if (listeners != null) {
listeners.remove(ActionListener.class, listener);
}
}
public void setRecipientsListEntries(List<RecipientObject> objects){
recipientsList.addListEntries(objects);
}
public RecipientObject getSelectedListEntry(){
return recipientsList.getSelectedListEntry();
}
public void addRecipientsListEntry(RecipientObject object){
recipientsList.addListEntry(object);
}
public RecipientObject getPanelEntry(){
return recipientPanel.getRecipient();
}
public void removeListEntry(){
recipientsList.deleteSelectedEntry();
}
public void removeAllEntries(){
recipientsList.deleteAllEntries();
}
public void updateListEntry(RecipientObject obj, int value) {
recipientsList.updateIndexEntryAt(obj, value);
}
public void clearPanel(){
recipientPanel.clear();
}
public void resetButtons(){
btnNewRecord.setEnabled(true);
btnSaveRecord.setEnabled(false);
btnDeleteRecord.setEnabled(false);
recipientPanel.setEnabled(false);
recipientPanel.setEditable(false);
recipientPanel.clear();
}
public void setListSelection(int value){
this.selectedEntry = value;
}
public int getListSelection(){
return selectedEntry;
}
public String getFileLocation(){
return recipientsPickerPanel.getFileLocation();
}
public void printToResults(String value){
recipientsResultsArea.append(value + "\n");
}
@Override
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
// System.out.println("ActionEvent: " + actionCommand);
if (actionCommand.equalsIgnoreCase("LOAD_RECIPIENTS")){
// System.out.println("LOAD_RECIPIENTS CALLBACK.");
loadRecipients();
} else if (actionCommand.equalsIgnoreCase("RELOAD_RECS")){
recipientsList.deleteAllEntries();
}
}
public void loadRecipients(){
// System.out.println("Enabling Load button ");
btnLoadRecipients.setEnabled(true);
}
public void validateRecipients(){
// System.out.println("Enabling validation button");
btnCheckRecipients.setEnabled(true);
}
//CUSTOM VARIABLES
EventListenerList listeners;
private int selectedEntry = -1;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnCancelContacts;
private javax.swing.JButton btnCancelRecord;
private javax.swing.JButton btnCheckRecipients;
private javax.swing.JButton btnDeleteRecord;
private javax.swing.JButton btnLoadRecipients;
private javax.swing.JButton btnNewRecord;
private javax.swing.JButton btnNukeRecipients;
private javax.swing.JButton btnSaveRecord;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JPanel jPanel33;
private javax.swing.JScrollPane jScrollPane9;
private eclserver.panels.RecipientPanel recipientPanel;
private eclserver.panels.RecipientsListPanel recipientsList;
private eclserver.panels.recipientsPickerPanel recipientsPickerPanel;
private javax.swing.JTextArea recipientsResultsArea;
// End of variables declaration//GEN-END:variables
}