001: /*
002: * Copyright 2005 Joe Walker
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package jsx3.chart;
017:
018: import org.directwebremoting.ScriptBuffer;
019: import org.directwebremoting.proxy.ScriptProxy;
020: import org.directwebremoting.proxy.io.Context;
021:
022: /**
023: * Superclass of bar and column chart. Contains all the common functionality, provides template methods
024: to the subclasses so that they can render horizontal bars or vertical columns.
025:
026: Basically abstracts a bar/column chart into a chart with a parallel dimension and a normal dimension.
027: The parallel dimension is the dimension in which the rows/columns extend.
028: * @author Joe Walker [joe at getahead dot org]
029: * @author DRAPGEN - Dwr Reverse Ajax Proxy GENerator
030: */
031: public class BCChart extends jsx3.chart.CartesianChart {
032: /**
033: * All reverse ajax proxies need context to work from
034: * @param scriptProxy The place we are writing scripts to
035: * @param context The script that got us to where we are now
036: */
037: public BCChart(Context context, String extension,
038: ScriptProxy scriptProxy) {
039: super (context, extension, scriptProxy);
040: }
041:
042: /**
043: * The instance initializer.
044: * @param name the GI name of the instance
045: * @param left left position (in pixels) of the chart relative to its parent container
046: * @param top top position (in pixels) of the chart relative to its parent container
047: * @param width width (in pixels) of the chart
048: * @param height height (in pixels) of the chart
049: */
050: public BCChart(String name, int left, int top, int width, int height) {
051: super ((Context) null, (String) null, (ScriptProxy) null);
052: ScriptBuffer script = new ScriptBuffer();
053: script
054: .appendCall("new BCChart", name, left, top, width,
055: height);
056: setInitScript(script);
057: }
058:
059: /**
060: *
061: */
062: public static final String TYPE_CLUSTERED = "clustered";
063:
064: /**
065: *
066: */
067: public static final String TYPE_STACKED = "stacked";
068:
069: /**
070: *
071: */
072: public static final String TYPE_STACKED100 = "stacked100";
073:
074: /**
075: * Returns the type field, corresponds to the variation of chart, one of {'clustered','stacked','stacked100'}.
076: * @param callback type
077: */
078: @SuppressWarnings("unchecked")
079: public void getType(
080: org.directwebremoting.proxy.Callback<String> callback) {
081: ScriptBuffer script = new ScriptBuffer();
082: String callbackPrefix = "";
083:
084: if (callback != null) {
085: callbackPrefix = "var reply = ";
086: }
087:
088: script
089: .appendCall(callbackPrefix + getContextPath()
090: + "getType");
091:
092: if (callback != null) {
093: String key = org.directwebremoting.extend.CallbackHelper
094: .saveCallback(callback, String.class);
095: script
096: .appendCall("__System.activateCallback", key,
097: "reply");
098: }
099:
100: getScriptProxy().addScript(script);
101: }
102:
103: /**
104: * Sets the type field.
105: * @param type the new value for type, one of {'clustered','stacked','stacked100'}
106: */
107: public void setType(String type) {
108: ScriptBuffer script = new ScriptBuffer();
109: script.appendCall(getContextPath() + "setType", type);
110: getScriptProxy().addScript(script);
111: }
112:
113: /**
114: * Returns the seriesOverlap field, the ratio of a column width/row height that a column/row overlaps with the adjacent column/row.
115: * @param callback seriesOverlap
116: */
117: @SuppressWarnings("unchecked")
118: public void getSeriesOverlap(
119: org.directwebremoting.proxy.Callback<Float> callback) {
120: ScriptBuffer script = new ScriptBuffer();
121: String callbackPrefix = "";
122:
123: if (callback != null) {
124: callbackPrefix = "var reply = ";
125: }
126:
127: script.appendCall(callbackPrefix + getContextPath()
128: + "getSeriesOverlap");
129:
130: if (callback != null) {
131: String key = org.directwebremoting.extend.CallbackHelper
132: .saveCallback(callback, Float.class);
133: script
134: .appendCall("__System.activateCallback", key,
135: "reply");
136: }
137:
138: getScriptProxy().addScript(script);
139: }
140:
141: /**
142: * Sets the seriesOverlap field.
143: * @param seriesOverlap the new value for seriesOverlap, usually between -0.5 and 0.5
144: */
145: public void setSeriesOverlap(float seriesOverlap) {
146: ScriptBuffer script = new ScriptBuffer();
147: script.appendCall(getContextPath() + "setSeriesOverlap",
148: seriesOverlap);
149: getScriptProxy().addScript(script);
150: }
151:
152: /**
153: * Returns the categoryCoverage field, the ratio of the range of a category that is covered by bars/columns.
154: * @param callback categoryCoverage
155: */
156: @SuppressWarnings("unchecked")
157: public void getCategoryCoverage(
158: org.directwebremoting.proxy.Callback<Float> callback) {
159: ScriptBuffer script = new ScriptBuffer();
160: String callbackPrefix = "";
161:
162: if (callback != null) {
163: callbackPrefix = "var reply = ";
164: }
165:
166: script.appendCall(callbackPrefix + getContextPath()
167: + "getCategoryCoverage");
168:
169: if (callback != null) {
170: String key = org.directwebremoting.extend.CallbackHelper
171: .saveCallback(callback, Float.class);
172: script
173: .appendCall("__System.activateCallback", key,
174: "reply");
175: }
176:
177: getScriptProxy().addScript(script);
178: }
179:
180: /**
181: * Sets the categoryCoverage field.
182: * @param categoryCoverage the new value for categoryCoverage, between 0 and 1
183: */
184: public void setCategoryCoverage(float categoryCoverage) {
185: ScriptBuffer script = new ScriptBuffer();
186: script.appendCall(getContextPath() + "setCategoryCoverage",
187: categoryCoverage);
188: getScriptProxy().addScript(script);
189: }
190:
191: }
|