0
下降移动控件我正在写一个AdminTool中通过浏览器来改变基于GWT GUI。 我希望管理员使用拖放来创建和更改GUI。
为了实现我使用GWT-DND 3.3.0
我在AdminTool中一个工具栏,从中我可以拖动不同的对象DND。 工具栏中的每个对象都是一个纯文本的HTML小部件,其中包含文本。
我想更改小部件时,它应该从HTML小部件改为我喜欢使用的原始小部件。
问题&试图解决
此刻,我可以改变滴小部件,那么它抛出一个异常,“移动部件”没有从网页上删除。 “移动部件”仍然是dragable并显示“移动designe”
我认为出现这种情况,是因为拖动或Drophandler不知道移动部件,因为我改变了下降部件...
这里是代码:
dragController.addDragHandler(new DragHandler(){
public void onDragEnd(DragEndEvent event) {
...
}
public void onDragStart(DragStartEvent event) {
...
}
public void onPreviewDragEnd(DragEndEvent event)
throws VetoDragException {
final DragContext mycontent = event.getContext();
List<Widget> mywl = mycontent.selectedWidgets;
for(int i = 0; i < mywl.size(); i++)
{
String stemp = ((HTML)mywl.get(i)).getText();
if(stemp.contains("Container")&&!stemp.contains("SubContainer"))
{
FlowPanel mypanel = new FlowPanel();
HTML htmltemp = new HTML("Label");
htmltemp.setStyleName("edit-dndcontainer");
mypanel.add(htmltemp);
mypanel.setStyleName("edit-dndcontainer");
mywl.add(i, mypanel);
dragController.makeDraggable(mypanel);
mywl.get(i).removeFromParent();
mywl.remove(i+1);
mycontent.selectedWidgets = mywl;
}
else if(stemp.contains("Label"))
{
...
}
else
{
...
throw new VetoDragException();
}
}
}
public void onPreviewDragStart(DragStartEvent event)
throws VetoDragException
{
...
}
});
问题
- 是GWT-DND正确的lib使用这种行为,还是应该使用本机GWT的dnd?
- 如何在gwt-dnd上更改dnd-widget?
感谢您的帮助
我觉得小部件仍连接到其的DragController它在它的目的地被丢弃后也。尝试注销与DragController关联的DropController。 http://www.lewin.nu/sysinfo/manuals/com/allen_sauer/gwt/dnd/client/PickupDragController.html#unregisterDropController(com.allen_sauer.gwt.dnd.client.drop.DropController) – suprasad
它没有影响取消注册小部件,我也尝试在DragController上重置Cache()。但没有成功。我认为我使用GWT的本地dnd支持更快。所以我可以dnd数据,并从数据创建正确的小部件。 – i3luefire