}
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
constraints = new ArrayList<ParentConstraints>();
CompositeAdapter rootAdapter = (CompositeAdapter) WidgetAdapter.getWidgetAdapter(root);
for (Component child : selection) {
WidgetAdapter adapter = WidgetAdapter.getWidgetAdapter(child);
CompositeAdapter parentAdapter = (CompositeAdapter) adapter.getParentAdapter();
ParentConstraints pc = new ParentConstraints();
pc.parent = parentAdapter.getWidget();
pc.constraints = parentAdapter.getChildConstraints(child);
pc.child = child;
constraints.add(pc);
boolean success = parentAdapter.removeChild(child);
parentAdapter.doLayout();
parentAdapter.getWidget().validate();
if (success){
parentAdapter.setDirty(true);
adapter.addNotify();
WidgetEvent we = new WidgetEvent(parentAdapter, adapter);
for(IWidgetListener listener:ExtensionRegistry.getWidgetListeners()){
listener.widgetRemoved(we);
}