2016-06-23 20 views
1

Ich habe versucht, eine Leinwand innerhalb einer Leinwand zu ziehen. die Ziehen-Ereignisse zu behandeln Ich warWie kann das Ziehen in Smart GWT eingeschränkt werden?

addDragRepositionStartHandler, addDragRepositionMoveHandler, addDragRepositionStopHandler

Handler verwenden.

Ich muss das Ziehen auf einige Bedingungen beschränken. Sagen wir, ich möchte das Ziehen beschränken, wenn wir event.getX() mehr als 500 in public void onDragRepositionMove(DragRepositionMoveEvent event) bekommen.

Ich versuchte event.cancel();, aber es erfüllt nicht den Zweck. Alles, was ich brauche, ist das Ziehen einzuschränken.

Jede Art von Hilfe wird geschätzt.

Antwort

0

Werfen Sie einen Blick auf this Vitrine Demo. Einige relevante Code aus dem Demo extrahiert:

DragPiece green = new DragPiece("pawn_green.png"){ 
     @Override 
     protected boolean setDragTracker() { 
      String html = Canvas.imgHTML("pieces/24/pawn_green.png", 24, 24); 
      EventHandler.setDragTracker(html); 
      return false; 
     } 
    }; 
    green.setID("greenPiece"); 
    green.setTitle("Green Piece"); 
    green.setLeft(150); 
    green.setTop(50); 


    final Label label = new Label("Drop Here"); 
    label.setLeft(250); 
    label.setTop(50); 
    label.setShowEdges(true); 
    label.setAlign(Alignment.CENTER); 
    label.setCanAcceptDrop(true); 
    label.addDropOverHandler(new DropOverHandler() { 
     public void onDropOver(DropOverEvent event) { 
      label.setBackgroundColor("#FFFF88");    
     } 
    }); 

    label.addDropOutHandler(new DropOutHandler() { 
     public void onDropOut(DropOutEvent event) { 
      label.setBackgroundColor("#ffffff"); 
     }    
    }); 

    label.addDropHandler(new DropHandler() { 
     public void onDrop(DropEvent event) { 
      Canvas target = EventHandler.getDragTarget(); 
      SC.say("You dropped the " + target.getID());     
     }    
    }); 

Einige Anmerkungen zu diesem Code:

  1. Beachten Sie, wie ein Etikett verwendet wird, um die Drop-Bereich zu definieren, aber man konnte andere Canvas Objekte zu diesem Zweck verwenden.
  2. Die addDropOverHandler, addDropOutHandler und addDropHandler Methoden können Sie die erforderlichen Handler auf diese Label oder Canvas Objekt hinzufügen, um die gewünschten Ergebnisse zu erzielen.
  3. DragPiece ist nur eine Unterklasse von Img, die setCanDragReposition(true) und setCanDrop(true) hat, so dass das Element ziehbar ist.