AMADEUS html plain
This sketchy text is generated by AMADEUS
* import java.
util.*;
awt.*;
(Rectangle)
class Editor
class Editor
varulehega tegelevad AmMenu:Edit:{Copy|Cut|Paste}
SketchyText sketchyText;
peremees
UndoStack stack;
undo magasin
RedoStack redoStack;
redo magasin
Caret caret;
selle editori karett
boolean isRedoing;
final String TEADE_SKEEMI_LISAMISEL =
AmLocale.Scheme() + " " +
AmLocale.contains() +" "+ AmLocale.leaving_arrows()+"!";
Editor(SketchyText skt)
konstruktor
sketchyText = skt;
stack = null;
maa"ratakse koos editori loomisega
redoStack = null;
maa"ratakse koos editori loomisega
caret = new Caret(skt.main);
//System.out.println("Editor1: h, shift=" + caret.height + " " + caret.shift);
caret.moveToParentHome();
main-i algusse
//System.out.println("Editor2: h, shift=" + caret.height + " " + caret.shift);
isRedoing = true;
struktuuri muutmise meetodid*
public void deleteScheme(Scheme s)
(cut)
eeldab: pole va"limine skeem
stack.push(new UndoDeleteScheme(s, s.parent.body.indexOf(s), caret));
redoStack.setEmpty();
AmCanvas c = sketchyText.frame.viewArea;
c.caretToScreen = true;
kui karett on eemaldatavas skeemis, siis viia karett sellest va"lja
eeldusel, et inScheme
Rectangle rk = new Rectangle(s.view.x,s.view.y,
s.view.width,s.view.height);
..while
* ;rk.contains(caret.row.x, caret.row.y+caret.height);
s.remove();
public void cutMembers(Branch br, int i0, int j0)
stack.push(new UndoCutMembers(br, i0, j0, caret));
redoStack.setEmpty();
AmCanvas c = sketchyText.frame.viewArea;
kui karett on eemaldatavas skeemis, siis viia karett sellest va"lja
eeldusel, et inScheme
Rectangle rk = c.selection.area();
..while
* ;rk.contains(caret.row.x, caret.row.y+caret.height);
* int i = i0; i <= j0; i++
public void cutHeads(Scheme s, int i0, int j0)
stack.push(new UndoCutHeads(s, i0, j0, caret));
redoStack.setEmpty();
AmCanvas c = sketchyText.frame.viewArea;
kui karett on eemaldatavas osas, siis viia karett sellest va"lja
eeldusel, et inScheme
Rectangle rk = c.selection.area();
..while
* ;rk.contains(caret.row.x, caret.row.y+caret.height-2);
* int i = i0; i <= j0; i++
s.removePrimitiveHead(i0);
public Object insertMembers(Branch br, int i, Vector v)
lisab harusse br alates i-ndast liikmed alates v(1)-st
tagastab esimese lisatu
boolean leavingArrows = false;
redoStack.setEmpty();
Object res = null;
kompil.
stack.push(new UndoInsertMembers(br, i, v.size()-1, caret));
* int j = 1; j < v.size(); j++
Object o = v.elementAt(j);
? o instanceof Sketch
Sketch s = (Sketch)o;
s = s.makeCopy();
? s.hasLeavingArrows(0)
leavingArrows = true;
AmDialog d = new AmDialog(sketchyText.frame, "NB!",
AmDialog.B_OK, TEADE_SKEEMI_LISAMISEL);
((Sketch)s).incrementArrows(br.level()+1);
JK 08.02.02
br.insert(s, i++);
? leavingArrows
s.correctLeavingArrows();
<------
PrimitiveMember p = (PrimitiveMember)o;
p = p.makeCopy();
br.insert(p, i++);
? (j == 1)
res = p;
<======res
public PrimitiveHead insertHeads(Scheme s, int i, Vector v)
lisab skeemi s pa"isesse alates i-ndast
pa"ised alates v(1)-st
tagastab esimese lisatu
PrimitiveHead res = null;
kompil.
redoStack.setEmpty();
stack.push(new UndoInsertHeads(s, i, v.size()-1, caret));
* int j = 1; j < v.size(); j++
PrimitiveHead he = (PrimitiveHead)(v.elementAt(j));
he = he.makeCopy();
? ((s instanceof Sketch) &&
(he.text.isMonochrome(Default.branchHeadColor)))
he.text.setColor(Default.sketchHeadColor);
<======
? ((s instanceof Branch) &&
(he.text.isMonochrome(Default.sketchHeadColor)))
he.text.setColor(Default.branchHeadColor);
s.insert(he, i++);
? (j == 1)
res = he;
<======res
public void insertElements(Vector v)
tagastab rea, kuhu lisatud
? (caret.row == null)
<======
stack.push(new UndoInsertElements(v.size()-1, caret));
redoStack.setEmpty();
Color col = caret.row.isMonochrome();
* int i = caret.noInRow, j = 1; j < v.size(); j++, i++
Object o = v.elementAt(j);
? (o instanceof Symbol)
Symbol sy = (Symbol)o;
sy = new Symbol(sy.c, sy.font, sy.color);
? (col != null)
sy.color = col;
caret.row.elements.insertElementAt(sy, i);
<------
caret.row.planSize();
public void insertRows(Vector v)
tagastab esimese lisatu
? caret.row == null
<======
Vector vect = new Vector();
int i = caret.rowNo();
vect.addElement(caret.text.row(i).makeCopy());
redoStack.setEmpty();
stack.push(new UndoInsertRows(caret.text,caret,i,v.size()-1,vect));
Color col = caret.text.isMonochrome();
caret.text.splitRow(i, caret.noInRow);
panna read vahele
int k = i+1;
? col == null
* int j = 1; j < v.size(); j++
caret.text.insert(((Row)(v.elementAt(j))).makeCopy(),k++);
<======
* int j = 1; j < v.size(); j++
Row r = ((Row)(v.elementAt(j))).makeCopy();
r.setColor(col);
caret.text.insert(r, k++);
ühendada viimasega
caret.text.joinRow(k);
(unsplit) JK 09.05.03
caret.text.joinRow(k);
ühendada esimesega
caret.text.joinRow(i+1);
caret esimesele
caret.row = caret.text.row(i);
public void cutPrimitive(Scheme s, Primitive p)
int k;
redoStack.setEmpty();
? (p instanceof PrimitiveHead)
k = s.head.indexOf(p);
<======
stack.push(new UndoCutPrimitive(s, p, k, caret));
AmCanvas c = (AmCanvas)(sketchyText.frame.viewArea);
c.caretToScreen = true;
kui karett on eemaldatavas primitiivis,
siis viia karett sellest va"lja
Rectangle rk = new Rectangle(p.text.x,p.text.y,
p.text.width,p.text.height);
..while
* ;rk.contains(caret.row.x, caret.row.y);
? (p instanceof PrimitiveHead)
s.head.removeElement(p);
<======
public void cutFromRow(Row r, int i, int j, boolean car)
stack.push(new UndoCutFromRow(r, i, j, caret));
redoStack.setEmpty();
? (car)
caret.moveToRowHome();
* int k = i; k < j; k++
r.elements.removeElementAt(i);
r.planSize();
public void cutFromText(Text t, Row r1, int ii,Row r2, int jj,
boolean car)
//System.out.println("Editor: cutFromText -----------------------");
Row r;
int ir1 = -9;
kompil
int nr = -9;
kompil
Vector vect = new Vector();
? r1 != r2
? (car)
caret.moveToPrimitiveText();
ir1 = t.rows.indexOf(r1);
int ir2 = t.rows.indexOf(r2);
int i, n;
nr = 2;
* i = ir1; i <= ir2; i++
vect.addElement(t.row(i).makeCopy());
* i = ir1+1; i <= ir2-1; i++
t.rows.removeElementAt(ir1+1);
eemaldada 1. rea lo~pust
n = r1.elements.size();
* i = ii; i < n; i++
r1.elements.removeElementAt(ii);
r1.planSize();
eemaldada viimase rea algusest
* i = 1; i < jj; i++
r2.elements.removeElementAt(1);
? (r2.elements.size() == 1)
t.rows.removeElementAt(ir1+1);
nr--;
<======
redoStack.setEmpty();
stack.push(new UndoCutFromText(t, caret,ir1,nr,vect));
<======
r1 == r2 (kuid r1 ei ole tekstis t ainuke rida)
rida r1 eemaldada:
? (car)
caret.moveToPrimitiveText();
ir1 = t.rows.indexOf(r1);
vect.addElement(t.row(ir1).makeCopy());
t.rows.removeElementAt(ir1);
redoStack.setEmpty();
stack.push(new UndoCutFromText(t, caret, ir1, 0, vect));
public void insertScheme(Scheme where, int i, Scheme s)
boolean leavingArrows = false;
lisab skeemi s ylemusse where i-ndaks liikmeks
stack.push(new UndoInsertScheme(s, caret,i));
redoStack.setEmpty();
? s instanceof Sketch
? s.hasLeavingArrows(0)
leavingArrows = true;
AmDialog d = new AmDialog(sketchyText.frame, "NB!",
AmDialog.B_OK, TEADE_SKEEMI_LISAMISEL);
sketchyText.frame.requestFocusInWindow();
((Sketch)s).incrementArrows(where.level()+1);
JK 08.02.02
where.insert((Sketch)s, i);
? leavingArrows
s.correctLeavingArrows();
<======
? s.hasLeavingArrows(-1)
leavingArrows = true;
AmDialog d = new AmDialog(sketchyText.frame, "NB!",
AmDialog.B_OK, TEADE_SKEEMI_LISAMISEL);
sketchyText.frame.requestFocusInWindow();
((Branch)s).incrementArrows(where.level()+1);
JK 12.02.02
where.insert((Branch)s, i);
? leavingArrows
s.correctLeavingArrows();
viia karett uuele
caret.goTo(s);
public void insertHead(Scheme s, int i, PrimitiveHead h)
stack.push(new UndoInsertHead(s, caret, i));
redoStack.setEmpty();
s.insert(h, i);
caret.moveToHead(i);
public void insertPrimitive(Scheme s, int i, PrimitiveMember p)
stack.push(new UndoInsertPrimitive(s, caret, i));
redoStack.setEmpty();
s.insert(p, i);
caret.scheme = s;
vois olla pa"isel, siis lisat. harusse
caret.primitive = p;
caret.moveToPrimitiveText();
public void insertCharAtCaretRight(char c)
symboli atribuudid kursorist:
symbolist, mis eelneb
* int i = caret.noInRow-1; ; i--
caret.row.getElement(i);
? caret.row.sy != null
<======
pilt ja hypersymbol jaa"vad vahele
Symbol s = new Symbol(c, caret.row.sy.font,
caret.row.sy.color);
lisame UndoStacki sisse
stack.push(new UndoInsertCharAtCaretRight(caret, caret.rowNo(),s));
redoStack.setEmpty();
lisada
caret.row.insert(s, caret.noInRow);
caret.row.planSize();
? (caret.text != null)
caret.text.plan(0, 0);
public void insertCharAtCaretLeft(char c)
insertCharAtCaretRight(c);
redoStack.setEmpty();
caret.moveRight();
public void insertCharAtCaretLeft(String nimi)
NT
Am.pictureBoard.processIMGs( caret.row , caret.noInRow ,nimi);
redoStack.setEmpty();
caret.moveRight();
public void deleteElementAtCaretLeft()
eeld: kursor pole rea alguses
caret.moveLeft();
redoStack.setEmpty();
stack.push(new UndoDeleteElementAtCaretLeft(
caret,
caret.rowNo(),
caret.row.element(caret.noInRow)));
caret.row.remove(caret.noInRow);
caret.row.planSize();
public void deleteElementAtCaretRight()
eeld: kursor pole rea lopus
stack.push(new UndoDeleteElementAtCaretRight(
caret,caret.rowNo(),caret.row.element(caret.noInRow)));
caret.row.remove(caret.noInRow);
redoStack.setEmpty();
caret.row.planSize();
public void empty(Row r)
kursor on kas real r vo~i tekstil, mille kommentaar on r
stack.push(new UndoEmptyRow(caret, r));
redoStack.setEmpty();
r.removeAll();
r.planSize();
? (caret.text == null)
caret.moveToRowHome();
public void empty(Text t)
kursor on kas tekstil t vo~i selle kommentaaril
stack.push(new UndoEmptyText(caret, t));
redoStack.setEmpty();
..while
* ;t.rows.size() > 1;
((Row)(t.row(0))).removeAll();
((Row)(t.row(0))).planSize();
? (caret.text != null)
caret.moveToPrimitiveText();
public void splitRowAtCaret()
stack.push(new UndoSplitRowAtCaret(caret));
redoStack.setEmpty();
int i = caret.rowNo();
poolitatava rea nr
caret.text.splitRow(i, caret.noInRow);
caret.moveDown();
caret.moveToRowHome();
public void joinRowAtCaret()
eeldus: kursor on yhendatava rea alguses
ja see pole esimene rida
//System.out.println("----->Editor: joinRowAtCaret:");
int i = caret.rowNo();
yhendatava rea nr
redoStack.setEmpty();
caret.moveUp();
caret.moveToRowEnd();
caret.text.joinRow(i);
stack.push(new UndoJoinRowAtCaret(caret));
public void joinRowAtCaretNext()
eeldus: kursor on yhendatavale eelneva rea lopus
ja see pole viimane rida
int i = caret.rowNo()+1;
yhendatava rea nr
redoStack.setEmpty();
caret.text.joinRow(i);
stack.push(new UndoJoinRowAtCaretNext(caret));
public boolean togglePrimitive()
Color color = Default.foregroundColor;;
redoStack.setEmpty();
byte newType = 0;
kompil
? caret.inBody()
newType =
caret.scheme.baseLanguage.nextPrimitiveMemberType(
caret.primitive.type);
<======
? caret.inHead()
newType =
caret.scheme.baseLanguage.nextPrimitiveHeadType(
caret.scheme, caret.primitive.type);
? newType == caret.primitive.type
<==============false
stack.push(new UndoTogglePrimitive(
caret.primitive));
caret.primitive.type = newType;
<==========true
? newType == caret.primitive.type
<======false
??newType
? Primitive.CONDITION:
simple --> condition
color = Default.conditionColor;
muuta va"rv
? (caret.primitive.text.isMonochrome(
Default.foregroundColor))
stack.push(new UndoTogglePrimitive(
caret.primitive, Default.foregroundColor));
caret.primitive.text.setColor(color);
<======
stack.push(new UndoTogglePrimitive(caret.primitive,null));
caret.primitive.type = newType;
panna tyyp
<======
? Primitive.STRONG_ARROW:
condition --> arrow
? Primitive.WEAK_ARROW:
int no = caret.scheme.body.indexOf(caret.primitive);
Text t = caret.primitive.text;
? (t.isMonochrome(Default.conditionColor))
stack.push(new UndoTogglePrimitive(
caret, Default.conditionColor , no));
t.setColor(Default.foregroundColor);
<======
stack.push(new UndoTogglePrimitive(
caret, null, no));
caret.primitive = new Arrow(Arrow.STRONG,
caret.scheme.level()-1);
caret.primitive.text = t;
caret.scheme.body.removeElementAt(no);
caret.scheme.body.insertElementAt
(caret.primitive, no);
<======;
? Primitive.SIMPLE:
arrow --> simple
no = caret.scheme.body.indexOf(caret.primitive);
t = caret.primitive.text;
stack.push(new UndoTogglePrimitive(caret, null, no));
caret.primitive = new PrimitiveMember(Primitive.SIMPLE, new Text());
caret.primitive.text = t;
caret.scheme.body.removeElementAt(no);
caret.scheme.body.insertElementAt
(caret.primitive, no);
<======
<======true
public void toggleColorInRow(Selection sel, Row r, int i, int j)
stack.push(new UndoToggleColorInRow(sel, r, i, j));
redoStack.setEmpty();
r.toggleColor(i, j);
public void toggleColorInText(Selection sel,
Text t, Row r1, int ii, Row r2, int jj)
r1 != r2
int ir1 = t.rows.indexOf(r1);
redoStack.setEmpty();
int ir2 = t.rows.indexOf(r2);
stack.push(new UndoToggleColorInText(
sel, t, r1, ir1, ii, r2, ir2, jj));
int i;
* i = ir1+1; i < ir2; i++
1. rea lo~pu va"rvid
r1.toggleColor(ii, r1.elements.size()-1);
viimase rea alguse va"rvid
r2.toggleColor(0, jj);
public void toggleColorInPrimitive(Selection sel)
Primitive p = sel.start.primitive;
redoStack.setEmpty();
stack.push(new UndoToggleColorInPrimitive(p));
p.text.toggleColor(true);
public void setColorInRow(Selection sel, Row r, int i, int j,
Color col)
stack.push(new UndoToggleColorInRow(sel, r, i, j));
redoStack.setEmpty();
r.setColor(i, j, col);
public void setStyleInRow(Selection sel, Row r, int i, int j,
Color col, Font font)
stack.push(new UndoSetStyleInRow(sel, r, i, j));
redoStack.setEmpty();
r.setStyle(i, j, col, font);
public void setStyleInText(Selection sel,Text t, Row r1, int ii, Row r2, int jj, Color col, Font font)
int ir1 = t.rows.indexOf(r1);
redoStack.setEmpty();
int ir2 = t.rows.indexOf(r2);
//stack.push(new UndoSetStyleInText(sel, t, r1, ir1, ii, r2, ir2, jj));
int i;
* i = ir1+1; i < ir2; i++
t.row(i).setStyle(col, font);
r1.setStyle(ii, r1.elements.size()-1, col, font);
r2.setStyle(0, jj, col, font);
public void setStyleInPrimitive(Selection sel,Color col, Font font)
Primitive p = sel.start.primitive;
redoStack.setEmpty();
p.text.setStyle(col, font);
public boolean toggleScheme(Scheme s)
tagastab true, kui skeem avati
boolean res = false;
redoStack.setEmpty();
byte newType = 0;
kompil
newType =
s.baseLanguage.nextSchemeType(s);
? (newType == s.type)
<======res
? (newType < 0)
avada (kui pole va"limine)
stack.push(new UndoToggleScheme(
caret, (Sketch)s, s.parent.body.indexOf(s)));
karett skeemi algusest yles
...
((Sketch)s).open();
res = true;
<======
muuta tyyp
stack.push(new UndoToggleScheme(s));
s.type = newType;
<======res
public void incrementArrow(Arrow ar, int k)
k == noole pikkuse muut
stack.push(new UndoIncrementArrow(ar, k));
redoStack.setEmpty();
ar.level -= k;
? (ar.type == Arrow.STRONG)
ar.type = Arrow.WEAK;
<======
public Sketch group2simple(Selection sel)
Rectangle rE = sel.area();
redoStack.setEmpty();
Sketch res = sel.convert2simple(0,0);
BaseLanguage bl =
BaseLanguage.newBaseLanguage(res.parent.baseLanguage.type);
res.baseLanguage = bl;
bl =
BaseLanguage.newBaseLanguage(res.parent.baseLanguage.type);
Branch br = (Branch)(res.member(0));
br.baseLanguage = bl;
seada vaade (ylemusest)
View.set(res, res.parent.view.type);
View.set(br, res.parent.view.type);
seada kareti scheme
? (caret.row != null) &&
(rE.contains(caret.row.x, caret.row.y))&&
(res.parent == caret.scheme)
caret.scheme = res.branch(0);
stack.push(new UndoGroup2simple(res));
<======res
public Sketch encloseOuter(Sketch sk)
sk - v?limine skeem
uus v?limine:
stack.push(new UndoEncloseOuter(sk, caret));
redoStack.setEmpty();
Sketch newOuter = new Sketch(Scheme.SIMPLE,
new Branch(Scheme.SIMPLE, null),null);
Branch br = newOuter.branch(0);
uue haru
br.add(sk); br.removeMember(0);
vana uue sisse
baaskeel v?limiselt:
BaseLanguage bl =
BaseLanguage.newBaseLanguage(sk.baseLanguage.type);
newOuter.baseLanguage = bl;
bl =
BaseLanguage.newBaseLanguage(sk.baseLanguage.type);
br.baseLanguage = bl;
vaade v?limiselt:
View.set(newOuter, sk.view.type);
View.set(br, sk.view.type);
vana v?limise nooled l?hemaks:
sk.incrementArrows(2);
muuta skeemtekst:
sketchyText.main = newOuter;
sketchyText.affected = newOuter;
caret.goTo(newOuter);
main-i algusse
<======newOuter
public void undo()
annulleerimise meetod
undo vo~tab valiku maha, siin yle ei joonista
sketchyText.frame.viewArea.selection.cancel();
isRedoing = false;
stack.pop().undo(this);
isRedoing = true;
public void redo()
reannulleerimise meetod
undo vo~tab valiku maha, siin yle ei joonista
sketchyText.frame.viewArea.selection.cancel();
isRedoing = true;
redoStack.pop().undo(this);
isRedoing = false;
SG
public Editor cloneEditor()
Editor returnEditor = new Editor(this.sketchyText);
returnEditor.caret = caret.make_Copy();
returnEditor.isRedoing = true;
!!
returnEditor.stack = (UndoStack)this.stack.clone();
returnEditor.redoStack = (RedoStack)this.redoStack.clone();
? returnEditor.stack.stack_is_empty()
//System.out.println("stack_is_empty");
<======
// System.out.println("stack_is_not_empty");
! (java.lang.CloneNotSupportedException e)
System.out.println("Clone ne udalsja ............... ");
returnEditor.stack = new UndoStack(returnEditor);
returnEditor.redoStack = new RedoStack(returnEditor);
return returnEditor;