Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Height of VStacks in a HStack

    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 Files
    Last edited by futtegud; 26 Jul 2013, 06:38. Reason: typo in title
Working...
X