/* * Copyright 2003,2004,2005 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.swing.actions; import hermes.Hermes; import hermes.browser.HermesBrowser; import hermes.browser.IconCache; import hermes.browser.model.tree.DestinationConfigTreeNode; import hermes.browser.model.tree.HermesTreeNode; import hermes.config.DestinationConfig; import java.awt.event.ActionEvent; import javax.swing.Action; import javax.swing.JOptionPane; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import org.apache.log4j.Logger; /** * Unsubscribe to durable subscriptions. * * @author colincrist@hermesjms.com * @version $Id: DurableUnsubscribeAction.java,v 1.5 2005/07/15 15:11:02 * colincrist Exp $ */ public class DurableUnsubscribeAction extends ActionSupport { /** * */ private static final long serialVersionUID = 3804327883154973660L; private static final Logger log = Logger.getLogger(DurableUnsubscribeAction.class); public DurableUnsubscribeAction() { putValue(Action.NAME, "Unsubscribe..."); putValue(Action.SHORT_DESCRIPTION, "Unsubscribe any durable subscription on this topic"); putValue(Action.SMALL_ICON, IconCache.getIcon("hermes.unsubscribe")); setEnabled(false); getBrowserTree().getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent event) { if (event.getPath() != null && event.getPath().getLastPathComponent() instanceof DestinationConfigTreeNode) { final DestinationConfigTreeNode destinationNode = (DestinationConfigTreeNode) event.getPath().getLastPathComponent(); setEnabled(destinationNode.getConfig().isDurable()); } else { setEnabled(false); } } }); } public void actionPerformed(ActionEvent e) { final TreePath curPath = HermesBrowser.getBrowser().getBrowserTree().getSelectionPath(); if (curPath != null) { final TreeNode node = (TreeNode) curPath.getLastPathComponent(); if (node instanceof DestinationConfigTreeNode) { try { final DestinationConfigTreeNode tNode = (DestinationConfigTreeNode) node; final HermesTreeNode hNode = (HermesTreeNode) tNode.getHermesTreeNode(); final DestinationConfig dConfig = tNode.getConfig(); if (dConfig.isDurable()) { if (JOptionPane.showConfirmDialog(HermesBrowser.getBrowser(), "Would you like to unsubscribe from durable subscription clientID=" + dConfig.getClientID() + " on " + tNode.getDestinationName(), "Please confirm", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { Hermes.ui.getThreadPool().invokeLater(new Runnable() { public void run() { try { hNode.getHermes().unsubscribe(dConfig.getClientID()); Hermes.ui.getDefaultMessageSink().add("Unsubscribed"); } catch (Throwable e) { HermesBrowser.getBrowser().showErrorDialog("Unable to unsubscribe", e); } finally { try { hNode.getHermes().close(); } catch (Throwable t) { log.error(t.getMessage(), t); } } } }); } else { Hermes.ui.getDefaultMessageSink().add("Unsubscribe cancelled."); } } else { HermesBrowser.getBrowser().showErrorDialog("Topic " + dConfig.getName() + " is not configured as durable.") ; } } catch (Throwable t) { HermesBrowser.getBrowser().showErrorDialog("Unable to unsubscribe", t); } } } } }