01: //WebOnSwing - Web Application Framework
02: //Copyright (C) 2004 Fernando Damian Petrola
03: //
04: //This library is free software; you can redistribute it and/or
05: //modify it under the terms of the GNU Lesser General Public
06: //License as published by the Free Software Foundation; either
07: //version 2.1 of the License, or (at your option) any later version.
08: //
09: //This library is distributed in the hope that it will be useful,
10: //but WITHOUT ANY WARRANTY; without even the implied warranty of
11: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: //Lesser General Public License for more details.
13: //
14: //You should have received a copy of the GNU Lesser General Public
15: //License along with this library; if not, write to the Free Software
16: //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17:
18: package net.ar.webonswing.ui;
19:
20: import java.util.*;
21:
22: import javax.swing.*;
23:
24: import net.ar.webonswing.*;
25: import net.ar.webonswing.managers.script.*;
26: import net.ar.webonswing.remote.*;
27: import net.ar.webonswing.remote.js.*;
28: import net.ar.webonswing.render.markup.*;
29: import net.ar.webonswing.wrapping.*;
30:
31: public class SliderUIContributor extends
32: AbstractSwingComponentUIContributor {
33: public void doRenderingContribution(
34: RenderingContributionContainer aRenderingContribManager) {
35: JSlider slider = (JSlider) getJComponent();
36:
37: Tag script = new Tag("script");
38:
39: JsBuilder jsBuilder = new JsBuilder();
40: jsBuilder.add(new JsInstance(getName(), new JsConstructorCall(
41: "Slider", new JsStatement[] { new ValuesFromGetters(
42: slider, new String[] { "width", "height",
43: "minimum", "maximum", "value",
44: "orientation" }) }, false)));
45: jsBuilder
46: .add(new GenericJsStatement(
47: getName()
48: + ".updateListener=function () {document.getElementsByName('"
49: + getName() + ".hidden')[0].value= "
50: + getName() + ".value;};"));
51: jsBuilder.addDynApiComponentInit(getName());
52:
53: script.addTextToContainer(jsBuilder.renderJs());
54:
55: Tag hidden = new Tag("input");
56: hidden.addAttribute("type", "hidden");
57: hidden.addAttribute("name", getName() + ".hidden");
58: hidden.addAttribute("value", slider.getValue());
59:
60: Tag content = new Tag("span");
61: content.addElementToContainer(script);
62: content.addElementToContainer(hidden);
63:
64: aRenderingContribManager.doContribution(theComponent, content,
65: content, RemoteHelper.getListenersAdds(theComponent));
66: }
67:
68: private String getName() {
69: JSlider slider = (JSlider) getJComponent();
70: return WosFramework.getInstance().getHierarchyWrapper()
71: .getComponentWrapper(slider).getName();
72: }
73:
74: public void dispatchEvents(List anEvents) {
75: for (Iterator i = anEvents.iterator(); i.hasNext();) {
76: RemoteEvent event = (RemoteEvent) i.next();
77:
78: if (event.getName().endsWith("hidden")) {
79: JSlider slider = (JSlider) ((ComponentWrapper) event
80: .getSource()).getWrappedComponent();
81: slider.setValue(Integer.parseInt((String) event
82: .getParameters()[0]));
83: }
84: }
85: }
86:
87: public void doScriptContribution(
88: ScriptContributionContainer aContributionManager) {
89: RemoteHelper.addDynApiInitCode(aContributionManager);
90:
91: aContributionManager
92: .addCodeOnce("dynapi.library.add('dynapi.widgets.Slider','slider.js','DynLayer');");
93: aContributionManager
94: .addCodeOnce("dynapi.library.include('Button');");
95: aContributionManager
96: .addCodeOnce("dynapi.library.include('Slider');");
97: }
98: }
|