[Bprocessor-commit] gui/src/net/sourceforge/bprocessor/gui/attrview StringAttribute.java, 1.16, 1.1
Status: Pre-Alpha
Brought to you by:
henryml
From: rimestad <rim...@us...> - 2007-10-12 08:05:04
|
Update of /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/attrview In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv6000/src/net/sourceforge/bprocessor/gui/attrview Modified Files: StringAttribute.java Log Message: Made double labels use scripts, they are always evaluated and only used if the result is a double Index: StringAttribute.java =================================================================== RCS file: /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/attrview/StringAttribute.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** StringAttribute.java 22 Sep 2007 13:54:26 -0000 1.16 --- StringAttribute.java 12 Oct 2007 08:05:06 -0000 1.17 *************** *** 13,19 **** --- 13,23 ---- import java.awt.event.MouseEvent; import java.awt.event.MouseListener; + import java.io.Reader; + import java.io.StringReader; + import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; + import java.util.Stack; import javax.swing.Box; *************** *** 25,28 **** --- 29,38 ---- import net.sourceforge.bprocessor.gui.GUI; import net.sourceforge.bprocessor.model.Attribute; + import net.sourceforge.bprocessor.model.Project; + import net.sourceforge.bprocessor.model.evaluator.Environment; + import net.sourceforge.bprocessor.model.evaluator.Function; + import net.sourceforge.bprocessor.model.evaluator.Invokable; + import net.sourceforge.bprocessor.parser.ScriptLexer; + import net.sourceforge.bprocessor.parser.ScriptParser; import org.apache.log4j.Logger; *************** *** 227,231 **** } } ! /** * Stop editing the value by replacing the editor with an label, --- 237,248 ---- } } ! ! /** ! * Builtin function ! */ ! private abstract class Builtin implements Invokable { ! ! } ! /** * Stop editing the value by replacing the editor with an label, *************** *** 239,243 **** attribute.setValue(editor.getText()); } else if (val instanceof Double) { ! attribute.setValue(Double.valueOf(editor.getText()) / 1000); } component.remove(editor); --- 256,295 ---- attribute.setValue(editor.getText()); } else if (val instanceof Double) { ! HashMap<String, Object> globals = Project.getInstance().getGlobals().environment(); ! globals.put("echo", new Builtin() { ! public void evaluate(Environment env, Stack<Object> stack) { ! stack.push(env.get(0)); ! } ! }); ! String script = Project.getInstance().getScript(); ! try { ! Reader input = new StringReader(script); ! ScriptLexer lexer = new ScriptLexer(input); ! ScriptParser parser = new ScriptParser(lexer); ! parser.script(globals); ! try { ! Environment global = new Environment(globals, null); ! Environment env = new Environment(global, new HashMap(), new LinkedList()); ! input = new StringReader("echo (" + editor.getText() + ")"); ! lexer = new ScriptLexer(input); ! parser = new ScriptParser(lexer); ! Function function = new Function(); ! parser.statement(function); ! Stack stack = new Stack(); ! function.evaluate(env, stack); ! Object o = stack.pop(); ! if (o instanceof Double) { ! attribute.setValue((Double)o / 1000); ! } else { ! attribute.setValue(0); ! } ! } catch (Exception error) { ! log.error(error); ! error.printStackTrace(); ! } ! } catch (Exception error) { ! log.error(error); ! } ! //attribute.setValue(Double.valueOf(editor.getText()) / 1000); } component.remove(editor); |