AMADEUS html plain
* import java.
class View
abstract class View extends Rectangle
ülemklass kõikidele vaadetele
vaade: skeemi ekraanil kujutamise stiil
* static final byte
objektide joonistamise seadmise ja meetodi jaoks
SET_COLOR = 0;
g seade
DRAW_RECT = 10;
g meetod
FILL_RECT = 12;
g meetod
DRAW_LINE = 11;
g meetod
DRAW_ROW = 20;
Row meetod
DRAW_TEXT = 21;
Text meetod
DRAW_ICON_IMAGE = 40;
image
public static float sizeFactor = 1.0f;
seda muudavad raamid
kasut. vaate realiseerimisel raamis
static float sizeFactorStep;
määrab Am (Default põhjal) sellega korrutatakse või jagatakse
MUUDETAVAD UUE VAATE LISAMISEL
static final byte SKETCHY = 0;
static final byte BOX = 1;
static final byte SKETCHYPLUS = 2;
static final byte LATEX = 3;
static final byte STREE = 4;
static final byte MTREE = 5;
static final byte DTREE = 6;
static final byte XML = 7;
static final byte TABLE = 8;
static final byte FAMILY = 9;
static final byte SKNUM = 10;
static final byte PROOV = 11;
static final byte BRACES = 12;
static final byte SKM = 13;
//static final byte KONST = 13;
ASENDUS_VAADE_LISA:KONST&++
static final int N = 14;
vaadete arv ASENDUS_VAADE_MUUDA:++
byte type;
vaate tüüp, seab vastav konstruktor
Scheme sk;
skeem,mille vaatega on tegemist
Vector drawObjects;
iga vaate plan sisustab selle
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, boolean rowsToo);
joonistada graafikakonteksti g planeeritud skeem sk:
abstract void draw(Graphics g);
public static void draw(Graphics g, View v)
draw planned view v for its host scheme
drawAllObjects(g, v.drawObjects);
? !v.sk.icon
* int i = 0; i < v.sk.body.size(); i++
draw members:
Object o = v.sk.member(i);
? o instanceof Scheme
((Scheme)o).view.draw(g);
private static void drawAllObjects(Graphics g, Vector drawObjects)
* int i = 0, n = drawObjects.size(); i < n; i++
ViewDrawObject vdo = (ViewDrawObject)(drawObjects.elementAt(i));
Object o = vdo.argument;
Rectangle re;
??vdo.drawCommand
? SET_COLOR:
g.setColor((Color)(vdo.argument));
<======
? DRAW_RECT:
re = (Rectangle)(vdo.argument);
g.drawRect(re.x, re.y, re.width, re.height);
<======
? FILL_RECT:
re = (Rectangle)(vdo.argument);
g.fillRect(re.x, re.y, re.width, re.height);
<======
? DRAW_LINE:
re = (Rectangle)(vdo.argument);
laius;pikkus = otsp.koord.
g.drawLine(re.x, re.y, re.width, re.height);
<======
? DRAW_ROW:
//Row r = (Row)(vdo.argument);
((Row)(vdo.argument)).draw(g);
<======
? DRAW_TEXT:
//Text r = (Text)(vdo.argument);
((Text)(vdo.argument)).draw(g);
<======
? DRAW_ICON_IMAGE:
re = (Rectangle)(vdo.argument);
g.drawImage(Am.pictureBoard.iconImage, re.x, re.y, re.width, re.height, null);
<======
public void plan(int x0, int y0)
// ei kõlba, sest võis tulla (nt Undo) varem suumitust
? Math.abs(sizeFactor -1.0) < 0.001
plan(x0, y0, false);
<======
plan(x0, y0, true);
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
Scheme skeem = (Scheme)o;
skeem.view.pointLocation(p, skeem);
JK 25.02.2004
? 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
<==========
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
static boolean pointLocation(Point p, Row r)
reas (kommentaaris) otsimine
? (r.contains(p))
View.result.row = r;
<======true
<======false
static 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
static 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 = new String[N];
JK 29.12.05
static String[] itemsActive;
JK 25.01.06
static String[] itemsNonActive;
JK 25.01.06
static AmList list;
static boolean userSetAll(Scheme s, AmFrame frame)
kysib vaate kasutajalt,
paneb selle vaate skeemile s ja ko~igile alamskeemidele
setLocaleNames();
setActiveNames();
list = new AmList(itemsActive);
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
JK 25.01.06:
String viewName = itemsActive[bli];
setAll(s, getViewConst(viewName));
<======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);
MUUDETAVAD UUE VAATE LISAMISEL ja TOGITAVAD VAATE AKTIVEERIMISEL/DEAKTIVEERIMISEL
static void set(Scheme s, int type)
switch(type){
case BOX: s.view = new ViewBox(s); break;
case SKETCHY: s.view = new ViewSketchy(s); break;
case SKETCHYPLUS: s.view = new ViewSketchyPlus(s); break;
case LATEX: s.view = new ViewLatex(s); break;
case STREE: s.view = new ViewSTree(s); break;
case MTREE: s.view = new ViewMTree(s); break;
case DTREE: s.view = new ViewDTree(s); break;
case XML: s.view = new ViewXml(s); break;
case TABLE: s.view = new ViewTable(s); break;
case FAMILY: s.view = new ViewFamily(s); break;
case SKNUM: s.view = new ViewSkNum(s); break;
case PROOV: s.view = new ViewProov(s); break;
case BRACES: s.view = new ViewBraces(s); break;
case SKM: s.view = new ViewSkm(s); break;
//case KONST: s.view = new ViewNimi(s); break;
ASENDUS_VAADE_LISA:KONST&Nimi
//??default: s.view = new ViewModel(s); break;???
}
static View newView(int type, Scheme s)
tagastab vaate tüüpi type, kus peremeheks on skeem s
switch(type){
case BOX: return new ViewBox(s);
case SKETCHY: return new ViewSketchy(s);
case SKETCHYPLUS: return new ViewBox(s);
case LATEX: return new ViewLatex(s);
case STREE: return new ViewSTree(s);
case MTREE: return new ViewMTree(s);
case DTREE: return new ViewDTree(s);
case XML: return new ViewXml(s);
case TABLE: return new ViewTable(s);
case FAMILY: return new ViewFamily(s);
case SKNUM: return new ViewSkNum(s);
case PROOV: return new ViewProov(s);
case BRACES: return new ViewBraces(s);
case SKM: return new ViewSkm(s);
//case KONST: return new ViewNimi(s);
ASENDUS_VAADE_LISA:KONST&Nimi
//??default: return new ViewModel(s);???
}
<======null
static String getViewName(int type)
EI OLE TOGITAV
?? ka ikka: praegu togib (teisi: +//) ADMIN
switch(type){
case BOX: return AmLocale.Box();
case SKETCHY: return AmLocale.Sketchy();
case SKETCHYPLUS: return AmLocale.SketchyPlus();
case LATEX: return "Latex";
case STREE: return AmLocale.STree();
case MTREE: return AmLocale.MTree();
case DTREE: return AmLocale.DTree();
case XML: return "Xml";
case TABLE: return AmLocale.Table();
case FAMILY: return AmLocale.Family();
case SKNUM: return "SkNum";
case PROOV: return "Proov";
case BRACES: return AmLocale.Braces();
case SKM: return "Skm";
//case KONST: return "Nimi";
ASENDUS_VAADE_LISA:KONST&Nimi
//??default: return ;???
}
<======null
private static boolean isActive(int type)
switch(type){
case BOX: return false;
case SKETCHY: return true;
case SKETCHYPLUS: return false;
case LATEX: return false;
case STREE: return false;
case MTREE: return false;
case DTREE: return false;
case XML: return false;
case TABLE: return false;
case FAMILY: return false;
case SKNUM: return false;
case PROOV: return false;
case BRACES: return true;
case SKM: return false;
//case KONST: return true;
ASENDUS_VAADE_LISA:KONST
default: return false;
muidu: passiivne
}
static void setLocaleNames()
see meeod tuleb rakendada iga vaadete nimedega tegeleva meetodi algul
* int i = 0; i < N; i++
items[i] = getViewName(i);
static void setActiveNames()
JK 25.01.06
Eeldus: setLocaleNames() on tehtud (items[])
int loe = 0;
* int i = 0; i < N; i++
? isActive(getViewConst(items[i]))
loe++;
itemsActive = new String[loe];
* int i = 0, j = 0; i < N; i++
? isActive(getViewConst(items[i]))
itemsActive[j++] = items[i];
static void setNonActiveNames()
JK 25.01.06
Eeldus: setLocaleNames() on tehtud (items[])
int loe = 0;
* int i = 0; i < N; i++
System.out.println("View:items: " + items[i] );
? !isActive(getViewConst(items[i]))
System.out.println("View:items: nonActive" );
loe++;
itemsNonActive = new String[loe];
* int i = 0, j = 0; i < N; i++
? !isActive(getViewConst(items[i]))
itemsNonActive[j++] = items[i];
static byte getViewConst(String viewName)
* int i = 0; i < N; i++
? items[i].equals(viewName)
return (byte)i;
return (byte)-1;
kui sellist nime ei ole
static String getLastViewName()
<======items[items.length - 1]
static void replanTextAndCommentSize(Scheme s)
kui on vaja kõik teksti/rea suurused ümber planeerida,
nt kui muudeti kogu mastaap
s.comment.planSize();
päised
? s.head.size() != 0
* Enumeration e = s.head.elements(); e.hasMoreElements();
PrimitiveHead he = (PrimitiveHead)(e.nextElement());
he.text.plan(0, 0, true);
keha
* int i = 0; i < s.body.size(); i++
alluvate planeerimine:
Object o = s.member(i);
? (o instanceof Scheme)
Scheme ss = (Scheme)o;
replanTextAndCommentSize(ss);
//
? (ss instanceof Sketch)
ss.view.plan(x0+hd, yy, rowsToo);
xxxxxxxxxxxxxxxxx
<======
haru
ss.view.plan(x0+1, yy, rowsToo);
xxxxxxxxxxxxxx
<------
o on lihtliige
PrimitiveMember ns = (PrimitiveMember)o;
ns.text.plan(0, 0, true);
boolean isIdentifier
public static
boolean isIdentifier ( String s )
http://javaalmanac.com/egs/java.lang/IsJavaId.html
<======false
? s . length ( ) == 0 || ! Character . isJavaIdentifierStart ( s . charAt ( 0 ) )
<======false
..for
* int i = 1 ; i < s . length ( ) ; i ++
? ! Character . isJavaIdentifierPart ( s . charAt ( i ) )
<==========false
<======true