AMADEUS html plain
This sketchy text is generated by AMADEUS
class Cursor
class Cursor implements CursorMovements
osutab kohale skeemtekstis
Scheme scheme;
peremees-skeem (la"him)
Primitive primitive;
peremees-primitiiv; null, kui skeemikommentaaril
Text text;
peremees-tekst; null, kui kommentaaril
Row row;
teksti rida; ka teksti kommentaar ja skeemikomentaar
null, kui pole skeemi sees
int noInRow;
reaelemendi number, mille ees (ka skeemikommentaaris)
$>$ 0 (sest ees on veel eelsymbol, selle ees kursor ei ole)
Cursor(Scheme s)
konstruktor (skeemi aa"rele)
Cursor(Scheme s, Primitive p)
konstruktor (primitiivile p)
scheme = s;
row = null;
primitive = p;
text = p.text;
row = text.row(0);
noInRow = 1;
Cursor makeCopy()
Cursor c = new Cursor(scheme);
c.primitive = primitive;
c.text = text;
c.row = row;
c.noInRow = noInRow;
<======c
boolean inScheme()
kas on mo~nel real, ka kommentaaril
false, kui skeemi aa"rel
<======row != null
boolean inPrimitive()
kas on mo~nel primitiivil
false, kui skeemikommentaaril
<======primitive != null
boolean inSchemeComment()
kas on skeemikommentaaril
<======inScheme() && !inPrimitive()
boolean inHead()
kas on pa"ises
<======inPrimitive() && (primitive instanceof PrimitiveHead)
boolean inBody()
kas on kehas
<======(inPrimitive() && (primitive instanceof PrimitiveMember))
|| (!inScheme())
boolean inTextComment()
kas on tekstikommentaaril
<======inPrimitive() && (text == null)
int rowNo()
<======text.rows.indexOf(row)
<======-1
liikumine reas*
public void moveToRowHome()
eeldab: row != null, st on skeemi sees
public void moveToRowEnd()
noInRow = row.elements.size();
liikumine tekstis*
private boolean moveToNextRow()
jrgm reale teksis (kui on)
eeldab: text != null
int i, n;
n = text.rows.size();
i = text.rows.indexOf(row) + 1;
? (i == n)
<======false
row = text.row(i);
moveToRowHome();
<======true
private boolean moveToPreviousRow()
eelm reale tekstis (kui on)
int i, n;
i = text.rows.indexOf(row);
? (i == 0)
<======false
row = text.row(i-1);
//moveToRowEnd();
karetina kutsuks välja kareti moveToRowEnd()
noInRow = row.elements.size();
<======true
void moveToTextComment()
teksti kommentaarile
row = text.comment;
text = null;
moveToRowHome();
liikumine primitiivis*
public void moveToPrimitiveText()
peremees-primitiivi teksti algusse
eeldab: primitive != null
text = primitive.text;
row = text.row(0);
moveToRowHome();
public void moveToPrimitiveTextEnd()
peremees-primitiivi teksti loppu
text = primitive.text;
row = (Row)(text.rows.lastElement());
noInRow = row.elements.size();
moveToRowEnd(); mitte Caret'i oma
public void moveToPrimitiveComment()
peremees-primitiivi kommentaari algusse
text = null;
row = primitive.text.comment;
moveToRowHome();
public void moveToPrimitiveEnd()
peremees-primitiivi kommentaari loppu
text = null;
moveToPrimitiveComment();
moveToRowEnd();
liikumine pa"ises*
public void moveToHeadEnd()
i
eeldab: pa"is pole tyhi
primitive = (PrimitiveHead)(scheme.head.lastElement());
moveToPrimitiveEnd();
liikumine skeemis pa"ise vo~i keha piires*
boolean moveToNextElement()
eeldab: on lihtpa"isel vo~i liikmel
ja"rgmisele lihtpa"isele vo~i liikmele
(kui saab pa"ise vo~i keha piires)
kui jrgm liige on skeem, siis jaa"b skeemi aa"rele
kui pole skeemis, siis skeemile eelnevale? liikmele
int i, n;
? (!inScheme())
n = scheme.parent.body.size();
i = scheme.parent.body.indexOf(scheme) + 1;
<==========false
Object o = scheme.parent.member(i);
? (o instanceof Scheme)
scheme = (Scheme)o;
row = null;
moveToParentHome();
<==========true
on primitiiv
scheme = scheme.parent;
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<======true
? (inHead())
n = scheme.head.size();
i = scheme.head.indexOf(primitive) + 1;
<==========false
primitive = scheme.primitiveHead(i);
moveToPrimitiveText();
<======true
? (inBody())
Object o;
n = scheme.body.size();
i = scheme.body.indexOf(primitive) + 1;
* ;;i++
<==========false
o = scheme.member(i);
? (o instanceof Scheme)
Scheme s = (Scheme)o;
ikoonid ja"tta vahele
<----------
<==========true
<======
on primitiiv
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<======true
<======false
boolean moveToPreviousElement()
eelmisele (kui saab)
kui eelmine liige on skeem, siis jaa"b skeemi aa"rele
int i;
? (!inScheme())
i = scheme.parent.body.indexOf(scheme);
<==========false
Object o = scheme.parent.member(i-1);
? (o instanceof Scheme)
scheme = (Scheme)o;
row = null;
<==========true
on primitiiv
scheme = scheme.parent;
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<======true
? (inHead())
i = scheme.head.indexOf(primitive);
<==========false
primitive = scheme.primitiveHead(i - 1);
moveToPrimitiveEnd();
<======true
? (inBody())
Object o;
i = scheme.body.indexOf(primitive);
* ;;i--
<==========false
o = scheme.member(i - 1);
? (o instanceof Scheme)
Scheme s = (Scheme)o;
ikoonid ja"tta vahele
<----------;
<==========true
<======
on primitiiv
primitive = (PrimitiveMember)o;
moveToPrimitiveEnd();
<======true
<======false
liikumine skeemis: algusse, loppu, pa"isele, kehassse*
public void moveToParentHome()
minna peremees-skeemi (kommentaari) algusse
eeldab: scheme ja inScheme(v.a. meetodis moveToParentHome)
inScheme = true;
primitive = null;
text = null;
row = scheme.comment;
moveToRowHome();
public void moveToParentParentHome()
minna peremees-skeemi ylemuse (kommentaari) algusse
inScheme = true;
primitive = null;
text = null;
scheme = scheme.parent;
row = scheme.comment;
moveToRowHome();
public void moveToParentEnd()
SILUMATA
minna peremees-skeemi
(keha viimase ikoniseerimata liikme) loppu
kui keha pole, siis pa"ise loppu
kui ka pa"ist pole, siis skeemi algusse
leida kehas viimane mitteikoniseeritud liige
p voi s
Primitive p = null;
Scheme s = null;
int n = scheme.body.size();
* int i = n-1; i >= 0; i--
Object o = scheme.member(i);
? (o instanceof Scheme)
<----------
<======
<======
? (s != null)
scheme = s;
moveToParentEnd();
<======
? (p != null)
viimane kehas on lihtliige
primitive = p;
moveToPrimitiveText();
moveToPrimitiveEnd();
<======
pa"is
? (scheme.head.size() == 0)
pa"ist ei ole
moveToParentHome();
moveToRowEnd();
<======
pa"is on
primitive = (PrimitiveHead)(scheme.head.lastElement());
moveToPrimitiveComment();
moveToRowEnd();
<======
public boolean moveToHead()
minna peremees-skeemi pa"ise algusse
? (scheme.head.size() == 0)
<======false
primitive = scheme.primitiveHead(0);
moveToPrimitiveText();
<======true
public boolean moveToHead(int i)
minna peremees-skeemi pa"ise elemendile i
? (scheme.head.size()-1 < i)
<======false
primitive = scheme.primitiveHead(i);
moveToPrimitiveText();
<======true
public boolean moveToBody()
minna peremees-skeemi keha esimesele liikmele,
mis pole ikoniseeritud skeem (kui keha pole tyhi)
Object o;
int n = scheme.body.size();
* int i = 0; i < n; i++
o = scheme.member(i);
? (o instanceof Scheme)
Scheme ss = (Scheme)o;
..if
<----------
scheme = ss;
moveToParentHome();
<==========true
on primitiiv
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<==========true
<======false
liikumine antud skeemist va"lja*
private boolean moveToNextMember()
eeldab: scheme
minna peremees-skeemile ja"rgnevale liikmele ylemuses
Object o = null;
Scheme father = scheme.parent;
? (father == null)
<======false
int n = father.body.size();
int i = father.body.indexOf(scheme) + 1;
* ;;i++
? (i < n)
jrgm liige on olemas
o = father.member(i);
? (o instanceof Scheme)
Scheme s = (Scheme)o;
<--------------
scheme = s;
moveToParentHome();
<==============true
<======
on primitiiv
<======
i==n
for
? (i < n)
on primitiiv
scheme = father;
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<======true
jrgm liiget pole
scheme = father;
return moveToNextMember();
Scheme keepScheme = scheme;
scheme = father;
? (moveToNextMember())
<======true
<======false
boolean moveToPreviousMember()
minna peremees-skeemile eelnevale liikmele ylemuses
Object o = null;
Scheme father = scheme.parent;
? (father == null)
<======false
int i = father.body.indexOf(scheme) - 1;
* ;;i--
? (i >= 0)
eelmine liige on olemas
o = father.member(i);
? (o instanceof Scheme)
Scheme s = (Scheme)o;
ikoonid ja"tta vahele
<--------------;
scheme = s;
moveToParentEnd();
<==============true
<======
on primitiiv, i >= 0
<======
i < 0
? (i >= 0)
on primitiiv
scheme = father;
primitive = (PrimitiveMember)o;
moveToPrimitiveEnd();
<======true
eelmist liiget pole
scheme = father;
moveToParentHome();
? (scheme.head.size() == 0)
moveToRowEnd();
<======
<======true
suunatud liikumine (karetina)*
public boolean moveDown()
eeldab: kui inScheme, siis kursor on paigas
kui !inScheme, siis ainult scheme (liigub skeemialgusse)
? (!inScheme())
moveToParentHome();
<======true
<==========true
<==========true
<==========true
<======false
? (inTextComment())
? (moveToNextElement())
? (row == null)
moveToParentHome();
<==========true
<==============true
<==============true
<==========false
<==========true
<======false
on tekstis
? (moveToNextRow())
<======true
<======true
public boolean moveRight()
? (!inScheme())
moveToParentHome();
<======true
? (noInRow == row.elements.size())
<======moveDown()
<======true
public boolean moveUp()
? (!inScheme())
moveToParentHome();
<======true
<======moveToPreviousMember()
? (inTextComment())
moveToPrimitiveTextEnd();
<======true
<======true
? (moveToPreviousElement())
? (row == null)
moveToParentEnd();
<======true
? (inBody())
? (scheme.head.size() == 0)
moveToParentHome();
moveToRowEnd();
<======
<======
? (inHead())
pa"ises
moveToParentHome();
moveToRowEnd();
<======true
public boolean moveLeft()
? (!inScheme())
moveToParentHome();
<======true
<======moveUp()
<======true
[SG] Liikumine, mis vaatab \"ule ka ikoniseeritud skeemid
kasutatakse otsimisel meetodil ProjectBoard.moveToProjectFileName()
public boolean moveDirectDown()
eeldab: kui inScheme, siis kursor on paigas
kui !inScheme, siis ainult scheme (liigub skeemialgusse)
kasutab meetod ProjectBoard.moveToProjectFileName()
? (!inScheme())
moveToParentHome();
<======true
<==========true
<==========true
? (moveToIconNextMember())
<==========true
<======false
? (inTextComment())
? (moveToNextIconElement())
? (row == null)
moveToParentHome();
<==========true
<==============true
? (moveToIconNextMember())
<==============true
<==========false
? (moveToIconNextMember())
<==========true
<======false
on tekstis
? (moveToNextRow())
<======true
<======true
private boolean moveToIconNextMember()
ss
eeldab: scheme
minna peremees-skeemile ja"rgnevale liikmele ylemuses
Object o = null;
Scheme father = scheme.parent;
? (father == null)
<======false
int n = father.body.size();
int i = father.body.indexOf(scheme) + 1;
* ;;i++
? (i < n)
jrgm liige on olemas
o = father.member(i);
? (o instanceof Scheme)
Scheme s = (Scheme)o;
scheme = s;
moveToParentHome();
<==============true
<======
on primitiiv
<======
i==n
for
? (i < n)
on primitiiv
scheme = father;
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<======true
jrgm liiget pole
scheme = father;
return moveToNextMember();
Scheme keepScheme = scheme;
scheme = father;
? (moveToIconNextMember())
<======true
<======false
public boolean moveToIconBody()
minna peremees-skeemi keha esimesele liikmele,
[SS] isegi siis kui ta on ikoniseeritud
Object o;
int n = scheme.body.size();
* int i = 0; i < n; i++
o = scheme.member(i);
? (o instanceof Scheme)
Scheme ss = (Scheme)o;
scheme = ss;
moveToParentHome();
<==========true
on primitiiv
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<==========true
<======false
boolean moveToNextIconElement()
eeldab: on lihtpa"isel vo~i liikmel
ja"rgmisele lihtpa"isele vo~i liikmele
(kui saab pa"ise vo~i keha piires)
kui jrgm liige on skeem, siis jaa"b skeemi aa"rele
kui pole skeemis, siis skeemile eelnevale? liikmele
int i, n;
? (!inScheme())
n = scheme.parent.body.size();
i = scheme.parent.body.indexOf(scheme) + 1;
<==========false
Object o = scheme.parent.member(i);
? (o instanceof Scheme)
scheme = (Scheme)o;
row = null;
moveToParentHome();
<==========true
on primitiiv
scheme = scheme.parent;
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<======true
? (inHead())
n = scheme.head.size();
i = scheme.head.indexOf(primitive) + 1;
<==========false
primitive = scheme.primitiveHead(i);
moveToPrimitiveText();
<======true
? (inBody())
Object o;
n = scheme.body.size();
i = scheme.body.indexOf(primitive) + 1;
* ;;i++
<==========false
o = scheme.member(i);
? (o instanceof Scheme)
Scheme s = (Scheme)o;
scheme = s;
row = null;
<==========true
<======
on primitiiv
primitive = (PrimitiveMember)o;
moveToPrimitiveText();
<======true
<======false
skaneerimine*
boolean scanRow()
eeldab, et on skeemis
kui pole lo~pus, teeb row.getElement ja liigub paremale
? (noInRow >= row.elements.size())
<======false
row.getElement(noInRow);
noInRow++;//moveRight();
<======true