Frage

Ich bin mit tagcloud_0.4.jar für die Verwendung von Tag Cloud in GWT. Nun, wenn ich in dem Tag-Cloud auf jeden Tag klicken, dann, wie kann ich dieses Ereignis behandeln oder wie kann ich RPC-Aufruf zu tun, wenn der Benutzer eines beliebigen Tag von Wolke aus?

Danke.

War es hilfreich?

Lösung

Hier ist ein Beispiel einer ClickEvent auf der Wolke zu fangen. Aber das ist eine Abhilfe, wie die Bibliothek ändern kann. Da die developper bieten nicht Ereignisse auf der Wolke verwalten weder auf Tags, dann ist dies vielleicht aus gutem Grund ...

verwenden also diesen Code auf eigene Gefahr. Beten Sie für keine Änderung der Struktur DOM des Widgets. Ich schlage vor, Sie die developper einige Verbesserungen auf seine Widgets zu fragen, wie solche Ereignisse zu verwalten.

    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());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top