Search code examples
javagwtsmartgwt

SmartGWT: dynamically adding custom widget to VStack


I need some widgets that share the same code base, thus I introduced an abstract class providing these shared members and methods and created an implementation which adds additional functionality. but every time I wanted to add this to a VStack I got the following error:

java.lang.AssertionError: A widget that has an existing parent widget may not be added to the detach list

in order to verify if this is b/c of the class hierarchy I created the same in a method, but I'm still receiving the same error. the code below should describe what I want to achieve.

public class Test extends VStack {
  // constructor that adds button and a clickhandler for the button 
  // that will call addComplex()
  public void addComplex() {
    HStack stack = new HStack();
    stack.setHeight("22px");
    stack.addMember(new IButton("remove"));
    stack.addMember(new ListBox());
    DynamicForm form = new DynamicForm();
    form.setFields(new TextItem());
    stack.addMember(form);
    addMember(stack);
  }
}

when I just call

addMember(new Label(""));

I get no error.

furthermore, considering that the stuff in the method addComplex is in a separate class, and I add a new instance in the constructor of this Test-class, no error is thrown. the error is only thrown when I want to add the HStack via a button click

why can't I add this HStack to my VStack?

Update

it was b/c of the ListBox, which is a GWT component, and no SmartGWT component. this was the detail I missed.

can anybody tell me: why has a GWT widget an existing parent, and a SmartGWT widget does not? or is the error message just bogus?


Solution

  • the problem was that ListBox is from GWT, not SmartGWT. replacing it with the appropriate SmartGWT widget it works like a charm.