001: /* Copyright 2007 David N. Welton - DedaSys LLC - http://www.dedasys.com
002:
003: Licensed under the Apache License, Version 2.0 (the "License");
004: you may not use this file except in compliance with the License.
005: You may obtain a copy of the License at
006:
007: http://www.apache.org/licenses/LICENSE-2.0
008:
009: Unless required by applicable law or agreed to in writing, software
010: distributed under the License is distributed on an "AS IS" BASIS,
011: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: See the License for the specific language governing permissions and
013: limitations under the License.
014: */
015:
016: package org.hecl.android;
017:
018: import java.util.Vector;
019:
020: import android.util.Log;
021:
022: import android.view.View;
023: import android.view.View.OnClickListener;
024:
025: import android.widget.AdapterView;
026: import android.widget.CompoundButton;
027: import android.widget.DatePicker;
028: import android.widget.TimePicker;
029:
030: import org.hecl.HeclException;
031: import org.hecl.Interp;
032: import org.hecl.IntThing;
033: import org.hecl.ListThing;
034: import org.hecl.LongThing;
035: import org.hecl.ObjectThing;
036: import org.hecl.Properties;
037: import org.hecl.StringThing;
038: import org.hecl.Thing;
039:
040: /**
041: * The <code>HeclCallback</code> class is utilized as a way to create
042: * callbacks for various GUI things that require them.
043: *
044: * @author <a href="mailto:davidw@dedasys.com">David N. Welton</a>
045: * @version 1.0
046: */
047: public class HeclCallback implements android.view.View.OnClickListener,
048: android.widget.AdapterView.OnItemClickListener,
049: android.widget.AdapterView.OnItemSelectedListener,
050: android.widget.DatePicker.OnDateSetListener,
051: android.widget.TimePicker.OnTimeSetListener,
052: android.widget.TimePicker.OnTimeChangedListener,
053: android.widget.CompoundButton.OnCheckedChangeListener {
054:
055: public static Interp interp;
056:
057: public Thing script;
058:
059: public HeclCallback(Thing callback) {
060: script = callback;
061: }
062:
063: public void onClick(View view) {
064: try {
065: Vector vec = ListThing.get(script.deepcopy());
066: vec.add(ObjectThing.create(view));
067: interp.eval(ListThing.create(vec));
068: } catch (HeclException he) {
069: Hecl.logStacktrace(he);
070: Log.v("hecl onclick callback", he.toString());
071: }
072: }
073:
074: public void dateSet(DatePicker view, int year, int monthOfYear,
075: int dayOfMonth) {
076: try {
077: Vector vec = ListThing.get(script.deepcopy());
078: vec.add(ObjectThing.create(view));
079: vec.add(IntThing.create(year));
080: vec.add(IntThing.create(monthOfYear));
081: vec.add(IntThing.create(dayOfMonth));
082: interp.eval(ListThing.create(vec));
083: } catch (HeclException he) {
084: Hecl.logStacktrace(he);
085: Log.v("hecl dateset callback", he.toString());
086: }
087: }
088:
089: public void timeSet(TimePicker view, int hourOfDay, int minute) {
090: try {
091: Vector vec = ListThing.get(script.deepcopy());
092: vec.add(ObjectThing.create(view));
093: vec.add(IntThing.create(hourOfDay));
094: vec.add(IntThing.create(minute));
095: interp.eval(ListThing.create(vec));
096: } catch (HeclException he) {
097: Hecl.logStacktrace(he);
098: Log.v("hecl timeset callback", he.toString());
099: }
100: }
101:
102: public void timeChanged(TimePicker view, int hourOfDay, int minute) {
103: try {
104: Vector vec = ListThing.get(script.deepcopy());
105: vec.add(ObjectThing.create(view));
106: vec.add(IntThing.create(hourOfDay));
107: vec.add(IntThing.create(minute));
108: interp.eval(ListThing.create(vec));
109: } catch (HeclException he) {
110: Hecl.logStacktrace(he);
111: Log.v("hecl timechanged callback", he.toString());
112: }
113: }
114:
115: public void onCheckedChanged(CompoundButton buttonView,
116: boolean isChecked) {
117: try {
118: Vector vec = ListThing.get(script.deepcopy());
119: vec.add(ObjectThing.create(buttonView));
120: vec.add(IntThing.create(isChecked));
121: interp.eval(ListThing.create(vec));
122: } catch (HeclException he) {
123: Hecl.logStacktrace(he);
124: Log.v("hecl oncheckedchanged callback", he.toString());
125: }
126: }
127:
128: public void onItemClick(AdapterView parent, View v, int position,
129: long id) {
130: try {
131: Vector vec = ListThing.get(script.deepcopy());
132: vec.add(ObjectThing.create(parent));
133: vec.add(ObjectThing.create(v));
134: vec.add(IntThing.create(position));
135: vec.add(LongThing.create(id));
136: interp.eval(ListThing.create(vec));
137: } catch (HeclException he) {
138: Hecl.logStacktrace(he);
139: Log.v("hecl onitemclick callback", he.toString());
140: }
141: }
142:
143: public void onItemSelected(AdapterView parent, View v,
144: int position, long id) {
145: try {
146: Vector vec = ListThing.get(script.deepcopy());
147: vec.add(ObjectThing.create(parent));
148: vec.add(ObjectThing.create(v));
149: vec.add(IntThing.create(position));
150: vec.add(LongThing.create(id));
151: interp.eval(ListThing.create(vec));
152: } catch (HeclException he) {
153: Hecl.logStacktrace(he);
154: Log.v("hecl onitemselected callback", he.toString());
155: }
156: }
157:
158: public void onNothingSelected(AdapterView parent) {
159: try {
160: Vector vec = ListThing.get(script.deepcopy());
161: vec.add(ObjectThing.create(parent));
162: interp.eval(ListThing.create(vec));
163: } catch (HeclException he) {
164: Hecl.logStacktrace(he);
165: Log.v("hecl onnothingselected callback", he.toString());
166: }
167: }
168:
169: }
|