01: /*
02: * Version: MPL 1.1/GPL 2.0/LGPL 2.1
03: *
04: * "The contents of this file are subject to the Mozilla Public License
05: * Version 1.1 (the "License"); you may not use this file except in
06: * compliance with the License. You may obtain a copy of the License at
07: * http://www.mozilla.org/MPL/
08: *
09: * 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;
41: import java.util.List;
42: import java.util.Map;
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 {
49:
50: private static final String SESSION_KEY = "Icesoft_DnDCache_Key";
51:
52: private Map dragValues = new HashMap();
53: private Map dropValues = new HashMap();
54: private Map positionedPanelValues = new HashMap();
55:
56: private DnDCache() {
57: }
58:
59: public static DnDCache getInstance(FacesContext context,
60: boolean encoding) {
61: String viewId = context.getViewRoot().getViewId();
62: Map map = context.getExternalContext().getSessionMap();
63: DnDCache cache = (DnDCache) map.get(SESSION_KEY);
64: if (cache == null) {
65: cache = new DnDCache();
66: map.put(SESSION_KEY, cache);
67: }
68: return cache;
69: }
70:
71: public void put(String id, HtmlPanelGroup uiComponent,
72: FacesContext context) {
73: dragValues.put(id, uiComponent.getDragValue());
74: dropValues.put(id, uiComponent.getDropValue());
75: }
76:
77: public Object getDropValue(String id) {
78: return dropValues.get(id);
79: }
80:
81: public Object getDragValue(String id) {
82: return dragValues.get(id);
83: }
84:
85: public void putPositionPanelValue(String id, List list, int index) {
86: positionedPanelValues.put(id, new PanelPositionedValue(list,
87: index));
88: }
89:
90: public PanelPositionedValue getPositionedPanelValue(String id) {
91: return (PanelPositionedValue) positionedPanelValues.get(id);
92: }
93:
94: }
|