/* * 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.Hermes; import hermes.browser.HermesBrowser; import hermes.browser.actions.BrowserAction; import hermes.config.DestinationConfig; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.jms.JMSException; import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.BevelBorder; import javax.swing.border.Border; import org.apache.log4j.Logger; import com.jidesoft.dialog.ButtonPanel; import com.jidesoft.dialog.StandardDialog; /** * @author colincrist@hermesjms.com last changed by: $Author: colincrist $ * @version $Id: QueueSearchDialog.java,v 1.6 2005/06/20 15:28:35 colincrist Exp * $ */ public class QueueSearchDialog extends StandardDialog { /** * */ private static final long serialVersionUID = 1241201218711233617L; private static final Logger log = Logger.getLogger(QueueSearchDialog.class); private static Vector selectionHistory = new Vector(); private JPanel topPanel = new JPanel(); private Hermes hermes; private JLabel info = new JLabel("Enter the string or regular expression to search messages for.");; private JComboBox stringCombo; private JCheckBox stringCheckBox = new JCheckBox("Simple string search"); private JCheckBox regexCheckBox = new JCheckBox("Regular expression search"); private JCheckBox userHeaderCheckBox = new JCheckBox("Search user header properties", true); private JCheckBox jmsHeaderCheckBox = new JCheckBox("Search JMS header poperties"); private DestinationConfig destinationConfig; /** * @param parent * @param name * @param modal */ public QueueSearchDialog(Frame parent, Hermes hermes, DestinationConfig destinationConfig, boolean searchUserHeader) { super(parent, "Search queue/topic", true); this.hermes = hermes; this.destinationConfig = destinationConfig; setDefaultAction(new AbstractAction() { /** * */ private static final long serialVersionUID = -6422887636600458052L; public void actionPerformed(ActionEvent e) { onOK(); } }); } public QueueSearchDialog(Frame parent, Hermes hermes) { super(parent, "Search all queues on " + hermes.getId(), true); this.hermes = hermes; setDefaultAction(new AbstractAction() { /** * */ private static final long serialVersionUID = -3434398395757886417L; public void actionPerformed(ActionEvent e) { onOK(); } }); } protected void onOK() { String selection = stringCombo.getSelectedItem() != null ? stringCombo.getSelectedItem().toString() : null; if (selection != null && !selection.equals("")) { try { BrowserAction action; if (regexCheckBox.isSelected()) { action = HermesBrowser.getBrowser().getActionFactory().createRegexQueueBrowseAction(hermes, destinationConfig, selection); } else { action = HermesBrowser.getBrowser().getActionFactory().createStringSeachQueueBrowseAction(hermes, destinationConfig, selection, userHeaderCheckBox.isSelected()); } selectionHistory.add(selection); } catch (JMSException e) { log.error(e.getMessage(), e); HermesBrowser.getBrowser().showErrorDialog(e); } } } public JComponent createBannerPanel() { return new JLabel(); } public ButtonPanel createButtonPanel() { final ButtonPanel buttonPanel = new ButtonPanel(); final JButton okButton = new JButton("OK"); final JButton cancelButton = new JButton("Cancel"); buttonPanel.addButton(okButton); buttonPanel.addButton(cancelButton); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onOK(); dispose(); } }); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); return buttonPanel; } public JComponent createContentPanel() { Border border = BorderFactory.createBevelBorder(BevelBorder.RAISED); topPanel.setLayout(new BorderLayout()); // // The combo box panel... JPanel comboPanel = new JPanel(); comboPanel.setLayout(new GridLayout(1, 1)); comboPanel.setBorder(BorderFactory.createTitledBorder(border, "Search for")); stringCombo = new JComboBox(selectionHistory); stringCombo.setEditable(true); comboPanel.add(stringCombo); // // The check box panel... JPanel checkBoxPanel = new JPanel(); checkBoxPanel.setBorder(BorderFactory.createTitledBorder(border, "Options")); checkBoxPanel.setLayout(new GridLayout(4, 1)); checkBoxPanel.add(stringCheckBox); checkBoxPanel.add(regexCheckBox); checkBoxPanel.add(userHeaderCheckBox); checkBoxPanel.add(jmsHeaderCheckBox); topPanel.add(comboPanel, BorderLayout.NORTH); topPanel.add(checkBoxPanel, BorderLayout.SOUTH); // // Actions... stringCheckBox.setSelected(true); regexCheckBox.setSelected(false); stringCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { regexCheckBox.setSelected(!stringCheckBox.isSelected()); } }); regexCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { stringCheckBox.setSelected(!regexCheckBox.isSelected()); } }); userHeaderCheckBox.setSelected(true); jmsHeaderCheckBox.setSelected(false); jmsHeaderCheckBox.setEnabled(false); setSize(new Dimension(430, 250)); setResizable(false); return topPanel; } }