KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > utils > DnDCache


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.faces.utils;
35
36 import com.icesoft.faces.component.ext.HtmlPanelGroup;
37 import com.icesoft.faces.component.panelpositioned.PanelPositionedValue;
38
39 import javax.faces.context.FacesContext;
40 import java.util.HashMap JavaDoc;
41 import java.util.List JavaDoc;
42 import java.util.Map JavaDoc;
43
44 /**
45  * To get around the limitations of findCompoent in iterative data strutures
46  * refrences to UIComponets involved in Drag and Drop are placed in this cache.
47  */

48 public class DnDCache implements java.io.Serializable JavaDoc {
49
50     private static final String JavaDoc SESSION_KEY = "Icesoft_DnDCache_Key";
51
52
53     private Map JavaDoc dragValues = new HashMap JavaDoc();
54     private Map JavaDoc dropValues = new HashMap JavaDoc();
55     private Map JavaDoc positionedPanelValues = new HashMap JavaDoc();
56
57     private DnDCache() {
58     }
59
60
61     public static DnDCache getInstance(FacesContext context, boolean encoding) {
62         String JavaDoc viewId = context.getViewRoot().getViewId();
63         Map JavaDoc map = context.getExternalContext().getSessionMap();
64         DnDCache cache = (DnDCache) map.get(SESSION_KEY);
65         if (cache == null) {
66             cache = new DnDCache();
67             map.put(SESSION_KEY, cache);
68         }
69         return cache;
70     }
71
72
73     public void put(String JavaDoc id, HtmlPanelGroup uiComponent,
74                     FacesContext context) {
75         dragValues.put(id, uiComponent.getDragValue());
76         dropValues.put(id, uiComponent.getDropValue());
77     }
78
79     public Object JavaDoc getDropValue(String JavaDoc id) {
80         return dropValues.get(id);
81     }
82
83     public Object JavaDoc getDragValue(String JavaDoc id) {
84         return dragValues.get(id);
85     }
86
87
88     public void putPositionPanelValue(String JavaDoc id, List JavaDoc list, int index) {
89         positionedPanelValues.put(id, new PanelPositionedValue(list, index));
90     }
91
92     public PanelPositionedValue getPositionedPanelValue(String JavaDoc id) {
93         return (PanelPositionedValue) positionedPanelValues.get(id);
94     }
95
96
97 }
98
Popular Tags