r9651: Start to group all SWAT specific windowing, widgets, etc. in one
authorDeryck Hodge <deryck@samba.org>
Fri, 26 Aug 2005 13:22:56 +0000 (13:22 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:34:38 +0000 (13:34 -0500)
file.  This allows basic style and event code to be set in one place,
though we'll still have to override for a specific position or look.

More to come...

deryck

swat/desktop/index.esp
swat/scripting/client/swat.js [new file with mode: 0644]

index f688850851e5eef09689c3e64b6aa2ae28c8ac32..cd52f27d24d37b1cc1cf3b1ff1744690fd27289f 100644 (file)
@@ -6,37 +6,10 @@ libinclude("base.js");
 <script type="text/javascript" src="/scripting/client/encoder.js"></script>
 <script type="text/javascript" src="/scripting/client/call.js"></script>
 <script type="text/javascript" src="/scripting/client/js_scripts.js"></script>
+<script type="text/javascript" src="/scripting/client/swat.js"></script>
 
 <script type="text/javascript">
 
-/* Qooxdoo's browser sniffer doesn't distinguish IE version.
-We'll cover IE 6 for now, but these checks need to be
-revisited for fuller browser coverage. */
-var browser = QxClient().engine;
-
-function docWidth()
-{
-       var x;
-       if (browser != "mshtml") {
-               x = window.innerWidth;
-       } else {
-               x = document.documentElement.clientWidth;
-       }
-       return x;
-}
-
-function docHeight()
-{
-       var y;
-       // Less 25px to not cover the toolbar
-       if (browser != "mshtml") {
-               y = window.innerHeight - 25;
-       } else {
-               y = document.documentElement.clientHeight;
-       }
-       return y;
-}
-
 function showMessage(m)
 {
        var message = new QxWindow();
@@ -69,6 +42,13 @@ function showMessage(m)
        message.setVisible(true);
 }
 
+function blankW()
+{
+       var blank = new Window("SWAT");
+       w.add(blank);
+       blank.setVisible(true);
+}
+
 function showContextMenu(e)
 {
        var aboutCmd = new QxCommand();
@@ -76,18 +56,21 @@ function showContextMenu(e)
                showMessage("SWAT, the Samba Web Administration Tool.<br/>This tool is currently under development.");
        });
 
-       var menu = new QxMenu;
+       var newWin = new QxCommand();
+       newWin.addEventListener("execute", blankW);
+
+       cmenu = new QxMenu;
 
        var sub1 = new QxMenuButton("About SWAT", null, aboutCmd);
        var sep = new QxMenuSeparator();
-       var sub2 = new QxMenuButton("More menu later...", null);
+       var sub2 = new QxMenuButton("New Window", null, newWin);
 
-       menu.add(sub1, sep, sub2);
+       cmenu.add(sub1, sep, sub2);
 
-       menu.setLeft(e.getClientX());
-       menu.setTop(e.getClientY());
-       w.add(menu);
-       menu.setVisible(true);
+       cmenu.setLeft(e.getClientX());
+       cmenu.setTop(e.getClientY());
+       w.add(cmenu);
+       cmenu.setVisible(true);
 }
 
 /*** init the page for qooxdoo ***/
@@ -100,8 +83,8 @@ window.application.main = function()
        with(w) {
                setTop(0);
                setLeft(0);
-               setWidth(docWidth());
-               setHeight(docHeight());
+               setWidth(docX());
+               setHeight(docY());
        }
        doc.addEventListener("contextmenu", showContextMenu);
        doc.add(w);
@@ -127,8 +110,8 @@ window.application.main = function()
 
 window.onresize = function() 
 {
-       w.setWidth(docWidth());
-       w.setHeight(docHeight());
+       w.setWidth(docX());
+       w.setHeight(docY());
 }
 
 function showReg()
@@ -192,8 +175,22 @@ function startSwat()
                srvMenu.setTop(this.getComputedPageBoxTop() - 3);
                if (espMenu.getVisible()) {
                        espMenu.setVisible(false);
+               } else if (newMenu.getVisible()) {
+                       newMenu.setVisible(false);
                }
        }); 
+
+       var openWin = new QxCommand;
+       openWin.addEventListener("execute", function() {
+               blankW();
+       });
+
+       var newMenu = new QxMenu;
+       var new1 = new QxMenuButton("Window", null, openWin);
+       newMenu.add(new1);
+       w.add(newMenu);
+       newMenu.setVisible(false);
+
        var opt2 = new QxMenuButton("Installation", null);
        var opt3 = new QxMenuButton("Configuration", null);
        var opt4 = new QxMenuButton("ESP Tests", null);
@@ -203,15 +200,28 @@ function startSwat()
                espMenu.setTop(this.getComputedPageBoxTop() - 3);
                if (srvMenu.getVisible()) {
                        srvMenu.setVisible(false);
+               } else if (newMenu.getVisible()) {
+                       newMenu.setVisible(false);
                }
        }); 
        var opt5 = new QxMenuButton("Documentation", null);
+       var opt6 = new QxMenuButton("New", null);
+       opt6.addEventListener("mouseover", function() {
+               newMenu.setVisible(true);
+               newMenu.setLeft(this.getComputedPageBoxRight() + 4);
+               newMenu.setTop(this.getComputedPageBoxTop() - 3);
+               if (srvMenu.getVisible()) {
+                       srvMenu.setVisible(false);
+               } else if (espMenu.getVisible()) {
+                       espMenu.setVisible(false);
+               }
+       }); 
        var sep1 = new QxMenuSeparator();
        var sep2 = new QxMenuSeparator();
 
-       sMenu.add(opt1, opt2, opt3, sep1, opt4, sep2, opt5);
+       sMenu.add(opt1, opt2, opt3, sep1, opt4, sep2, opt5, opt6);
        sMenu.setLeft(0);
-       sMenu.setTop(docHeight() - 150);
+       sMenu.setTop(docY() - 150);
        w.add(sMenu);
        sMenu.setVisible(true);
 }
diff --git a/swat/scripting/client/swat.js b/swat/scripting/client/swat.js
new file mode 100644 (file)
index 0000000..e6a4230
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+   Windows, tabs, and general widgetry for SWAT.
+
+   Copyright (C) Deryck Hodge 2005
+   released under the GNU GPL Version 2 or later
+*/
+
+
+/* Qooxdoo's browser sniffer doesn't distinguish IE version.
+We'll cover IE 6 for now, but these checks need to be
+revisited for fuller browser coverage. */
+var browser = QxClient().engine;
+
+function docX()
+{
+       var x;
+       if (browser != "mshtml") {
+               x = window.innerWidth;
+       } else {
+               x = document.documentElement.clientWidth;
+       }
+       return x;
+}
+
+function docY()
+{
+       var y;
+       // Less 25px to not cover the toolbar
+       if (browser != "mshtml") {
+               y = window.innerHeight - 25;
+       } else {
+               y = document.documentElement.clientHeight;
+       }
+       return y;
+}
+
+function sizeX()
+{
+       var sX = Math.floor(docX() * .45);
+       return sX;
+}
+
+function sizeY()
+{
+       var sY = Math.floor(docY() * .45);
+       return sY;
+}
+
+function getPosX()
+{
+       var y = Math.floor( (docY() - sizeY()) * Math.random() );
+       return y;
+}
+
+function getPosY()
+{
+       var x = Math.floor( (docX() - sizeX()) * Math.random() );
+       return x;
+}
+
+function openIn(e)
+{
+       var blank = new Window("New Menu");
+       e.add(blank);
+       blank.setVisible(true);
+}
+       
+function winMenu(e)
+{
+       var self = this;
+       var WinWin = new QxCommand();
+       WinWin.addEventListener("execute", function() {
+               var blank = new QxWindow();
+               self.add(blank);
+               blank.setVisible(true);
+       }); 
+
+       var inset = new QxMenu;
+       var sub1 = new QxMenuButton("Open window in a window", null, WinWin);
+
+       inset.add(sub1);
+       self.add(inset)
+
+       cmenu.setVisible(false);
+       inset.setVisible(true);
+}
+
+function Window(title)
+{
+       var self = new QxWindow(title);
+       self.setTop(getPosX());
+       self.setLeft(getPosY());
+       self.setMinWidth(sizeX());
+       self.setMinHeight(sizeY());
+       self.addEventListener("contextmenu", winMenu);
+       return self;
+}
+
+