samer@0
|
1 /*
|
samer@0
|
2 * DoubleAgent.java
|
samer@0
|
3 *
|
samer@0
|
4 * Copyright (c) 2000, Samer Abdallah, King's College London.
|
samer@0
|
5 * All rights reserved.
|
samer@0
|
6 *
|
samer@0
|
7 * This software is provided AS IS and WITHOUT ANY WARRANTY;
|
samer@0
|
8 * without even the implied warranty of MERCHANTABILITY or
|
samer@0
|
9 * FITNESS FOR A PARTICULAR PURPOSE.
|
samer@0
|
10 */
|
samer@0
|
11
|
samer@0
|
12 package samer.tools;
|
samer@0
|
13 import samer.core.*;
|
samer@0
|
14 import samer.core.types.*;
|
samer@0
|
15 import java.util.*;
|
samer@0
|
16 import java.awt.*;
|
samer@0
|
17
|
samer@0
|
18 public class SignalTrace extends Trace
|
samer@0
|
19 {
|
samer@0
|
20 VDouble x;
|
samer@0
|
21 Color col;
|
samer@0
|
22 Renderer R;
|
samer@0
|
23 int oldj;
|
samer@0
|
24
|
samer@0
|
25 public SignalTrace(VDouble x) {
|
samer@0
|
26 this.x=x;
|
samer@0
|
27 col=Shell.getColor("color",getForeground());
|
samer@0
|
28 R=(Renderer)Shell.get("renderer",Renderer.LINE);
|
samer@0
|
29 oldj=-1;
|
samer@0
|
30 }
|
samer@0
|
31
|
samer@0
|
32 public void run() {
|
samer@0
|
33 super.run();
|
samer@0
|
34 int j=height-map.toInt(x.value);
|
samer@0
|
35 if (oldj<0) oldj=j;
|
samer@0
|
36 graphics.setColor(col);
|
samer@0
|
37 R.draw(graphics,x1,x2,oldj,j,j0);
|
samer@0
|
38 oldj=j;
|
samer@0
|
39 }
|
samer@0
|
40 public void detach() { x.deleteObserver(this); }
|
samer@0
|
41 public void update(Observable obs, Object arg) {
|
samer@0
|
42 if (arg==Viewable.DISPOSING) { detach(); getParent().remove(this); }
|
samer@0
|
43 else if (x==obs) run();
|
samer@0
|
44 else super.update(obs,arg);
|
samer@0
|
45 }
|
samer@0
|
46
|
samer@0
|
47 public void getCommands(Registry r) { super.getCommands(r); r.add("renderer"); }
|
samer@0
|
48 public void execute(String cmd, Environment env) throws Exception {
|
samer@0
|
49 if (cmd.equals("renderer")) R=(Renderer)Shell.get("renderer",Renderer.LINE);
|
samer@0
|
50 else super.execute(cmd,env);
|
samer@0
|
51 }
|
samer@0
|
52 }
|
samer@0
|
53
|