Hi Alexander,
> Can you explain why do you need this? The child controls are internal
> parts of a widget and are for good reasons private class members.
Well, actually no objective reasons, but the overall approach looks
really neat due to following abilities it provides:
- it allows to separate widgets creation code & their logic, so that
important methods are not cluttered with defining non-functional &
helper widgets (like toolbars, containers etc...), defining their
properties and so on;
- it allows me not to care about disposing(deleting) all those private
members I'd have to define otherwise, (since _disposeChildControls
method does the job for me).
I'm thinking about patching (using qx.Class.patch) ui.core.Widget with
the similar functionality but without linking to appearance theme.
Thanks,
Oleksiy
>> But now I have to
>> patch the Modern theme (using qx.Theme.patch) or instantiate it just to
>> define the aliases... (since those cotrols I'm refering using ID are
>> simple qooxdoo widgets, like selectbox, button etc...). Btw, I tried
>> another hack:
> Patching the theme is one way. Another more cleaner way is to inherit
> from the appearance theme and to create an own appearance theme and
> adding the appearance IDs.
>
>> _createChildControlImpl: function(id) {
>> var control = null;
>>
>> switch(id) {
>> case 'mainpane':
>> var control = new qx.ui.splitpane.Pane('vertical');
>> control.setAppearance('splitpane'); # <- this is hack:)
>> this.add(control, {edge: 0});
>> break;
>>
>> case 'topframe':
>> var control = new qx.ui.embed.Iframe();
>> this._getChildControl('mainpane').add(control, 3);
>> break;
>>
>> case 'finderpane':
>> var control = new dbgui.ui.splitpane.Pane();
>> this._getChildControl('mainpane').add(control, 2);
>> break;
>>
>> case 'finder':
>> var control = new dbgui.ui.finder.Box();
>> this._getChildControl('finderpane').add(control);
>> break;
>> }
>>
>> setting appearance just after widget is created, but that didn't help
>> (still getting those annoying messages). So the only way of using this
>> sweet feature is to define appropriate aliases/appearances, correct?
> The "hack" you describe is not quite one. You *can* set the appearance
> in this way. However, in this specific case you do not need to - the
> "qx.ui.splitpane.Pane" widget has already the appearance "splitpane" by
> default.
>
> Those "annoying" messages you get are due your other child controls you
> create.
> Suppose you inherit from "qx.ui.core.Widget" which has the appearance id
> "widget" and you create a child control inside your class named
> "finderpane". This will lead to an appearance ID named
> "widget/finderpane" automatically. If you do not define this in your
> used appearance theme a "annoying" message is displayed.
>
> So yes, the only way to get rid off these messages is to create matching
> appearance IDs :)
>
> cheers,
> Alex
>
>
>
>> Alexander Back wrote:
>>> Hi Oleksiy,
>>>
>>> Oleksiy Golovko wrote:
>>>> Hi
>>>>
>>>> While researching qooxdoo source code I found quite nice approach of
>>>> creating widgets and easy access to them without creating ton of
>>>> private class members. I mean _getChildControl &
>>>> _createChildControlImpl methods , the approach really rocks! Although
>>>> I faced some strange behavior when started using it, here is the
>>>> messages I see in firebug:
>>>>
>>>> ----
>>>> 7846ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/finderpane
>>>> 7865ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/mainpane/splitter/knob
>>>> 7874ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/mainpane/splitter
>>>> 7883ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/mainpane
>>>> 7892ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/topframe
>>>> 7903ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/finder/sbAspect/atom/label
>>>> 7912ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/finder/sbAspect/atom
>>>> 7921ms qx.theme.manager.Appearance[k]: Missing appearance:
>>>> widget/finder/sbAspect/arrow
>>>> ----
>>> Every widget (and I suppose you develop some own widgets) has an
>>> appearance property and its value is used inside the appearance theme
>>> to style this widget.
>>> The messages you get are a feature to inform you about that some
>>> appearances are missing. These warnings are only outputted in the
>>> source version.
>>> See http://qooxdoo.org/documentation/0.8/ui_appearance for details to
>>> the appearance theme.
>>>
>>> Looking at the messages you are inheriting from "qx.core.Widget" and
>>> creating child controls "finderpane", "mainpane", "topframe" etc.
>>> The appearance IDs listed in the messages have to be part of your
>>> appearance theme, so the best way to go would be to create an own
>>> appearance theme. How to develop it is explained at
>>> http://qooxdoo.org/documentation/0.8/ui_custom_themes
>>>
>>> To overwrite the "appearance" property (default is "widget") to better
>>> organize your widgets inside the appearance theme you can simply add
>>>
>>> --snip--
>>> properties :
>>> {
>>> ...
>>> appearance :
>>> {
>>> init : "yourappearance"
>>> }
>>> }
>>> --snip--
>>>
>>> to your widget code and the resulting appearance ID would be e.g.
>>> "yourappearance/mainpane".
>>>
>>>> and I see that widgets rendered with errors...
>>>>
>>>> I didn't think that those IDs are connected to appearance somehow...
>>>> Is that a qooxdoo bug or feature? And how could I fix that (given
>>>> that I really like the method and want to use it)?
>>> As said, the messages are a feature to inform you the appearance IDs
>>> are missing. To fix it create an own appearance theme (inheriting from
>>> an existing one) and add your appearance IDs.
>>>
>>> Hope this helps :)
>>>
>>> cheers,
>>> Alex
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel