Mam niestandardowy widget, który jest w rzeczywistości obraz, i chciałbym móc przeciągnąć go wewnątrz AbsolutePanel i uzyskać jego współrzędne za każdym razem. Chciałbym użyć nowego DND API z GWT 2.4, ale mam trudności z jego implementacją. Czy ktoś może zaproponować podstawowe kroki, które muszę podjąć?Przeciągnij i upuść w GWT 2.4
13
A
Odpowiedz
12
Nowe API DnD wprowadzone za pomocą GWT 2.4 obecnie nie obsługuje AbsolutePanel
(zobacz implementacje interfejsu HasAllDragAndDropHandlers
). Patrząc na implementację FocusPanel
nie powinno być zbyt trudno włączyć go dla innych paneli.
Oto krótki dowód pojęcia o tym, jak rozwiązać problem:
public void onModuleLoad() {
DragImage image = new DragImage();
image.setUrl(Resources.INSTANCE.someImage().getSafeUri());
final DropAbsolutePanel target = new DropAbsolutePanel();
target.getElement().getStyle().setBorderWidth(1.0, Unit.PX);
target.getElement().getStyle().setBorderStyle(BorderStyle.SOLID);
target.getElement().getStyle().setBorderColor("black");
target.setSize("200px", "200px");
// show drag over effect
target.addDragOverHandler(new DragOverHandler() {
@Override
public void onDragOver(DragOverEvent event) {
target.getElement().getStyle().setBackgroundColor("#ffa");
}
});
// clear drag over effect
target.addDragLeaveHandler(new DragLeaveHandler() {
@Override
public void onDragLeave(DragLeaveEvent event) {
target.getElement().getStyle().clearBackgroundColor();
}
});
// enable as drop target
target.addDropHandler(new DropHandler() {
@Override
public void onDrop(DropEvent event) {
event.preventDefault();
// not sure if the calculation is right, didn't test it really
int x = (event.getNativeEvent().getClientX() - target.getAbsoluteLeft()) + Window.getScrollLeft();
int y = (event.getNativeEvent().getClientY() - target.getAbsoluteTop()) + Window.getScrollTop();
target.getElement().getStyle().clearBackgroundColor();
Window.alert("x: " + x + ", y:" + y);
// add image with same URL as the dropped one to absolute panel at given coordinates
target.add(new Image(event.getData("text")), x, y);
}
});
RootPanel.get().add(image);
RootPanel.get().add(target);
}
I tu panel zwyczaj
public class DropAbsolutePanel extends AbsolutePanel implements HasDropHandlers, HasDragOverHandlers,
HasDragLeaveHandlers {
@Override
public HandlerRegistration addDropHandler(DropHandler handler) {
return addBitlessDomHandler(handler, DropEvent.getType());
}
@Override
public HandlerRegistration addDragOverHandler(DragOverHandler handler) {
return addBitlessDomHandler(handler, DragOverEvent.getType());
}
@Override
public HandlerRegistration addDragLeaveHandler(DragLeaveHandler handler) {
return addBitlessDomHandler(handler, DragLeaveEvent.getType());
}
}
i klasa zdjęcie:
public class DragImage extends Image {
public DragImage() {
super();
initDnD();
}
private void initDnD() {
// enables dragging if browser supports html5
getElement().setDraggable(Element.DRAGGABLE_TRUE);
addDragStartHandler(new DragStartHandler() {
@Override
public void onDragStart(DragStartEvent event) {
// attach image URL to drag data
event.setData("text", getUrl());
}
});
}
}
Powiązane problemy
- 1. JTable - przeciągnij i upuść
- 2. Przykład "przeciągnij i upuść"?
- 3. Przeciągnij i upuść w MobileSafari?
- 4. Efekt przeciągnij i upuść Trello
- 5. WPF HwndHost Przeciągnij i upuść
- 6. Przeciągnij i upuść niestandardowy obiekt
- 7. Przeciągnij i upuść wydarzenie javascript
- 8. Sterowanie WinForm przeciągnij i upuść
- 9. Przeciągnij i upuść plik tekstowy
- 10. Prosty kod "przeciągnij i upuść"
- 11. iOS (iPad) Przeciągnij i upuść w UISplitViewController
- 12. przeciągnij i upuść nie działa w firefox
- 13. przeciągnij i upuść w WinForm lub wpf
- 14. przeciągnij i upuść + zwyczaj rysowania w Androidzie
- 15. Przeciągnij i upuść przeciągnij i przewiń z JavaScriptem?
- 16. UITableView dotknij i przytrzymaj + przeciągnij i upuść
- 17. NSTableView i przeciągnij i upuść z Findera
- 18. Przeciągnij upuść z uchwytem
- 19. Przeciągnij i upuść jak Spy Winspector
- 20. Przeciągnij i upuść na kanwie mozilla
- 21. Furtka przeciągnij i upuść funkcjonalność dodawania obrazu
- 22. Przeciągnij i upuść z wyszukiwarki do WebView
- 23. Widok przeciągnij i upuść poza widokiem Recycler
- 24. Qt przeciągnij i upuść pomiędzy dwoma QListWidget
- 25. przeciągnij i upuść selenem webdriver na Java
- 26. Przeciągnij i upuść klatki krzyżowe użyj html5
- 27. Przeciągnij i upuść tekst na DIV
- 28. Przeciągnij i upuść między dwoma RecyclerView
- 29. Microsoft Edge html5 przeciągnij i upuść plik
- 30. html5 vs jquery przeciągnij i upuść
mogę widzisz, że dostajesz masywne punkty w tej sprawie ... Ładnie zrobione! :-) –
czy wypróbowałeś smartgwt? – caarlos0
no smartgwt, zacząłem używać go raz i nie, dziękuję :) Korzystam z tej strony przez długi czas, ale prawdę mówiąc nie znalazłem jeszcze czasu ani szybkości sprawdzenia, co oznaczają te punkty i gwiazdy ... –