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

Attachment: left-divider.gif
Description: GIF image

Attachment: QxSplitPane.js
Description: JavaScript source

Attachment: restore-horiz-divider.gif
Description: GIF image

Attachment: restore-vert-divider.gif
Description: GIF image

Attachment: 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;
+  }
+});

Attachment: up-divider.gif
Description: GIF image

Attachment: down-divider.gif
Description: GIF image

Title: qooxdoo demo

Introduce QxSplitPane which splits a window or area into nested panes.

Reply via email to