KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exolab > jms > tools > admin > OpenJMSDestination


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.1 2004/11/26 01:51:15 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 JavaDoc;
52 import java.text.SimpleDateFormat JavaDoc;
53
54 import javax.swing.JPopupMenu JavaDoc;
55 import javax.swing.JTree JavaDoc;
56 import javax.swing.tree.DefaultMutableTreeNode JavaDoc;
57 import javax.swing.tree.DefaultTreeModel JavaDoc;
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.1 $ $Date: 2004/11/26 01:51:15 $
65  * @author <a HREF="mailto:mourikis@exolab.org">Jim Mourikis</a>
66  */

67 abstract public class OpenJMSDestination extends DefaultMutableTreeNode JavaDoc
68     implements OpenJMSNode {
69
70     // The QueueTopicName
71
protected String JavaDoc 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 JavaDoc 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 JavaDoc dateFormat_;
87
88     // A reference to the tree this node belongs to.
89
static protected JTree JavaDoc 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 JavaDoc destinationName, JTree JavaDoc tree) {
104         destinationName_ = destinationName;
105         isLeaf_ = false;
106         if (!commandsCreated_) {
107             tree_ = tree;
108             createCommands();
109             commandsCreated_ = true;
110             dateFormat_ = new SimpleDateFormat JavaDoc("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 JavaDoc 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 JavaDoc 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 JavaDoc model = (DefaultTreeModel JavaDoc) tree_.getModel();
182         model.nodeStructureChanged((DefaultMutableTreeNode JavaDoc) 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 JavaDoc loc = tree_.getLastSelectedPathComponent();
193         return (OpenJMSDestination) loc;
194     }
195 }
196
Popular Tags