0

I use a widget which provides Drag and Drop. Here is what my UiBinder looks like:

mainPanel = new FlowPanel();
dropPanel = new DropPanel(); 
dropLabel = new Label("Drop Image here!");
mainPanel.add(dropPanel);
mainPanel.add(dropLabel);
initWidget(mainPanel);

The dropPanel supports the following events:

dropPanel.addDragEnterHandler(new DragEnterHandler() {

  @Override
  public void onDragEnter(DragEnterEvent event) {
    event.stopPropagation();
    event.preventDefault();
    dropPanel.addStyleName(resources.css().active());
    dropLabel.removeStyleName(resources.css().hide());
    GWT.log("onDragEnter");
  }
});

dropPanel.addDragLeaveHandler(new DragLeaveHandler() {

  @Override
  public void onDragLeave(DragLeaveEvent event) {
    event.stopPropagation();
    event.preventDefault();
    dropPanel.removeStyleName(resources.css().active());
    dropLabel.addStyleName(resources.css().hide());
    GWT.log("onDragLeave");
  }
}); 

Here is the style I use:

.mainPanel {
    position: relative;
}

.active {
    border: 2pt solid green;
} 

.dropLabel {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto;
    width: 50%;
    height: 50%;
    text-align: center;
    vertical-align: middle;
    color: #ccc;
    font-size: 20pt;
    line-height: 14pt;
    font-weight: bold; 
    background-color: yellow;
}

.hide {
    display: none;
}

When I drag over the dropPanel the label becomes visible. When I drag something over the label inside the dropPanel the DragLeaveEvent is fired.

Is there some way to forward the DragEvents when I drag over the Label to the underlying dropPanel?

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Michael
  • 32,527
  • 49
  • 210
  • 370

0 Answers0