View Javadoc
1 /*** 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Exoffice Technologies. For written permission, 18 * please contact info@exolab.org. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Exoffice Technologies. Exolab is a registered 23 * trademark of Exoffice Technologies. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 2000 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: OpenJMSDestination.java,v 1.3 2003/08/17 01:32:27 tanderson Exp $ * 44 * Date Author Changes 45 * $Date jimm Created 46 */ 47 48 49 package org.exolab.jms.tools.admin; 50 51 import java.awt.Rectangle; 52 import java.text.SimpleDateFormat; 53 54 import javax.swing.JPopupMenu; 55 import javax.swing.JTree; 56 import javax.swing.tree.DefaultMutableTreeNode; 57 import javax.swing.tree.DefaultTreeModel; 58 59 60 /*** 61 * This is the base class for all destination nodes. A destination is either 62 * a queue or a topic. 63 * 64 * @version $Revision: 1.3 $ $Date: 2003/08/17 01:32:27 $ 65 * @author <a href="mailto:mourikis@exolab.org">Jim Mourikis</a> 66 */ 67 abstract public class OpenJMSDestination extends DefaultMutableTreeNode 68 implements OpenJMSNode { 69 70 // The QueueTopicName 71 protected String destinationName_; 72 73 // Does this queue topic have any registered consumers 74 protected boolean isLeaf_; 75 76 // Whether this node has been opened and explored already. 77 protected boolean isExplored_ = false; 78 79 // The popup menu for destination 80 protected JPopupMenu commands_ = null; 81 82 // A flag indicating if the menu has been created yet. 83 protected boolean commandsCreated_ = false; 84 85 // A date time formatter. 86 static protected SimpleDateFormat dateFormat_; 87 88 // A reference to the tree this node belongs to. 89 static protected JTree tree_ = null; 90 91 92 /*** 93 * The constructor gets its unique name for this queue/topic and a 94 * reference to its parent tree. 95 * 96 * <P>If this is the first queue/topic call, the menu for all queue/topics 97 * is created. 98 * 99 * @param destinationName This queue/topic name. 100 * @param tree The parent tree this queue/topic belongs to. 101 * 102 */ 103 public OpenJMSDestination(String destinationName, JTree tree) { 104 destinationName_ = destinationName; 105 isLeaf_ = false; 106 if (!commandsCreated_) { 107 tree_ = tree; 108 createCommands(); 109 commandsCreated_ = true; 110 dateFormat_ = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); 111 dateFormat_.setLenient(false); 112 } 113 } 114 115 116 /*** 117 * Create the menu for all queue/topics and set up the Action events for 118 * each menu item. Since menus are shared, the callbacks called are 119 * static. Once a menu is slected, the slected node can be determined 120 * from the parent object. 121 * 122 */ 123 abstract protected void createCommands(); 124 125 /*** 126 * Children are allowed for all queue/topics 127 * 128 * @return boolean Always returns true. 129 * 130 */ 131 public boolean getAllowsChildren() { 132 return true; 133 } 134 135 /*** 136 * Queue/Topics are leaves iff they have no consumers registered against 137 * them. 138 * 139 * @return boolean true if no consumers are registered. 140 * 141 */ 142 public boolean isLeaf() { 143 return isLeaf_; 144 } 145 146 /*** 147 * This node has been right clicked. The locations of this node is given 148 * by the loc object. Use this location to popup the queue/topic message 149 * menu. 150 * 151 * @param The location of this Consumer node. 152 * 153 */ 154 public void displayCommands(Rectangle loc) { 155 double x; 156 double y; 157 158 x = loc.getX(); 159 y = loc.getY(); 160 y += loc.getHeight(); 161 162 commands_.show(tree_, (int) x, (int) y); 163 } 164 165 /*** 166 * The unique name of this queue/topic. 167 * 168 * @return String the queue/topic name. 169 * 170 */ 171 public String toString() { 172 return destinationName_; 173 } 174 175 /*** 176 * This node has changed. Inform the parent tree that it needs to be 177 * re-drawn. 178 * 179 */ 180 protected void refresh() { 181 DefaultTreeModel model = (DefaultTreeModel) tree_.getModel(); 182 model.nodeStructureChanged((DefaultMutableTreeNode) this); 183 } 184 185 /*** 186 * Get the particular instance of the queue/topic that has been selected. 187 * 188 * @return OpenJMSDestination the instance selected. 189 * 190 */ 191 static protected OpenJMSDestination getInstanceSelected() { 192 Object loc = tree_.getLastSelectedPathComponent(); 193 return (OpenJMSDestination) loc; 194 } 195 }

This page was automatically generated by Maven