KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > administrator > nodes > ContextNode


1 /*
2  * Copyright (c) 2001-2005 by Genimen BV (www.genimen.com) All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification, is permitted
5  * provided that the following conditions are met:
6  * - Redistributions of source code must retain the above copyright notice, this list of conditions
7  * and the following disclaimer.
8  * - Redistributions in binary form must reproduce the above copyright notice, this list of
9  * conditions and the following disclaimer in the documentation and/or other materials
10  * provided with the distribution.
11  * - All advertising materials mentioning features or use of this software must display the
12  * following acknowledgment: "This product includes Djeneric."
13  * - Products derived from this software may not be called "Djeneric" nor may
14  * "Djeneric" appear in their names without prior written permission of Genimen BV.
15  * - Redistributions of any form whatsoever must retain the following acknowledgment: "This
16  * product includes Djeneric."
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL GENIMEN BV, DJENERIC.ORG,
22  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.genimen.djeneric.tools.administrator.nodes;
31
32 import javax.swing.ImageIcon JavaDoc;
33 import javax.swing.tree.TreePath JavaDoc;
34
35 import com.genimen.djeneric.repository.DjContext;
36 import com.genimen.djeneric.repository.DjSession;
37 import com.genimen.djeneric.repository.DjUserContextAssociation;
38 import com.genimen.djeneric.tools.administrator.Administrator;
39 import com.genimen.djeneric.tools.administrator.editors.AdminEditor;
40 import com.genimen.djeneric.tools.administrator.editors.ContextEditor;
41 import com.genimen.djeneric.tools.administrator.helpers.AdminPanel;
42 import com.genimen.djeneric.util.DjLogger;
43
44 public class ContextNode extends AdministratorTreeNode
45 {
46   private static final long serialVersionUID = 1L;
47   DjContext _context;
48
49   public ContextNode(DjContext context)
50   {
51     _context = context;
52   }
53
54   public ImageIcon JavaDoc getImageIcon()
55   {
56     return Administrator.getImageIcon("context.gif");
57   }
58
59   public String JavaDoc toString()
60   {
61     return _context.getCode() + " (" + _context.getName() + ")";
62   }
63
64   public DjContext getContext()
65   {
66     return _context;
67   }
68
69   public void reload() throws Exception JavaDoc
70   {
71     _alreadyLoaded = false;
72
73     DjSession session = createSession();
74     try
75     {
76       _context.reload(session);
77     }
78     finally
79     {
80       session.close();
81     }
82     expandNode();
83   }
84
85   public void expandNode() throws Exception JavaDoc
86   {
87     if (_alreadyLoaded) return;
88
89     boolean isCollapsed = _tree.isCollapsed(new TreePath JavaDoc(this.getPath()));
90     removeAllChildren();
91
92     DjSession session = createSession();
93     try
94     {
95       DjUserContextAssociation[] dca = _context.getUsers(session);
96       for (int i = 0; i < dca.length; i++)
97       {
98         AssociationNode an = new AssociationNode(dca[i], false);
99         insertAsChild(an);
100       }
101       _alreadyLoaded = true;
102     }
103     catch (Exception JavaDoc x)
104     {
105       DjLogger.log(x);
106     }
107     finally
108     {
109       session.close();
110       getModel().nodeStructureChanged(this);
111     }
112
113     if (!isCollapsed) _tree.expandPath(new TreePath JavaDoc(this.getPath()));
114   }
115
116   public void delete() throws Exception JavaDoc
117   {
118     DjSession session = createSession();
119     try
120     {
121       _context.delete(session);
122       session.commit();
123     }
124     finally
125     {
126       session.close();
127     }
128     AdministratorTreeNode parent = getParentTreeNode();
129     removeFromParent();
130     getModel().nodeStructureChanged(parent);
131   }
132
133   public void clearContext() throws Exception JavaDoc
134   {
135     DjSession session = createSession();
136     try
137     {
138       _context.deleteContents(session);
139       session.commit();
140     }
141     finally
142     {
143       session.close();
144     }
145   }
146
147   public AdminEditor getEditor(AdminPanel admin)
148   {
149     return new ContextEditor(admin, this, _context);
150   }
151
152   public AdminEditor getCreateEditor(AdminPanel admin) throws Exception JavaDoc
153   {
154     return new ContextEditor(admin, getParentTreeNode(), admin.getManager().getContextManager().createNewContext());
155   }
156
157   public boolean canEdit()
158   {
159     return true;
160   }
161
162   public boolean canCreate()
163   {
164     return true;
165   }
166
167   public boolean canDelete()
168   {
169     return true;
170   }
171
172   public boolean canClear()
173   {
174     return true;
175   }
176
177   public String JavaDoc getNodeType()
178   {
179     return "Context";
180   }
181
182   public boolean canImport()
183   {
184     return true;
185   }
186
187   public boolean canExport()
188   {
189     return true;
190   }
191
192 }
Popular Tags