Almost all proposed changes made. I have the following problems:
1. overload layout of split pane buttons Do you have any ideas of how to solve this? I want to see both buttons. I have tried many ways. I have got it working with buttons size 5x the size I want. 2. clicking the button does not change the layout (minimize - maximize) I change the widths and heights of the components, but the layout does not change where the splitter moves to the right or left in minimized-maximized position. Some update. I have tried the flushGlobalQueues() but it does not seem to work. I would appreciate some more ideas from you Sebastian to save time. 3. when I try to drag the splitter the first time when it takes the focus I get an error message 593046:Failed to execute "_dispatchEvent()":Could not dispatch event of type "mousedown":this._style has no properties new since I implemented the buttons. 4. few bugs - resizing the window in one dimension while moving the splitter bar - splitter bar movements Here are the updates. Quite functional now. Kent Kent
left-divider.gif
Description: GIF image
QxSplitPane.js
Description: JavaScript source
restore-horiz-divider.gif
Description: GIF image
restore-vert-divider.gif
Description: GIF image
right-divider.gif
Description: GIF image
Index: theme.js =================================================================== RCS file: /cvsroot/qooxdoo/qooxdoo/source/themes/appearance/default/theme.js,v retrieving revision 1.4 diff -u -r1.4 theme.js --- theme.js 17 Feb 2006 20:42:45 -0000 1.4 +++ theme.js 21 Feb 2006 10:58:42 -0000 @@ -1994,3 +1994,221 @@ }); } }); + + +/* +--------------------------------------------------------------------------- + SPLITPANE +--------------------------------------------------------------------------- +*/ + +theme.registerAppearance("splitpane", +{ + setup : function() + { + this.bgcolor = new QxColorObject("threedface"); + }, + + initial : function(vWidget, vTheme) + { + return { + backgroundColor : this.bgcolor + }; + }, + + state : function(vWidget, vTheme, vStates) + { + var firstLevel = vWidget.getParent() instanceof QxSplitPane; + + var vReturn = { + border : firstLevel ? null : QxBorderObject.presets.thinInset + }; + + return vReturn; + } +}); + +theme.registerAppearance("splitpane-divider", +{ + initial : function(vWidget, vTheme) + { + return { + border : QxBorderObject.presets.outset + }; + } +}); + +theme.registerAppearance("splitpane-move-frame", +{ + initial : function(vWidget, vTheme) + { + return { + border : QxBorderObject.presets.shadow + }; + } +}); + +theme.registerAppearance("splitpane-button", +{ + setup : function() + { + this.bgcolor_default = new QxColorObject("buttonface"); + this.bgcolor_left = new QxColor("#FFF0C9"); + + this.border_pressed = QxBorderObject.presets.thinInset; + this.border_over = QxBorderObject.presets.thinOutset; + this.border_default = null; + + this.checked_background = "core/dotted_white.gif"; + }, + + initial : function(vWidget, vTheme) + { + return { + cursor : QxConst.CORE_DEFAULT //, +// spacing : 1, +// width : QxConst.CORE_AUTO, +// verticalChildrenAlign : QxConst.ALIGN_MIDDLE + }; + }, + + state : function(vWidget, vTheme, vStates) + { + var vReturn = + { +// backgroundColor : vStates.abandoned ? this.bgcolor_left : this.bgcolor_default, +// backgroundImage : vStates.checked && !vStates.over ? this.checked_background : null + }; + + if (vStates.pressed || vStates.checked || vStates.abandoned) { +// vReturn.border = this.border_pressed; + } else if (vStates.over) { +// vReturn.border = this.border_over; + } else { +// vReturn.border = this.border_default; + }; + + if (vStates.pressed || vStates.checked || vStates.abandoned) + { + vReturn.paddingTop = 0;//3; + vReturn.paddingRight = 0;//2; + vReturn.paddingBottom = 0;//1; + vReturn.paddingLeft = 0//4; + } + else if (vStates.over) + { + vReturn.paddingTop = vReturn.paddingBottom = 0;//2; + vReturn.paddingLeft = vReturn.paddingRight = 0;//3; + } + else + { + vReturn.paddingTop = vReturn.paddingBottom = 0;//3; + vReturn.paddingLeft = vReturn.paddingRight = 0;//4; + }; + + return vReturn; + } +});
up-divider.gif
Description: GIF image
down-divider.gif
Description: GIF image
Introduce QxSplitPane which splits a window or area into nested panes.