diff --git a/xul/planner/application.ini b/xul/planner/application.ini new file mode 100755 index 000000000..7e0f4cc75 --- /dev/null +++ b/xul/planner/application.ini @@ -0,0 +1,14 @@ +[App] +Name=FHC-Planner +ID=planner@technikum-wien.at +Version=0.1 +BuildID=20110901 +Vendor=FH Technikum Wien +Copyright=Copyright (c) 2004-2011 FH TW + +[Gecko] +MinVersion=1.0 +MaxVersion=7.0 + +[XRE] +EnableExtensionManager=1 diff --git a/xul/planner/chrome.manifest b/xul/planner/chrome.manifest new file mode 100755 index 000000000..bb84eb170 --- /dev/null +++ b/xul/planner/chrome.manifest @@ -0,0 +1,9 @@ +content planner chrome/content/ +skin planner classic/1.0 chrome/skin/ +overlay chrome://browser/content/browser.xul chrome://planner/content/browser-overlay.xul +style chrome://browser/content/browser.xul chrome://planner/skin/planner.css +overlay chrome://navigator/content/navigator.xul chrome://planner/content/browser-overlay.xul + +locale planner en-US chrome/locale/en-US/ +locale planner de-AT chrome/locale/de-AT/ + diff --git a/xul/planner/chrome/content/about.xul b/xul/planner/chrome/content/about.xul new file mode 100755 index 000000000..708b6b7b4 --- /dev/null +++ b/xul/planner/chrome/content/about.xul @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/xul/planner/chrome/content/browser-overlay.js b/xul/planner/chrome/content/browser-overlay.js new file mode 100755 index 000000000..e01b5ee00 --- /dev/null +++ b/xul/planner/chrome/content/browser-overlay.js @@ -0,0 +1,21 @@ +var planner = { + onLoad: function() { + // initialization code + this.initialized = true; + this.strings = document.getElementById("planner-strings"); + }, + + onMenuItemCommand: function(e) { + var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] + .getService(Components.interfaces.nsIPromptService); + promptService.alert(window, this.strings.getString("helloMessageTitle"), + this.strings.getString("helloMessage")); + }, + + onToolbarButtonCommand: function(e) { + // just reuse the function above. you can change this, obviously! + planner.onMenuItemCommand(e); + } +}; + +window.addEventListener("load", planner.onLoad, false); diff --git a/xul/planner/chrome/content/browser-overlay.xul b/xul/planner/chrome/content/browser-overlay.xul new file mode 100755 index 000000000..37998d7da --- /dev/null +++ b/xul/planner/chrome/content/browser-overlay.xul @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xul/planner/chrome/content/controller.js b/xul/planner/chrome/content/controller.js new file mode 100755 index 000000000..5bc892b14 --- /dev/null +++ b/xul/planner/chrome/content/controller.js @@ -0,0 +1,293 @@ + +var FileController = { + _app : null, + + init : function(aApp) { + this._app = aApp; + }, + + supportsCommand : function(cmd) { + var isSupported = false; + switch (cmd) { + case "cmd_pageSetup": + case "cmd_print": + case "cmd_exit": + isSupported = true; + break; + default: + isSupported = false; + break; + } + return isSupported; + }, + + isCommandEnabled : function(cmd) { + return true; + }, + + doCommand : function(cmd) { + switch (cmd) { + case "cmd_pageSetup": + { + PrintUtils.showPageSetup(); + break; + } + case "cmd_print": + { + PrintUtils.print(); + break; + } + case "cmd_exit": + { + if (this._app.shutdownQuery() == false) { + return; + } + + var aForceQuit = false; + var appStartup = Components.classes['@mozilla.org/toolkit/app-startup;1'].getService(Components.interfaces.nsIAppStartup); + + // eAttemptQuit will try to close each XUL window, but the XUL window can cancel the quit + // process if there is unsaved data. eForceQuit will quit no matter what. + var quitSeverity = aForceQuit ? Components.interfaces.nsIAppStartup.eForceQuit : Components.interfaces.nsIAppStartup.eAttemptQuit; + appStartup.quit(quitSeverity); + + break; + } + } + } +}; + + + + + +var ToolsController = { + _app : null, + + init : function(aApp) { + this._app = aApp; + }, + + supportsCommand : function(cmd) { + var isSupported = false; + switch (cmd) { + case "cmd_options": + isSupported = true; + break; + default: + isSupported = false; + break; + } + return isSupported; + }, + + isCommandEnabled : function(cmd) { + return true; + }, + + doCommand : function(cmd) { + switch (cmd) { + case "cmd_options": + { + window.openDialog("chrome://planner/content/options.xul", "options", "centerscreen,modal"); + break; + } + } + } +}; + + +var HelpController = { + _app : null, + + init : function(aApp) { + this._app = aApp; + }, + + supportsCommand : function(cmd) { + var isSupported = false; + switch (cmd) { + case "cmd_about": + isSupported = true; + break; + default: + isSupported = false; + break; + } + return isSupported; + }, + + isCommandEnabled : function(cmd) { + return true; + }, + + doCommand : function(cmd) { + switch (cmd) { + case "cmd_about": + { + window.openDialog("chrome://planner/content/about.xul", "about", "centerscreen,modal"); + break; + } + } + } +}; + +/** + * Command Updater + */ +var CommandUpdater = { + /** + * Gets a controller that can handle a particular command. + * @param command + * A command to locate a controller for, preferring controllers that + * show the command as enabled. + * @returns In this order of precedence: + * - the first controller supporting the specified command + * associated with the focused element that advertises the + * command as ENABLED + * - the first controller supporting the specified command + * associated with the global window that advertises the + * command as ENABLED + * - the first controller supporting the specified command + * associated with the focused element + * - the first controller supporting the specified command + * associated with the global window + */ + _getControllerForCommand: function(command) { + try { + var controller = top.document.commandDispatcher.getControllerForCommand(command); + if (controller && controller.isCommandEnabled(command)) + return controller; + } + catch(e) { + } + var controllerCount = window.controllers.getControllerCount(); + for (var i = 0; i < controllerCount; ++i) { + var current = window.controllers.getControllerAt(i); + try { + if (current.supportsCommand(command) && current.isCommandEnabled(command)) + return current; + } + catch (e) { + } + } + return controller || window.controllers.getControllerForCommand(command); + }, + + /** + * Updates the state of a XUL element for the specified command + * depending on its state. + * @param command + * The name of the command to update the XUL element for + */ + updateCommand: function(command) { + var enabled = false; + try { + var controller = this._getControllerForCommand(command); + if (controller) { + enabled = controller.isCommandEnabled(command); + } + } + catch(ex) { } + + this.enableCommand(command, enabled); + }, + + /** + * Updates the state of a XUL element for the specified command + * depending on its state. + * @param command + * The name of the command to update the XUL element for + */ + updateCommands: function(_commands) { + var commands = _commands.split(","); + for (var command in commands) { + this.updateCommand(commands[command]); + } + }, + + /** + * Enables or disables a XUL element. + * @param command + * The name of the command to enable or disable + * @param enabled + * true if the command should be enabled, false otherwise. + */ + enableCommand: function(command, enabled) { + var element = document.getElementById(command); + if (!element) + return; + if (enabled) + element.removeAttribute("disabled"); + else + element.setAttribute("disabled", "true"); + }, + + /** + * Performs the action associated with a specified command using the most + * relevant controller. + * @param command + * The command to perform. + */ + doCommand: function(command) { + var controller = this._getControllerForCommand(command); + if (!controller) + return; + controller.doCommand(command); + }, + + /** + * Changes the label attribute for the specified command. + * @param command + * The command to update. + * @param labelAttribute + * The label value to use. + */ + setMenuValue: function(command, labelAttribute) { + var commandNode = top.document.getElementById(command); + if (commandNode) + { + var label = commandNode.getAttribute(labelAttribute); + if ( label ) + commandNode.setAttribute('label', label); + } + }, + + /** + * Changes the accesskey attribute for the specified command. + * @param command + * The command to update. + * @param valueAttribute + * The value attribute to use. + */ + setAccessKey: function(command, valueAttribute) { + var commandNode = top.document.getElementById(command); + if (commandNode) + { + var value = commandNode.getAttribute(valueAttribute); + if ( value ) + commandNode.setAttribute('accesskey', value); + } + }, + + /** + * Inform all the controllers attached to a node that an event has occurred + * (e.g. the tree controllers need to be informed of blur events so that they can change some of the + * menu items back to their default values) + * @param node + * The node receiving the event + * @param event + * The event. + */ + onEvent: function(node, event) { + var numControllers = node.controllers.getControllerCount(); + var controller; + + for ( var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++ ) + { + controller = node.controllers.getControllerAt(controllerIndex); + if ( controller ) + controller.onEvent(event); + } + } +}; diff --git a/xul/planner/chrome/content/options.xul b/xul/planner/chrome/content/options.xul new file mode 100755 index 000000000..d04657f04 --- /dev/null +++ b/xul/planner/chrome/content/options.xul @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/xul/planner/chrome/content/planner.xul b/xul/planner/chrome/content/planner.xul new file mode 100755 index 000000000..4db1f0729 --- /dev/null +++ b/xul/planner/chrome/content/planner.xul @@ -0,0 +1,10 @@ + + + + + diff --git a/xul/planner/chrome/skin/planner.css b/xul/planner/chrome/skin/planner.css new file mode 100755 index 000000000..1b96b4355 --- /dev/null +++ b/xul/planner/chrome/skin/planner.css @@ -0,0 +1,66 @@ +treechildren::-moz-tree-cell(makeItGreen) +{ + background-color: #88FF88; +} +treechildren::-moz-tree-cell(makeItRed) +{ + background-color: #FFAAAA; +} +treechildren::-moz-tree-cell(makeItBlue) +{ + background-color: #9999FF; +} +treechildren::-moz-tree-cell(makeItYellow) +{ + background-color: #FFFF99; +} + +#motorsport-manager-toolbar-button { + list-style-image: URL("chrome://motorsportmanager/skin/toolbar-large.png"); +} + +#motorsport-manager-status-bar-icon { + width: 83px; + margin: 0 5px; +} + +.motorsport-manager-selected { + outline: 2px solid red !important; +} + + +label.gesenkt +{ + border-style:solid; + border-width:1px; + background-color:#33FF33; + text-align:center; +} +label.normal +{ + border-style:solid; + border-width:1px; + background-color:#FFFF33; + text-align:center; +} +label.erhoeht +{ + border-style:solid; + border-width:1px; + background-color:#FF3333; + text-align:center; +} +textbox +{ + max-height:1.6em; +} +button +{ + max-height:1.8em; +} +grid +{ + margin:0px; + padding:0px; + border:0px; +} diff --git a/xul/planner/chrome/skin/planner.png b/xul/planner/chrome/skin/planner.png new file mode 100755 index 000000000..e69de29bb diff --git a/xul/planner/defaults/preferences/prefs.js b/xul/planner/defaults/preferences/prefs.js new file mode 100755 index 000000000..94f5c64de --- /dev/null +++ b/xul/planner/defaults/preferences/prefs.js @@ -0,0 +1,36 @@ +// pref("toolkit.defaultChromeURI", "https://user:pass@vilesci.technikum-wien.at/content/planner.xul.php"); +// Entry Point for Extension +pref("toolkit.defaultChromeURI", "chrome://planner/content/browser-overlay.xul"); +// Entry Point for Browser +// pref("browser.chromeURL", "chrome://planner/content/planner.xul") + +/* debugging prefs */ +pref("browser.dom.window.dump.enabled", true); +pref("javascript.options.showInConsole", true); +pref("javascript.options.strict", true); +pref("nglayout.debug.disable_xul_cache", true); +pref("nglayout.debug.disable_xul_fastload", true); + +/* added to allow