[fusion-commits] r1707 - in trunk: lib
templates/mapguide/standard/themes/crispin
templates/mapguide/standard/themes/crispin/images
templates/mapguide/standard/themes/delicious
templates/mapguide/standard/themes/delicious/images
templates/mapserver/standard/themes/crispin
templates/mapserver/standard/themes/crispin/images
templates/mapserver/standard/themes/delicious
templates/mapserver/standard/themes/delicious/images widgets
svn_fusion at osgeo.org
svn_fusion at osgeo.org
Wed Dec 10 15:34:09 EST 2008
Author: pagameba
Date: 2008-12-10 15:34:08 -0500 (Wed, 10 Dec 2008)
New Revision: 1707
Modified:
trunk/lib/jxlib.uncompressed.js
trunk/templates/mapguide/standard/themes/crispin/ie6.css
trunk/templates/mapguide/standard/themes/crispin/ie7.css
trunk/templates/mapguide/standard/themes/crispin/images/button.png
trunk/templates/mapguide/standard/themes/crispin/images/button_combo.png
trunk/templates/mapguide/standard/themes/crispin/images/button_multi.png
trunk/templates/mapguide/standard/themes/crispin/images/button_multi_disclose.png
trunk/templates/mapguide/standard/themes/crispin/images/dialog_chrome.png
trunk/templates/mapguide/standard/themes/crispin/images/flyout_chrome.png
trunk/templates/mapguide/standard/themes/crispin/images/menu_hover.png
trunk/templates/mapguide/standard/themes/crispin/images/tab_bottom.png
trunk/templates/mapguide/standard/themes/crispin/images/tab_left.png
trunk/templates/mapguide/standard/themes/crispin/images/tab_right.png
trunk/templates/mapguide/standard/themes/crispin/images/tab_top.png
trunk/templates/mapguide/standard/themes/crispin/images/tree.png
trunk/templates/mapguide/standard/themes/crispin/images/tree_hover.png
trunk/templates/mapguide/standard/themes/delicious/ie6.css
trunk/templates/mapguide/standard/themes/delicious/ie7.css
trunk/templates/mapguide/standard/themes/delicious/images/button.png
trunk/templates/mapguide/standard/themes/delicious/images/button_combo.png
trunk/templates/mapguide/standard/themes/delicious/images/button_multi.png
trunk/templates/mapguide/standard/themes/delicious/images/button_multi_disclose.png
trunk/templates/mapguide/standard/themes/delicious/images/dialog_chrome.png
trunk/templates/mapguide/standard/themes/delicious/images/flyout_chrome.png
trunk/templates/mapguide/standard/themes/delicious/images/menu_hover.png
trunk/templates/mapguide/standard/themes/delicious/images/tab_bottom.png
trunk/templates/mapguide/standard/themes/delicious/images/tab_left.png
trunk/templates/mapguide/standard/themes/delicious/images/tab_right.png
trunk/templates/mapguide/standard/themes/delicious/images/tab_top.png
trunk/templates/mapguide/standard/themes/delicious/images/tree.png
trunk/templates/mapguide/standard/themes/delicious/images/tree_hover.png
trunk/templates/mapguide/standard/themes/delicious/images/tree_vert_line.png
trunk/templates/mapserver/standard/themes/crispin/ie6.css
trunk/templates/mapserver/standard/themes/crispin/ie7.css
trunk/templates/mapserver/standard/themes/crispin/images/button.png
trunk/templates/mapserver/standard/themes/crispin/images/button_combo.png
trunk/templates/mapserver/standard/themes/crispin/images/button_multi.png
trunk/templates/mapserver/standard/themes/crispin/images/button_multi_disclose.png
trunk/templates/mapserver/standard/themes/crispin/images/dialog_chrome.png
trunk/templates/mapserver/standard/themes/crispin/images/flyout_chrome.png
trunk/templates/mapserver/standard/themes/crispin/images/menu_hover.png
trunk/templates/mapserver/standard/themes/crispin/images/tab_bottom.png
trunk/templates/mapserver/standard/themes/crispin/images/tab_left.png
trunk/templates/mapserver/standard/themes/crispin/images/tab_right.png
trunk/templates/mapserver/standard/themes/crispin/images/tab_top.png
trunk/templates/mapserver/standard/themes/crispin/images/tree.png
trunk/templates/mapserver/standard/themes/crispin/images/tree_hover.png
trunk/templates/mapserver/standard/themes/delicious/ie6.css
trunk/templates/mapserver/standard/themes/delicious/ie7.css
trunk/templates/mapserver/standard/themes/delicious/images/button.png
trunk/templates/mapserver/standard/themes/delicious/images/button_combo.png
trunk/templates/mapserver/standard/themes/delicious/images/button_multi.png
trunk/templates/mapserver/standard/themes/delicious/images/button_multi_disclose.png
trunk/templates/mapserver/standard/themes/delicious/images/dialog_chrome.png
trunk/templates/mapserver/standard/themes/delicious/images/flyout_chrome.png
trunk/templates/mapserver/standard/themes/delicious/images/menu_hover.png
trunk/templates/mapserver/standard/themes/delicious/images/tab_bottom.png
trunk/templates/mapserver/standard/themes/delicious/images/tab_left.png
trunk/templates/mapserver/standard/themes/delicious/images/tab_right.png
trunk/templates/mapserver/standard/themes/delicious/images/tab_top.png
trunk/templates/mapserver/standard/themes/delicious/images/tree.png
trunk/templates/mapserver/standard/themes/delicious/images/tree_hover.png
trunk/templates/mapserver/standard/themes/delicious/images/tree_vert_line.png
trunk/widgets/OverviewMap.js
Log:
re #175, update to the latest version of jxlib.
Modified: trunk/lib/jxlib.uncompressed.js
===================================================================
--- trunk/lib/jxlib.uncompressed.js 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/lib/jxlib.uncompressed.js 2008-12-10 20:34:08 UTC (rev 1707)
@@ -5436,7 +5436,36 @@
return this.start(obj);
}
-});// $Id: common.js 1154 2008-09-25 18:56:07Z pspencer $
+});/******************************************************************************
+ * MooTools 1.2.1
+ * Copyright (c) 2006-2007 [Valerio Proietti](http://mad4milk.net/).
+ * MooTools is distributed under an MIT-style license.
+ ******************************************************************************
+ * reset.css - Copyright (c) 2006, Yahoo! Inc. All rights reserved.
+ * Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt
+ ******************************************************************************
+ * Jx UI Library, 2.0-beta-6
+ * Copyright (c) 2006-2008, DM Solutions Group Inc. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *****************************************************************************/
+// $Id: common.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx
* Jx is a global singleton object that contains the entire Jx library
@@ -5463,7 +5492,7 @@
}
}
});
-/* inspired by extjs, removes css image flicker and related problems in IE 6 */
+/* inspired by extjs, apparently removes css image flicker and related problems in IE 6 */
(function() {
var ua = navigator.userAgent.toLowerCase();
var isIE = ua.indexOf("msie") > -1,
@@ -5528,9 +5557,11 @@
* be executed as part of a CSS style rule - this ensures that the hack only
* gets applied on IE browsers.
*
+ * The CSS that triggers this hack is only in the ie6.css files of the various
+ * themes.
+ *
* Parameters:
- *
- * object {Object} the object (img) to which the filter needs to be applied.
+ * object {Object} the object (img) to which the filter needs to be applied.
*/
Jx.applyPNGFilter = function(o) {
var t=Jx.aPixel.src;
@@ -5547,8 +5578,7 @@
/**
* Method: addToImgQueue
- *
- * request that an image be set to a DOM IMG element src attribute. This puts
+ * Request that an image be set to a DOM IMG element src attribute. This puts
* the image into a queue and there are private methods to manage that queue
* and limit image loading to 2 at a time.
*
@@ -5601,6 +5631,9 @@
* Creates a new iframe element that is intended to fill a container
* to mask out other operating system controls (scrollbars, inputs,
* buttons, etc) when HTML elements are supposed to be above them.
+ *
+ * Returns:
+ * an HTML iframe element that can be inserted into the DOM.
*/
Jx.createIframeShim = function() {
return new Element('iframe', {
@@ -5615,17 +5648,21 @@
*
* Element is a global object provided by the mootools library. The
* functions documented here are extensions to the Element object provided
- * by Jx to make cross-browser compatibility easier to achieve.
+ * by Jx to make cross-browser compatibility easier to achieve. Most of the
+ * methods are measurement related.
+ *
+ * While the code in these methods has been converted to use MooTools methods,
+ * there may be better MooTools methods to use to accomplish these things.
+ * Ultimately, it would be nice to eliminate most or all of these and find the
+ * MooTools equivalent or convince MooTools to add them.
*/
Element.implement({
/**
* Method: getBoxSizing
- *
* return the box sizing of an element, one of 'content-box' or
*'border-box'.
*
* Parameters:
- *
* elem - {Object} the element to get the box sizing of.
*
* Returns:
@@ -5641,7 +5678,7 @@
result = 'content-box';
}
} else {
- if (arguments.length == 0) {
+ if (arguments.length === 0) {
node = document.documentElement;
}
var sizing = this.getStyle("-moz-box-sizing");
@@ -5654,12 +5691,10 @@
},
/**
* Method: getContentBoxSize
- *
* return the size of the content area of an element. This is the size of
* the element less margins, padding, and borders.
*
* Parameters:
- *
* elem - {Object} the element to get the content size of.
*
* Returns:
@@ -5677,12 +5712,10 @@
},
/**
* Method: getBorderBoxSize
- *
* return the size of the border area of an element. This is the size of
* the element less margins.
*
* Parameters:
- *
* elem - {Object} the element to get the border sizing of.
*
* Returns:
@@ -5697,12 +5730,10 @@
/**
* Method: getMarginBoxSize
- *
* return the size of the margin area of an element. This is the size of
* the element plus margins.
*
* Parameters:
- *
* elem - {Object} the element to get the margin sizing of.
*
* Returns:
@@ -5718,7 +5749,6 @@
/**
* Method: setContentBoxSize
- *
* set either or both of the width and height of an element to
* the provided size. This function ensures that the content
* area of the element is the requested size and the resulting
@@ -5726,9 +5756,7 @@
* borders.
*
* Parameters:
- *
* elem - {Object} the element to set the content area of.
- *
* size - {Object} an object with a width and/or height property that is the size to set
* the content area of the element to.
*/
@@ -5761,7 +5789,6 @@
},
/**
* Method: setBorderBoxSize
- *
* set either or both of the width and height of an element to
* the provided size. This function ensures that the border
* size of the element is the requested size and the resulting
@@ -5769,9 +5796,7 @@
* borders.
*
* Parameters:
- *
* elem - {Object} the element to set the border size of.
- *
* size - {Object} an object with a width and/or height property that is the size to set
* the content area of the element to.
*/
@@ -5805,11 +5830,9 @@
},
/**
* Method: getPaddingSize
- *
* returns the padding for each edge of an element
*
* Parameters:
- *
* elem - {Object} The element to get the padding for.
*
* Returns:
@@ -5825,11 +5848,9 @@
},
/**
* Method: getBorderSize
- *
* returns the border size for each edge of an element
*
* Parameters:
- *
* elem - {Object} The element to get the borders for.
*
* Returns:
@@ -5845,11 +5866,9 @@
},
/**
* Method: getMarginSize
- *
* returns the margin size for each edge of an element
*
* Parameters:
- *
* elem - {Object} The element to get the margins for.
*
* Returns:
@@ -5865,24 +5884,21 @@
},
/**
* Method: getNumber
- *
* safely parse a number and return its integer value. A NaN value
* returns 0. CSS size values are also parsed correctly.
*
* Parameters:
- *
* n - {Mixed} the string or object to parse.
*
* Returns:
* {Integer} the integer value that the parameter represents
*/
getNumber: function(n) {
- var result = n==null||isNaN(parseInt(n))?0:parseInt(n);
+ var result = n===null||isNaN(parseInt(n,10))?0:parseInt(n,10);
return result;
},
/**
* Method: getPageDimensions
- *
* return the dimensions of the browser client area.
*
* Returns:
@@ -5893,23 +5909,43 @@
return {width: window.getWidth(), height: window.getHeight()};
},
+ /**
+ * Method: descendantOf
+ * determines if the element is a descendent of the reference node.
+ *
+ * Parameters:
+ * node - {HTMLElement} the reference node
+ *
+ * Returns:
+ * {Boolean} true if the element is a descendent, false otherwise.
+ */
descendantOf: function(node) {
var parent = $(this.parentNode);
while (parent != node && parent && parent.parentNode && parent.parentNode != parent) {
parent = $(parent.parentNode);
}
return parent == node;
-
},
+ /**
+ * Method: findElement
+ * search the parentage of the element to find an element of the given
+ * tag name.
+ *
+ * Parameters:
+ * type - {String} the tag name of the element type to search for
+ *
+ * Returns:
+ * {HTMLElement} the first node (this one or first parent) with the
+ * requested tag name or false if none are found.
+ */
findElement: function(type) {
var o = this;
var tagName = o.tagName;
while (o.tagName != type && o && o.parentNode && o.parentNode != o) {
o = $(o.parentNode);
}
- return o.tagName == type;
-
+ return o.tagName == type ? o : false;
}
} );
@@ -5927,6 +5963,9 @@
* o using an HTML string
*
* o using a URL to get the content remotely
+ *
+ * Use the Implements syntax in your Class to add Jx.ContentLoader
+ * to your class.
*/
Jx.ContentLoader = new Class ({
/**
@@ -5973,7 +6012,11 @@
c = $(this.options.content);
}
if (c) {
- element.appendChild(c);
+ if (this.options.content.addTo) {
+ this.options.content.addTo(element);
+ } else {
+ element.appendChild(c);
+ }
this.contentIsLoaded = true;
} else {
element.innerHTML = this.options.content;
@@ -6037,17 +6080,57 @@
/**
* Method: position
* positions an element relative to another element
- * based on the provided options
+ * based on the provided options. Positioning rules are
+ * a string with two space-separated values. The first value
+ * references the parent element and the second value references
+ * the thing being positioned. In general, multiple rules can be
+ * considered by passing an array of rules to the horizontal and
+ * vertical options. The position method will attempt to position
+ * the element in relation to the relative element using the rules
+ * specified in the options. If the element does not fit in the
+ * viewport using the rule, then the next rule is attempted. If
+ * all rules fail, the last rule is used and element may extend
+ * outside the viewport. Horizontal and vertical rules are
+ * processed independently.
*
+ * Horizontal Positioning:
+ * Horizontal values are 'left', 'center', 'right', and numeric values.
+ * Some common rules are:
+ * o 'left left' is interpreted as aligning the left
+ * edge of the element to be positioned with the left edge of the
+ * reference element.
+ * o 'right right' aligns the two right edges.
+ * o 'right left' aligns the left edge of the element to the right of
+ * the reference element.
+ * o 'left right' aligns the right edge of the element to the left
+ * edge of the reference element.
+ *
+ * Vertical Positioning:
+ * Vertical values are 'top', 'center', 'bottom', and numeric values.
+ * Some common rules are:
+ * o 'top top' is interpreted as aligning the top
+ * edge of the element to be positioned with the top edge of the
+ * reference element.
+ * o 'bottom bottom' aligns the two bottom edges.
+ * o 'bottom top' aligns the top edge of the element to the bottom of
+ * the reference element.
+ * o 'top bottom' aligns the bottom edge of the element to the top
+ * edge of the reference element.
+ *
* Parameters:
* element - the element to position
* relative - the element to position relative to
* options - the positioning options, see list below.
*
* Options:
- * horizontal
- * vertical
- * offsets
+ * horizontal - the horizontal positioning rule to use to position the
+ * element. Valid values are 'left', 'center', 'right', and a numeric
+ * value. The default value is 'center center'.
+ * vertical - the vertical positioning rule to use to position the
+ * element. Valid values are 'top', 'center', 'bottom', and a numeric
+ * value. The default value is 'center center'.
+ * offsets - an object containing numeric pixel offset values for the object
+ * being positioned as top, right, bottom and left properties.
*/
position: function(element, relative, options) {
element = $(element);
@@ -6071,13 +6154,14 @@
var right;
var top;
var bottom;
+ var n;
if (!hor.some(function(opt) {
var parts = opt.split(' ');
if (parts.length != 2) {
return false;
}
- if (!isNaN(parseInt(parts[0]))) {
- var n = parseInt(parts[0]);
+ if (!isNaN(parseInt(parts[0],10))) {
+ n = parseInt(parts[0],10);
if (n>=0) {
left = n;
} else {
@@ -6094,10 +6178,11 @@
case 'left':
default:
left = coords.left;
+ break;
}
}
- if (!isNaN(parseInt(parts[1]))) {
- var n = parseInt(parts[1]);
+ if (!isNaN(parseInt(parts[1],10))) {
+ n = parseInt(parts[1],10);
if (n<0) {
right = left + n;
left = right - size.width;
@@ -6105,7 +6190,7 @@
left += n;
right = left + size.width;
}
- right = coords.left + coords.width + parseInt(parts[1]);
+ right = coords.left + coords.width + parseInt(parts[1],10);
left = right - size.width;
} else {
switch(parts[1]) {
@@ -6122,6 +6207,7 @@
default:
left = left - Math.round(size.width/2);
right = left + size.width;
+ break;
}
}
return (left >= scroll.x && right <= scroll.x + page.width);
@@ -6143,8 +6229,8 @@
if (parts.length != 2) {
return false;
}
- if (!isNaN(parseInt(parts[0]))) {
- top = parseInt(parts[0]);
+ if (!isNaN(parseInt(parts[0],10))) {
+ top = parseInt(parts[0],10);
} else {
switch(parts[0]) {
case 'bottom':
@@ -6156,10 +6242,11 @@
case 'top':
default:
top = coords.top;
+ break;
}
}
- if (!isNaN(parseInt(parts[1]))) {
- var n = parseInt(parts[1]);
+ if (!isNaN(parseInt(parts[1],10))) {
+ var n = parseInt(parts[1],10);
if (n>=0) {
top += n;
bottom = top + size.height;
@@ -6182,6 +6269,7 @@
default:
top = top - Math.round(size.height/2);
bottom = top + size.height;
+ break;
}
}
return (top >= scroll.y && bottom <= scroll.y + page.height);
@@ -6256,7 +6344,7 @@
/* get the chrome image from the background image of the element */
var src = c.getStyle('backgroundImage');
- if (!src.contains('http://')) {
+ if (!(src.contains('http://') || src.contains('https://') || src.contains('file://'))) {
src = null;
} else {
src = src.slice(4,-1);
@@ -6339,33 +6427,27 @@
addable: null,
/**
* Method: addTo
- * adds the object to a DOM element using appendChild if sibling
- * is not specified or sibling's parent is not the specified parent,
- * otherwise uses insertBefore.
+ * adds the object to the DOM relative to another element. If you use
+ * 'top' or 'bottom' then the element is added to the relative
+ * element (becomes a child node). If you use 'before' or 'after'
+ * then the element is inserted adjacent to the reference node.
*
* Parameters:
- * parent - {Object} the DOM element or id of a DOM element
- * to append the object to
- * sibling - {Object} the DOM element or id of a DOM element
- * to insert the object before. If not specified, then the
- * object is appended to the parent.
+ * reference - {Object} the DOM element or id of a DOM element
+ * to append the object relative to
+ * where - {String} where to append the element in relation to the
+ * reference node. Can be 'top', 'bottom', 'before' or 'after'.
+ * The default is 'bottom'.
*
* Returns:
* the object itself, which is useful for chaining calls together
*/
- addTo: function(parent, sibling) {
- var what = this.addable || this.domObj;
- parent = $(parent);
- sibling = sibling ? $(sibling) : null;
- if (sibling && sibling.parentNode == parent) {
- parent.insertBefore(what, sibling);
- } else {
- parent.appendChild(what);
- }
- this.fireEvent('addTo', this);
+ addTo: function(reference, where) {
+ $(this.addable || this.domObj).inject(reference,where);
+ this.fireEvent('addTo',this);
return this;
}
-});// $Id: button.js 1094 2008-09-23 22:04:34Z pspencer $
+});// $Id: button.js 242 2008-12-10 15:19:21Z pagameba $
/**
* Class: Jx.Button
* Jx.Button creates a clickable element that can be added to a web page.
@@ -6401,13 +6483,6 @@
* </div>
* (end)
*
- * Visually, a Jx.Button consists of an <A> tag that may contain either
- * an image, a label, or both (the label appears to the right of the button
- * if both are present). The default styles for Jx.Button expect the
- * image to be 16 x 16 pixels, with a padding of 4px and a border of 1px
- * which results in an element that is 26 pixels high. The width of the
- * button automatically accomodates the image and label as required.
- *
* When you construct a new instance of Jx.Button, the button does not
* automatically get inserted into the web page. Typically a button
* is used as part of building another capability such as a Jx.Toolbar.
@@ -6415,12 +6490,12 @@
* you may use the addTo method to append or insert the button into the
* page.
*
- * There are two types of buttons, normal and toggle. A toggle button
+ * There are two modes for a button, normal and toggle. A toggle button
* has an active state analogous to a checkbox. A toggle button generates
* different events (down and up) from a normal button (click). To create
- * a toggle button, pass type: 'toggle' to the Jx.Button constructor.
+ * a toggle button, pass toggle: true to the Jx.Button constructor.
*
- * To use a Jx.Button in an application, you need to register for the 'click'
+ * To use a Jx.Button in an application, you should to register for the 'click'
* event. You can pass a function in the 'onClick' option when constructing
* a button or you can call the addEvent('click', myFunction) method. The
* addEvent method can be called several times, allowing more than one function
@@ -6457,10 +6532,7 @@
* down - the button is down (only if type is 'toggle')
* up - the button is up (only if the type is 'toggle').
*
- * Implements:
- * Options - from MooTools Class.Extras
- * Events - from MooTools Class.Extras
- *
+
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
@@ -6468,6 +6540,12 @@
*/
Jx.Button = new Class({
+ /**
+ * Implements:
+ * * Options
+ * * Events
+ * * <Jx.Addable>
+ */
Implements: [Options,Events,Jx.Addable],
/**
@@ -6478,10 +6556,6 @@
*/
domObj: null,
- /**
- * Property: {Object} options
- * default options for a button.
- */
options: {
id: '',
type: 'Button',
@@ -6506,28 +6580,32 @@
*
* Options:
* id - optional. A string value to use as the ID of the button
- * container.
+ * container.
* type - optional. A string value that indicates what type of button
- * this is. The default value is Button. The type is used to form
- * the CSS class names used for various HTML elements within the
- * button.
+ * this is. The default value is Button. The type is used to form
+ * the CSS class names used for various HTML elements within the
+ * button.
* image - optional. A string value that is the url to load the image to
- * display in this button. The default styles size this image to
- * 16 x 16.
- * If not provided, then the button will have no icon.
+ * display in this button. The default styles size this image to
+ * 16 x 16.
+ * If not provided, then the button will have no icon.
* tooltip - optional. A string value to use as the alt/title attribute
- * of the <A> tag that wraps the button, resulting in a tooltip that
- * appears when the user hovers the mouse over a button in most
- * browsers. If not provided, the button will have no tooltip.
+ * of the <A> tag that wraps the button, resulting in a tooltip that
+ * appears when the user hovers the mouse over a button in most
+ * browsers. If not provided, the button will have no tooltip.
* label - {String} optional, default is no label. A string value
- * that is used as a label on the button.
- * enabled - {Boolean} whether the button is enabled or not.
+ * that is used as a label on the button.
+ * toggle - {Boolean} default true, whether the button is a toggle button
+ * or not.
+ * toggleClass - {String} defaults to Toggle, this is class is added to
+ * buttons with the option toggle: true
* halign - {String} horizontal alignment of the button label, 'center' by
* default. Other values are 'left' and 'right'.
* valign - {String} vertical alignment of the button label, 'middle' by
* default. Other values are 'top' and 'bottom'.
* active - {Boolean} optional, default false. Controls the initial
* state of toggle buttons.
+ * enabled - {Boolean} whether the button is enabled or not.
* container - {String} the tag name of the HTML element that should be
* created to contain the button, by default this is 'div'.
*/
@@ -6540,17 +6618,53 @@
d.addClass('jx'+this.options.type+this.options.toggleClass);
}
// the clickable part of the button
+ var hasFocus;
+ var mouseDown;
var a = new Element('a', {
'class': 'jx'+this.options.type,
href: 'javascript:void(0)',
title: this.options.tooltip,
alt: this.options.tooltip,
events: {
- click: this.clicked.bindWithEvent(this)
+ click: this.clicked.bindWithEvent(this),
+ drag: (function(e) {e.stop();}).bindWithEvent(this),
+ mousedown: (function(e) {
+ this.domA.addClass('jx'+this.options.type+'Pressed');
+ hasFocus = true;
+ mouseDown = true;
+ this.focus();
+ }).bindWithEvent(this),
+ mouseup: (function(e) {
+ this.domA.removeClass('jx'+this.options.type+'Pressed');
+ mouseDown = false;
+ }).bindWithEvent(this),
+ mouseleave: (function(e) {
+ this.domA.removeClass('jx'+this.options.type+'Pressed');
+ }).bindWithEvent(this),
+ mouseenter: (function(e) {
+ if (hasFocus && mouseDown) {
+ this.domA.addClass('jx'+this.options.type+'Pressed');
+ }
+ }).bindWithEvent(this),
+ keydown: (function(e) {
+ if (e.key == 'enter') {
+ this.domA.addClass('jx'+this.options.type+'Pressed');
+ }
+ }).bindWithEvent(this),
+ keyup: (function(e) {
+ if (e.key == 'enter') {
+ this.domA.removeClass('jx'+this.options.type+'Pressed');
+ }
+ }).bindWithEvent(this),
+ blur: function() { hasFocus = false; }
}
});
d.adopt(a);
+ new Drag(a, {
+ onStart: function() {this.stop();}
+ });
+
var s = new Element('span', {'class': 'jx'+this.options.type+'Content'});
a.adopt(s);
@@ -6746,8 +6860,22 @@
'alt':tooltip
});
}
+ },
+ /**
+ * Method: focus
+ * capture the keyboard focus on this button
+ */
+ focus: function() {
+ this.domA.focus();
+ },
+ /**
+ * Method: blur
+ * remove the keyboard focus from this button
+ */
+ blur: function() {
+ this.domA.blur();
}
-});// $Id: button.flyout.js 1149 2008-09-25 12:43:46Z pspencer $
+});// $Id: button.flyout.js 247 2008-12-10 19:21:02Z fred.warnock $
/**
* Class: Jx.Button.Flyout
* Flyout buttons expose a panel when the user clicks the button. The
@@ -6762,26 +6890,16 @@
* clicking anywhere outside the panel and other buttons, or by pressing the
* 'esc' key.
*
- * A flyout is structure the same way as a normal <Jx.Button> except that an
- * extra div is appended to the jxButtonContainer element and given a class
- * of jxFlyout.
- *
* Flyout buttons implement <Jx.ContentLoader> which provides the hooks to
- * insert content into the jxFlyout element. Note that the jxFlyout element
- * is not appended to the DOM until the first time it is opened.
+ * insert content into the Flyout element. Note that the Flyout element
+ * is not appended to the DOM until the first time it is opened, and it is
+ * removed from the DOM when closed.
*
* It is generally best to specify a width and height for your flyout content
* area through CSS to ensure that it works correctly across all browsers.
- * To do this, make sure to provide a unique 'id' in the options when
- * constructing your button and then provide some CSS:
+ * You can do this for all flyouts using the .jxFlyout CSS selector, or you
+ * can apply specific styles to your content elements.
*
- * (code)
- * #myFlyout .jxFlyout {
- * width: 200px;
- * height: 100px;
- * }
- * (end)
- *
* A flyout closes other flyouts when it is opened. It is possible to embed
* flyout buttons inside the content area of another flyout button. In this
* case, opening the inner flyout will not close the outer flyout but it will
@@ -6805,20 +6923,23 @@
* open - this event is triggered when the flyout is opened.
* close - this event is triggered when the flyout is closed.
*
- * Extends:
- * <Jx.Button>
- *
- * Implements:
- * <Jx.ContentLoader>
- * <Jx.AutoPosition>
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Button.Flyout = new Class({
+ /**
+ * Extends:
+ * <Jx.Button>
+ */
Extends: Jx.Button,
+ /**
+ * Implements:
+ * * <Jx.ContentLoader>
+ * * <Jx.AutoPosition>
+ * * <Jx.Chrome>
+ */
Implements: [Jx.ContentLoader, Jx.AutoPosition, Jx.Chrome],
/**
@@ -6828,14 +6949,14 @@
content: null,
/**
* Constructor: initialize
- *
* construct a new instance of a flyout button. The single options
- * argument takes the same parameters as <Jx.Button::initialize> plus
- * content loading options as per <Jx.ContentLoader>.
+ * argument takes a combination of options that apply to <Jx.Button>,
+ * <Jx.ContentLoader>, and <Jx.AutoPosition>.
*
* Parameters: {Object} options
- *
- * an options object used to initialize the button
+ * an options object used to initialize the button, see
+ * <Jx.Button::initialize>, <Jx.ContentLoader>, and <Jx.AutoPosition>
+ * for details.
*/
initialize: function(options) {
if (!Jx.Button.Flyout.Stack) {
@@ -6944,7 +7065,7 @@
this.contentContainer.setStyle('visibility','');
- window.addEvent('keypress', this.keypressWatcher);
+ document.addEvent('keydown', this.keypressWatcher);
document.addEvent('click', this.hideWatcher);
this.fireEvent('open', this);
},
@@ -6959,7 +7080,7 @@
Jx.Button.Flyout.Stack.pop();
this.setActive(false);
this.contentContainer.dispose();
- window.removeEvent('keypress', this.keypressWatcher);
+ document.removeEvent('keydown', this.keypressWatcher);
document.removeEvent('click', this.hideWatcher);
this.fireEvent('close', this);
},
@@ -6980,7 +7101,7 @@
Jx.Button.Flyout.Stack[Jx.Button.Flyout.Stack.length - 1].hide();
}
}
-});// $Id: button.multi.js 1015 2008-09-19 19:21:04Z pspencer $
+});// $Id: button.multi.js 246 2008-12-10 19:09:41Z fred.warnock $
/**
* Class: Jx.Button.Multi
* Multi buttons are used to contain multiple buttons in a drop down list
@@ -7033,8 +7154,11 @@
* This file is licensed under an MIT style license
*/
Jx.Button.Multi = new Class({
+ /**
+ * Extends:
+ * <Jx.Button>
+ */
Extends: Jx.Button,
- Implements: [Options],
/**
* Property: {<Jx.Button>} activeButton
* the currently selected button
@@ -7066,12 +7190,19 @@
'class': 'jxButtonDisclose',
'href': 'javascript:void(0)'
});
+ var button = this;
+ var hasFocus;
+
a.addEvents({
'click': (function(e) {
- if (this.items.length ==0) {
+ if (this.items.length === 0) {
return;
}
+ if (!button.options.enabled) {
+ return;
+ }
this.contentContainer.setStyle('visibility','hidden');
+ this.contentContainer.setStyle('display','block');
$(document.body).adopt(this.contentContainer);
/* we have to size the container for IE to render the chrome correctly
* but just in the menu/sub menu case - there is some horrible peekaboo
@@ -7101,11 +7232,39 @@
}).bindWithEvent(this.menu),
'mouseenter':(function(){
$(this.domObj.firstChild).addClass('jxButtonHover');
+ if (hasFocus) {
+ a.addClass('jx'+this.options.type+'Pressed');
+ }
}).bind(this),
'mouseleave':(function(){
$(this.domObj.firstChild).removeClass('jxButtonHover');
- }).bind(this)
+ a.removeClass('jx'+this.options.type+'Pressed');
+ }).bind(this),
+ mousedown: (function(e) {
+ a.addClass('jx'+this.options.type+'Pressed');
+ hasFocus = true;
+ this.focus();
+ }).bindWithEvent(this),
+ mouseup: (function(e) {
+ a.removeClass('jx'+this.options.type+'Pressed');
+ }).bindWithEvent(this),
+ keydown: (function(e) {
+ if (e.key == 'enter') {
+ a.addClass('jx'+this.options.type+'Pressed');
+ }
+ }).bindWithEvent(this),
+ keyup: (function(e) {
+ if (e.key == 'enter') {
+ a.removeClass('jx'+this.options.type+'Pressed');
+ }
+ }).bindWithEvent(this),
+ blur: function() { hasFocus = false; }
+
});
+ new Drag(a, {
+ onStart: function() {this.stop();}
+ });
+
this.menu.addEvents({
'show': (function() {
this.domA.addClass('jxButtonActive');
@@ -7189,7 +7348,7 @@
}
}, this)) {
this.setActiveButton(null);
- };
+ }
}
this.buttons.erase(button);
}
@@ -7229,20 +7388,19 @@
this.setActiveButton(button);
button.clicked();
}
-});// $Id: colorpalette.js 1094 2008-09-23 22:04:34Z pspencer $
+});// $Id: colorpalette.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.ColorPalette
* A Jx.ColorPalette presents a user interface for selecting colors. Currently,
* the user can either enter a HEX colour value or select from a palette of
* web-safe colours. The user can also enter an opacity value.
*
- * A Jx.ColorPalette can be embedded anywhere in a web page by appending its
- * <Jx.ColorPalette.domObj> property to an HTML element. However, a
- * a <Jx.Button> subclass is provided ( <Jx.Button.Color> ) that embeds a
- * colour panel inside a button for easy use in toolbars.
+ * A Jx.ColorPalette can be embedded anywhere in a web page using its addTo
+ * method. However, a <Jx.Button> subclass is provided (<Jx.Button.Color>)
+ * that embeds a colour panel inside a button for easy use in toolbars.
*
- * Colour changes are propogated via a changed event. To
- * be notified of changes in a Jx.ColorPalette, use the addEvent method.
+ * Colour changes are propogated via a change event. To be notified
+ * of changes in a Jx.ColorPalette, use the addEvent method.
*
* Example:
* (code)
@@ -7252,9 +7410,6 @@
* change - triggered when the color changes.
* click - the user clicked on a color swatch (emitted after a change event)
*
- * Implements:
- * Options - MooTools Class.Extras
- * Events - MooTools Class.Extras
*
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
@@ -7263,6 +7418,12 @@
*/
Jx.ColorPalette = new Class({
+ /**
+ * Implements:
+ * * Options
+ * * Events
+ * * <Jx.Addable>
+ */
Implements: [Options, Events, Jx.Addable],
/**
* Property: {HTMLElement} domObj
@@ -7272,14 +7433,11 @@
options: {
parent: null,
color: '#000000',
- alpha: 1
+ alpha: 1,
+ hexColors: ['00', '33', '66', '99', 'CC', 'FF']
},
/**
- * Property: {Array} hexColors
- * an array of valid hex values that are used to build a web-safe
- * palette
*/
- hexColors: ['00', '33', '66', '99', 'CC', 'FF'],
/**
* Constructor: Jx.ColorPalette
* initialize a new instance of Jx.ColorPalette
@@ -7291,9 +7449,12 @@
* Options:
* parent - an html element to add the color palette to if provided.
* color - a colour to initialize the panel with, defaults to #000000
- * (black) if not specified.
+ * (black) if not specified.
* alpha - an alpha value to initialize the panel with, defaults to 1
- * (opaque) if not specified.
+ * (opaque) if not specified.
+ * hexColors - an array of hexidecimal values to use for creating entries, the default
+ * values create a web safe palette and shouldn't be changed unless you understand
+ * what the code is doing
*/
initialize: function(options) {
this.setOptions(options);
@@ -7392,7 +7553,7 @@
g = j%6;
b = i%6;
}
- var bgColor = '#'+this.hexColors[r]+this.hexColors[g]+this.hexColors[b];
+ var bgColor = '#'+this.options.hexColors[r]+this.options.hexColors[g]+this.options.hexColors[b];
var td = new Element('td');
if (!bSkip) {
@@ -7531,7 +7692,7 @@
}
});
-// $Id: button.color.js 929 2008-09-16 14:06:10Z pspencer $
+// $Id: button.color.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Button.Color
* A <Jx.ColorPalette> wrapped up in a Jx.Button. The button includes a
@@ -7553,20 +7714,17 @@
* Events:
* change - fired when the color is changed.
*
- * Extends:
- * <Jx.Button.Flyout>
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Button.Color = new Class({
- Extends: Jx.Button.Flyout,
/**
- * Property: {HTMLElement} swatch
- * a div used to represent the current colour in the button.
+ * Extends:
+ * <Jx.Button.Flyout>
*/
+ Extends: Jx.Button.Flyout,
swatch: null,
options: {
color: '#000000',
@@ -7708,11 +7866,12 @@
this.selectedSwatch.setStyles(styles);
}
});
-// $Id: $
+// $Id: buttonset.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.ButtonSet
* A ButtonSet manages a set of <Jx.Button> instances by ensuring that only one
- * of the buttons is active.
+ * of the buttons is active. All the buttons need to have been created with
+ * the toggle option set to true for this to work.
*
* Example:
* (code)
@@ -7730,16 +7889,17 @@
* Events:
* change - the current button has changed
*
- * Implements:
- * Events - MooTools Class.Extras
- * Options - MooTools Class.Extras
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.ButtonSet = new Class({
+ /**
+ * Implements:
+ * * Events
+ * * Options
+ */
Implements: [Options,Events],
/**
* Property: buttons
@@ -7838,7 +7998,7 @@
-// $Id: grid.js 1116 2008-09-24 16:29:47Z pspencer $
+// $Id: grid.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Grid
* A tabular control that has fixed scrolling headers on the rows and columns
@@ -7856,82 +8016,7 @@
* Jx.Grid renders data that comes from an external source. This external
* source, called the model, must implement the following interface.
*
- * Jx.Grid Model Interface:
*
- * addGridListener(l) - mandatory
- * mandatory. This function accepts one argument, l, which is the listener
- * to add. The model can then call the gridChanged() method on the grid
- * listener object when something in the model changes.
- *
- * removeGridListener(l) - mandatory
- * mandatory. This function accepts one argument, l, which is the listener
- * to remove. The listener should have been previously added using
- * addGridListener.
- *
- * getColumnCount() - mandatory
- * mandatory. This function returns the number of columns of data in the
- * model as an integer value.
- *
- * getColumnHeaderHTML(column) - mandatory
- * mandatory. This function returns an HTML string to be placed in the
- * column header for the given column index.
- *
- * getColumnHeaderHeight() - mandatory
- * mandatory. This function returns an integer which is the height of the
- * column header row in pixels.
- *
- * getColumnWidth(column) - mandatory
- * mandatory. This function returns an integer which is the width of the
- * given column in pixels.
- *
- * getRowHeaderHTML(row) - mandatory
- * mandatory. This function returns an HTML string to be placed in the row
- * header for the given row index
- *
- * getRowHeaderWidth() - mandatory
- * mandatory. This function returns an integer which is the width of the row
- * header column in pixels.
- *
- * getRowHeight(row) - mandatory
- * mandatory. This function returns an integer which is the height of the
- * given row in pixels.
- *
- * getRowCount() - mandatory
- * mandatory. This function returns the number of rows of data in the model
- * as an integer value.
- *
- * getValueAt(row, column) - mandatory
- * mandatory. This function returns an HTML string which is the text to place
- * in the cell at the given row and column.
- *
- * isCellEditable(row, column) - mandatory
- * mandatory. This function returns a boolean value to indicate if a given
- * cell is editable by the user.
- *
- * *Optional Functions*
- *
- * setColumnWidth(column, width) - optional
- * optional. This function is called with a column index and width in pixels
- * when a column is resized. This function is only required if the grid
- * allows resizeable columns.
- *
- * setValueAt(row, column, value) - optional
- * optional. This function is called with the row and column of a cell and a
- * new value for the cell. It is mandatory to provide this function if any of
- * the cells in the model are editable.
- *
- * rowSelected(row) - optional
- * optional. This function is called by the grid to indicate that the user
- * has selected a row by clicking on the row header.
- *
- * columnSelected(column) - optional
- * optional. This function is called by the grid to indicate that the user
- * has selected a column by clicking on the column header.
- *
- * cellSelected(row, column) - optional
- * optional. This function is called by the grid to indicate that the user
- * has selected a cell by clicking on the cell in the grid.
- *
* Example:
* (code)
* (end)
@@ -8103,15 +8188,11 @@
* model - {Object} the model to use for this grid
*/
setModel: function(model) {
- if (this.model) {
- this.model.removeGridListener(this);
- }
this.model = model;
if (this.model) {
if (this.domObj.resize) {
this.domObj.resize();
}
- this.model.addGridListener(this);
this.createGrid();
this.resize();
} else {
@@ -8766,7 +8847,134 @@
}
return {row:row,column:col};
}
-});// $Id: layout.js 1154 2008-09-25 18:56:07Z pspencer $
+});/**
+ * Class: Jx.Grid.Model
+ * A Jx.Grid.Model is the source of data for a <Jx.Grid> instance. The
+ * default implementation of the grid model works with two-dimensional
+ * arrays of data and acts as a convenient base class for custom models
+ * based on other sources of data.
+ *
+ * License:
+ * Copyright (c) 2008, DM Solutions Group Inc.
+ *
+ * This file is licensed under an MIT style license
+ */
+/**
+ * Method: getColumnCount
+ * This function returns the number of columns of data in the
+ * model as an integer value.
+ *
+ * Method: getColumnHeaderHTML
+ * This function returns an HTML string to be placed in the
+ * column header for the given column index.
+ *
+ * Method: getColumnHeaderHeight
+ * This function returns an integer which is the height of the
+ * column header row in pixels.
+ *
+ * Method: getColumnWidth
+ * This function returns an integer which is the width of the
+ * given column in pixels.
+ *
+ * Method: getRowHeaderHTML
+ * This function returns an HTML string to be placed in the row
+ * header for the given row index
+ *
+ * Method: getRowHeaderWidth
+ * This function returns an integer which is the width of the row
+ * header column in pixels.
+ *
+ * Method: getRowHeight
+ * This function returns an integer which is the height of the
+ * given row in pixels.
+ *
+ * Method: getRowCount
+ * This function returns the number of rows of data in the model
+ * as an integer value.
+ *
+ * Method: getValueAt
+ * This function returns an HTML string which is the text to place
+ * in the cell at the given row and column.
+ *
+ * Method: isCellEditable
+ * This function returns a boolean value to indicate if a given
+ * cell is editable by the user.
+ *
+ * Method: setColumnWidth
+ * This function is called with a column index and width in pixels
+ * when a column is resized. This function is only required if the grid
+ * allows resizeable columns.
+ *
+ * Method: setValueAt
+ * This function is called with the row and column of a cell and a
+ * new value for the cell. It is mandatory to provide this function if any of
+ * the cells in the model are editable.
+ *
+ * Method: rowSelected
+ * This function is called by the grid to indicate that the user
+ * has selected a row by clicking on the row header.
+ *
+ * Method: columnSelected
+ * This function is called by the grid to indicate that the user
+ * has selected a column by clicking on the column header.
+ *
+ * Method: cellSelected
+ * This function is called by the grid to indicate that the user
+ * has selected a cell by clicking on the cell in the grid.
+ */
+Jx.Grid.Model = new Class({
+ Implements: [Events, Options],
+ options: {
+ colHeaderHeight: 28,
+ rowHeaderWidth: 28,
+ colWidth: 50,
+ rowHeight: 20,
+ rowHeaders: null,
+ columnHeaders: null
+ },
+ data: null,
+ initialize: function(data, options) {
+ this.data = data || [];
+ this.setOptions(options);
+ },
+ getColumnCount: function() { return (this.data && this.data[0]) ? this.data[0].length : 0; },
+ getColumnHeaderHTML: function(col) {
+ return this.options.columnHeaders?this.options.columnHeaders[col]:col+1;
+ },
+ getColumnHeaderHeight: function() { return this.options.colHeaderHeight; },
+ getColumnWidth: function(col) { return this.options.colWidth; },
+ getRowHeaderHTML: function(row) {
+ return this.options.rowHeaders?this.options.rowHeaders[row]:row+1;
+ },
+ getRowHeaderWidth: function() { return this.options.rowHeaderWidth; },
+ getRowHeight: function(row) { return this.options.rowHeight; },
+ getRowCount: function() { return this.data.length },
+ getValueAt: function(row, col) { return (this.data && $chk(this.data[row])) ? this.data[row][col] : ''; },
+ isCellEditable: function() { return false },
+ setValueAt: function(row, col, value) {},
+ rowSelected: function(grid, row) {
+ if (this.selectedRow != null) {
+ grid.selectRow(this.selectedRow, false);
+ }
+ this.selectedRow = row;
+ grid.selectRow(row, true);
+ this.fireEvent('select-row', row);
+ },
+ columnSelected: function(grid, col) {
+ if (this.selectedCol != null) {
+ grid.selectColumn(this.selectedCol, false);
+ }
+ this.selectedCol = col;
+ grid.selectColumn(col, true);
+ this.fireEvent('select-column', col);
+ },
+ cellSelected: function(grid, row,col) {
+ grid.selectCell(row, col);
+ this.fireEvent('select-cell', [row, col]);
+
+ }
+});
+// $Id: layout.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Layout
* Jx.Layout is used to provide more flexible layout options for applications
@@ -8786,10 +8994,6 @@
* Events:
* sizeChange - fired when the size of the container changes
*
- * Implements:
- * Options - MooTools Class.Extras
- * Events - MooTools Class.Extras
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
@@ -8797,6 +9001,11 @@
*/
Jx.Layout = new Class({
+ /**
+ * Implements:
+ * * Options
+ * * Events
+ */
Implements: [Options,Events],
options: {
@@ -9159,14 +9368,14 @@
var o = {forceResize: options ? options.forceResize : false};
$A(this.domObj.childNodes).each(function(child){
if (child.resize && child.getStyle('display') != 'none') {
- child.resize.delay(0,child,o);
+ child.resize.delay(0,child,o);
}
});
}
this.fireEvent('sizeChange',this);
}
-});// $Id: menu.js 1094 2008-09-23 22:04:34Z pspencer $
+});// $Id: menu.js 244 2008-12-10 15:32:49Z pagameba $
/**
* Class: Jx.Menu
* A main menu as opposed to a sub menu that lives inside the menu.
@@ -9185,6 +9394,14 @@
* This file is licensed under an MIT style license
*/
Jx.Menu = new Class({
+ /**
+ * Implements:
+ * * Options
+ * * Events
+ * * <Jx.AutoPosition>
+ * * <Jx.Chrome>
+ * * <Jx.Addable>
+ */
Implements: [Options, Events, Jx.AutoPosition, Jx.Chrome, Jx.Addable],
/**
* Property: domObj
@@ -9219,7 +9436,6 @@
*/
initialize : function(options) {
this.setOptions(options);
- /* */
if (!Jx.Menu.Menus) {
Jx.Menu.Menus = [];
}
@@ -9234,7 +9450,7 @@
this.subDomObj = new Element('ul',{
'class':'jxMenu'
});
- this.subDomObj.store('jxMenu', this);
+
this.contentContainer.adopt(this.subDomObj);
/* if options are passed, make a button inside an LI so the
@@ -9266,7 +9482,7 @@
* can be added by passing multiple arguments to this function.
*/
add : function() {
- $A(arguments).each(function(item){
+ $A(arguments).flatten().each(function(item){
this.items.push(item);
item.setOwner(this);
this.subDomObj.adopt(item.domObj);
@@ -9292,6 +9508,18 @@
}
},
+ /**
+ * Method: eventInMenu
+ * determine if an event happened inside this menu or a sub menu
+ * of this menu.
+ *
+ * Parameters:
+ * e - {Event} the mouse event
+ *
+ * Returns:
+ * {Boolean} true if the event happened in the menu or
+ * a sub menu of this menu, false otherwise
+ */
eventInMenu: function(e) {
var target = $(e.target);
if (target.descendantOf(this.domObj) ||
@@ -9334,10 +9562,10 @@
if (this.button && this.button.domA) {
this.button.domA.removeClass('jx'+this.button.options.type+'Active');
}
- this.items.each(function(item){item.hide.delay(0,item,e);});
+ this.items.each(function(item){item.hide(e);});
document.removeEvent('mousedown', this.hideWatcher);
- document.removeEvent('keyup', this.keypressWatcher);
- this.contentContainer.dispose();
+ document.removeEvent('keydown', this.keypressWatcher);
+ this.contentContainer.setStyle('display','none');
this.fireEvent('hide', this);
},
/**
@@ -9349,15 +9577,21 @@
*/
show : function(o) {
var e = o.event;
- if (Jx.Menu.Menus[0] && Jx.Menu.Menus[0] != this) {
- Jx.Menu.Menus[0].hide(e);
- }
- if (this.items.length ==0) {
+ if (Jx.Menu.Menus[0]) {
+ if (Jx.Menu.Menus[0] != this) {
+ Jx.Menu.Menus[0].hide(e);
+ } else {
+ this.hide();
+ return;
+ }
+ }
+ if (this.items.length === 0) {
return;
}
Jx.Menu.Menus[0] = this;
this.contentContainer.setStyle('visibility','hidden');
+ this.contentContainer.setStyle('display','block');
$(document.body).adopt(this.contentContainer);
/* we have to size the container for IE to render the chrome correctly
* but just in the menu/sub menu case - there is some horrible peekaboo
@@ -9382,7 +9616,7 @@
}
/* fix bug in IE that closes the menu as it opens because of bubbling */
document.addEvent('mousedown', this.hideWatcher);
- document.addEvent('keyup', this.keypressWatcher);
+ document.addEvent('keydown', this.keypressWatcher);
this.fireEvent('show', this);
},
/**
@@ -9411,7 +9645,7 @@
}
});
-// $Id: menu.item.js 999 2008-09-19 17:31:11Z pspencer $
+// $Id: menu.item.js 242 2008-12-10 15:19:21Z pagameba $
/**
* Class: Jx.Menu.Item
* A menu item is a single entry in a menu. It is typically composed of
@@ -9428,17 +9662,16 @@
* Events:
* click - fired when the menu item is clicked.
*
- * Implements:
- * Options - MooTools Class.Extras
- * Events - MooTools Class.Extras
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Menu.Item = new Class({
- Implements: [Options, Events],
+ /**
+ * Extends:
+ * <Jx.Button>
+ */
Extends: Jx.Button,
/**
* Property: owner
@@ -9456,12 +9689,7 @@
* Create a new instance of Jx.Menu.Item
*
* Parameters:
- * options - {Object} an object containing options as below.
- *
- * Options:
- * enabled - {Boolean} whether the menu item starts enabled or not (default true)
- *
- * See <Jx.Button> for other options
+ * options - {Object} an object containing options for <Jx.Button::initialize>
*/
initialize: function(options) {
this.parent($merge(
@@ -9491,20 +9719,29 @@
* Method: hide
* Hide the menu item.
*/
- hide: $empty,
+ hide: function() {this.blur();},
/**
* Method: show
* Show the menu item
*/
show: $empty,
- clicked: function(o) {
+ /**
+ * Method: clicked
+ * Handle the user clicking on the menu item, overriding the <Jx.Button::clicked>
+ * method to facilitate menu tracking
+ *
+ * Parameters:
+ * obj - {Object} an object containing an event property that was the user
+ * event.
+ */
+ clicked: function(obj) {
if (this.options.enabled) {
if (this.options.toggle) {
this.setActive(!this.options.active);
}
this.fireEvent('click', this);
if (this.owner && this.owner.deactivate) {
- this.owner.deactivate(o.event);
+ this.owner.deactivate(obj.event);
}
}
},
@@ -9523,7 +9760,7 @@
}
});
-// $Id: menu.separator.js 711 2008-08-13 20:38:33Z pspencer $
+// $Id: menu.separator.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Menu.Separator
* A convenience class to create a visual separator in a menu.
@@ -9578,7 +9815,7 @@
* Show the menu item
*/
show: $empty
-});// $Id: menu.submenu.js 1093 2008-09-23 20:44:15Z pspencer $
+});// $Id: menu.submenu.js 244 2008-12-10 15:32:49Z pagameba $
/**
* Class: Jx.Menu.SubMenu
* A sub menu contains menu items within a main menu or another
@@ -9591,20 +9828,24 @@
* (code)
* (end)
*
- * Extends:
- * <Jx.Menu.Item>
- *
- * Implements:
- * Options - MooTools Class.Extra
- * Events - MooTools Class.Extra
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Menu.SubMenu = new Class({
+ /**
+ * Extends:
+ * <Jx.Menu.Item>
+ */
Extends: Jx.Menu.Item,
+ /**
+ * Implements:
+ * * Options
+ * * Events
+ * * <Jx.AutoPosition>
+ * * <Jx.Chrome>
+ */
Implements: [Options, Events, Jx.AutoPosition, Jx.Chrome],
/**
* Property: subDomObj
@@ -9646,7 +9887,6 @@
this.subDomObj = new Element('ul', {
'class':'jxSubMenu'
});
- this.subDomObj.store('jxSubMenu', this);
this.contentContainer.adopt(this.subDomObj);
},
/**
@@ -9669,6 +9909,7 @@
}
this.contentContainer.setStyle('visibility','hidden');
+ this.contentContainer.setStyle('display','block');
$(document.body).adopt(this.contentContainer);
/* we have to size the container for IE to render the chrome correctly
* but just in the menu/sub menu case - there is some horrible peekaboo
@@ -9709,8 +9950,8 @@
return;
}
this.open = false;
- this.items.each(function(item){item.hide.delay(0,item);});
- this.contentContainer.dispose();
+ this.items.each(function(item){item.hide();});
+ this.contentContainer.setStyle('display','none');
this.visibleItem = null;
},
/**
@@ -9825,7 +10066,7 @@
this.visibleItem.show();
}
}
-});// $Id: menu.context.js 933 2008-09-16 15:29:20Z pspencer $
+});// $Id: menu.context.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Menu.Context
* A <Jx.Menu> that has no button but can be opened at a specific
@@ -9838,15 +10079,15 @@
* Events:
* TODO - add open/close events?
*
- * Extends:
- * <Jx.Menu>
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Menu.Context = new Class({
+ /** Extends:
+ * <Jx.Menu>
+ */
Extends: Jx.Menu,
/**
* Constructor: Jx.ContextMenu
@@ -9898,7 +10139,7 @@
e.stop();
}
-});// $Id: panel.js 1154 2008-09-25 18:56:07Z pspencer $
+});// $Id: panel.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Panel
* A panel is a fundamental container object that has a content
@@ -9916,17 +10157,18 @@
* collapse - fired when the panel is collapsed
* expand - fired when the panel is opened
*
- * Implements:
- * * <Jx.ContentLoader>
- * * Options
- * * Events
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Panel = new Class({
+ /**
+ * Implements:
+ * * <Jx.ContentLoader>
+ * * Options
+ * * Events
+ */
Implements: [Options, Events, Jx.ContentLoader, Jx.Addable],
toolbarContainers: {
@@ -9983,9 +10225,6 @@
* controlled object). If you specify a height then the panel will
* occupy only that much space vertically and will fill the
* container's width (using the relative option in <Jx.Layout>).
- *
- * Inherits From:
- * <Jx.UniqueId>, <Jx.ContentLoader>
*/
initialize : function(options){
this.toolbars = options ? options.toolbars || [] : [];
@@ -10165,6 +10404,13 @@
}
},
+ /**
+ * Method: layoutContent
+ * the sizeChange event of the <Jx.Layout> that manages the outer container
+ * is intercepted and passed through this method to handle resizing of the
+ * panel contents because we need to do some calculations if the panel
+ * is collapsed and if there are toolbars to put around the content area.
+ */
layoutContent: function() {
var titleHeight = 0;
var top = 0;
@@ -10400,7 +10646,7 @@
this.fireEvent('close', this);
}
-});// $Id: dialog.js 1154 2008-09-25 18:56:07Z pspencer $
+});// $Id: dialog.js 232 2008-12-02 12:42:14Z pagameba $
/**
* Class: Jx.Dialog
* A Jx.Dialog implements a floating dialog. Dialogs represent a useful way
@@ -10431,19 +10677,22 @@
* change - triggered when the value of an input in the dialog is changed
* resize - triggered when the dialog is resized
*
- * Extends:
- * <Jx.Panel>
- *
- * Implements:
- * <Jx.AutoPosition>
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Dialog = new Class({
+ /**
+ * Extends:
+ * <Jx.Panel>
+ */
Extends: Jx.Panel,
+ /**
+ * Implements:
+ * - <Jx.AutoPosition>
+ * - <Jx.Chrome>
+ */
Implements: [Jx.AutoPosition, Jx.Chrome],
/**
@@ -10506,14 +10755,6 @@
* moveable by the user or not. Default is true.
*/
initialize: function(options) {
- /* initialize class-wide singleton that holds the current z-order
- * of all dialogs
- */
- if (!Jx.Dialog.Stack) {
- Jx.Dialog.Stack = [];
- Jx.Dialog.ZIndex = [];
- }
-
this.isOpening = false;
this.firstShow = true;
@@ -10545,9 +10786,16 @@
zIndex: -1
}
});
-
+ this.blanket.resize = (function() {
+ var ss = $(document.body).getScrollSize();
+ this.setStyles({
+ width: ss.x,
+ height: ss.y
+ });
+ }).bind(this.blanket);
this.options.parent.adopt(this.blanket);
- (new Jx.Layout(this.blanket)).resize();
+ window.addEvent('resize', this.blanket.resize);
+
}
this.domObj.setStyle('display','none');
@@ -10559,11 +10807,7 @@
new Drag(this.domObj, {
handle: this.title,
onBeforeStart: (function(){
- Jx.Dialog.Stack.erase(this).push(this);
- var baseZIndex = Jx.Dialog.Stack[0].domObj.style.zIndex;
- Jx.Dialog.Stack.each(function(d, i) {
- d.domObj.setStyle('zIndex',baseZIndex+i);
- });
+ Jx.Dialog.orderDialogs(this);
}).bind(this),
onStart: (function() {
this.contentContainer.setStyle('visibility','hidden');
@@ -10572,13 +10816,13 @@
onComplete: (function() {
this.chrome.removeClass('jxChromeDrag');
this.contentContainer.setStyle('visibility','');
- var left = Math.max(this.chromeOffsets.left, parseInt(this.domObj.style.left));
- var top = Math.max(this.chromeOffsets.top, parseInt(this.domObj.style.top));
+ var left = Math.max(this.chromeOffsets.left, parseInt(this.domObj.style.left,10));
+ var top = Math.max(this.chromeOffsets.top, parseInt(this.domObj.style.top,10));
this.options.horizontal = left + ' left';
this.options.vertical = top + ' top';
this.position(this.domObj, this.options.parent, this.options);
- this.options.left = parseInt(this.domObj.style.left);
- this.options.top = parseInt(this.domObj.style.top);
+ this.options.left = parseInt(this.domObj.style.left,10);
+ this.options.top = parseInt(this.domObj.style.top,10);
if (!this.options.closed) {
this.domObj.resize(this.options);
}
@@ -10624,19 +10868,15 @@
}).bind(this)
});
}
- /* this adjusts the z-index of the dialogs when activated */
+ /* this adjusts the zIndex of the dialogs when activated */
this.domObj.addEvent('mousedown', (function(){
- Jx.Dialog.Stack.erase(this).push(this);
- var baseZIndex = Jx.Dialog.Stack[0].domObj.style.zIndex;
- Jx.Dialog.Stack.each(function(d, i) {
- d.domObj.setStyle('zIndex',baseZIndex+i);
- });
+ Jx.Dialog.orderDialogs(this);
}).bind(this));
},
/**
* Method: sizeChanged
- * overload panel
+ * overload panel's sizeChanged method
*/
sizeChanged: function() {
if (!this.options.closed) {
@@ -10703,28 +10943,30 @@
/**
* Method: show
- * show the dialog
+ * show the dialog, external code should use the <Jx.Dialog::open> method
+ * to make the dialog visible.
*/
show : function( ) {
- /* get the z-index right */
- Jx.Dialog.Stack.push(this);
- if (Jx.Dialog.ZIndex.length == 0) {
- Jx.Dialog.ZIndex[0] = this.domObj.getStyle('z-index');
+ /* prepare the dialog for display */
+ this.domObj.setStyles({
+ 'display': 'block',
+ 'visibility': 'hidden'
+ });
+
+ if (this.blanket) {
+ this.blanket.resize();
}
+
+ Jx.Dialog.orderDialogs(this);
+
/* do the modal thing */
- if (this.options.modal) {
+ if (this.blanket) {
this.blanket.setStyles({
- zIndex: Jx.Dialog.ZIndex[0]++,
visibility: 'visible',
display: 'block'
});
}
- /* display the dialog */
- this.domObj.setStyles({
- 'display': 'block',
- 'visibility': 'hidden',
- 'z-index': Jx.Dialog.ZIndex[0]++
- });
+
if (this.options.closed) {
var margin = this.domObj.getMarginSize();
var size = this.title.getMarginBoxSize();
@@ -10753,15 +10995,16 @@
},
/**
* Method: hide
- * hide the dialog
+ * hide the dialog, external code should use the <Jx.Dialog::close>
+ * method to hide the dialog.
*/
hide : function() {
Jx.Dialog.Stack.erase(this);
- Jx.Dialog.ZIndex[0]--;
+ Jx.Dialog.ZIndex--;
this.domObj.setStyle('display','none');
- if (this.options.modal) {
+ if (this.blanket) {
this.blanket.setStyle('visibility', 'hidden');
- Jx.Dialog.ZIndex[0]--;
+ Jx.Dialog.ZIndex--;
}
},
@@ -10805,7 +11048,24 @@
}
}
});
-// $Id: panelset.js 1113 2008-09-24 16:00:54Z pspencer $
+
+Jx.Dialog.Stack = [];
+Jx.Dialog.BaseZIndex = null;
+Jx.Dialog.orderDialogs = function(d) {
+ Jx.Dialog.Stack.erase(d).push(d);
+ if (Jx.Dialog.BaseZIndex === null) {
+ Jx.Dialog.BaseZIndex = Math.max(Jx.Dialog.Stack[0].domObj.getStyle('zIndex').toInt(), 1);
+ }
+ Jx.Dialog.Stack.each(function(d, i) {
+ var z = Jx.Dialog.BaseZIndex+i;
+ if (d.blanket) {
+ d.blanket.setStyle('zIndex',z);
+ }
+ d.domObj.setStyle('zIndex',z);
+ });
+
+};
+// $Id: panelset.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.PanelSet
*
@@ -10836,6 +11096,12 @@
* This file is licensed under an MIT style license
*/
Jx.PanelSet = new Class({
+ /**
+ * Implements:
+ * * Options
+ * * Events
+ * * <Jx.Addable>
+ */
Implements: [Options, Events, Jx.Addable],
options: {
@@ -10915,6 +11181,7 @@
}).bind(this)
});
this.addEvent('addTo', function() {
+ $(this.domObj.parentNode).setStyle('overflow', 'hidden');
this.domObj.resize();
});
if (this.options.parent) {
@@ -11028,41 +11295,48 @@
}
panel.domObj.resize({top: top, height:panelSize, bottom: null});
}
-});// $Id: button.combo.js 1013 2008-09-19 19:11:46Z pspencer $
+});// $Id: button.combo.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Button.Combo
- * A drop down list of selectable items that can be any HTML.
+ * A drop down list of selectable items. Items can be either a string, an image or both.
*
* Example:
* (code)
+ * new Jx.Button.Combo({
+ * label: 'Choose a symbol',
+ * items: [
+ * {label: 'Star', image: 'images/swatches.png', imageClass: 'comboStar'},
+ * {label: 'Square', image: 'images/swatches.png', imageClass: 'comboSquare'},
+ * {label: 'Triangle', image: 'images/swatches.png', imageClass: 'comboTriangle'},
+ * {label: 'Circle', image: 'images/swatches.png', imageClass: 'comboCircle'},
+ * {label: 'Plus', image: 'images/swatches.png', imageClass: 'comboPlus'},
+ * {label: 'Cross', image: 'images/swatches.png', imageClass: 'comboCross'}
+ * ],
+ * onChange: function(combo) { alert('you selected ' + combo.getValue()) }
+ * })
* (end)
*
* Events:
- * change - the main item has changed
+ * change - triggered when the user selects a new item from the list
*
- * Implements:
- * * Options
- * * Events
- * * <Jx.AutoPosition>
- *
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
*
* This file is licensed under an MIT style license
*/
Jx.Button.Combo = new Class({
+ /**
+ * Extends:
+ * <Jx.Button.Multi>
+ */
Extends: Jx.Button.Multi,
- Implements: [Options,Events,Jx.AutoPosition, Jx.Chrome],
- /**
- * Property: domObj
- * {HTMLElement} the div that contains the control,
- * used to show/hide the control
+ /**
+ * Implements:
+ * * <Jx.AutoPosition>
+ * * <Jx.Chrome>
*/
+ Implements: [Jx.AutoPosition, Jx.Chrome],
domObj : null,
- /**
- * Property: ul
- * {HTMLElement} the ul that contains the selectable items
- */
ul : null,
/**
* Property: currentSelection
@@ -11171,9 +11445,12 @@
}
},
-
+ /**
+ * Method: valueChanged
+ * invoked when the current value is changed
+ */
valueChanged: function() {
-
+ //TODO: should we do anything here?
},
/**
@@ -11197,7 +11474,7 @@
* Parameters:
* options - {Object} object with properties suitable to be passed to
* a {Jx.Menu.Item} object. More than one options object can be passed,
- * comma separated.
+ * comma separated or in an array.
*/
add: function() {
$A(arguments).flatten().each(function(opt) {
@@ -11252,7 +11529,7 @@
}
return value;
}
-});// $Id: splitter.js 1130 2008-09-24 19:12:35Z pspencer $
+});// $Id: splitter.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Splitter
* a Jx.Splitter creates two or more containers within a parent container
@@ -11274,6 +11551,10 @@
*/
Jx.Splitter = new Class({
+ /**
+ * Implements:
+ * * Options
+ */
Implements: [Options],
/**
* Property: domObj
@@ -11933,7 +12214,7 @@
}
}
}
-});// $Id: splitter.snap.js 1130 2008-09-24 19:12:35Z pspencer $
+});// $Id: splitter.snap.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Splitter.Snap
* A helper class to create an element that can snap a split panel open or
@@ -12053,7 +12334,7 @@
}
}
}
-});// $Id: tabset.js 1154 2008-09-25 18:56:07Z pspencer $
+});// $Id: tabset.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.TabSet
* A TabSet manages a set of <Jx.Button.Tab> content areas by ensuring that only one
@@ -12120,7 +12401,7 @@
if (!this.domObj.hasClass('jxTabSetContainer')) {
this.domObj.addClass('jxTabSetContainer');
}
- this.selectionChangedFn = this.selectionChanged.bind(this);
+ this.setActiveTabFn = this.setActiveTab.bind(this);
},
/**
* Method: resizeTabBox
@@ -12144,7 +12425,7 @@
add: function() {
$A(arguments).each(function(tab) {
if (tab instanceof Jx.Button.Tab) {
- tab.addEvent('down',this.selectionChangedFn);
+ tab.addEvent('down',this.setActiveTabFn);
tab.tabSet = this;
this.domObj.appendChild(tab.content);
this.tabs.push(tab);
@@ -12172,7 +12453,7 @@
this.tabs[0].setActive(true);
}
}
- tab.removeEvent('down',this.selectionChangedFn);
+ tab.removeEvent('down',this.setActiveTabFn);
tab.content.dispose();
}
},
@@ -12191,24 +12472,13 @@
if (this.activeTab.content.resize) {
this.activeTab.content.resize({forceResize: true});
}
- },
- /**
- * Method: selectionChanged
- * Handle selection changing on the tabs themselves and activate the
- * appropriate tab in response.
- *
- * Parameters:
- * tab - {<Jx.Button.Tab>} the tab to make active.
- */
- selectionChanged: function(tab) {
- this.setActiveTab(tab);
- this.fireEvent('tabChange', this, tab);
+ this.fireEvent('tabChange', [this, tab]);
}
});
-// $Id: tabbox.js 1154 2008-09-25 18:56:07Z pspencer $
+// $Id: tabbox.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.TabBox
* A convenience class to handle the common case of a single toolbar
@@ -12233,6 +12503,12 @@
* This file is licensed under an MIT style license
*/
Jx.TabBox = new Class({
+ /**
+ * Implements:
+ * * Options
+ * * Events
+ * * <Jx.Addable>
+ */
Implements: [Options, Events, Jx.Addable],
options: {
parent: null,
@@ -12253,6 +12529,7 @@
tabSet: null,
/**
* Constructor: Jx.TabBox
+ * Create a new instance of a TabBox.
*/
initialize : function(options) {
this.setOptions(options);
@@ -12268,6 +12545,9 @@
});
this.panel.domObj.addClass('jxTabBox');
this.tabSet = new Jx.TabSet(this.panel.content);
+ this.tabSet.addEvent('tabChange', function(tabSet, tab) {
+ this.showItem(tab);
+ }.bind(this.tabBar));
this.domObj = this.panel.domObj;
/* when the panel changes size, the tab set needs to update
* the content areas.
@@ -12307,10 +12587,12 @@
this.tabBar.add.apply(this.tabBar, arguments);
this.tabSet.add.apply(this.tabSet, arguments);
$A(arguments).flatten().each(function(tab){
- tab.addEvent('close', (function(){
- this.tabBar.remove(tab);
- this.tabSet.remove(tab);
- }).bind(this));
+ tab.addEvents({
+ close: (function(){
+ this.tabBar.remove(tab);
+ this.tabSet.remove(tab);
+ }).bind(this)
+ });
}, this);
return this;
},
@@ -12326,7 +12608,7 @@
this.tabSet.remove(tab);
}
});
-// $Id: button.tab.js 1105 2008-09-24 14:37:57Z pspencer $
+// $Id: button.tab.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Button.Tab
* A single tab in a tab set. A tab has a label (displayed in the tab) and a
@@ -12359,13 +12641,7 @@
* });
* (end)
*
- * Extends:
- * <Jx.Button>
*
- * Implements:
- * Options - MooTools Class.Extras
- * Events - MooTools Class.Extras
- * <Jx.ContentLoader> - for loading content into a tab
*
* License:
* Copyright (c) 2008, DM Solutions Group Inc.
@@ -12373,16 +12649,25 @@
* This file is licensed under an MIT style license
*/
Jx.Button.Tab = new Class({
+ /**
+ * Extends:
+ * <Jx.Button>
+ */
Extends: Jx.Button,
- Implements: [Options, Events, Jx.ContentLoader],
/**
+ * Implements:
+ * * <Jx.ContentLoader>
+ */
+ Implements: [Jx.ContentLoader],
+ /**
* Property: content
* {HTMLElement} The content area that is displayed when the tab is active.
*/
content: null,
/**
* Constructor: Jx.Button.Tab
- * Create a new instance of Jx.Button.Tab.
+ * Create a new instance of Jx.Button.Tab. Any layout options passed are used
+ * to create a <Jx.Layout> for the tab content area.
*
* Parameters:
* options - {Object} an object containing options that are used
@@ -12429,7 +12714,7 @@
this.setActive(true);
}
}
-});// $Id: toolbar.js 1103 2008-09-24 14:14:23Z pspencer $
+});// $Id: toolbar.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Toolbar
* A toolbar is a container object that contains other objects such as
@@ -12653,9 +12938,12 @@
if (this.isActive()) {
this.visibleItem.show();
}
+ },
+ showItem: function(item) {
+ this.fireEvent('show', item);
}
});
-// $Id: toolbar.item.js 711 2008-08-13 20:38:33Z pspencer $
+// $Id: toolbar.item.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Toolbar.Item
* A helper class to provide a container for something to go into
@@ -12701,7 +12989,7 @@
}
}
}
-});// $Id: toolbar.separator.js 711 2008-08-13 20:38:33Z pspencer $
+});// $Id: toolbar.separator.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Toolbar.Separator
* A helper class that represents a visual separator in a <Jx.Toolbar>
@@ -12731,7 +13019,7 @@
this.domObj.appendChild(this.domSpan);
}
});
-// $Id: $
+// $Id: toolbar.container.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Toolbar.Container
* A toolbar container contains toolbars. A single toolbar container fills the
@@ -12807,11 +13095,12 @@
// make sure we update our size when we get added to the DOM
this.addEvent('addTo', this.update.bind(this));
- var scrollFx = new Fx.Tween(this.scroller);
+ this.scrollFx = scrollFx = new Fx.Tween(this.scroller, {
+ link: 'chain'
+ });
this.scrollLeft = new Jx.Button({
image: Jx.aPixel.src
}).addTo(this.domObj);
-
this.scrollLeft.domObj.addClass('jxBarScrollLeft');
this.scrollLeft.addEvents({
click: (function(){
@@ -12819,13 +13108,13 @@
if (isNaN(from)) { from = 0; }
var to = Math.min(from+100, 0);
if (to >= 0) {
- this.scrollLeft.domObj.setStyle('display', 'none');
+ this.scrollLeft.domObj.setStyle('visibility', 'hidden');
}
- this.scrollRight.domObj.setStyle('display', 'block');
- scrollFx.start('left', from, to);
+ this.scrollRight.domObj.setStyle('visibility', '');
+ this.scrollFx.start('left', from, to);
}).bind(this)
});
-
+
this.scrollRight = new Jx.Button({
image: Jx.aPixel.src
}).addTo(this.domObj);
@@ -12836,19 +13125,20 @@
if (isNaN(from)) { from = 0; }
var to = Math.max(from - 100, this.scrollWidth);
if (to == this.scrollWidth) {
- this.scrollRight.domObj.setStyle('display', 'none');
+ this.scrollRight.domObj.setStyle('visibility', 'hidden');
}
- this.scrollLeft.domObj.setStyle('display', 'block');
- scrollFx.start('left', from, to);
+ this.scrollLeft.domObj.setStyle('visibility', '');
+ this.scrollFx.start('left', from, to);
}).bind(this)
- });
+ });
+
} else {
this.options.scroll = false;
}
if (this.options.toolbars) {
this.add(this.options.toolbars);
- }
+ }
},
update: function() {
@@ -12873,6 +13163,11 @@
},
measure: function() {
+
+ if ((!this.scrollLeftSize || !this.scrollLeftSize.x) && this.domObj.parentNode) {
+ this.scrollLeftSize = this.scrollLeft.domObj.getSize();
+ this.scrollRightSize = this.scrollRight.domObj.getSize();
+ }
/* decide if we need to show the scroller buttons and
* do some calculations that will make it faster
*/
@@ -12881,20 +13176,32 @@
this.scrollWidth -= child.getSize().x;
}, this);
if (this.scrollWidth < 0) {
+ /* we need to show scrollers on at least one side */
var l = this.scroller.getStyle('left').toInt();
if (l < 0) {
- this.scrollLeft.domObj.setStyle('display','block');
+ this.scrollLeft.domObj.setStyle('visibility','');
} else {
- this.scrollLeft.domObj.setStyle('display','none');
+ this.scrollLeft.domObj.setStyle('visibility','hidden');
}
- if (l == this.scrollWidth) {
- this.scrollRight.domObj.setStyle('display', 'none');
+ if (l <= this.scrollWidth) {
+ this.scrollRight.domObj.setStyle('visibility', 'hidden');
+ if (l < this.scrollWidth) {
+ this.scrollFx.start('left', l, this.scrollWidth);
+ }
} else {
- this.scrollRight.domObj.setStyle('display', 'block');
+ this.scrollRight.domObj.setStyle('visibility', '');
}
+
} else {
- this.scrollLeft.domObj.setStyle('display','none');
- this.scrollRight.domObj.setStyle('display','none');
+ /* don't need any scrollers but we might need to scroll
+ * the toolbar into view
+ */
+ this.scrollLeft.domObj.setStyle('visibility','hidden');
+ this.scrollRight.domObj.setStyle('visibility','hidden');
+ var from = this.scroller.getStyle('left').toInt();
+ if (!isNaN(from) && from !== 0) {
+ this.scrollFx.start('left', 0);
+ }
}
},
@@ -12914,6 +13221,7 @@
*/
thing.addEvent('add', this.update.bind(this));
thing.addEvent('remove', this.update.bind(this));
+ thing.addEvent('show', this.scrollIntoView.bind(this));
}
if (this.scroller) {
this.scroller.adopt(thing.domObj);
@@ -12944,9 +13252,55 @@
*/
remove: function(item) {
+ },
+ /**
+ * Method: scrollIntoView
+ * scrolls an item in one of the toolbars into the currently visible
+ * area of the container if it is not already fully visible
+ *
+ * Parameters:
+ * item - the item to scroll.
+ */
+ scrollIntoView: function(item) {
+ var width = this.domObj.getSize().x;
+ var coords = item.domObj.getCoordinates(this.scroller);
+ var l = this.scroller.getStyle('left').toInt();
+
+ var slSize = this.scrollLeftSize ? this.scrollLeftSize.x : 0;
+ var srSize = this.scrollRightSize ? this.scrollRightSize.x : 0;
+
+ var left = l;
+ if (l < -coords.left + slSize) {
+ /* the left edge of the item is not visible */
+ left = -coords.left + slSize;
+ if (left >= 0) {
+ left = 0;
+ }
+ } else if (width - coords.right - srSize< l) {
+ /* the right edge of the item is not visible */
+ left = width - coords.right - srSize;
+ if (left < this.scrollWidth) {
+ left = this.scrollWidth;
+ }
+ }
+
+ if (left < 0) {
+ this.scrollLeft.domObj.setStyle('visibility','');
+ } else {
+ this.scrollLeft.domObj.setStyle('visibility','hidden');
+ }
+ if (left <= this.scrollWidth) {
+ this.scrollRight.domObj.setStyle('visibility', 'hidden');
+ } else {
+ this.scrollRight.domObj.setStyle('visibility', '');
+ }
+
+ if (left != l) {
+ this.scrollFx.start('left', left);
+ }
}
});
-// $Id: treeitem.js 803 2008-09-02 18:02:13Z pspencer $
+// $Id: treeitem.js 239 2008-12-10 14:53:58Z pagameba $
/**
* Class: Jx.TreeItem
* An item in a tree. An item is a leaf node that has no children.
@@ -13041,16 +13395,53 @@
if (this.options.imageClass) {
domImg.addClass(this.options.imageClass);
}
+ // the clickable part of the button
+ var hasFocus;
+ var mouseDown;
+
var domA = new Element('a',{
href:'javascript:void(0)',
- html: this.options.label,
- events: {
- click: this.selected.bind(this),
- dblclick: this.selected.bind(this),
- contextmenu: this.showMenu.bind(this)
- }
+ html: this.options.label
});
+ domA.addEvents({
+ click: this.selected.bind(this),
+ dblclick: this.selected.bind(this),
+ contextmenu: this.showMenu.bind(this),
+ drag: function(e) {e.stop();},
+ mousedown: function(e) {
+ domA.addClass('jxTreeItemPressed');
+ hasFocus = true;
+ mouseDown = true;
+ domA.focus();
+ },
+ mouseup: function(e) {
+ domA.removeClass('jxTreeItemPressed');
+ mouseDown = false;
+ },
+ mouseleave: function(e) {
+ domA.removeClass('jxTreeItemPressed');
+ },
+ mouseenter: function(e) {
+ if (hasFocus && mouseDown) {
+ domA.addClass('jxTreeItemPressed');
+ }
+ },
+ keydown: function(e) {
+ if (e.key == 'enter') {
+ domA.addClass('jxTreeItemPressed');
+ }
+ },
+ keyup: function(e) {
+ if (e.key == 'enter') {
+ domA.removeClass('jxTreeItemPressed');
+ }
+ },
+ blur: function() { hasFocus = false; }
+ });
domA.appendChild(domImg);
+ new Drag(domA, {
+ onStart: function() {this.stop();}
+ });
return domA;
},
/**
@@ -13123,7 +13514,6 @@
*/
showMenu: function(e) {
this.lastEvent = new Event(e);
- //this.fireEvent('click',this);
if (this.contextMenu) {
this.contextMenu.show(this.lastEvent);
}
@@ -13153,7 +13543,7 @@
this.domObj.addClass('jxDisabled');
}
}
-});// $Id: treefolder.js 1093 2008-09-23 20:44:15Z pspencer $
+});// $Id: treefolder.js 240 2008-12-10 15:04:11Z pagameba $
/**
* Class: Jx.TreeFolder
* A Jx.TreeFolder is an item in a tree that can contain other items. It is
@@ -13487,7 +13877,7 @@
}
return null;
}
-});// $Id: tree.js 1097 2008-09-23 22:40:51Z pspencer $
+});// $Id: tree.js 241 2008-12-10 15:11:05Z pagameba $
/**
* Class: Jx.Tree
* Jx.Tree displays hierarchical data in a tree structure of folders and nodes.
Modified: trunk/templates/mapguide/standard/themes/crispin/ie6.css
===================================================================
--- trunk/templates/mapguide/standard/themes/crispin/ie6.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapguide/standard/themes/crispin/ie6.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie6.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,27 +10,169 @@
/* ============= */
/* 24 bit images do not appear correctly in IE versions below 7. Applying a
- filter through the class below will make them appear correctly.*/
+ * filter through the class below will make them appear correctly.
+ */
.png24{filter:expression(Jx.applyPNGFilter(this))}
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
/* List items do not render properly under several conditions.
- Applying a height to the LI forces it to render properly.
- Content that is taller than the li simply forces the li to be taller */
+ * Applying a height to the LI forces it to render properly.
+ * Content that is taller than the li simply forces the li to be taller
+ */
.jxTree li,
.jxTreeRoot li {
height: 20px;
}
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking normal button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+}
+
+/* Icons line up according to the outermost parent not the immediate parent
+ * applying a top overide to accomodate this
+ */
+img.jxMenuItemIcon {
+ top: 2px;
+ left: 0px;
+}
+
+a.jxMenuItemActive img.jxMenuItemIcon {
+ top: 0px;
+ left: -2px;
+ padding: 1px;
+ border: 1px solid #C5E0FF;
+}
+
/* chrome in dialogs doesn't resize properly when collapsing a dialog before
* moving or resizing it in IE 6 only, hiding overflow seems to do the trick
*/
.jxChrome {
overflow: hidden;
}
+
Modified: trunk/templates/mapguide/standard/themes/crispin/ie7.css
===================================================================
--- trunk/templates/mapguide/standard/themes/crispin/ie7.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapguide/standard/themes/crispin/ie7.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie7.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,8 +10,138 @@
/* =========== */
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
+
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking focused button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+ outline: expression(hideFocus='true');
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+ outline: expression(hideFocus='true');
+}
+
+
Modified: trunk/templates/mapguide/standard/themes/crispin/images/button.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/button_combo.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/button_multi.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/button_multi_disclose.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/dialog_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/flyout_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/menu_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/tab_bottom.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/tab_left.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/tab_right.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/tab_top.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/tree.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/crispin/images/tree_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/ie6.css
===================================================================
--- trunk/templates/mapguide/standard/themes/delicious/ie6.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapguide/standard/themes/delicious/ie6.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie6.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,24 +10,169 @@
/* ============= */
/* 24 bit images do not appear correctly in IE versions below 7. Applying a
- filter through the class below will make them appear correctly.*/
+ * filter through the class below will make them appear correctly.
+ */
.png24{filter:expression(Jx.applyPNGFilter(this))}
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
/* List items do not render properly under several conditions.
- Applying a height to the LI forces it to render properly.
- Content that is taller than the li simply forces the li to be taller */
+ * Applying a height to the LI forces it to render properly.
+ * Content that is taller than the li simply forces the li to be taller
+ */
.jxTree li,
.jxTreeRoot li {
height: 20px;
}
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking normal button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+ outline: expression(hideFocus='true');
+}
+
+/* Icons line up according to the outermost parent not the immediate parent
+ * applying a top overide to accomodate this
+ */
+img.jxMenuItemIcon {
+ top: 2px;
+ left: 0px;
+}
+
+a.jxMenuItemActive img.jxMenuItemIcon {
+ top: 0px;
+ left: -2px;
+ padding: 1px;
+ border: 1px solid #C5E0FF;
+}
+
/* chrome in dialogs doesn't resize properly when collapsing a dialog before
* moving or resizing it in IE 6 only, hiding overflow seems to do the trick
*/
@@ -35,4 +180,3 @@
overflow: hidden;
}
-
Modified: trunk/templates/mapguide/standard/themes/delicious/ie7.css
===================================================================
--- trunk/templates/mapguide/standard/themes/delicious/ie7.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapguide/standard/themes/delicious/ie7.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie7.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,8 +10,138 @@
/* =========== */
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
+
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking focused button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+ outline: expression(hideFocus='true');
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+ outline: expression(hideFocus='true');
+}
+
+
Modified: trunk/templates/mapguide/standard/themes/delicious/images/button.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/button_combo.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/button_multi.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/button_multi_disclose.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/dialog_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/flyout_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/menu_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/tab_bottom.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/tab_left.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/tab_right.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/tab_top.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/tree.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/tree_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapguide/standard/themes/delicious/images/tree_vert_line.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/ie6.css
===================================================================
--- trunk/templates/mapserver/standard/themes/crispin/ie6.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapserver/standard/themes/crispin/ie6.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie6.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,27 +10,169 @@
/* ============= */
/* 24 bit images do not appear correctly in IE versions below 7. Applying a
- filter through the class below will make them appear correctly.*/
+ * filter through the class below will make them appear correctly.
+ */
.png24{filter:expression(Jx.applyPNGFilter(this))}
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
/* List items do not render properly under several conditions.
- Applying a height to the LI forces it to render properly.
- Content that is taller than the li simply forces the li to be taller */
+ * Applying a height to the LI forces it to render properly.
+ * Content that is taller than the li simply forces the li to be taller
+ */
.jxTree li,
.jxTreeRoot li {
height: 20px;
}
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking normal button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+}
+
+/* Icons line up according to the outermost parent not the immediate parent
+ * applying a top overide to accomodate this
+ */
+img.jxMenuItemIcon {
+ top: 2px;
+ left: 0px;
+}
+
+a.jxMenuItemActive img.jxMenuItemIcon {
+ top: 0px;
+ left: -2px;
+ padding: 1px;
+ border: 1px solid #C5E0FF;
+}
+
/* chrome in dialogs doesn't resize properly when collapsing a dialog before
* moving or resizing it in IE 6 only, hiding overflow seems to do the trick
*/
.jxChrome {
overflow: hidden;
}
+
Modified: trunk/templates/mapserver/standard/themes/crispin/ie7.css
===================================================================
--- trunk/templates/mapserver/standard/themes/crispin/ie7.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapserver/standard/themes/crispin/ie7.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie7.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,8 +10,138 @@
/* =========== */
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
+
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking focused button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+ outline: expression(hideFocus='true');
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+ outline: expression(hideFocus='true');
+}
+
+
Modified: trunk/templates/mapserver/standard/themes/crispin/images/button.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/button_combo.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/button_multi.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/button_multi_disclose.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/dialog_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/flyout_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/menu_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/tab_bottom.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/tab_left.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/tab_right.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/tab_top.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/tree.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/crispin/images/tree_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/ie6.css
===================================================================
--- trunk/templates/mapserver/standard/themes/delicious/ie6.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapserver/standard/themes/delicious/ie6.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie6.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,24 +10,169 @@
/* ============= */
/* 24 bit images do not appear correctly in IE versions below 7. Applying a
- filter through the class below will make them appear correctly.*/
+ * filter through the class below will make them appear correctly.
+ */
.png24{filter:expression(Jx.applyPNGFilter(this))}
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
/* List items do not render properly under several conditions.
- Applying a height to the LI forces it to render properly.
- Content that is taller than the li simply forces the li to be taller */
+ * Applying a height to the LI forces it to render properly.
+ * Content that is taller than the li simply forces the li to be taller
+ */
.jxTree li,
.jxTreeRoot li {
height: 20px;
}
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking normal button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+ outline: expression(hideFocus='true');
+}
+
+/* Icons line up according to the outermost parent not the immediate parent
+ * applying a top overide to accomodate this
+ */
+img.jxMenuItemIcon {
+ top: 2px;
+ left: 0px;
+}
+
+a.jxMenuItemActive img.jxMenuItemIcon {
+ top: 0px;
+ left: -2px;
+ padding: 1px;
+ border: 1px solid #C5E0FF;
+}
+
/* chrome in dialogs doesn't resize properly when collapsing a dialog before
* moving or resizing it in IE 6 only, hiding overflow seems to do the trick
*/
@@ -35,4 +180,3 @@
overflow: hidden;
}
-
Modified: trunk/templates/mapserver/standard/themes/delicious/ie7.css
===================================================================
--- trunk/templates/mapserver/standard/themes/delicious/ie7.css 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/templates/mapserver/standard/themes/delicious/ie7.css 2008-12-10 20:34:08 UTC (rev 1707)
@@ -1,6 +1,6 @@
/**
* @project Jx
- * @revision $Id: button.css 1153 2008-09-25 16:18:42Z fwarnock $
+ * @revision $Id: ie7.css 243 2008-12-10 15:21:19Z fred.warnock $
* @author Fred Warnock (fwarnock at dmsolutions.ca)
* @copyright (c) 2006 DM Solutions Group Inc.
*/
@@ -10,8 +10,138 @@
/* =========== */
/* Opacity needs to be set in IE6 and below using the following filters.
- Please note that IE8 changed how filters are written. */
+ * Please note that IE8 changed how filters are written.
+ */
.jxChromeDrag {filter: Alpha(opacity=50);}
.jxDialogModal {filter: Alpha(opacity=20);}
.jxDisabled {filter:Alpha(opacity=40);}
iframe.jxIframeShim {filter:Alpha(opacity:0);}
+
+/* tree item focus style */
+.jxTree a:active,
+.jxTreeRoot a:active {
+ border-left: 1px dotted #75ADFF;
+ border-right: 1px dotted #75ADFF;
+ margin: 0px 0px 0px 14px;
+ background-position: left -72px;
+ outline: expression(hideFocus='true');
+}
+
+/* IE versions 7 and below do not recognize the focus pseudo-class, but instead
+ * use the active pseudo-class. Other browsers use the active-pseudo-class
+ * while something is being pressed so IE specific definitions are needed. */
+/* focus button */
+ul.jxToolbar a.jxButton:active,
+a.jxButton:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+a.jxButton:active span.jxButtonContent {
+ background-position: right -96px;
+}
+
+/* focus active button */
+ul.jxToolbar a.jxButtonActive:active,
+a.jxButtonActive:active {
+ background-position: left -144px;
+}
+
+a.jxButtonActive:active span.jxButtonContent {
+ background-position: right -144px;
+}
+
+/* clicking focused button */
+ul.jxToolbar a.jxButtonPressed:active,
+a.jxButtonPressed:active {
+ background-position: left -120px;
+}
+
+a.jxButtonPressed:active span.jxButtonContent {
+ background-position: right -120px;
+}
+
+a.jxButtonDisclose:active {
+ background-position: right -96px;
+ outline: expression(hideFocus='true');
+}
+
+/* HORIZONTALTAB BAR - TOP and BOTTOM TABS */
+
+/* Focus tab */
+.jxBarTop a.jxTab:active,
+.jxBarBottom a.jxTab:active {
+ background-position: left -96px;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarTop a.jxTab:active span.jxTabContent,
+.jxBarBottom a.jxTab:active span.jxTabContent {
+ background-position: right -96px;
+}
+
+/* Focus Active tab */
+.jxBarTop a.jxTabActive:active,
+.jxBarBottom a.jxTabActive:active {
+ background-position: left -144px;
+}
+
+.jxBarTop a.jxTabActive:active span.jxTabContent,
+.jxBarBottom a.jxTabActive:active span.jxTabContent {
+ background-position: right -144px;
+}
+
+/* Click Focused Tab */
+.jxBarTop a.jxTabPressed:active,
+.jxBarBottom a.jxTabPressed:active {
+ background-position: left -120px;
+}
+
+.jxBarTop a.jxTabPressed:active span.jxTabContent,
+.jxBarBottom a.jxTabPressed:active span.jxTabContent {
+ background-position: right -120px;
+}
+
+/* VERTICAL TAB BAR - LEFT and RIGHT */
+
+/* Focus tab */
+.jxBarLeft a.jxTab:active,
+.jxBarRight a.jxTab:active {
+ background-position: -96px top;
+ outline: expression(hideFocus='true');
+}
+
+.jxBarLeft a.jxTab:active span.jxTabContent,
+.jxBarRight a.jxTab:active span.jxTabContent {
+ background-position: -96px bottom;
+}
+
+/* Focus Active tab */
+.jxBarLeft a.jxTabActive:active,
+.jxBarRight a.jxTabActive:active {
+ background-position: -144px top;
+}
+
+.jxBarLeft a.jxTabActive:active span.jxTabContent,
+.jxBarRight a.jxTabActive:active span.jxTabContent {
+ background-position: -144px bottom;
+}
+
+/* Click Focused Tab */
+.jxBarLeft a.jxTabPressed:active,
+.jxBarRight a.jxTabPressed:active {
+ background-position: -120px top;
+}
+
+.jxBarLeft a.jxTabPressed:active span.jxTabContent,
+.jxBarRight a.jxTabPressed:active span.jxTabContent {
+ background-position: -120px bottom;
+}
+
+/* Menu Item focus style */
+a.jxMenuItem:active {
+ border: 1px dotted #75ADFF;
+ outline: expression(hideFocus='true');
+}
+
+
Modified: trunk/templates/mapserver/standard/themes/delicious/images/button.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/button_combo.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/button_multi.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/button_multi_disclose.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/dialog_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/flyout_chrome.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/menu_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/tab_bottom.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/tab_left.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/tab_right.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/tab_top.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/tree.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/tree_hover.png
===================================================================
(Binary files differ)
Modified: trunk/templates/mapserver/standard/themes/delicious/images/tree_vert_line.png
===================================================================
(Binary files differ)
Modified: trunk/widgets/OverviewMap.js
===================================================================
--- trunk/widgets/OverviewMap.js 2008-12-04 15:43:03 UTC (rev 1706)
+++ trunk/widgets/OverviewMap.js 2008-12-10 20:34:08 UTC (rev 1707)
@@ -71,10 +71,7 @@
jxl.addEvent('sizeChange', OpenLayers.Function.bind(this.sizeChanged, this));
}
- Fusion.addWidgetStyleSheet(widgetTag.location + 'OverviewMap/OverviewMap.css');
- this.oMapOptions = {
- theme: null
- }; //TODO: allow setting some mapOptions in AppDef
+ this.oMapOptions = {}; //TODO: allow setting some mapOptions in AppDef
//this.getMap().registerForEvent(Fusion.Event.MAP_LOADED, OpenLayers.Function.bind(this.mapWidgetLoaded, this));
},
More information about the fusion-commits
mailing list