Hi Stefan,

do you add the TextFields to the Toolbar or to a Part?
I would recommend to add it to Parts (even when you only have one part)

I've tried the demobrowser's toolbar code in the playground and it works like
expected (at least for TextFields).
Please look at the attached code, maybe it gives you some help...

The parts that I've changed are:
* the instantiation of a TextFiled and the adding to the Part...
  like this e.g:
  <code>
    var textField3 = new qx.ui.form.TextField("3").set({alignY:"middle"});
    part1.add(textField3);
  </code>
* the additional 16-pixel icon-size selector (just to see how it looks with
  smaller icons...But this has nothing to do with the layout issue.


/Peter


On 2010-08-16 16:10 Stefan Andersson wrote:
> I wrote a while ago about toolbar add problems (2-3 weeks ago).
> 
> Here I have attached a screen dump!
> 
> Stefan
qx.Class.define("demobrowser.demo.widget.ToolBar",
{
  extend : qx.application.Standalone,

  members :
  {
    main: function()
    {
      this.base(arguments);

      // create a container for the main layout and set the main layout
      var mainContainer = new qx.ui.container.Composite(new 
qx.ui.layout.VBox(20));
      mainContainer.setPadding(20);

      // add the scroll container to the root
      this.getRoot().add(mainContainer, { edge: 0 } );

      ///////////////////////////////////////////////////////////////
      // Toolbar stuff
      ///////////////////////////////////////////////////////////////

      // create the toolbar
      toolbar = new qx.ui.toolbar.ToolBar();
      toolbar.setSpacing(5);
      mainContainer.add(toolbar);

      // create and add Part 1 to the toolbar
      var part1 = new qx.ui.toolbar.Part();
      var newButton = new qx.ui.toolbar.Button("New", 
"icon/22/actions/document-new.png");
      var copyButton = new qx.ui.toolbar.Button("Copy", 
"icon/22/actions/edit-copy.png");
      var cutButton = new qx.ui.toolbar.Button("Cut", 
"icon/22/actions/edit-cut.png");
      var pasteButton = new qx.ui.toolbar.Button("Paste", 
"icon/22/actions/edit-paste.png");
      part1.add(newButton);

      var textField = new qx.ui.form.TextField("one").set({alignY:"middle"});
      part1.add(textField);

      part1.add(new qx.ui.toolbar.Separator());
      part1.add(copyButton);

      var textField2 = new qx.ui.form.TextField().set({alignY:"middle"});
      part1.add(textField2);

      part1.add(cutButton);

      var textField3 = new qx.ui.form.TextField("3").set({alignY:"middle"});
      part1.add(textField3);

      part1.add(pasteButton);
      toolbar.add(part1);

      // create and add Part 2 to the toolbar
      var part2 = new qx.ui.toolbar.Part();
      var checkBtn = new qx.ui.toolbar.CheckBox("Toggle", 
"icon/22/actions/format-text-underline.png");
      part2.add(checkBtn);
      toolbar.add(part2);

      // create and add Part 3 to the toolbar
      var part3 = new qx.ui.toolbar.Part();
      var radioButton1 = new qx.ui.toolbar.RadioButton("Left", 
"icon/22/actions/format-justify-left.png");
      var radioButton2 = new qx.ui.toolbar.RadioButton("Center", 
"icon/22/actions/format-justify-center.png");
      var radioButton3 = new qx.ui.toolbar.RadioButton("Right", 
"icon/22/actions/format-justify-right.png");
      part3.add(radioButton1);
      part3.add(radioButton2);
      part3.add(radioButton3);
      toolbar.add(part3);

      // Manager for part 3 (Radio example)
      var radioGroup = new qx.ui.form.RadioGroup(radioButton1, radioButton2, 
radioButton3);
      radioGroup.setAllowEmptySelection(true);

      toolbar.addSpacer();
      
      // add a widget which signals that something has been removed
      var overflow = new qx.ui.toolbar.MenuButton("More...");
      toolbar.add(overflow);
      toolbar.setOverflowIndicator(overflow);      

      // create Help Button and add it to the toolbar      
      var helpButton = new qx.ui.toolbar.Button("Help", 
"icon/22/actions/help-contents.png");
      toolbar.add(helpButton);

      var buttons = [ newButton, copyButton, cutButton, pasteButton, checkBtn, 
radioButton1, radioButton2, radioButton3, helpButton ];

      // set priorities for overflow handling
      toolbar.setRemovePriority(part1, 4);
      toolbar.setRemovePriority(part3, 3);
      toolbar.setRemovePriority(part2, 2);
      
      // create overflow menu
      var overflowMenu = new qx.ui.menu.Menu();
      overflow.setMenu(overflowMenu);
      var newButton = new qx.ui.menu.Button("New", 
"icon/16/actions/document-new.png");
      var sep1 = new qx.ui.menu.Separator();
      var copyButton = new qx.ui.menu.Button("Copy", 
"icon/16/actions/edit-copy.png");
      var cutButton = new qx.ui.menu.Button("Cut", 
"icon/16/actions/edit-cut.png");
      var pasteButton = new qx.ui.menu.Button("Paste", 
"icon/16/actions/edit-paste.png");
      overflowMenu.add(newButton);
      overflowMenu.add(sep1);
      overflowMenu.add(copyButton);
      overflowMenu.add(cutButton);
      overflowMenu.add(pasteButton);
      
      var sep2 = new qx.ui.menu.Separator();
      var radioButton1 = new qx.ui.menu.RadioButton("Left");
      var radioButton2 = new qx.ui.menu.RadioButton("Center");
      var radioButton3 = new qx.ui.menu.RadioButton("Right");
      radioButton1.setIcon("icon/16/actions/format-justify-left.png");
      radioButton2.setIcon("icon/16/actions/format-justify-center.png");
      radioButton3.setIcon("icon/16/actions/format-justify-right.png");         
   
      overflowMenu.add(sep2);
      overflowMenu.add(radioButton1);
      overflowMenu.add(radioButton2);
      overflowMenu.add(radioButton3);

      // hide all menu items
      var menuItem = overflowMenu.getChildren();
      for (var i = 0; i < menuItem.length; i++) {
        menuItem[i].setVisibility("excluded");
      };
      
      var showHideHandler = function(item, visibility) {
        var items = [];
        if (item == part1) {
          items.push(newButton, sep1, copyButton, cutButton, pasteButton);
        } else if (item == part3) {
          items.push(sep2, radioButton1, radioButton2, radioButton3);
        }
        
        for (var i = 0; i < items.length; i++) {
          items[i].setVisibility(visibility)
        };
      }
      
      // handler for showind and hiding toobar items
      toolbar.addListener("showItem", function(e) {
        showHideHandler(e.getData(), "excluded");
      }, this);
      
      toolbar.addListener("hideItem", function(e) {
        showHideHandler(e.getData(), "visible");
      }, this);


      ///////////////////////////////////////////////////////////////
      // Control stuff
      ///////////////////////////////////////////////////////////////
      // Create and add the grid
      var controlGrid = new qx.ui.layout.Grid();
      controlGrid.setSpacing(10);
      var controlContainer = new qx.ui.container.Composite(controlGrid);
      mainContainer.add(controlContainer);


      //////////////////////// icon size stuff
      // create the buttons
      var size16Button = new qx.ui.form.RadioButton("16px");
      var size22Button = new qx.ui.form.RadioButton("22px");
      size22Button.setValue(true);
      var size32Button = new qx.ui.form.RadioButton("32px");
      var size48Button = new qx.ui.form.RadioButton("48px");

      // create the radio manager and add the buttons
      var sizeManager = new qx.ui.form.RadioGroup();
      sizeManager.add(size16Button, size22Button, size32Button, size48Button);

      // add the buttons to the grid
      controlContainer.add(new qx.ui.basic.Label("Icon Size:"), {row:0, 
column:0});
      controlContainer.add(size16Button, {row:0, column:1});
      controlContainer.add(size22Button, {row:0, column:2});
      controlContainer.add(size32Button, {row:0, column:3});
      controlContainer.add(size48Button, {row:0, column:4});

      // register the handler
      sizeManager.addListener("changeSelection", function(e)
      {
        var value = e.getData()[0];
        var button, size, url;
        for (var i=0; i<buttons.length; i++)
        {
          button = buttons[i];
          url = button.getIcon();

          if (value == size16Button) {
            size = 16;
          } else if (value == size22Button) {
            size = 22;
          } else if (value == size32Button) {
            size = 32;
          } else if (value == size48Button) {
            size = 48;
          }

          url = url.replace(/16|22|32|48/g, size);
          button.setIcon(url);
        }
      }, this);


      //////////////////////// Show stuff
      // create the buttons
      var showBothButton = new qx.ui.form.RadioButton("Label and Icon");
      showBothButton.setValue(true);
      var showIconButton = new qx.ui.form.RadioButton("Icon only");
      var showLabelButton = new qx.ui.form.RadioButton("Label only");

      // create the radio manager and add the buttons
      var showManager = new qx.ui.form.RadioGroup();
      showManager.add(showBothButton, showIconButton, showLabelButton);

      // add the buttons to the grid
      controlContainer.add(new qx.ui.basic.Label("Show:"), {row:1, column:0});
      controlContainer.add(showBothButton, {row:1, column:1});
      controlContainer.add(showIconButton, {row:1, column:2});
      controlContainer.add(showLabelButton, {row:1, column:3});

      // register the handler
      showManager.addListener("changeSelection", function(e)
      {
        if (e.getData()[0] == showBothButton) {
          toolbar.setShow("both");
        } else if (e.getData()[0] == showIconButton) {
          toolbar.setShow("icon");
        } else if (e.getData()[0] == showLabelButton) {
          toolbar.setShow("label");
        }
      }, this);
      
      //////////////////////// Overflow handling stuff
      // create the checkbox
      var enabledOverflowBox = new qx.ui.form.CheckBox("on");

      // add the buttons to the grid
      controlContainer.add(new qx.ui.basic.Label("Overflow handling:"), {row:2, 
column:0});
      controlContainer.add(enabledOverflowBox, {row:2, column:1});  
      
      enabledOverflowBox.bind("value", toolbar, "overflowHandling");
      enabledOverflowBox.bind("value", showManager, "enabled", {converter:
        function(data) {return !data;}
      });
    }
  }
});
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to