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

Height of VStacks in a HStack

$
0
0
SmartClient Version: v8.3p_2012-12-08/Pro Deployment (built 2012-12-08)

I have a number of VStacks in a HStack and layouts in the VStacks that can be dragged between the different VStacks.

My problem is when the height of a VStack gets above the initial height of the HStack, the height of the other VStacks remain the same and dont expand toghter with the HStack.

I have tried to add a ResizedHandler to the HStack and setting the height of the VStacks there, but that didn't work.

Test case to show the problem:
Code:

VLayout mainLayout = new VLayout();
mainLayout.setHeight(200);
mainLayout.setWidth(221);

final VStack vStack1 = new VStack(10);
vStack1.setWidth(100);
vStack1.setHeight100();
vStack1.setBackgroundColor("red");
vStack1.setCanAcceptDrop(true);
vStack1.setDropTypes("test");

final VStack vStack2 = new VStack(10);
vStack2.setWidth(100);
vStack2.setHeight100();
vStack2.setBackgroundColor("green");
vStack2.setCanAcceptDrop(true);
vStack2.setDropTypes("test");

final HStack hStack = new HStack();
hStack.setBorder("2px solid black");
hStack.addResizedHandler(new ResizedHandler() {
                       
        @Override
        public void onResized(ResizedEvent event) {
                System.out.println("RESIZED EVENT FIRED!");
               
                int maxHeight = 0;
                // Finds the height of the highest vStack
                for (Canvas member : hStack.getMembers()) {
                        maxHeight = Math.max(maxHeight, member.getHeight());
                }
                // Sets height of other vStacks if they are smaller
                for (Canvas member : hStack.getMembers()) {
                        if(member.getHeight() < maxHeight)
                        {
                                member.setHeight(maxHeight);
                                member.redraw();
                        }
                }
        }
});
               
Layout layout1 = new Layout();
layout1.setBackgroundColor("grey");
layout1.setWidth("90%");
layout1.setHeight(100);
layout1.setLayoutAlign(Alignment.CENTER);
layout1.setBorder("1px solid black");
layout1.setCanDragReposition(true);
layout1.setCanDrop(true);
layout1.setDragType("test");
               
Layout layout2 = new Layout();
layout2.setBackgroundColor("grey");
layout2.setWidth("90%");
layout2.setHeight(100);
layout2.setLayoutAlign(Alignment.CENTER);
layout2.setBorder("1px solid black");
layout2.setCanDragReposition(true);
layout2.setCanDrop(true);
layout2.setDragType("test");
               
Layout layout3 = new Layout();
layout3.setBackgroundColor("grey");
layout3.setWidth("90%");
layout3.setHeight(100);
layout3.setLayoutAlign(Alignment.CENTER);
layout3.setBorder("1px solid black");
layout3.setCanDragReposition(true);
layout3.setCanDrop(true);
layout3.setDragType("test");

Layout layout4 = new Layout();
layout4.setBackgroundColor("grey");
layout4.setWidth("90%");
layout4.setHeight(80);
layout4.setLayoutAlign(Alignment.CENTER);
layout4.setBorder("1px solid black");
layout4.setCanDragReposition(true);
layout4.setCanDrop(true);
layout4.setDragType("test");

vStack1.setMembers(layout1, layout2);
vStack2.setMembers(layout3, layout4);

hStack.setMembers(vStack1, vStack2);
               
mainLayout.addMember(hStack);

Is there any way for all the VStacks to always have the full height of the HStack?

I have added a picture that shows the problem in the test case.

/Futtegud

Attached Images
File Type: png VstackProblem.png (8.9 KB)

Viewing all articles
Browse latest Browse all 4756

Trending Articles