AMADEUS html plain
This sketchy text is generated by AMADEUS
import java.awt.*;
import java.awt.event.*;
class Item36Listener
class Item36Listener implements ActionListener
Edit+Textualize<
AmFrame frame;
AmFrame targetFrame;
Item36Listener(AmFrame fr)
konstruktor
public void actionPerformed(ActionEvent event)
eeldab, et on valitud skeem või rühm
AmCanvas c = frame.viewArea;
boolean lisaskeem = false;
? c.selection.kind() == Selection.SCHEME2SCHEME
? c.selection.start.scheme == c.selection.end.scheme
? c.selection.start.scheme instanceof Sketch
? c.selection.start.scheme.type == Scheme.SIMPLE
<======
on juba valitud lihtskeem
lisaskeem = true;
panna valik lihtskeemi
frame.menuBar.i37L.actionPerformed(null);
tekstualiseerida valik
Sketch source = (Sketch)(c.selection.start.scheme);
Sketch sourceCopy = source.makeCopyRecurs();
Branch ülemus = (Branch)source.parent;
int i = ülemus.body.indexOf(source);
avatava nr ülemusharus
ülemus.removeMember(i);
ülemus.insert(sourceCopy, i);
int liikmeidEnne = ülemus.body.size();
? !textualizeInplace(sourceCopy, frame)
ülemus.removeMember(i);
ülemus.insert(source, i);
<==========
int liikmeidPärast = ülemus.body.size();
int m = liikmeidPärast - liikmeidEnne + 1;
tekstualiseeritud osa pikkus
m = i + m -1;
testualiseeritu viimase primitiivi nr
Primitive p1 = (Primitive)ülemus.member(i);
tekstualiseeritu 1. primitiiv
Primitive p2 = (Primitive)ülemus.member(m);
tekstualiseeritu viimase primitiiv
Cursor cur1 = new Cursor(ülemus, p1);
Cursor cur2 = new Cursor(ülemus, p2);
c.selection = new Selection(c, cur1, cur2);
frame.contents.editor.stack.push(
new UndoTextualizeInPlace(ülemus, source, i, m, lisaskeem));
frame.contents.main.view.plan(c.hd, c.vd);
c.own = true; c.repaint();
public static boolean textualizeInplace(Sketch source, AmFrame frame)
seda kasutab ka BaseLanguage.java:textualize
source asendatakse tekstualiseerimise tulemusega
uus skeemtekst
SketchyText skt1 = new SketchyText(null);
raami pole
teisendatav skeemtekst
SketchyText skt0 = new SketchyText(null);
raami pole
skt0.main = source;
editori ka pole
? !source.baseLanguage.textualize(skt0, skt1, frame)
<======false
asendada source uuega
source.body.removeElementAt(0);
source.body.addElement(skt1.main.branch(0));
source.open();
avada source
<======true