AMADEUS html plain
import java.util.*;
import java.awt.*;
class ViewTable extends View
realiseerib tabel-vaate
static final int hd = 10;
hor-intervall
static final int vd = 10;
vert-intervall
static Color color = Color.blue;
joonistamisva"rv
static Color colorBr = Default.branchHeadColor;
joonistamisva"rv
static final Color selectionColor = Color.gray;
valitu ymbrise va"rv
static int iconw = hd;
static int iconh = vd;
ViewTable(Scheme s)
super(s);
type = View.TABLE;
public void plan(int x0, int y0)
? sk instanceof Branch
planBranch(x0, y0);
<======
? sk.icon
ikooni koht ja moo~tmed:
x = x0; y = y0;
iconw = sk.comment.height;
eelsümbol incl.
iconh = iconw;
width = iconw + 4;
height = iconh + 4;
<==========
int yy = y0 + vd;
? !sk.comment.isTrivial()
yy += sk.comment.height;
int xx = x0;
int headW = 0;
? sk.head.size() != 0
planeerida paised
* Enumeration e = sk.head.elements(); e.hasMoreElements();
PrimitiveHead he = (PrimitiveHead)(e.nextElement());
he.text.plan(x0+hd, yy-vd);
yy += he.text.height;
? he.text.width > headW
headW = he.text.width;
yy += vd;
vahekriipsu jaoks
xx += hd;
int headH = yy -y0;
int maxBodyH = 0;
* int i = 0; i < sk.body.size(); i++
Branch br = (Branch)sk.member(i);
br.view.plan(xx, yy + vd);
xx += br.view.width+1;
? br.view.height > maxBodyH
maxBodyH = br.view.height;
enda koht ja mõõtmed:
x = x0; y = y0;
width = xx -x0;
width = Math.max(width, headW);
width += hd;
kommentaar paremale äärde:
sk.comment.x = sk.view.x + sk.view.width - sk.comment.width - 2;
sk.comment.y = y0 + vd;
maxBodyH = alignBranchMembers(maxBodyH);
height = headH + maxBodyH + 2*vd;
private int alignBranchMembers(int maxBodyH)
Vector v = new Vector();
v(i) = i-nda liikme suurim kõrgus (üle kõigi harude)
int i = 0;
vaadeldav rida (liige harudes) == v.size()-1
int h = -1;
i-nda rea maks kõrgus
* int j = 0; j < sk.body.size(); j++
iga haru j korral
Branch br = (Branch)sk.member(j);
leiame i-nda liikme kõrguse hi harus br:
int hi = -1;
? i > (br.body.size()-1)
<------
see haru ei anna midagi i-nda rea jaoks
Object o = br.member(i);
? o instanceof Sketch
hi = ((Sketch)o).view.height;
<======
hi = ((PrimitiveMember)o).text.height;
<==========
i-ndas reas oli vähemalt 1 liige
v.addElement(new Integer(h));
i++;
ridade suhtelised y-koordinaadid:
* i = 1; i < v.size(); i++
int x = ((Integer)v.elementAt(i-1)).intValue();
int y = ((Integer)v.elementAt(i)).intValue();
v.setElementAt(new Integer(x+y+vd), i);
0. rea suhteline y on vd
v(0)+vd on 1. rea suhteline y-koordinaat
v(1)+vd on 2. rea suhteline y-koordinaat
...
v(eelviimane)+vd on viiimase rea suhteline y-koordinaat
v(viimane)+vd on iga haru kõrgus
nihutada liikmed:
esimeste liikmete nihutamine, sõltuvalt haru päisest
int headY = 0;
* i = 0; i < sk.body.size(); i++
Branch br = (Branch)sk.member(i);
int yy = 0;
kompil
Object o = br.member(0);
? o instanceof Sketch
yy = ((Sketch)o).view.y;
<======
yy = ((Primitive)o).text.y;
* i = 0; i < sk.body.size(); i++
iga haru i korral
Branch br = (Branch)sk.member(i);
int baasY = headY;
int brY = -1;
viimase liikme alumine y
* int j = 0; j < br.body.size(); j++
iga liikme j korral (alates teisest)
Object o = br.member(j);
int suhtY = -vd;
esimese (0-nda) rea korral
? j != 0
suhtY = ((Integer)v.elementAt(j-1)).intValue();
int vanaAbsY = 0;
kompil
? o instanceof Sketch
Sketch ss = (Sketch)o;
vanaAbsY = ss.view.y;
ss.view.translate(ss, 0, baasY + suhtY -vanaAbsY + vd);
brY = ss.view.y + ss.view.height;
<======
Primitive pp = (Primitive)o;
vanaAbsY =pp.text.y;
translate(pp, 0, baasY + suhtY -vanaAbsY + vd);
brY = pp.text.y + pp.text.height;
harule uus kõrgus:
? brY != -1
br.view.height = brY - br.view.y +vd;
? br.view.height > maxBodyH
maxBodyH = br.view.height;
<======maxBodyH
private void planBranch(int x0, int y0)
tabel-vaate planeerimine, kui sk on haru
planeeritakse vaatega seotud skeem sk
? sk.icon
ikooni koht ja moo~tmed:
x = x0; y = y0;
iconw = sk.comment.height;
iconh = iconw;
width = iconw + 8;
height = iconh + 4;
<======
int yy= y0+vd;
jooksev vert. koordinaat
int ww = 0;
jooksev laius
kommentaar
sk.comment.y = yy;
yy += sk.comment.height+vd;
? sk.comment.width > ww
ww = sk.comment.width;
? sk.head.size() != 0
planeerida paised
* Enumeration e = sk.head.elements(); e.hasMoreElements();
PrimitiveHead he = (PrimitiveHead)(e.nextElement());
he.text.plan(x0+hd, yy-vd);
yy += he.text.height;
? he.text.width > ww
ww = he.text.width;
yy += 2*vd;
vahekriipsu jaoks
* int i = 0; i < sk.body.size(); i++
alluvate planeerimine:
Object o = sk.member(i);
? o instanceof Sketch
Scheme ss = (Scheme)o;
ss.view.plan(x0+hd, yy);
yy += ss.view.height + vd;
? ss.type != Scheme.SIMPLE
yy += 3;
? ss.view.width > ww
ww = ss.view.width;
<------
o on lihtliige
PrimitiveMember ns = (PrimitiveMember)o;
ns.text.plan(x0+hd, yy);
yy += ns.text.height + vd;
? ns.text.width > ww
ww = ns.text.width;
enda koht ja moo~tmed:
x = x0; y = y0;
width = ww+2*hd;
height = yy-y0+vd+1;
kommentaar paremale aa"rde
sk.comment.x = sk.view.x + sk.view.width - sk.comment.width - 2;
draw
public void draw(Graphics g)
kast-vaate joonistamine
joonistab selle vaatega seotud skeemi sk
if(sk.icon){
g.drawRect(x, y, width+1, height+1);
g.drawLine(x, y, x + width+1, y + height+1);
g.setColor(Default.commentColor);
g.drawString(sk.comment.toString(),
x+width+1+1, y+height);
return;
}
Scheme s = super.sk;
? s.icon
? s instanceof Sketch
g.setColor(color);
<======
ikoon joonistatakse talle planeeritud ala sisse
int luX = x + 6;
int luY = y + 2;
g.drawRect(luX, luY, iconw, iconh);
g.drawLine(luX, luY,
luX + iconw - 1, luY + iconh - 1);
? !s.comment.isTrivial()
g.setColor(Default.commentColor);
g.drawString(s.comment.toString(),
x + width + 2, y + iconh);
<======
? s.head.size() != 0
? s instanceof Sketch
g.setColor(color);
<======
g.drawString(s.primitiveHead(0).text.row(0).toString(),
x + width + 2, y + iconh);
<======
int yy = 0;
joonistamise jarg
kommentaar
sk.comment.draw(g);
yy += sk.comment.height;
int w = 0;
paised
* Enumeration e = sk.head.elements(); e.hasMoreElements();
PrimitiveHead he = (PrimitiveHead)(e.nextElement());
g.setColor(color);
he.text.draw(g);
? he.text.width > w
w = he.text.width;
g.setColor(color);
paise tunnus
?? he.type
? PrimitiveHead.LOOP:
g.setFont(Default.font);
p.o. selle vaate font !!!!!!!!!!!
(el-paise esimese rea ette)
g.drawString("*", x+1, y+yy + he.text.height*3/4);
<======
? PrimitiveHead.SWITCH:
g.setFont(Default.font);
p.o. selle vaate font !!!!!!!!!!!
g.drawString("??", x+1, y+yy + he.text.height*3/4);
<======
? PrimitiveHead.CASE:
? PrimitiveHead.DEFAULT:
g.setFont(Default.font);
p.o. selle vaate font !!!!!!!!!!!
g.drawString("?", x+1, y+yy + he.text.height*3/4);
<======
? PrimitiveHead.TRY:
g.setFont(Default.font);
p.o. selle vaate font !!!!!!!!!!!
g.drawString("!!", x+1, y+yy + he.text.height*3/4);
<======
? PrimitiveHead.CATCH:
? PrimitiveHead.FINALLY:
g.setFont(Default.font);
p.o. selle vaate font !!!!!!!!!!!
g.drawString("!", x+1, y+yy + he.text.height*3/4);
<======
yy += he.text.height;
vahekriips:
//
? sk.head.size() > 0
g.drawLine(x+1, y+yy+vd, x+1+w, y+yy+vd);
kast ymber
? sk instanceof Branch
g.setColor(Color.magenta);
p.o. selle vaate font !!!!!!!!!!!
<======
g.setColor(color);
p.o. selle vaate font !!!!!!!!!!!
g.drawRect(x, y, width, height);
skeemi tyybist so~ltuvalt veel:
??sk.type
? Scheme.LOOP:
g.drawRect(x-2, y-2, width+4, height+4);
<======
? Scheme.MODULE:
g.drawRect(x-1, y-1, width+2, height+2);
<======
joonistada alluvad:
* Enumeration e = sk.body.elements(); e.hasMoreElements();
Object o = e.nextElement();
? o instanceof Scheme
Scheme ss = (Scheme)o;
ss.view.draw(g);
yy += ss.view.height;
<------
? o instanceof Arrow
Arrow ns = (Arrow)o;
?? ns.type
? Arrow.STRONG:
? Arrow.WEAK:
g.setFont(Default.font);
p.o. selle vaate font !!!!!!!!!!!
g.setColor(Default.conditionColor);
(esimese rea ette)
int leftX;
? ns.level == Integer.MAX_VALUE
leftX = x+hd/2;
<======
leftX = (ns.level - 1)*hd + 10;
sest canvas.hd == 10
int leftY = ns.text.y + ns.text.height/2,
rightX = x+hd,
rightY = leftY;
g.drawLine(leftX, leftY, rightX, rightY);
g.drawLine(leftX, leftY, leftX+3, leftY-3);
g.drawLine(leftX, leftY, leftX+3, leftY+3);
<======;
ns.text.draw(g);
yy += ns.text.height;
<------
PrimitiveMember ns = (PrimitiveMember)o;
?? ns.type
? Primitive.CONDITION:
g.setFont(Default.font);
p.o. selle vaate font !!!!!!!!!!!
g.setColor(Default.conditionColor);
(esimese rea ette)
g.drawString("?", x+1, ns.text.y + ns.text.height*3/4);
<======
ns.text.draw(g);
yy += ns.text.height;
for
public Rectangle getLineArea(Scheme s)
praegu vaid kasti vasakul äärel
<======new Rectangle(s.view.x, s.view.y, hd, s.view.height)