AMADEUS html plain
import java.awt.*;
Color
import java.io.File;
class ProjectBoard
atribuutide nimed
static final String PATHS = "Paths";
static final String OPEN = "Open-script";
static final String SAVE = "Save-script";
tegevuste nimed skriptis (== menüü valikud)
static final String IMPORT = "Import";
static final String EXPORT_PLAIN_HTML = "Export plain-HTML";
static final String EXPORT_XML = "Export XML";
static final String TEXTUALIZE = "Textualize+Write text";
static final String PRINT_PLAIN_TEX = "Print plain-TEX";
static final String READ_TEXT_SKETCHIFY = "Read text+Sketchify<";
JK 07.05.02
static String er = (Am.isWindows)? "\\" : "/";
eraldaja kataloogitees
static Cursor moveToProjectFileName(Sketch project, String pFName)
tagastatakse kursor (või null),
mis on viidud antud projektifailinime sisaldavale primitiivile
Cursor cur = new Cursor(project);
* ; cur.moveDown();
? cur.text != null
? (cur.text.toString().trim()).equals(pFName)
<==========cur
<======null
static Sketch getProjectSketch(Branch br)
kasutab (vähemalt): getProjectFileName()
Antud: br - projektifaili nime sisaldav haru
Tulemus: tagastatakse lähim hõlmav projektiskeem (või null)
Sketch sk = (Sketch)br.parent;
? sk.type == Scheme.MODULE
<======
br = (Branch)(sk.parent);
sk = (Sketch)(br.parent);
? sk == null
<==========null
<======null
sk pole kaheharuline
? br != (Branch)(sk.member(1))
<======null
br pole sk teine haru
<======sk
static Sketch getAttributeSketch(Sketch project, String attName)
Antud: projektikirjeldus
Tulemus: tagastatakse skeem projektikirjelduse esimeses harus,
mille kommentaar algab attName-ga (või null)
Branch br = project.branch(0);
* int i = 0; i < br.body.size(); i++
Object o = br.member(i);
? !(o instanceof Sketch)
<------
Sketch s = (Sketch)o;
(SS)Projekti nimi on skeemi päises
String str = s.primitiveHead(0).text.row(0).toString().trim();
? str.startsWith(attName)
<==========s
<======null
static Sketch getSelectionOwnProject(AmFrame pDFrame)
kasutab: AmProjectFileFrame konstruktor ja :setOwnProject
leitakse lähim valitud primitiivi hõlmav projektikirjeldus,
tagastatakse leitud projektikirjelduse skeem nimi
(või null, kui ei leitud)
AmCanvas c = (AmCanvas)(pDFrame.viewArea);
??c.selection.kind()
? Selection.PRIMITIVE:
? Selection.PRIMITIVETEXT:
Branch br = (Branch)(c.selection.parent());
Sketch sk = getProjectSketch(br);
? sk == null
<======
<==========sk
<======null
static String getProjectFileName(AmFrame pDFrame)
kasutab Item01Listener (File + Open)
leitakse valitud projektifailinimi,
või null, kui projektifailinimi pole (õiges kohas) valitud
AmCanvas c = (AmCanvas)(pDFrame.viewArea);
??c.selection.kind()
? Selection.PRIMITIVE:
? Selection.PRIMITIVETEXT:
Branch br = (Branch)(c.selection.parent());
Sketch sk = getProjectSketch(br);
? sk == null
<==========null
//sk polnud kaheharuline
colorProjectFileName(pDFrame, c.selection.start.primitive,
Color.lightGray);
<==========c.selection.start.primitive.text.toString().trim()
<==========null
static void colorProjectFileName(AmFrame pDFrame,
Primitive p, Color col)
paneb primitiivile p värvi col ja joonistab üle
Kasut: getProjectFileName, AmFrame:closing(), Item01Listener
p.text.setColor(col);
AmCanvas c = (AmCanvas)(pDFrame.viewArea);
Graphics g = c.getGraphics();
? g == null
kui projektifaili raam on juba suletud
<======
g.translate(c.start.x, c.start.y);
p.text.draw(g);
static boolean isProjectFileNameGrayed(AmFrame pDFrame)
kasutab AmMouse- ja Item01Listener, et mitte avatut avada
leitakse valitud projektifailinimi, tagastatakse
true, kui see on lightGray,
siis ka sellele nimele vastav raam tuuakse esile
false kui see pole lightGray või pole valikut
AmCanvas c = (AmCanvas)(pDFrame.viewArea);
??c.selection.kind()
? Selection.PRIMITIVE:
? Selection.PRIMITIVETEXT:
Branch br = (Branch)(c.selection.parent());
Sketch sk = getProjectSketch(br);
? sk == null
<==========false
//sk polnud kaheharuline
Row r = c.selection.start.primitive.text.row(0);
r.getElement(0);
? r.sy != null
? r.sy.color == Color.lightGray
tuua vastav raam esile
String s =
c.selection.start.primitive.text.row(0).toString().trim();
* int i = 0; i < Am.frames.size(); i++
AmFrame fr = (AmFrame)(Am.frames.elementAt(i));
? fr instanceof AmProjectFileFrame
? fr.getTitle().indexOf(s) >= 0
fr.show();
<======
<==========true
<==========false
<==========false
static String[] getAttrElements(Sketch project, String attrName)
tagastatakse atribuudi elementide (primitiivitekstide) järjend (null, kui ei leita)
iga element on üks element tagastatavas sõnede järjendis
Lihtsustatud variant
teed võetakse sellest projektist (päriluseta)
String[] tulem = null;
Sketch attrSk = getAttributeSketch(project, attrName);
Branch attrBr = attrSk.branch(0);
int k = attrBr.body.size();
tulem = new String[k];
* int i = 0; i < k; i++
PrimitiveMember attrPrimitive = (PrimitiveMember)(attrBr.member(i));
String atribuut = attrPrimitive.text.toString().trim();
vajadusel lisada \ või /
? attrName.equals("Paths")
? !(atribuut.endsWith(er))
atribuut = atribuut + er;
tulem[i] = atribuut;
<======tulem
static String getAttrElement(String[] elements, String elemLabel)
* int i = 0; i < elements.length; i++
? elements[i].startsWith(elemLabel)
<==========elements[i].substring(elemLabel.length() + 1)
<======null
static String getPathForScriptAction(Sketch project,
String scriptName, String actionLabel)
eeldab korrektset projekti
tagastab atribuudi nime, mis sisaldab misSkript-i (null, kui ei leitud)
String[] paths = getAttrElements(project, PATHS);
String[] actions = getAttrElements(project, scriptName);
String action = getAttrElement(actions, actionLabel);
<==========null
action: tegevuse rida skriptis va Label
//System.out.println("ProjectBoard: action=" + action +"." );
int i = action.indexOf("path=");
? i == -1
<======null
String pathLabel = action.substring(i+5);
i = pathLabel.indexOf(" ");
? i != -1
pathLabel = pathLabel.substring(0, i);
//System.out.println("ProjectBoard: pathlabel=" + pathLabel +"." );
String path = getAttrElement(paths, pathLabel);
<======path
ka null
static String getParamForScriptAction(Sketch project,
String scriptName, String actionLabel, String param)
JK 07.05.02 Extension ==> Param
String[] actions = getAttrElements(project, scriptName);
String action = getAttrElement(actions, actionLabel);
action: tegevuse rida skriptis va Label
//int i = action.indexOf("ext=");
int i = action.indexOf(param + "=");
JK 07.05.02
? i == -1
<======null
//String par = action.substring(i+4);
String par = action.substring(i+param.length()+1);
JK 07.05.02
i = par.indexOf(" ");
? i != -1
par = action.substring(0, i);
<======par
static void executeScript( String pFName, String misSkript, AmProjectFileFrame frame)
Sketch project = frame.ownProject;
String path = null;
kompil.
//System.out.println("ProjectBoard: misSkript =" +misSkript );
? misSkript.equals(OPEN)
path = getPathForScriptAction(project, OPEN, IMPORT);
//System.out.println("ProjectBoard: path =" + path );
Import
? path != null
Item0100Listener.importInto(frame, path + pFName);
xml-formaadist lugedes jääks pFName = tempOut.html
frame.contents.file.name = path + pFName;
frame.setTitle(AmFrame.TITLE0 + " - " + path + pFName);
(kui oli ainult veateade, siis tuleks keelata salvestada SAVE)
path = getPathForScriptAction(project, OPEN, EXPORT_PLAIN_HTML);
path != null: Export plain-HTML
? path != null
Item04Listener.savePlainHtml(frame, path+pFName);
path = getPathForScriptAction(project, OPEN, EXPORT_XML);
path != null: Export XML
? path != null
Item07Listener.saveXml(frame, path+pFName);
System.out.println("ProjectBoard: --> getPathForScriptAction");
path = getPathForScriptAction(project, OPEN, READ_TEXT_SKETCHIFY);
System.out.println("ProjectBoard: path =" + path );
Read text & Sketchify< JK 07.05.02
? path != null
Item0101Listener.readTextInto(frame, path + pFName);
panna baaskeel
String bL =
getParamForScriptAction(
project, OPEN, READ_TEXT_SKETCHIFY, "base");
byte nr = -1;
leida bL tüübi nr
* int i = 0; i < BaseLanguage.items.length; i++
? BaseLanguage.items[i].equals(bL)
nr = (byte)i;
<======
System.out.println("ProjectBoard:executeScript:bLnr="+
nr);
? nr == -1
<======
BaseLanguage.setAll(frame.contents.main, nr);
Item64Listener.sketchifyInplace(frame, frame.contents.main);
(kui oli ainult veateade, siis tuleks keelata salvestada SAVE)
muidu jääks pFName =
frame.contents.file.name = path + pFName;
frame.setTitle(AmFrame.TITLE0 + " - " + path + pFName);
<======
? misSkript.equals(SAVE)
//
!!! juht, kui pFName ei ole selles projektis (frame.ownProject)
path = getPathForScriptAction(project, SAVE, EXPORT_PLAIN_HTML);
path != null: Export plain-HTML
<======
(SS) kataloogite moodustamine
Luuakse kataloogitee,
kui see ei eksisteeri failsüsteemis
File dirictory = new File(path);
? ! dirictory.exists()
? !dirictory.mkdirs()
Ei õnnestunud luua kataloogitee vaja midagi teha
Item04Listener.savePlainHtml(frame, path+pFName);
salvestatud, Undo tühjaks
frame.menuBar.setEnabled(AmLocale.Edit(),
AmLocale.Undo(), false);
frame.contents.editor.stack.setEmpty();
path = getPathForScriptAction(project, SAVE, EXPORT_XML);
path != null: Export plain-HTML
<======
//(SS) kataloogite moodustamine
Luuakse kataloogitee,
kui see ei eksisteeri failsüsteemis
File dirictory = new File(path);
? ! dirictory.exists()
? !dirictory.mkdirs()
Ei õnnestunud luua kataloogitee vaja midagi teha
Item07Listener.saveXml(frame, path+pFName);
salvestatud, Undo tühjaks
frame.menuBar.setEnabled(AmLocale.Edit(),
AmLocale.Undo(), false);
frame.contents.editor.stack.setEmpty();
path = getPathForScriptAction(project, SAVE, TEXTUALIZE);
System.out.println("ProjectBoard:textualizedPath:"+ path +"x");
path != null: textualize + Write text
<======
uus skeemtekst skt1*
SketchyText skt1 = new SketchyText(null);
skt1.main.comment =
new Row("This sketchy text is generated by AMADEUS",
Default.commentColor);
frame.contents.main.baseLanguage.textualize(frame.contents, skt1, frame);
skt1.file = new AmFile(skt1);
String extension =
getParamForScriptAction(project, SAVE, TEXTUALIZE, "ext");
int e = pFName.lastIndexOf('.');
String textName = pFName;
? e != -1
textName = pFName.substring(0, e);
textName = textName + "." + extension;
skt1.file.name = path + textName;
skt1.file.writeTextFile(skt1.file.name);
path = getPathForScriptAction(project, SAVE, PRINT_PLAIN_TEX);
//System.out.println("ProjectBoard:texPath:"+ path +"x");
path != null: Print plain-TEX
<======
String textName = pFName;
int e = pFName.lastIndexOf('.');
? e != -1
textName = pFName.substring(0, e);
String extension =
getParamForScriptAction(project, SAVE, PRINT_PLAIN_TEX, "ext");
? extension == null
textName = textName + ".tex";
<======
textName = textName + "." + extension;
String texFileName = path + textName;
//System.out.println("ProjectBoard: exec saveScript: tex nimi: "+texFileName);
Sketch source = frame.contents.main;
Item0AListenerist:
String res = Sketch2TexPlain.s2t(source, texFileName);
? (res != null)
AmDialog d = new AmDialog(frame, AmLocale.Print()+AmLocale.plain()+"-TEX",
AmDialog.B_OK, AmLocale.Failed()+". "+ res);
? Am.isWindows
((AmCanvas)(frame.viewArea)).repaint();