AMADEUS html plain
* import java.
class View
abstract class View extends Rectangle
ülemklass kõikidele vaadetele
vaade: skeemi ekraanil kujutamise stiil
* static final byte
SKETCHY = 0;
BOX = 1;
SKETCHY_PLUS = 2;
LATEX = 3;
STREE = 4;
MTREE = 5;
DTREE = 6;
XML = 7;
TABLE = 8;
byte type;
vaate tüüp, seab vastav konstruktor
Scheme sk;
skeem,mille vaatega on tegemist
View(Scheme s)
abstract Rectangle getLineArea(Scheme s);
tavaliselt vasakul äärel
planeerida skeem sk alates kohast (x, y):
abstract void plan(int x, int y);
joonistada graafikakonteksti g planeeritud skeem sk:
abstract void draw(Graphics g);
public void translate(Primitive p, int xt, int yt)
p.text.translate(xt, yt);
p.text.comment.translate(xt, yt);
* int i = 0; i < p.text.rows.size(); i++
p.text.row(i).translate(xt, yt);
public void translate(Scheme s, int xt, int yt)
nihutada kogu sk vaade xt ja yt võrra
//ikoon
? s.icon
result = new Cursor(s);
<==========
skeemi liikmed:
* int i = 0; i < s.body.size(); i++
Object o = s.member(i);
? o instanceof Scheme
liige on skeem
translate((Scheme)o, xt, yt);
<------
on mitteskeem
translate((Primitive)o, xt, yt);
skeemi kommentaar
s.comment.translate(xt, yt);
skeemi päis
* Enumeration e = s.head.elements(); e.hasMoreElements();
PrimitiveHead h = (PrimitiveHead)(e.nextElement());
translate(h, xt, yt);
skeem ise:
s.view.translate(xt, yt);
ekraanipunkti "ümbruse" leidmine*
//abstract void pointLocation(Point p, Scheme s);
public void pointLocation(Point p, Scheme s)
püütakse leida vähim (alam)osa, kuhu punkt kuulub
erijuhul jääb kursor skeemijoone alale (!inScheme)
globaalne: Cursor result (eelnevalt == null)
? result != null
<======
<======
? s.icon
result = new Cursor(s);
<======
otsida skeemi liikmetes:
* int i = 0; i < s.body.size(); i++
Object o = s.member(i);
? o instanceof Scheme
liige on skeem
pointLocation(p, (Scheme)o);
? result != null
leitud mingis alamskeemis
<==============
<------
on mitteskeem
result = new Cursor(s);
? pointLocation(p, ((PrimitiveMember)o).text)
on liikmel
result.primitive = (PrimitiveMember)o;
moveCursorToPointInRow(result, p);
viia kursor reas hiireni
<==========
alamskeemidel ei olnud, vo~ib olla veel skeemi s aa"rel ?
? getLineArea(s).contains(p)
result = new Cursor(s);
<======
selle skeemi kommentaaril ?
result = new Cursor(s);
? pointLocation(p, s.comment)
result.primitive = null;
moveCursorToPointInRow(result, p);
viia kursor reas hiireni
<======
result = null;
selle skeemi pa"isel ?
result = new Cursor(s);
* Enumeration e = s.head.elements(); e.hasMoreElements();
PrimitiveHead h = (PrimitiveHead)(e.nextElement());
? pointLocation(p, h.text)
result.primitive = h;
moveCursorToPointInRow(result, p);
viia kursor reas hiireni
<==========
abimeetod
private static void
moveCursorToPointInRow(Cursor result, Point p)
viia kursor reas hiireni
result.noInRow = 1;
Row r = result.row;
int shift = (((Symbol)r.elements.elementAt(0))).width();
* int i = 1; i < r.elements.size(); i++
<======
result.noInRow++;
r.getElement(i);
? r.sy != null
shift += r.sy.width();
<------
pyytakse leida va"him (alam)skeem, kuhu punkt kuulub
erijuhul jaa"b kursor skeemijoone alale
globaalne: result (p.o. eelnevalt null)
static Cursor result;
meetodi pointLocation jaoks globaalne
boolean pointLocation(Point p, Row r)
reas (kommentaaris) otsimine
? (r.contains(p))
View.result.row = r;
<======true
<======false
boolean pointLocation(Point p, Text t)
tekstis otsimine
..for
* Enumeration e = t.rows.elements(); e.hasMoreElements();
Row r = ((Row)(e.nextElement()));
? (pointLocation(p, r))
result.text = t;
<==========true
veel teksti kommentaaris:
? (pointLocation(p, t.comment))
View.result.text = null;
View.result.row = t.comment;
<======true
<======false
boolean pointLocation(Point p, Primitive pr)
primitiivis otsimine
? (pointLocation(p, pr.text))
View.result.primitive = pr;
<======true
<======false
vaate valimine ja seadmine*
vaate valimise dialoogi väljad
static String[] items =
non-control
AmLocale.Sketches(), AmLocale.Boxes(),
AmLocale.SketchesPlus(), "LaTeX", AmLocale.STree(),
AmLocale.MTree(), AmLocale.DTree(), "XML",
AmLocale.Table()
;
static AmList list;
static boolean userSetAll(Scheme s, AmFrame frame)
kysib vaate kasutajalt,
paneb selle vaate skeemile s ja ko~igile alamskeemidele
list = new AmList(items);
AmDialog d = new AmDialog
(frame, AmLocale.View(),AmDialog.B_SELECT_CANCEL,
AmLocale.Select_view()+".",
(AmList)list);
d.pack();
d.show();
int bli = -999;
kompilaatorile
??d.getTulemus()
? AmDialog.CANCEL:
<==========false
? AmDialog.SELECT:
bli = list.getSelectedIndex();
<======;
seada vaade
??bli
? BOX:
Sketches
<======;
? SKETCHY:
Boxes
<======;
? SKETCHY_PLUS:
koos onelining-uga
<======;
? LATEX:
<======;
? STREE:
mono harudega skeemide korral
? ((Sketch)s).isAllMono()
setAll(s, STREE);
<======
<==============false
? MTREE:
<======
? DTREE:
<======
? XML:
<======
? TABLE:
<======true
static void setAll(Scheme s, int type)
set(s, type);
* int i = 0; i < s.body.size(); i++
Object o = s.member(i);
? o instanceof Scheme
setAll((Scheme)o, type);
static void set(Scheme s, int type)
??type
? BOX:
<======;
? SKETCHY:
s.view = new ViewSketchy(s);
<======;
? SKETCHY_PLUS:
s.view = new ViewSketchyPlus(s);
<======;
? LATEX:
s.view = new ViewLatex(s);
<======;
? STREE:
? (s instanceof Branch) || ((Sketch)s).isAllMono()
s.view = new ViewSTree(s);
? MTREE:
s.view = new ViewMTree(s);
<======
? DTREE:
s.view = new ViewDTree(s);
<======
? XML:
<======
? TABLE:
s.view = new ViewTable(s);
static View newView(int type, Scheme s)
tagastab vaate tüüpi tüpe, kus peremeheks on skeem s
??type
? SKETCHY:
<==========new ViewSketchy(s)
<==========new ViewBox(s)
<==========new ViewSketchyPlus(s)
<==========new ViewLatex(s)
<==========new ViewSTree(s)
<==========new ViewMTree(s)
<==========new ViewDTree(s)
<==========new ViewXml(s)
<==========new ViewTable(s)
<======null