Added workaround for annoying cursor positioning problem using mouse click event. Added tips/news feature. git-svn-id: svn://10.0.0.236/trunk@61968 18797224-902f-48f8-a5cc-f745e15eee43
394 lines
12 KiB
HTML
394 lines
12 KiB
HTML
<!-- xmlterm.html: XMLterm page -->
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>XMLterm Page</TITLE>
|
|
|
|
<LINK TITLE="DefaultStyle" REL="stylesheet" TYPE="text/css"
|
|
HREF="chrome://xmlterm/skin/xmltpage.css">
|
|
|
|
<SCRIPT language="JavaScript">
|
|
|
|
// Show all output
|
|
function ShowAll() {
|
|
return DisplayAllOutput(true);
|
|
}
|
|
|
|
// Hide all output
|
|
function HideAll() {
|
|
return DisplayAllOutput(false);
|
|
}
|
|
|
|
// 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);
|
|
//newwin = window.xmlterm.NewXMLTermWindow(firstcommand);
|
|
dump("NewXMLTerm: "+newwin+"\n")
|
|
return (false);
|
|
}
|
|
|
|
// Handle resize events
|
|
function Resize(event) {
|
|
dump("Resize()\n");
|
|
window.xmlterm.Resize();
|
|
return (false);
|
|
}
|
|
|
|
// Scroll Home
|
|
function ScrollHome(isShift, isControl) {
|
|
dump("ScrollHome("+isShift+","+isControl+")\n");
|
|
if (isShift && window.xmltbrowser) {
|
|
window.xmltbrowser.scroll(0,0);
|
|
} else {
|
|
window.scroll(0,0);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Scroll End
|
|
function ScrollEnd(isShift, isControl) {
|
|
dump("ScrollEnd("+isShift+","+isControl+")\n");
|
|
if (isShift && window.xmltbrowser) {
|
|
window.xmltbrowser.scroll(0,9999);
|
|
} else {
|
|
window.scroll(0,9999);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Scroll PageUp
|
|
function ScrollPageUp(isShift, isControl) {
|
|
dump("ScrollPageUp("+isShift+","+isControl+")\n");
|
|
|
|
if (isShift && window.xmltbrowser) {
|
|
window.xmltbrowser.scrollBy(0,-300);
|
|
} else {
|
|
window.scrollBy(0,-300);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Scroll PageDown
|
|
function ScrollPageDown(isShift, isControl) {
|
|
dump("ScrollPageDown("+isShift+","+isControl+")\n");
|
|
if (isShift && window.xmltbrowser) {
|
|
window.xmltbrowser.scrollBy(0,300);
|
|
} else {
|
|
window.scrollBy(0,300);
|
|
}
|
|
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;
|
|
}
|
|
|
|
// 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");
|
|
}
|
|
return (false);
|
|
}
|
|
|
|
// Control display of all output elements
|
|
function DisplayAllOutput(flag) {
|
|
var outputElements = document.getElementsByName("output");
|
|
for (i=0; i<outputElements.length; i++) {
|
|
var outputElement = outputElements[i];
|
|
outputElement.style.display = (flag) ? "block" : "none";
|
|
}
|
|
|
|
var promptElements = document.getElementsByName("prompt");
|
|
for (i=0; i<promptElements.length; i++) {
|
|
promptElement = promptElements[i];
|
|
promptElement.style.setProperty("text-decoration",
|
|
(flag) ? "none" : "underline", "")
|
|
}
|
|
return (false);
|
|
}
|
|
|
|
// Click handler
|
|
function clickXMLTerm(name, number, arg1, arg2) {
|
|
dump("clickXMLTerm("+name+","+number+","+arg1+","+arg2+")\n");
|
|
|
|
if (name === "prompt") {
|
|
var outputElement = document.getElementById("output"+number);
|
|
var promptElement = document.getElementById("prompt"+number);
|
|
//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","");
|
|
}
|
|
|
|
} else if (name === "command") {
|
|
var commandElement = document.getElementById(name+number);
|
|
var command = commandElement.firstChild.data;
|
|
dump("command = "+command+"\n\n");
|
|
window.xmlterm.SendText("\025"+command+"\n", document.cookie);
|
|
|
|
} else {
|
|
|
|
if ((number >= 0) &&
|
|
(window.xmlterm.currentEntryNumber != number)) {
|
|
dump("NOT CURRENT COMMAND\n");
|
|
return (false);
|
|
}
|
|
|
|
if (name == "send") {
|
|
dump("send = "+arg1+"\n");
|
|
window.xmlterm.SendText(arg1, document.cookie);
|
|
|
|
} else if (name == "textlink") {
|
|
dump("textlink = "+arg1+"\n");
|
|
Load(arg1);
|
|
|
|
} else if (name == "sendln") {
|
|
|
|
if ((Math.abs(number)+1 == window.xmlterm.currentEntryNumber) &&
|
|
(arg2 != null)) {
|
|
// Current command
|
|
dump("sendln = "+arg2+"\n\n");
|
|
window.xmlterm.SendText("\025"+arg2+"\n", document.cookie);
|
|
} else {
|
|
// Not current command
|
|
dump("sendln = "+arg1+"\n\n");
|
|
window.xmlterm.SendText("\025"+arg1+"\n", document.cookie);
|
|
}
|
|
|
|
} else if (name == "createln") {
|
|
dump("createln = "+arg1+"\n\n");
|
|
newwin = NewXMLTerm(arg1+"\n");
|
|
}
|
|
}
|
|
|
|
return (false);
|
|
}
|
|
|
|
// Double Click handler
|
|
function dblclickXMLTerm(name, number, arg1) {
|
|
dump("dblclickXMLTerm("+name+","+number+","+arg1+")\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);
|
|
}
|
|
|
|
// Display more tips
|
|
function MoreTips() {
|
|
dump("xmlterm: MoreTips\n");
|
|
|
|
var moreTipsElement = document.getElementById('moretips');
|
|
var moreTipsFrame = document.getElementById('moretipsframe');
|
|
|
|
if (moreTipsFrame) {
|
|
// Remove more tips iframe
|
|
document.body.removeChild(moreTipsFrame);
|
|
moreTipsElement.firstChild.data = "More tips/news";
|
|
} else {
|
|
// Create more tips iframe
|
|
moreTipsFrame = document.createElement("iframe");
|
|
moreTipsFrame.setAttribute('ID', 'moretipsframe');
|
|
moreTipsFrame.setAttribute('CLASS', 'moretipsframe');
|
|
moreTipsFrame.setAttribute('WIDTH', '100%');
|
|
moreTipsFrame.setAttribute('SRC', 'http://xmlterm.org/newstips.html');
|
|
|
|
dump(moreTipsFrame);
|
|
|
|
// Insert more tips iframe in body
|
|
var sessionElement = document.getElementById('session');
|
|
document.body.insertBefore(moreTipsFrame, sessionElement);
|
|
moreTipsElement.firstChild.data = "Hide tips/news";
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// onLoad event handler
|
|
function LoadHandler() {
|
|
dump("xmlterm: LoadHandler ... "+window.xmlterm+"\n");
|
|
|
|
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);
|
|
}
|
|
|
|
</SCRIPT>
|
|
|
|
</HEAD>
|
|
|
|
<BODY onLoad="return LoadHandler();">
|
|
|
|
<TABLE FRAME=none BORDER=0>
|
|
<TBODY>
|
|
<TR><TD ALIGN=center>
|
|
<FORM NAME="XMLTERM form">
|
|
<INPUT TYPE="button" VALUE="Show all output"
|
|
onClick="return ShowAll();">
|
|
<INPUT TYPE="button" VALUE="Hide all output"
|
|
onClick="return HideAll();">
|
|
<INPUT TYPE="button" VALUE="SetHistory"
|
|
onClick="return SetHistoryValue();">
|
|
<INPUT TYPE="button" VALUE="SetPrompt" onClick="return SetPromptValue();">
|
|
<BR>
|
|
Input Value:
|
|
<INPUT SIZE=50 TYPE="text" ID="InputValue"
|
|
VALUE="<img src='http:/dmoz.org/img/lizard2a.gif'>"
|
|
onFocus="return FormFocus();" onBlur="return FormBlur();">
|
|
</FORM>
|
|
</TABLE>
|
|
|
|
<SPAN CLASS="tips" ID="tips">
|
|
<B>Tip:</B> Click the SetPrompt button to use a cool Mozilla prompt from dmoz.org!
|
|
</SPAN>
|
|
<SPAN CLASS="moretips" ID="moretips" onClick="return MoreTips();">
|
|
More tips/news
|
|
</SPAN>
|
|
<P>
|
|
<!--
|
|
<IFRAME NAME="iframet" SRC="chrome://xmlterm/content/xmltblank.html"
|
|
FRAMEBORDER=0>
|
|
</IFRAME>
|
|
-->
|
|
|
|
<DIV CLASS="session" ID="session">
|
|
</DIV>
|
|
|
|
</BODY>
|
|
</HTML>
|