Hi,

Here is what I am using in my project:

first, define in your project the class ButtonGroupBox.js (source are
bellow - adjust the package name) which is highly inspired from
CheckGroupBox.js. this is why I left original notice.

then, add the following block to Appearance.js (into appearances {} object)
of your project:

*        "button-groupbox" : "groupbox",
        "button-groupbox/legend" : {
            alias : "button",
            include : "button"
        }*

======

*ButtonGroupBox.js*:

/*******************************************************************************
 *
 * qooxdoo - the new era of web development
 *
 * http://qooxdoo.org
 *
 * Copyright: 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de
 *
 * License: LGPL: http://www.gnu.org/licenses/lgpl.html EPL:
 * http://www.eclipse.org/org/documents/epl-v10.php See the LICENSE file in
the
 * project's top-level directory for details.
 *
 * Authors: Sebastian Werner (wpbasti) Andreas Ecker (ecker) Martin
Wittemann
 * (martinwittemann)
 *
 ******************************************************************************/


/**
 * A group box, which has a button as a legend.
 * It is highly inspired from qx.ui.groupbox.CheckGroupBox.js
 *
 * Authors: Aiman Sawan
 *
 * @childControl legend {qx.ui.form.Button} button
 */

qx.Class.define("butor.control.ButtonGroupBox", {
    extend : qx.ui.groupbox.GroupBox,
    implement : [qx.ui.form.IExecutable, qx.ui.form.IModel],
    include : [qx.ui.form.MModelProperty],

    properties : {
        // overridden
        appearance : {
            refine : true,
            init : "button-groupbox"
        }
    },

    events : {
        /** Fired if the {@link #execute} method is invoked. */
        "execute" : "qx.event.type.Event"
    },

    members : {
        /*
         *
---------------------------------------------------------------------------
         * WIDGET API
         *
---------------------------------------------------------------------------
         */

        // overridden
        _createChildControlImpl : function(id, hash) {
            var control;

            switch (id) {
                case "legend" :
                    control = new qx.ui.form.Button();
                    control.setLabel("");
                    control.setAllowGrowX(false);
                    control.addListener("resize",
                            this._repositionFrame, this);
                    control.addListener("execute", this._onExecute,
                            this);

                    this._add(control, {
                        left : 0
                    });
            }

            return control || this.base(arguments, id);
        },

        /*
         *
---------------------------------------------------------------------------
         * EVENT LISTENERS
         *
---------------------------------------------------------------------------
         */

        /**
         * Event listener for execute event of checkbox.
         *
         * @param e
         *            {qx.event.type.Event} Event which holds the
         *            current status
         */
        _onExecute : function(e) {
            this.fireEvent("execute");
        },

        /*
         *
---------------------------------------------------------------------------
         * REDIRECTIONS TO LEGEND (CHECKBOX COMPATIBILITY MODE)
         *
---------------------------------------------------------------------------
         */

        // interface implementation
        execute : function() {
            this.getChildControl("legend").execute();
        },

        // interface implementation
        setCommand : function(command) {
            this.getChildControl("legend").setCommand(command);
        },

        // interface implementation
        getCommand : function() {
            return this.getChildControl("legend").getCommand();
        },

        /**
         * The label of the groupbox.
         *
         * @return {String}
         */
        getLabel : function() {
            return this.getChildControl("legend").getLabel();
        },

        /**
         * Configures the label of the groupbox.
         *
         * @param value
         *            {Boolean} <code>true</code> when enabled.
         */
        setLabel : function(label) {
            this.getChildControl("legend").setLabel(label);
        },

        /**
         * The icon of the groupbox.
         *
         * @return {String}
         */
        getIcon : function() {
            return this.getChildControl("legend").getIcon();
        },

        /**
         * Configures the icon of the groupbox.
         *
         * @param icon
         *            {String} <code>true</code> when enabled.
         */
        setIcon : function(icon) {
            this.getChildControl("legend").setIcon(icon);
        }
    }
});

============

usage:
...
var userInfoGB = new *butor.control.ButtonGroupBox*(this.tr('Preview >>'));
userInfoGB.setLayout(new qx.ui.layout.VBox(5));
userInfoGB.add(...)
userInfoGB.addListener('execute', this.__togglePreview, this);
...

======

A+

On Mon, Dec 19, 2011 at 5:59 PM, Simon White <
[email protected]> wrote:

> Hi
>
> I have been trying to modify the GroupBox so that instead of an Atom for
> the legend is has a button that you can click to execute some code.
> Does anyone have a working example they could share?
>
> Thanks,
> Simon
>
>
>
>
> ------------------------------------------------------------------------------
> Write once. Port to many.
> Get the SDK and tools to simplify cross-platform app development. Create
> new or port existing apps to sell to consumers worldwide. Explore the
> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
> http://p.sf.net/sfu/intel-appdev
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>



-- 
<!--
Aiman Sawan
http://www.butor.com/
It's simple to make things. It's hard to make things simple.
 -->
------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to