Как обрабатывать событие Click или любое другое событие в GWT Cloud? - PullRequest
0 голосов
/ 02 декабря 2010

Я использую tagcloud_0.4.jar для использования Облака тегов в GWT.Теперь, когда я нажимаю на любой тег в облаке тегов, то как я могу обработать это событие или как сделать вызов RPC, когда пользователь выбирает любой тег из облака?

Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2011

Вот пример, чтобы поймать ClickEvent в облаке.Но это обходной путь, поскольку библиотека может измениться.Поскольку разработчик не предлагает управлять событиями в облаке и в тегах, это, возможно, по уважительной причине ...

Поэтому используйте этот код на свой страх и риск.Молитесь об отсутствии изменений в структуре DOM виджета.Я предлагаю вам спросить разработчика о некоторых улучшениях в его виджетах, таких как управление такими событиями.

    final TagCloud cloud = new TagCloud();

    cloud.addWord(new WordTag("AAA"));
    cloud.addWord(new WordTag("AAA"));
    cloud.addWord(new WordTag("BBB"));
    cloud.addWord(new WordTag("CCC"));
    cloud.addWord(new WordTag("CCC"));
    cloud.addWord(new WordTag("CCC"));

    cloud.addDomHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            // Prevent the click from the tag to be executed
            event.preventDefault();

            Element e;
            // For each tag present in the cloud, look for the one that is triggered
            for (int i = 0; i < cloud.getTags().size(); ++i) {
                // Gets the element in the cloud, this really is the unsafe part of the code
                // if the developer change the dom of its widget
                e = DOM.getChild(DOM.getChild(cloud.getElement(), 0), i);
                // Is the current element targeted by the event?
                if (event.getClientX() >= e.getOffsetLeft() && event.getClientY() >= e.getOffsetTop()
                        && event.getClientX() <= e.getOffsetLeft() + e.getOffsetWidth()
                        && event.getClientY() <= e.getOffsetTop() + e.getOffsetHeight()) {
                    // Gets the abstract tag
                    Tag t = cloud.getTags().get(i);
                    // Gets tag descendant
                    if (t instanceof WordTag) {
                        // Do what you want with your WordTag, maybe an RPC call
                    } else if (t instanceof ImageTag) {
                        // Do what you want with your ImageTag, maybe an RPC call
                    }

                    break;
                }
            }
        }
    }, ClickEvent.getType());
...