Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

Bug in TileLayout when adding to specific position

$
0
0
SmartClient Version: v10.0p_2015-04-03/LGPL Development Only (built 2015-04-03)
Browsers: at least IE11 and FF36

When adding a Tile to a TileLayout using .addTile(tile, index), the added Tile is drawn over the Tile, which is currently on the wanted index.

Please try it by the following example.
Behavior: TileLayout contains 2 fixed Tiles (first,last), which cannot be removed. "Add Tile" button adds new Tile as the last but one. "Remove Tile" removes the removeable tiles from the last one.
Note: when the Tile is removed, the Last is shown...
Code:

        //------------------------------------
        TileLayout tileLayout; //to be accessible from click handlers
        int tileCounter = 2; //there are 2 fixed tiles, which cannot be removed
       
        //Initializes the main layout with TileLayout and buttons to add/remove tiles.
        private void initTileLayoutTest() {
                Layout mainLayout = new VLayout();
                mainLayout.setWidth100();
                mainLayout.setHeight100();
                mainLayout.setMembersMargin(5);
               
                mainLayout.addMember(tileLayout = createTileLayout());
                mainLayout.addMember(new IButton("Add tile", new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                //add tile just before the last fixed tile
                                int index = tileCounter - 1;
                                tileLayout.addTile(createTile(("[" + index + "] removeable"), false), index);
                                tileCounter++;
                        }
                }));
                mainLayout.addMember(new IButton("Remove tile", new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                //remove the last removeable tile
                                int index = tileCounter - 2;
                                if (index <= 0) return;
                                tileLayout.removeTile(index);
                                tileCounter--;
                        }
                }));
                mainLayout.show();
        }
       
        //Creates tile layout containing two fixed (not removeable) tiles
        private TileLayout createTileLayout() {
                TileLayout tileLayout = new TileLayout();
                tileLayout.setWidth(500);
                tileLayout.setAutoHeight();
                //when set to false, even the fixed tiles are displayed one over another after init.
                //tileLayout.setAnimateTileChange(false);
                tileLayout.setOverflow(Overflow.VISIBLE);
                tileLayout.setLayoutPolicy(TileLayoutPolicy.FLOW);
               
                tileLayout.addTile(createTile("FIRST fixed", true));
                tileLayout.addTile(createTile("LAST fixed", true));
                return tileLayout;
        }
       

        //Tile represented by a Layout containing Label component
        private Layout createTile(final String aContent, final boolean isFixed) {
                return new HLayout() {{
                        setAutoWidth();
                        setDefaultHeight(20);
                        setPadding(2);
                        setBackgroundColor(isFixed ? "#20fb00" : "orange");
                        addMember(new Label(aContent) {{
                                setAutoWidth();
                                setHeight(20);
                                setWrap(false);
                        }});
                }};
        }
        //------------------------------------

And one hint - when you set the TileLayout property: setAnimateTileChange(false), even the two first fixed Tiles are drawn one over another...

I'd be glad for any hint.
Happy Easter :)

Viewing all articles
Browse latest Browse all 4756

Trending Articles