/*
* Copyright 2003,2004 Colin Crist
*
* 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 hermes.browser.dialog;
import hermes.browser.HermesBrowser;
import hermes.config.SessionConfig;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import org.apache.log4j.Category;
/**
* @author colincrist@hermesjms.com
* @version $Id: SessionConfigPanel.java,v 1.4 2004/07/21 19:46:15 colincrist
* Exp $
*/
public class SessionConfigPanel extends JPanel
{
/**
*
*/
private static final long serialVersionUID = -5706451976524287590L;
private static final Category cat = Category.getInstance(SessionConfigPanel.class);
public static final String NEWSESSION = "<new>";
private PreferencesDialog dialog;
private SessionConfig sessionConfig;
private JCheckBox transactedCB = new JCheckBox();
private JCheckBox auditCB = new JCheckBox();
private JCheckBox useConsumerForQueueBrowseCB = new JCheckBox();
// private JTextField reconnectsTF = new JTextField();
private JComboBox sessionCombo = new JComboBox();
private Map sessionConfigs = new HashMap();
private DefaultComboBoxModel sessionComboModel = new DefaultComboBoxModel();
public SessionConfigPanel(PreferencesDialog dialog)
{
this.dialog = dialog;
init();
}
public void init()
{
//
// Basic layout and L&F
Border border = BorderFactory.createBevelBorder(BevelBorder.RAISED);
setLayout(new GridLayout(2, 4));
setBorder(BorderFactory.createTitledBorder(border, "Session"));
sessionCombo.setModel(sessionComboModel);
JLabel l1 = new JLabel("Session: ");
l1.setHorizontalAlignment(JLabel.RIGHT);
add(l1);
add(sessionCombo);
JLabel l2 = new JLabel("Use Consumer: ");
l2.setHorizontalAlignment(JLabel.RIGHT);
add(l2);
l2.setToolTipText("Check this if you wish to use a MessageConsumer instead of a QueueBrowser");
add(useConsumerForQueueBrowseCB);
JLabel l3 = new JLabel("Audit: ");
l3.setHorizontalAlignment(JLabel.RIGHT);
add(l3);
add(auditCB);
JLabel l4 = new JLabel("Transacted: ");
l4.setHorizontalAlignment(JLabel.RIGHT);
add(l4);
add(transactedCB);
sessionCombo.setEditable(true);
//
// Eventing
auditCB.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
sessionConfig.setAudit(auditCB.isSelected());
dialog.setDirty();
}
});
transactedCB.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
sessionConfig.setTransacted(transactedCB.isSelected());
dialog.setDirty();
}
});
}
public void addListeners()
{
sessionComboModel.addListDataListener(new ListDataListener()
{
public void contentsChanged(ListDataEvent arg0)
{
String sessionId = (String) sessionComboModel.getSelectedItem();
if (sessionComboModel.getSize() != 0 && dialog.getFactoryConfigBySessionId(sessionId) == null)
{
if (sessionConfig.getId().equals(NEWSESSION) || isSessionRename())
{
sessionConfig.setId(sessionId);
}
else
{
dialog.refocus(sessionId);
}
}
else
{
dialog.refocus(sessionId);
}
}
public void intervalAdded(ListDataEvent arg0)
{
// NOP
}
public void intervalRemoved(ListDataEvent arg0)
{
// NOP
}
});
}
public boolean isSessionRename()
{
Object options[] = { "New", "Rename" };
int n = JOptionPane.showOptionDialog(HermesBrowser.getBrowser(), "Rename this session or create a new one?", "Please select...",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
if (n == JOptionPane.YES_OPTION)
{
return false;
}
else
{
return true;
}
}
public void addSessionConfig(SessionConfig sessionConfig)
{
if (sessionConfig.getId() != null && !sessionConfig.getId().equals(""))
{
this.sessionConfig = sessionConfig;
if (!sessionConfigs.containsKey(sessionConfig.getId()))
{
sessionConfigs.put(sessionConfig.getId(), sessionConfig);
sessionComboModel.addElement(sessionConfig.getId());
}
}
}
public void setSessionConfig(SessionConfig sessionConfig)
{
if (sessionConfig.getId() != null && !sessionConfig.getId().equals(""))
{
this.sessionConfig = sessionConfig;
if (!sessionConfigs.containsKey(sessionConfig.getId()))
{
sessionConfigs.put(sessionConfig.getId(), sessionConfig);
sessionComboModel.addElement(sessionConfig.getId());
}
sessionCombo.setSelectedItem(sessionConfig.getId());
// transactedCB.setName("Transacted");
useConsumerForQueueBrowseCB.setSelected(sessionConfig.isUseConsumerForQueueBrowse());
if (sessionConfig.getReconnects() == null)
{
sessionConfig.setReconnects(new BigInteger("0"));
}
transactedCB.setSelected(sessionConfig.isTransacted());
auditCB.setSelected(sessionConfig.isAudit());
}
}
public SessionConfig getSessionConfig()
{
return sessionConfig;
}
public void updateModel()
{
if (sessionConfig != null)
{
sessionConfig.setId((String) sessionCombo.getSelectedItem());
sessionConfig.setAudit(sessionConfig.isAudit());
sessionConfig.setUseConsumerForQueueBrowse(useConsumerForQueueBrowseCB.isSelected());
}
}
}