@Override
  protected Widget newWidget() {
    // clear all
    FlowPanel main = new FlowPanel();
    // add
    // main.add(newActionContainer(false));
    // build inner data
    DDPanel ddp = new DDPanel();
    main.add(ddp);
    panel = new FlowPanel();
    ddp.add(panel);
    controller = ddp;
    controller.addValueChangeHandler(
        new ValueChangeHandler<DragInformation>() {

          @Override
          public void onValueChange(ValueChangeEvent<DragInformation> event) {
            if (!isReadOnly()) {
              Bloc source = ((BlocClipboard) event.getValue().getSource()).getValue();
              Bloc dropTarget = ((BlocClipboard) event.getValue().getDropTarget()).getValue();
              removeItem(source);
              if (dropTarget != null) {
                addItem(indexOfItem(dropTarget), source);
              } else {
                addItem(0, source);
              }
              refreshWidget();
            }
          }
        });

    view = newMasterView();
    panel.add(view);
    // add
    main.add(newActionContainer(true));
    return main;
  }