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.gui;
017:
018: import org.directwebremoting.ScriptBuffer;
019: import org.directwebremoting.proxy.ScriptProxy;
020: import org.directwebremoting.proxy.io.Context;
021:
022: /**
023: * This class provides a way to organize a set of GUI objects in a grid. The dimensions of each cell in the grid
024: are determined by the row heights and column widths. The height of each row and width of each column may be defined
025: either as a percent, an integer pixel value, or as "*". Each dimension may specify one or more divisions as "*",
026: in which case these rows/columns share the remaining space in that dimension equally once the other rows/columns
027: are fitted.
028:
029: GUI objects that are children of this DOM node are rendered in the cells. The first child is rendered in the
030: top-left corner. Subsequent children are rendered in rows from left to right and top to bottom.
031: * @author Joe Walker [joe at getahead dot org]
032: * @author DRAPGEN - Dwr Reverse Ajax Proxy GENerator
033: */
034: public class LayoutGrid extends jsx3.gui.Block {
035: /**
036: * All reverse ajax proxies need context to work from
037: * @param scriptProxy The place we are writing scripts to
038: * @param context The script that got us to where we are now
039: */
040: public LayoutGrid(Context context, String extension,
041: ScriptProxy scriptProxy) {
042: super (context, extension, scriptProxy);
043: }
044:
045: /**
046: * The instance initializer.
047: * @param strName unique name distinguishing this object from all other JSX GUI objects in the JSX application
048: */
049: public LayoutGrid(String strName) {
050: super ((Context) null, (String) null, (ScriptProxy) null);
051: ScriptBuffer script = new ScriptBuffer();
052: script.appendCall("new LayoutGrid", strName);
053: setInitScript(script);
054: }
055:
056: /**
057: *
058: */
059: @SuppressWarnings("unchecked")
060: public void getCols(
061: org.directwebremoting.proxy.Callback<String> callback) {
062: ScriptBuffer script = new ScriptBuffer();
063: String callbackPrefix = "";
064:
065: if (callback != null) {
066: callbackPrefix = "var reply = ";
067: }
068:
069: script
070: .appendCall(callbackPrefix + getContextPath()
071: + "getCols");
072:
073: if (callback != null) {
074: String key = org.directwebremoting.extend.CallbackHelper
075: .saveCallback(callback, String.class);
076: script
077: .appendCall("__System.activateCallback", key,
078: "reply");
079: }
080:
081: getScriptProxy().addScript(script);
082: }
083:
084: /**
085: *
086: * @param strCols
087: * @param bRepaint
088: * @return this object.
089: */
090: public jsx3.gui.LayoutGrid setCols(String strCols, boolean bRepaint) {
091: ScriptBuffer script = new ScriptBuffer();
092: script.appendCall(getContextPath() + "setCols", strCols,
093: bRepaint);
094: getScriptProxy().addScript(script);
095: return this ;
096: }
097:
098: /**
099: *
100: */
101: @SuppressWarnings("unchecked")
102: public void getRows(
103: org.directwebremoting.proxy.Callback<String> callback) {
104: ScriptBuffer script = new ScriptBuffer();
105: String callbackPrefix = "";
106:
107: if (callback != null) {
108: callbackPrefix = "var reply = ";
109: }
110:
111: script
112: .appendCall(callbackPrefix + getContextPath()
113: + "getRows");
114:
115: if (callback != null) {
116: String key = org.directwebremoting.extend.CallbackHelper
117: .saveCallback(callback, String.class);
118: script
119: .appendCall("__System.activateCallback", key,
120: "reply");
121: }
122:
123: getScriptProxy().addScript(script);
124: }
125:
126: /**
127: *
128: * @param strRows
129: * @param bRepaint
130: * @return this object.
131: */
132: public jsx3.gui.LayoutGrid setRows(String strRows, boolean bRepaint) {
133: ScriptBuffer script = new ScriptBuffer();
134: script.appendCall(getContextPath() + "setRows", strRows,
135: bRepaint);
136: getScriptProxy().addScript(script);
137: return this;
138: }
139:
140: }
|