Как обрабатывать перетаскивание гиперссылки в GWT - PullRequest
0 голосов
/ 30 декабря 2011

Я хочу обработать перетаскивание гиперссылок в моем приложении. Гиперссылка может быть откуда угодно, поэтому я не могу сделать это setDragable(true) и setData("link", "the URL"), чтобы пометить ее.

Очень похожим сценарием будет поиск картинок Google по картинке, где вы можете перетащить ссылку изображения в окно поиска.

Пример кода,

Label lblDropLink = new Label("Drop a link here");
lblDropLink.addDragOverHandler(new DragOverHandler() {

    @Override
    public void onDragOver(DragOverEvent event) {
        lblDropLink.setText("Drop here to add the link.");
        lblDropLink.setStyleName("dragOverFade");
    }
});
lblDropLink.addDropHandler(new DropHandler() {

    @Override
    public void onDrop(DropEvent event) {
        event.preventDefault();

        // QUESTION: how to get the link, and even its text?
    }
});

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 января 2012

При удалении ссылки вы можете получить только URL-адрес!

Вы можете получить его, вызвав метод event.getData(format).

format может быть "text" или "url" (см. dom-datatransfer-getdata ). При тестировании «text» и «url» всегда дают один и тот же результат.

Итак, какой код вам нужен в "// ВОПРОС: как получить ссылку и даже ее текст?" является одним из двух

  • event.getData ( "Текст")
  • event.getData ( "URL")

Вот небольшой пример прграмма:

    final Label lblDropLink = new Label(defaultText);
    lblDropLink.addDragOverHandler(new DragOverHandler() {

        @Override
        public void onDragOver(DragOverEvent event) {
            lblDropLink.setText(dragOverText);
        }
    });

    lblDropLink.addDropHandler(new DropHandler() {

        @Override
        public void onDrop(DropEvent event) {
            event.preventDefault();

            RootPanel.get().add(new Label("Dropped source formated with \"text\": " + event.getData("text")));
            RootPanel.get().add(new Label("Dropped source formated with \"url\":  " + event.getData("url")));
        }
    });

    RootPanel.get().add(lblDropLink);
}

Это должно быть все ...

0 голосов
/ 02 января 2012

Есть функция с именем getSource(). Используйте его для приведения источника перетаскиваемого объекта и получения свойства ссылки исходного объекта в событии onDrop.

Пример:

 public void onDrop(DropEvent event) {
     event.preventDefault();
     Link link = (Link)event.getSource(); 
 }

Ссылка - перетаскиваемый объект. Затем вы можете позвонить Link.getLink() или как угодно, чтобы использовать значение ссылки.

Hpope вы получите понятие:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...