On 5/26/10 1:57 AM, MartinWittemann wrote:
> Hi Greg,
>
>
> Greg Beaver wrote:
>   
>> All in all, a very frustrating experience.  I've been working on this
>> for 3 days now with absolutely no luck getting it to display a stupid
>> selectbox or list properly :).
>>
>>     
> I can imagine that this is frustrating. What kind of documentation could we
> add to get that time down?
>   
I think the best way would be to add a super-minimal example custom
widget that adds a few standard child controls, and the appearance theme
that controls its appearance.  For instance, here is a stripped down
version of my control (all events removed etc.):

qx.Class.define("example.widgets.ProgramInfo", {
  extend: qx.ui.core.Widget,

  properties :
  {
    appearance :
    {
      refine : true,
      init : "programinfo"
    }
  },

  construct: function()
  {
    this.base(arguments);
    this._createChildControl("composerpiece");
    this._createChildControl("movements");
    this._createChildControl("erasebutton");
    this._setLayout(new qx.ui.layout.HBox(5));
  },
  members: {
    _createChildControlImpl: function(id)
    {
      var control;
      if (id == "composer") {
        control = new qx.ui.form.SelectBox();
      } else if (id == "composerpiece") {
        control = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));
        control.add(this._createChildControl("composer"));
        control.add(this._createChildControl("piece"));
        control.setAppearance("programinfo/composerpiece");
        this._add(control, {flex: 2});
      } else if (id == "erasebutton") {
        control = new qx.ui.form.Button;
        this._add(control);
        control.setAppearance("programinfo/erasebutton");
      } else if (id == "piece") {
        control = new qx.ui.form.SelectBox();
      } else if (id == "movements") {
        control = new qx.ui.form.List();
        control.setAppearance("programinfo/movements");
        this._add(control, {flex:2});
      }
      return control || this.base(arguments, id);
    }
  }
});

/* ************************************************************************

   Copyright:

   License:

   Authors:

#asset (example/Oxygen/16/actions/edit-delete.png)
************************************************************************ */

qx.Theme.define("example.theme.Appearance",
{
  extend : qx.theme.modern.Appearance,

  appearances :
  {
    "programinfo" : "widget",
    "programinfo/composerpiece" : "widget",
    "programinfo/piece" : "selectbox",
    "programinfo/composer" : "selectbox",
    "programinfo/movements" : "list",
    "programinfo/erasebutton" :
    {
      alias : "button",
      include : "button",

      style : function(states)
      {
        return {
          icon : "example/Oxygen/16/actions/edit-delete.png",
          padding : 2,
          marginLeft : 1
        };
      }
    }
  }
});

One other note: I couldn't figure out how to make it grab the built-in
qx standard icon, so I just copied it over to my app, but if there is a
way to show this, that would also clarify the example.
> Greg Beaver wrote:
>   
>> This sentence: " For every child control a selector is generated which
>> starts with the first widget which is not a child control itself"
>> doesn't make any sense.  Is the first widget the custom widget?  Is it
>> the top-level child control?
>>
>>     
> I'm quite sure that it is your custom widget in your case. It depends on the
> structure of your composed widget but usually the custom widget uses child
> controls which makes the custom widget the first non child control widget.
>   
I may edit the docs to make this clearer, I've been tweaking grammar
occasionally in the docs here and there.

Thanks,
Greg

------------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to