samer@0: /* samer@0: * DoubleAgent.java samer@0: * samer@0: * Copyright (c) 2000, Samer Abdallah, King's College London. samer@0: * All rights reserved. samer@0: * samer@0: * This software is provided AS IS and WITHOUT ANY WARRANTY; samer@0: * without even the implied warranty of MERCHANTABILITY or samer@0: * FITNESS FOR A PARTICULAR PURPOSE. samer@0: */ samer@0: samer@0: package samer.tools; samer@0: import samer.core.*; samer@0: import samer.core.types.*; samer@0: import java.util.*; samer@0: import java.awt.*; samer@0: samer@0: public class SignalTrace extends Trace samer@0: { samer@0: VDouble x; samer@0: Color col; samer@0: Renderer R; samer@0: int oldj; samer@0: samer@0: public SignalTrace(VDouble x) { samer@0: this.x=x; samer@0: col=Shell.getColor("color",getForeground()); samer@0: R=(Renderer)Shell.get("renderer",Renderer.LINE); samer@0: oldj=-1; samer@0: } samer@0: samer@0: public void run() { samer@0: super.run(); samer@0: int j=height-map.toInt(x.value); samer@0: if (oldj<0) oldj=j; samer@0: graphics.setColor(col); samer@0: R.draw(graphics,x1,x2,oldj,j,j0); samer@0: oldj=j; samer@0: } samer@0: public void detach() { x.deleteObserver(this); } samer@0: public void update(Observable obs, Object arg) { samer@0: if (arg==Viewable.DISPOSING) { detach(); getParent().remove(this); } samer@0: else if (x==obs) run(); samer@0: else super.update(obs,arg); samer@0: } samer@0: samer@0: public void getCommands(Registry r) { super.getCommands(r); r.add("renderer"); } samer@0: public void execute(String cmd, Environment env) throws Exception { samer@0: if (cmd.equals("renderer")) R=(Renderer)Shell.get("renderer",Renderer.LINE); samer@0: else super.execute(cmd,env); samer@0: } samer@0: } samer@0: