%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% File : MULTI_EVAL %% Created by : Joakim Eriksson & Niclas Finne %% Created date : 01-12-4 %% %% $Author: joakime $ %% $Date: 2001/12/18 20:20:15 $ %% $Revision: 1.13 $ %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Description: %% %% Methods: %% :- module(multi_eval, [start/0,stop/0,alt/0]). :- use_module('../../jeval/jeval_server', []). :- use_module('../../jeval/jeval', []). :- use_module('../../http/http_server', []). :- use_module('../../html/html', []). http_request(_HttpReq, HttpRes) :- html:page_start(HttpRes, "Multi Eval Jeval Example"), html:heading1(HttpRes, "Multi Eval Jeval Example"), jeval_server:generate_applet(HttpRes, eval, "width=300 height=100"), html:page_end(HttpRes). client_connected(_Host, User) :- jeval:jeval(User, '\c jevalApplet.setLayout(new GridLayout(0,1));\c jevalApplet.add(new Label("Enter expression"));\c expr = new TextField("5 * 7");\c jevalApplet.add(expr);\c result = new Label("Result:");\c jevalApplet.add(result);\c button = new Button("Evaluate!");\c jevalApplet.add(button);\c jeval.addActionListener("button");\c jeval.addActionListener("expr");\c jevalApplet.validate();\c jevalApplet.repaint();'). client_disconnected(_User). client_event(action_event(_, _, _), User) :- jeval:jeval(User, exp, 'expr.getText()'). client_result(exp, ExpAtom, User) :- eval(ExpAtom, Val), jeval:jeval(User, 'result.setText("Result: ' + Val + '")'). eval(ExpAtom, Val) :- get_term(ExpAtom, Expr), catch(Val is Expr, _, fail), !. eval(_, Val) :- Val = 'Syntax error, please type in an arithmetic expression!'. get_term(Result, Term) :- charsio:atom_to_chars(Result, R_S, "."), catch(charsio:read_from_chars(R_S, Term), _, fail). start :- jeval_server:register_applet(eval, multi_eval), %% applet or application... http_server:register_page('index.html', multi_eval), http_server:set_default_port(30002), server:init, http_server:get_url(URL), format('Please browse to ~s~n', [URL]), server:run.