diff --git a/extensions/xmlterm/README b/extensions/xmlterm/README index 243b6dcb6cf..e69de29bb2d 100644 --- a/extensions/xmlterm/README +++ b/extensions/xmlterm/README @@ -1,83 +0,0 @@ -xmlterm --- A graphical command line interface -============================================== - -An early prototype of XMLterm, an XTERM-like terminal program implemented -using the open source Mozilla layout engine, is now available to tinker -with. XMLterm aims to add graphical and hypertext capabilities to the XTERM -command line interface, while maintaining backwards compatibility. - -The basic design philosophy of XMLterm is that the user interface is a dynamic -XML document. The user and the computer interact by taking turns at appending -to this XML document. The plain text content of the XML document, i.e., -excluding any markup, corresponds to the plain text that would be displayed by -a plain XTERM. The markup in the XML document is used to add graphical and -hypertext features. XMLterm uses the Mozilla layout engine to display the XML -document. - -XMLterm is an open source project in its early stages. Comments and -contributions are welcome! - -R. Saravanan -7 Mar 2000 -========== - -QUICK SET-UP INSTRUCTIONS (Linux/Solaris) ------------------------------------------ - -If you have already built mozilla from the source, then type the following -commands in the "mozilla" directory to build XMLterm: - -a) configure --with-extensions=xmlterm -b) cd extensions/xmlterm -c) make - -[Skip step (b) for a fresh build of mozilla from the source tarball] - -To execute XMLterm, type one of the following commands in -the mozilla/dist/bin directory: - - ./xmlterm - OR - ./mozilla -chrome chrome://xmlterm/content/xmlterm.xul - -NOTES: - - 1. See the INSTALL file for detailed configuration/installation instructions. - - 2. See the file doc/INSTALL.xmlterm for binary installation instructions. - - 3. Check the XMLterm web site for updates. - -=========================================================================== -DOCUMENTATION - - a. There is a README file in each directory that provides some basic - information. - - b. The file "base/README" provides a brief overview of the XMLterm code - architecture. - - c. The header files (*.idl, *.h) have comments describing class methods - and member variables in JAVADOC format. Look at them before delving - into the *.cpp files - -=========================================================================== -FILES: - - INSTALL installation instructions - README this file - UUID.txt list of UUIDs used by XMLterm - -The main subdirectories of the "xmlterm" directory are: - - base/ base source code for XMLterm libraries - config/ make rules for stand-alone mode - dist/ holds include and library file for stand-alone LineTerm only - doc/ some documentation - geckoterm/ lightweight XMLterm executable - linetest/ stand-alone line terminal testing executables - scripts/ XMLterm scripts (xls, xcat, ...) - tests/ XMLterm test programs (HelloWorld pagelet, ...) - ui/* user interface/chrome files - --- diff --git a/extensions/xmlterm/base/mozXMLTermSession.cpp b/extensions/xmlterm/base/mozXMLTermSession.cpp index ee9a2de0ea7..4280be89396 100644 --- a/extensions/xmlterm/base/mozXMLTermSession.cpp +++ b/extensions/xmlterm/base/mozXMLTermSession.cpp @@ -3117,7 +3117,7 @@ NS_IMETHODIMP mozXMLTermSession::NewEntry(const nsString& aPrompt) imgElement->SetAttribute(attName, attValue); attName = "src"; - attValue = "chrome://xmlterm/skin/images/wheel.gif"; + attValue = "chrome://xmlterm/skin/wheel.gif"; imgElement->SetAttribute(attName, attValue); attName = "align"; diff --git a/extensions/xmlterm/ui/content/Makefile.in b/extensions/xmlterm/ui/MANIFEST-content similarity index 100% rename from extensions/xmlterm/ui/content/Makefile.in rename to extensions/xmlterm/ui/MANIFEST-content diff --git a/extensions/xmlterm/ui/MANIFEST-skin b/extensions/xmlterm/ui/MANIFEST-skin new file mode 100644 index 00000000000..e332cb6f209 --- /dev/null +++ b/extensions/xmlterm/ui/MANIFEST-skin @@ -0,0 +1,4 @@ +xmlterm.css +xmltpage.css +ficon.gif +wheel.gif diff --git a/extensions/xmlterm/ui/Makefile.in b/extensions/xmlterm/ui/Makefile.in index 5fc48344698..d818ccabc8d 100644 --- a/extensions/xmlterm/ui/Makefile.in +++ b/extensions/xmlterm/ui/Makefile.in @@ -33,21 +33,33 @@ # makefile for xmlterm/ui directory -ifdef STAND_ALONE -DEPTH = .. -topsrcdir = .. -VPATH = . -srcdir = . -include $(topsrcdir)/config/autoconf.mk -else DEPTH = ../../.. topsrcdir = @top_srcdir@ VPATH = @srcdir@ srcdir = @srcdir@ include $(DEPTH)/config/autoconf.mk -endif -DIRS = content skin +CHROME_DIR = xmlterm + +CHROME_CONTENT = \ + xmlterm.html \ + xmlterm.xul \ + xmlterm2.xul \ + XMLTermChrome.js \ + XMLTermCommands.js \ + xmltermTips.html \ + xmltermAbout.html \ + xmltblank.html \ + $(NULL) + +CHROME_SKIN = \ + xmlterm.css \ + xmltpage.css \ + wheel.gif \ + $(NULL) + +CHROME_L10N = \ + $(NULL) include $(topsrcdir)/config/config.mk diff --git a/extensions/xmlterm/ui/README b/extensions/xmlterm/ui/README index 3a63d5ad812..f5c3f70770a 100644 --- a/extensions/xmlterm/ui/README +++ b/extensions/xmlterm/ui/README @@ -1 +1,21 @@ -ui --- User Interface stuff for XMLterm +ui --- User interface stuff for XMLterm + +CONTENT + +xmlterm.html XMLterm startup file containing HTML and Javascript + Uses mozIXMLTermShell to create XMLterm + Uses xmltpage.css for stylesheets + +xmlterm.xul XUL wrapper for xmlterm.html + +xmlterm2.xul XUL wrapper for xmlterm.html, with additional browser frame + +XMLTermCommands.js Javascript commands used by XUL wrappers + +SKIN + +xmlterm.css Stylesheet for XUL file xmlterm.xul + +xmltpage.css Stylesheet for XMLterm startup file xmlterm.html + +wheel.gif Wheel icon used for prompt diff --git a/extensions/xmlterm/ui/XMLTermChrome.js b/extensions/xmlterm/ui/XMLTermChrome.js new file mode 100644 index 00000000000..fba10198754 --- /dev/null +++ b/extensions/xmlterm/ui/XMLTermChrome.js @@ -0,0 +1,41 @@ +// XMLTerm Chrome Commands + +function StartupXMLTerm() { + dump("StartupXMLTerm:\n"); + dump("StartupXMLTerm:"+window.frames.length+"\n"); + dump("StartupXMLTerm:"+window.frames[0].name+"\n"); + + if (window.frames.length == 2) { + xmltwin = window.frames[1]; + xmltwin.xmltbrowser = window.frames[0]; + } else { + xmltwin = window.frames[0]; + } + + dump("StartupXMLterm: WINDOW.ARGUMENTS="+window.arguments+"\n"); + + dump("Trying to make an XMLTerm Shell through the component manager...\n"); + + var xmltshell = Components.classes["component://mozilla/xmlterm/xmltermshell"].createInstance(); + + dump("Interface xmltshell1 = " + xmltshell + "\n"); + + xmltshell = xmltshell.QueryInterface(Components.interfaces.mozIXMLTermShell); + dump("Interface xmltshell2 = " + xmltshell + "\n"); + + if (!xmltshell) { + dump("Failed to create XMLTerm shell\n"); + window.close(); + return; + } + + // Store the XMLTerm shell in current window and in the XMLTerm frame + window.xmlterm = xmltshell; + xmltwin.xmlterm = xmltshell; + + if (window.arguments != null) + window.title = "xmlterm: "+window.arguments; + + // Initialize XMLTerm shell in content window with argvals + window.xmlterm.Init(xmltwin, "", window.arguments); +} diff --git a/extensions/xmlterm/ui/XMLTermCommands.js b/extensions/xmlterm/ui/XMLTermCommands.js new file mode 100644 index 00000000000..2a7633fa666 --- /dev/null +++ b/extensions/xmlterm/ui/XMLTermCommands.js @@ -0,0 +1,737 @@ +// XMLTerm Page Commands + +// CONVENTION: All pre-defined XMLTerm Javascript functions and global +// variables should begin with an upper-case letter. +// This would allow them to be easily distinguished from +// user defined functions, which should begin with a lower case +// letter. + +// Global variables +var AltWin; // Alternate (browser) window + +var Tips = new Array(); // Usage tip strings +var TipNames = new Array(); // Usage tip names +var TipCount = 0; // No. of tips +var SelectedTip = 0; // Selected random tip + +// Set prompt using form entry +function DefineTip(tip, name) { + Tips[TipCount] = tip; + TipNames[TipCount] = name; + TipCount++; + return; +} + +DefineTip('Click the new tip link to the left to get a new tip!', + 'tips'); + +DefineTip('User level setting (at the top) controls amount of help information', + 'level'); + +DefineTip('Beginner level setting displays keyboard shortcuts at the top of the page', + 'level'); + +DefineTip('Icons setting controls whether directory listings use icons', + 'icons'); + +DefineTip('Windows setting controls whether double-clicking creates new windows', + 'windows'); + +DefineTip('Single click an explicit (underlined) hyperlink; double click implicit (usually blue) hyperlinks', + 'clicking'); + +DefineTip('Clicking on command prompt expands/collapses command output display.', + 'prompt'); + +DefineTip('Press F1 (or control-Home) key to collapse output of all commands.', + 'prompt'); + +DefineTip('"js:SetPrompt(HTMLstring);" sets prompt to any HTML string.', + 'prompt'); + +DefineTip('Beginners may click the SetPrompt button for a cool Mozilla prompt from dmoz.org!', + 'prompt'); + +DefineTip('Double-clicking on a previous command line re-executes the command.', + 'command'); + +DefineTip('Type "js:func(arg);" to execute inline Javascript function func.', + 'js'); + +DefineTip('Inline Javascript ("js:...") can be used to produce HTML output.', + 'js'); + +DefineTip('XMLterm supports full screen commands like "less", "vi", and "emacs -nw"".', + 'full-screen'); + +DefineTip('"xls" produces a clickable listing of directory contents.', + 'xls'); + +DefineTip('"xls -t" prevents display of icons even if Icons setting is "on".', + 'xls'); + +DefineTip('"xcat text-file" displays a text file with clickable URLs.', + 'xcat'); + +DefineTip('"xcat image.gif" displays an image file inline!', + 'xcat'); + +DefineTip('"xcat http://mozilla.org" displays a web page inline using IFRAMEs.', + 'xcat'); + +DefineTip('"xcat -h 1000 http://mozilla.org" displays using an IFRAME 1000 pixels high.', + 'xcat'); + +DefineTip('"xcat doc.html" display an HTML document inline using IFRAMEs.', + 'xcat'); + +// Display random usage tip +// (should cease to operate after a few cycles; +// need to use Prefs to keep track of that) +function NewTip() { + var ranval = Math.random(); + SelectedTip = Math.floor(ranval * TipCount); + if (SelectedTip >= TipCount) SelectedTip = 0; + + dump("xmlterm: NewTip "+SelectedTip+","+ranval+"\n"); + + var tipdata = document.getElementById('tipdata'); + tipdata.firstChild.data = Tips[SelectedTip]; + + ShowHelp("",0); + + return false; +} + +// Explain tip +function ExplainTip(tipName) { + dump("xmlterm: ExplainTip("+tipName+")\n"); + + if (tipName) { + var tipdata = document.getElementById('tipdata'); + tipdata.firstChild.data = ""; + } else { + tipName = TipNames[SelectedTip]; + } + + ShowHelp('xmltermTips.html#'+tipName,0,120); + + return false; +} + +// F1 key - Hide all output +function F1Key(isShift, isControl) { + return DisplayAllOutput(false); +} + +// F2 key - Show all output +function F2Key(isShift, isControl) { + return DisplayAllOutput(true); +} + +// F7 - Explain tip +function F7Key(isShift, isControl) { + return ExplainTip(); +} + +// F8 - New tip +function F8Key(isShift, isControl) { + return NewTip(); +} + +// F9 key +function F9Key(isShift, isControl) { + return NewXMLTerm(''); +} + +// Scroll Home key +function ScrollHomeKey(isShift, isControl) { + dump("ScrollHomeKey("+isShift+","+isControl+")\n"); + + if (isControl) { + return F1Key(isShift, 0); + } else { + ScrollWin(isShift,isControl).scroll(0,0); + return false; + } +} + +// Scroll End key +function ScrollEndKey(isShift, isControl) { + dump("ScrollEndKey("+isShift+","+isControl+")\n"); + + if (isControl) { + return F2Key(isShift, 0); + } else { + ScrollWin(isShift,isControl).scroll(0,99999); + return false; + } +} + +// Scroll PageUp key +function ScrollPageUpKey(isShift, isControl) { + dump("ScrollPageUpKey("+isShift+","+isControl+")\n"); + + ScrollWin(isShift,isControl).scrollBy(0,-120); + return false; +} + +// Scroll PageDown key +function ScrollPageDownKey(isShift, isControl) { + dump("ScrollPageDownKey("+isShift+","+isControl+")\n"); + + ScrollWin(isShift,isControl).scrollBy(0,120); + return false; +} + +// Scroll Window +function ScrollWin(isShift, isControl) { + if (isShift && (window.frames.length > 0)) { + return window.frames[window.frames.length-1]; + } else { + return window; + } +} + +// Set history buffer size +function SetHistory(value) { + dump("SetHistory("+value+")\n"); + window.xmlterm.SetHistory(value, document.cookie); + return (false); +} + +// Set prompt +function SetPrompt(value) { + dump("SetPrompt("+value+")\n"); + window.xmlterm.SetPrompt(value, document.cookie); + return (false); +} + +// Create new XMLTerm window +function NewXMLTerm(firstcommand) { + newwin = window.openDialog( "chrome://xmlterm/content/xmlterm.xul", + "xmlterm", "chrome,dialog=no,resizable", + firstcommand); + dump("NewXMLTerm: "+newwin+"\n") + return (false); +} + +// Handle resize events +function Resize(event) { + dump("Resize()\n"); + window.xmlterm.Resize(); + return (false); +} + +// Form Focus (workaround for form input being transmitted to xmlterm) +function FormFocus() { + dump("FormFocus()\n"); + window.xmlterm.IgnoreKeyPress(true, document.cookie); + return false; +} + +// Form Blur (workaround for form input being transmitted to xmlterm) +function FormBlur() { + dump("FormBlur()\n"); + window.xmlterm.IgnoreKeyPress(false, document.cookie); + return false; +} + +// Set user level +function UpdateSettings() { + + var oldUserLevel = window.userLevel; + window.userLevel = document.xmltform1.level.options[document.xmltform1.level.selectedIndex].value; + + var oldShowIcons = window.showIcons; + window.showIcons = document.xmltform1.icons.options[document.xmltform1.icons.selectedIndex].value; + + window.windowsMode = document.xmltform1.windows.options[document.xmltform1.windows.selectedIndex].value; + + dump("UpdateSettings: userLevel="+window.userLevel+"\n"); + dump("UpdateSettings: windowsMode="+window.windowsMode+"\n"); + dump("UpdateSettings: showIcons="+window.showIcons+"\n"); + + if (window.userLevel != oldUserLevel) { + // Change icon display style in the style sheet + + if (window.userLevel == "advanced") { + AlterStyle("DIV.beginner", "display", "none"); + AlterStyle("DIV.intermediate", "display", "none"); + + } else if (window.userLevel == "intermediate") { + AlterStyle("DIV.intermediate", "display", "block"); + AlterStyle("DIV.beginner", "display", "none"); + + } else { + AlterStyle("DIV.beginner", "display", "block"); + AlterStyle("DIV.intermediate", "display", "block"); + } + } + + if (window.showIcons != oldShowIcons) { + // Change icon display style in the style sheet + + if (window.showIcons == "on") { + AlterStyle("SPAN.noicons", "display", "none"); + AlterStyle("SPAN.icons", "display", "inline"); + AlterStyle("IMG.icons", "display", "inline"); + AlterStyle("TR.icons", "display", "table-row"); + + } else { + AlterStyle("SPAN.noicons", "display", "inline"); + AlterStyle("SPAN.icons", "display", "none"); + AlterStyle("IMG.icons", "display", "none"); + AlterStyle("TR.icons", "display", "none"); + } + } + + return false; +} + +// Alter style in stylesheet of specified document doc, or current document +// if doc is omitted. +function AlterStyle(ruleName, propertyName, propertyValue, doc) { + + dump("AlterStyle("+ruleName+"{"+propertyName+":"+propertyValue+"})\n"); + + if (!doc) doc = window.document; + + var sheet = doc.styleSheets[0]; + var r; + for (r = 0; r < sheet.cssRules.length; r++) { + //dump(sheet.cssRules[r].selectorText+"\n"); + + if (sheet.cssRules[r].selectorText == ruleName) { + var style = sheet.cssRules[r].style; + //dump("style="+style.getPropertyValue(propertyName)+"\n"); + + style.setProperty(propertyName,propertyValue,""); + } + } + return false; +} + +// Handle default meta command +function MetaDefault(arg1) { + return Load("http://"+arg1); +} + +// Load URL in XMLTermBrowser window +function Load(url) { + var succeeded = false; + if (window.xmltbrowser) { + dump("Load:xmltbrowser.location.href="+window.xmltbrowser.location.href+"\n"); + if (window.xmltbrowser.location.href.length) { + window.xmltbrowser.location = url; + succeeded = true; + } + } + if (!succeeded) { + window.xmltbrowser = window.open(url, "xmltbrowser"); + } + + // Save browser window object in global variable + AltWin = window.xmltbrowser; + + return (false); +} + +// Control display of all output elements +function DisplayAllOutput(flag) { + var outputElements = document.getElementsByName("output"); + for (i=0; i=0 means process only if current entry +// <0 means process anytime +// +// arg1: relative pathname of file/directory +// arg2: absolute pathname prefix (for use outside current entry; +// use relative pathname in current working directory) +// +function HandleEvent(eventObj, eventType, targetType, entryNumber, + arg1, arg2) { + dump("HandleEvent("+eventObj+","+eventType+","+targetType+","+ + entryNumber+","+arg1+","+arg2+")\n"); + + // Entry independent targets + if (action === "textlink") { + // Single click opens hyperlink + // Browser-style + dump("textlink = "+arg1+"\n"); + Load(arg1); + + } else if (targetType === "prompt") { + // Single click on prompt expands/collapses command output + var outputElement = document.getElementById("output"+entryNumber); + var helpElement = document.getElementById("help"+entryNumber); + var promptElement = document.getElementById("prompt"+entryNumber); + //dump(promptElement.style.getPropertyValue("text-decoration")); + + if (outputElement.style.display == "none") { + outputElement.style.display = "block"; + promptElement.style.setProperty("text-decoration","none",""); + + } else { + outputElement.style.display = "none"; + promptElement.style.setProperty("text-decoration","underline",""); + if (helpElement) { + ShowHelp("",entryNumber); + } + } + + } else if (eventType === "click") { + + dump("clickCount="+eventObj.clickCount+"\n"); + + var shiftClick = eventObj.shiftKey; + var dblClick = (eventObj.clickCount == 2); + + // Execute shell commands only on double-click for safety + // Use single click for "selection" and prompt expansion only + // Windows-style + + var currentEntryNumber = window.xmlterm.currentEntryNumber; + + var currentCmdElement = document.getElementById("command"+currentEntryNumber); + var currentCommandEmpty = true; + if (currentCmdElement && currentCmdElement.hasChildNodes()) { + + if (currentCmdElement.firstChild.nodeType == Node.TEXT_NODE) { + //dump("textLength = "+currentCmdElement.firstChild.data.length+"\n"); + currentCommandEmpty = (currentCmdElement.firstChild.data.length == 0); + + } else { + currentCommandEmpty = false; + } + } + //dump("empty = "+currentCommandEmpty+"\n"); + + if (targetType === "command") { + if (!dblClick) + return false; + var commandElement = document.getElementById(targetType+entryNumber); + var command = commandElement.firstChild.data; + if (currentCommandEmpty) { + window.xmlterm.SendText("\025"+command+"\n", document.cookie); + } else { + window.xmlterm.SendText(command, document.cookie); + } + + } else { + // Targets which may be qualified only for current entry + + if ((entryNumber >= 0) && + (window.xmlterm.currentEntryNumber != entryNumber)) { + dump("NOT CURRENT COMMAND\n"); + return (false); + } + + var action, sendStr; + + if ( (targetType === "cdxls") || + (targetType === "xcat") || + (targetType === "exec") ) { + // Complex commands + + if (!dblClick) + return false; + + var filename; + var isCurrentCommand = (Math.abs(entryNumber)+1 == + window.xmlterm.currentEntryNumber); + + if ( (arg2 != null) && + (!isCurrentCommand || (window.windowsMode === "on")) ) { + // Full pathname + filename = arg2+arg1; + } else { + // Short pathname + filename = arg1; + if (targetType === "exec") + filename = "./"+filename; + } + + var prefix, suffix; + if (targetType === "cdxls") { + // Change directory and list contents + prefix = "cd "; + suffix = "; xls"; + } else if (targetType === "xcat") { + // Display file + prefix = "xcat "; + suffix = ""; + } else if (targetType === "exec") { + // Execute file + prefix = ""; + suffix = ""; + } + + if (shiftClick || (window.windowsMode === "on")) { + action = "createln"; + sendStr = prefix + filename + suffix; + + } else if (currentCommandEmpty) { + action = "sendln"; + sendStr = prefix + filename + suffix; + + } else { + action = "send"; + sendStr = filename + " "; + } + + } else { + // Primitive action + action = targetType; + sendStr = arg1; + } + + // Primitive actions + if (action === "send") { + dump("send = "+sendStr+"\n"); + window.xmlterm.SendText(sendStr, document.cookie); + + } else if (action === "sendln") { + dump("sendln = "+sendStr+"\n\n"); + window.xmlterm.SendText("\025"+sendStr+"\n", document.cookie); + + } else if (action === "createln") { + dump("createln = "+sendStr+"\n\n"); + newwin = NewXMLTerm(sendStr+"\n"); + } + } + } + + return (false); +} + +// Set history buffer count using form entry +function SetHistoryValue() { + var field = document.getElementById('inputvalue'); + return SetHistory(field.value); +} + +// Set prompt using form entry +function SetPromptValue() { + var field = document.getElementById('inputvalue'); + return SetPrompt(field.value); +} + +// Insert help element displaying URL in an IFRAME before output element +// of entryNumber, or before the SESSION element if entryNumber is zero. +// Height is the height of the IFRAME in pixels. +// If URL is the null string, simply delete the help element + +function ShowHelp(url, entryNumber, height) { + + if (!height) height = 120; + + dump("xmlterm: ShowHelp("+url+","+entryNumber+","+height+")\n"); + + if (entryNumber) { + beforeID = "output"+entryNumber; + helpID = "help"+entryNumber; + } else { + beforeID = "session"; + helpID = "help"; + } + + var beforeElement = document.getElementById(beforeID); + + if (!beforeElement) { + dump("InsertIFrame: beforeElement ID="+beforeID+"not found\n"); + return false; + } + + var parentNode = beforeElement.parentNode; + + var helpElement = document.getElementById(helpID); + if (helpElement) { + // Delete help element + parentNode.removeChild(helpElement); + helpElement = null; + // *NOTE* Need to flush display here to avoid black flash? + } + + if (url.length > 0) { + // Create new help element + helpElement = document.createElement("div"); + helpElement.setAttribute('id', helpID); + helpElement.setAttribute('class', 'help'); + + var closeElement = document.createElement("span"); + closeElement.setAttribute('class', 'helplink'); + closeElement.appendChild(document.createTextNode("Close help frame")); + //closeElement.appendChild(document.createElement("p")); + + var iframe = document.createElement("iframe"); + iframe.setAttribute('id', helpID+'frame'); + iframe.setAttribute('class', 'helpframe'); + iframe.setAttribute('width', '100%'); + iframe.setAttribute('height', height); + iframe.setAttribute('frameborder', '0'); + iframe.setAttribute('src', url); + + helpElement.appendChild(iframe); + helpElement.appendChild(closeElement); + + dump(helpElement); + + // Insert help element + parentNode.insertBefore(helpElement, beforeElement); + + // NOTE: Need to do this *after* node is inserted into document + closeElement.setAttribute('onClick', 'return ShowHelp("",'+entryNumber + +');'); + } + + return false; +} + +// About XMLTerm +function AboutXMLTerm() { + dump("xmlterm: AboutXMLTerm\n"); + + var tipdata = document.getElementById('tipdata'); + tipdata.firstChild.data = ""; + + ShowHelp('xmltermAbout.html',0,120); + + return false; +} + +// onLoad event handler +function LoadHandler() { + dump("xmlterm: LoadHandler ... "+window.xmlterm+"\n"); + + // Update settings + UpdateSettings(); + + NewTip(); + + if (window.xmlterm) { + // XMLTerm already initialized + return (false); + } + + dump("LoadHandler: WINDOW.ARGUMENTS="+window.arguments+"\n"); + + dump("Trying to make an XMLTerm Shell through the component manager...\n"); + + var xmltshell = Components.classes["component://mozilla/xmlterm/xmltermshell"].createInstance(); + + dump("Interface xmltshell1 = " + xmltshell + "\n"); + + xmltshell = xmltshell.QueryInterface(Components.interfaces.mozIXMLTermShell); + dump("Interface xmltshell2 = " + xmltshell + "\n"); + + if (!xmltshell) { + dump("Failed to create XMLTerm shell\n"); + window.close(); + return; + } + + // Store the XMLTerm shell in the window + window.xmlterm = xmltshell; + + // Content window same as current window + var contentWindow = window; + + // Initialize XMLTerm shell in content window with argvals + window.xmlterm.Init(contentWindow, "", ""); + + //dump("LoadHandler:"+document.cookie+"\n"); + + dump("contentWindow="+contentWindow+"\n"); + dump("document="+document+"\n"); + dump("documentElement="+document.documentElement+"\n"); + + // Handle resize events + //contentWindow.addEventListener("onresize", Resize); + contentWindow.onresize = Resize; + + // Set focus to appropriate frame + contentWindow.focus(); + + //contentWindow.xmlterm = xmlterm; + + //dump(contentWindow.xmlterm); + + // The following code is for testing IFRAMEs only + dump("[Main] "+window+"\n"); + dump(window.screenX+", "+window.screenY+"\n"); + dump(window.scrollX+", "+window.scrollY+"\n"); + dump(window.pageXOffset+", "+window.pageYOffset+"\n"); + + dump("IFRAME checks\n"); + var iframe = document.getElementById('iframe1'); + + dump("iframe="+iframe+"\n"); + + frames=document.frames; + dump("frames="+frames+"\n"); + dump("frames.length="+frames.length+"\n"); + + framewin = frames[0]; + + dump("framewin="+framewin+"\n"); + dump("framewin.document="+framewin.document+"\n"); + + dump(framewin.screenX+", "+framewin.screenY+"\n"); + dump(framewin.scrollX+", "+framewin.scrollY+"\n"); + dump(framewin.pageXOffset+", "+framewin.pageYOffset+"\n"); + + var body = framewin.document.getElementsByTagName("BODY")[0]; + dump("body="+body+"\n"); + + var height= body.scrollHeight; + dump("height="+height+"\n"); + +// iframe.height = 800; +// iframe.width = 700; + +// framewin.sizeToContent(); + + framewin.xmltshell = xmltshell; + dump(framewin.xmltshell+"\n"); + + dump("xmlterm: LoadHandler completed\n"); + return (false); +} + diff --git a/extensions/xmlterm/ui/content/XMLTermCommands.js b/extensions/xmlterm/ui/content/XMLTermCommands.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/content/xmlterm.html b/extensions/xmlterm/ui/content/xmlterm.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/content/xmlterm.xul b/extensions/xmlterm/ui/content/xmlterm.xul deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/content/xmlterm2.html b/extensions/xmlterm/ui/content/xmlterm2.html deleted file mode 100644 index a12997a462b..00000000000 --- a/extensions/xmlterm/ui/content/xmlterm2.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - XMLterm Page - - - - - - - - - - - -
-
- - - - - -
- Input Value: - -
-
- -   -   - - -More tips/news - -

- - -

-
- - - diff --git a/extensions/xmlterm/ui/content/xmlterm2.xul b/extensions/xmlterm/ui/content/xmlterm2.xul deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/skin/Makefile.in b/extensions/xmlterm/ui/skin/Makefile.in deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/skin/README b/extensions/xmlterm/ui/skin/README deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/skin/images/README b/extensions/xmlterm/ui/skin/images/README deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/skin/images/ficon.gif b/extensions/xmlterm/ui/skin/images/ficon.gif deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/extensions/xmlterm/ui/skin/xmltpage.css b/extensions/xmlterm/ui/skin/xmltpage.css deleted file mode 100644 index 7051471d163..00000000000 --- a/extensions/xmlterm/ui/skin/xmltpage.css +++ /dev/null @@ -1,67 +0,0 @@ -/* xmltpage.css: default style sheet for xmlterm.html */ - -BODY { font-family: monaco, courier, elite, monospace; - background-color: #FFFFFF; - } - -DIV, PRE, SPAN { margin: 0; padding-top: 0; padding-bottom: 0 } - -PRE { font-family: monaco; - line-height: 120% } - -/* Input components */ -SPAN.prompt { color: blue } -SPAN.command { color: blue } - -/* Error messages */ -DIV.errmsg { color: red } - -/* Explicit hyperlinks (underlined) */ -DIV.textlink { font-family: monaco; color: blue; cursor: hand; - text-decoration: underline } -SPAN.textlink { font-family: monaco; color: blue; cursor: hand; - text-decoration: underline } - -/* Imlicit hyperlinks (highlighted) */ -SPAN.highlight { font-family: monaco; color: blue; cursor: hand } -SPAN.directory { font-family: monaco; color: blue; cursor: hand } -SPAN.executable { font-family: monaco; color: blue; cursor: hand } -SPAN.plainfile { font-family: monaco; color: blue; cursor: hand } -SPAN.imagefile { font-family: monaco; color: blue; cursor: hand } -SPAN.urlfile { font-family: monaco; color: blue; cursor: hand } - -/* Screen display */ -PRE.row { margin: 0; padding-top: 0; padding-bottom: 0 } -SPAN.row { margin: 0; padding-top: 0; padding-bottom: 0 } -SPAN.boldstyle { font-weight: bold; margin: 0; - padding-top: 0; padding-bottom: 0 } -SPAN.underlinestyle { text-decoration: underline; margin: 0; - padding-top: 0; padding-bottom: 0 } -SPAN.blinkstyle { font-weight: bold; margin: 0; - padding-top: 0; padding-bottom: 0 } -SPAN.inversestyle { font-weight: bold; margin: 0; - padding-top: 0; padding-bottom: 0 } - -/* Forms */ -FORM { margin: 0; padding-top: 0; padding-bottom: 0 } -SPAN.formhead { font-family: sans-serif; font-weight: bold } - -/* Tips */ -SPAN.tipdata { font-family: sans-serif; background-color: #DDDDDD } -TABLE.tiptable { background-color: #DDDDDD } -DIV.tipelement { font-family: sans-serif } - -/* Help links */ -SPAN.helphighlight { font-family: sans-serif; color: green; cursor: hand } -SPAN.helplink { font-family: sans-serif; color: blue; cursor: hand; - text-decoration: underline } - -/* Level style */ -DIV.intermediate {display: block} -DIV.beginner {display: none} - -/* Icons style */ -SPAN.noicons {display: inline} -SPAN.icons {display: none} -IMG.icons {display: none} -TR.icons {display: none} diff --git a/extensions/xmlterm/ui/skin/images/wheel.gif b/extensions/xmlterm/ui/wheel.gif similarity index 100% rename from extensions/xmlterm/ui/skin/images/wheel.gif rename to extensions/xmlterm/ui/wheel.gif diff --git a/extensions/xmlterm/ui/content/xmltblank.html b/extensions/xmlterm/ui/xmltblank.html similarity index 100% rename from extensions/xmlterm/ui/content/xmltblank.html rename to extensions/xmlterm/ui/xmltblank.html diff --git a/extensions/xmlterm/ui/skin/xmlterm.css b/extensions/xmlterm/ui/xmlterm.css similarity index 100% rename from extensions/xmlterm/ui/skin/xmlterm.css rename to extensions/xmlterm/ui/xmlterm.css diff --git a/extensions/xmlterm/ui/xmlterm.html b/extensions/xmlterm/ui/xmlterm.html new file mode 100644 index 00000000000..e99cc02ea25 --- /dev/null +++ b/extensions/xmlterm/ui/xmlterm.html @@ -0,0 +1,124 @@ + + + + xmlterm page + + + + + + + + + +
+ + + + + Level: + + +   + + Icons: + + +   + + Windows: + + + + + + About XMLTerm + +
+
+ +
+ +
+
+
Keyboard shortcuts
+ + + + +
F1 + F2 + F7 + F8 + F9 +
ctl-Home + ctl-End +
+ + + + +
+
+ + + Value: + +
+
+
+ + +
+ + New Tip: + + + +   + + + + Explain Tip + +
+ +
+ +
+ + +
+
+ + + diff --git a/extensions/xmlterm/ui/xmlterm.xul b/extensions/xmlterm/ui/xmlterm.xul new file mode 100644 index 00000000000..83c1c5f3dad --- /dev/null +++ b/extensions/xmlterm/ui/xmlterm.xul @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + diff --git a/extensions/xmlterm/ui/content/README b/extensions/xmlterm/ui/xmlterm2.html similarity index 100% rename from extensions/xmlterm/ui/content/README rename to extensions/xmlterm/ui/xmlterm2.html diff --git a/extensions/xmlterm/ui/xmlterm2.xul b/extensions/xmlterm/ui/xmlterm2.xul new file mode 100644 index 00000000000..5581c00812e --- /dev/null +++ b/extensions/xmlterm/ui/xmlterm2.xul @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + diff --git a/extensions/xmlterm/ui/content/xmltermAbout.html b/extensions/xmlterm/ui/xmltermAbout.html similarity index 100% rename from extensions/xmlterm/ui/content/xmltermAbout.html rename to extensions/xmlterm/ui/xmltermAbout.html diff --git a/extensions/xmlterm/ui/content/xmltermTips.html b/extensions/xmlterm/ui/xmltermTips.html similarity index 100% rename from extensions/xmlterm/ui/content/xmltermTips.html rename to extensions/xmlterm/ui/xmltermTips.html diff --git a/extensions/xmlterm/ui/content/XMLTermChrome.js b/extensions/xmlterm/ui/xmltpage.css similarity index 100% rename from extensions/xmlterm/ui/content/XMLTermChrome.js rename to extensions/xmlterm/ui/xmltpage.css