home *** CD-ROM | disk | FTP | other *** search
- !!Script
- // Copyright ⌐ 1997-2002 - Modelworks Software
-
- /**
- @Notify: onParseContent~is called to generate a SVG container view located in the
- workspace panel. It is called by the IDE whenever a SVG file is opened, created or
- saved.
- @EndTool:
- @Summary: onParseContent~generates a container view
- */
-
- var gTreeView;
- var gEditor;
- var gFormsNode;
- var gFunctionsNode;
-
- var gPublicFolder = 0; // See ContainerView.addItem for other codes
- var gClassImagePublicMethod = 12;
-
- var gOutput = getOutput();
-
- function OnNotify(treeView)
- {
- gTreeView = treeView;
- if (treeView == null)
- {
- return;
- }
-
- gEditor = treeView.getEditor();
- if (gEditor == null)
- {
- return;
- }
-
- gFormsNode = gTreeView.addItem("Forms", -1, null, gPublicFolder);
- gFunctionsNode = gTreeView.addItem("Functions", -1, null, gPublicFolder);
-
- var delimiterList = gEditor.findNextDelimiters("<form ", "</form>", 0, 0, false);
- while (delimiterList)
- {
- var delimiterRange = delimiterList.getHead();
- if (delimiterRange)
- {
- ProcessForm(delimiterRange.startLineIndex, delimiterRange.startCharIndex);
- var next = delimiterRange.endLineIndex < delimiterRange.startLineIndex ? delimiterRange.startLineIndex : delimiterRange.endLineIndex;
- delimiterList = gEditor.findNextDelimiters("<form ", "</form>", next+1, 0, false);
- }
- else
- {
- break;
- }
- }
-
- var delimiterList = gEditor.findNextDelimiters("<script", "</script>", 0, 0, false);
- while (delimiterList)
- {
- var delimiterRange = delimiterList.getHead();
- if (delimiterRange)
- {
- //gOutput.writeLine("Start line is " + delimiterRange.startLineIndex +
- // " End line is " + delimiterRange.endLineIndex);
-
- if (delimiterRange.endLineIndex > delimiterRange.startLineIndex)
- {
- ProcessFunctions(delimiterRange.startLineIndex, delimiterRange.endLineIndex);
- }
- var next = delimiterRange.endLineIndex < delimiterRange.startLineIndex ? delimiterRange.startLineIndex : delimiterRange.endLineIndex;
- delimiterList = gEditor.findNextDelimiters("<script", "</script", next+1, 0, false);
- }
- else
- {
- break;
- }
- }
- }
-
- function ProcessForm(startLineIndex, startCharIndex)
- {
- var attributeList = gEditor.getHtmlTag(startLineIndex, startCharIndex);
- if (attributeList)
- {
- var position = attributeList.getHeadPosition();
- var attribute = attributeList.getNext(position); // Skip tag name
- //gOutput.writeLine("Tag name " + attributeList.name);
-
- while (position && position.valid)
- {
- // attribute.key and attribute.value are Token objects
- attribute = attributeList.getNext(position);
- //gOutput.writeLine("Attribute " + attribute.key.string + ":" + attribute.value.string);
- if (attribute.key.string.toUpperCase() == "ID")
- {
- gTreeView.addItem("form id = " + attribute.value.string,
- startLineIndex, gFormsNode, gClassImagePublicMethod);
- return;
- }
- }
- }
- var label = CreateLineLabel(startLineIndex);
- gTreeView.addItem("form line# "+ label,
- startLineIndex, gFormsNode, gClassImagePublicMethod);
- }
-
- function ProcessFunctions(startLineIndex, endLineIndex)
- {
- var findData = gEditor.findFirstEx("function", startLineIndex, 0, true, false, true, false);
- while (findData && findData.found && findData.startLineIndex < endLineIndex)
- {
- HandleFunction(findData.startLineIndex);
- gEditor.findNext(findData);
- }
- }
-
- function HandleFunction(lineIndex)
- {
- var lineData = gEditor.copy(lineIndex).toLowerCase();
- var endindex = lineData.indexOf("end");
- var functionindex = lineData.indexOf("function");
- if (endindex > -1 && endindex < functionindex)
- {
- return;
- }
-
- var openBraceIndex = lineData.indexOf("{");
- if (openBraceIndex > -1)
- {
- var label = lineData.substring(functionindex+9, openBraceIndex);
- gTreeView.addItem("function " + label,
- lineIndex, gFunctionsNode, gClassImagePublicMethod);
- }
- else
- {
- var label = lineData.substring(functionindex+9, lineData.length);
- gTreeView.addItem("function " + label,
- lineIndex, gFunctionsNode, gClassImagePublicMethod);
- }
- }
-
- function CreateLineLabel(lineIndex)
- {
- lineIndex += 1; // convert to line number
- if (lineIndex < 10)
- {
- return "0000" + lineIndex + " ";
- }
- else if (lineIndex < 100)
- {
- return "000" + lineIndex + " ";
- }
- else if (lineIndex < 1000)
- {
- return "00" + lineIndex + " ";
- }
- else if (lineIndex < 10000)
- {
- return "0" + lineIndex + " ";
- }
- else
- {
- return "" + lineIndex + " ";
- }
- }
-
-
- !!/Script
-
-