12
votes

Ajout d'un événement de double clic dans la cellule de cellule - GWT

Je suis incapable de comprendre comment puis-je ajouter un événement de double clic à la cellule de la cellule.

est-il possible avec une cellule GWT ou non?

Y a-t-il une solution de contournement

merci ..

al

BTW, j'ai vu ce post mais il n'y a pas de réponse ... http://www.devcomments.com/adding-doubleclicks -et-oncontextmenu-to-celltable-at1066168.htm


0 commentaires

7 Réponses :


-1
votes

Si vous vouliez une cellule de texte qui vous permet de prendre en charge votre propre liste d'événements choisis, vous pouvez utiliser ceci: xxx

puis vous l'instanciez: xxx

puis remplace la méthode OnBrowReevent () pour traiter vos événements.


0 commentaires

5
votes

J'ai fabriqué quelque chose de différent qui correspond à mes besoins: xxx


3 commentaires

Une vérification de type événement plus élégante peut être effectuée au lieu de événement.getNatifEvent (). GetType (). Contient ("Cliquez sur") . Essayez événement.gettypeint (event.getNatifEvent (). GetType ()) == event.onclick , substituant event.onclick avec dénombrement correspondant à l'événement souhaité (testé avec GWT 2.4).


Cela ne prend pas en charge les événements de simples clics en parallèle = (


@Superkakes Vous avez raison, mais si vous utilisez une solution Boris, vous pourrez discriminer la single et double clic. Si vous souhaitez toujours utiliser ma solution, vous pouvez faire la discrimination simple et double-cliquer dans le test .Contains ("Cliquez sur") Test. Je n'ai pas essayé tu.



5
votes
    cellTable.addDomHandler(new DoubleClickHandler() {

        @Override
        public void onDoubleClick(DoubleClickEvent event) {
            Window.alert("That's it!");
        }
    }, DoubleClickEvent.getType());

2 commentaires

Vous ne pourrez pas accéder à des données de cellules ou de cellules à l'aide de cette manière, telles que l'indice d'indice de ligne ou de colonne.


Ce gestionnaire incendiera si un utilisateur clique sur une cellule, y compris un en-tête ou un espace vide qui n'est pas rempli de rangées. Je ne pense pas que ce soit une bonne idée.



1
votes

Parce que l'interface CELLPREVIEW ne captive pas de manière native les événements de double clic, vous devez ajouter une logique d'événement dans la méthode de la survolée OnCellPreview. Tout d'abord, vous penseriez que la meilleure façon de vérifier les différences de temps de clic. Cependant, il est beaucoup plus efficace et élégant d'utiliser une machine à états et de compter des clics. Ceci est plus robuste et vous permet de gérer plusieurs cas d'événement, tels que la navigation sur la souris, les simples et les deux clics. Le code est assez simple. Alors, profitez-en! XXX

Optimisation: N'hésitez pas à coller le comte, la minuterie et le délai comme des membres de la classe statique ou des membres mondiaux de réutiliser. Vérifiez également si la minuterie est NULL avant de faire une nouvelle instance. J'avais omis cela pour la simplicité. Contrairement à de nombreuses autres techniques de cette façon vous fournit toujours un accès facile et direct à l'événement cellulaire. La technique avec la surcharge de l'abstractcell fonctionne aussi bien, mais parfois, vous n'avez vraiment pas de cellules personnalisées ni de créer une cellule personnalisée pour gérer simplement des événements sur la cellule.


0 commentaires

2
votes
Integer row=0;// to hold row index
Integer column=0;// to hold column index 
_Grid.addCellPreviewHandler(new CellPreviewEvent.Handler<Model>() {
// this is to handle row id
        @Override
        public void onCellPreview(final CellPreviewEvent<Model> event) {

            if (BrowserEvents.CLICK.equalsIgnoreCase(event.getNativeEvent().getType())) {
                row = event.getIndex();
                column=event.getColumn();
            }

        }
    });

// because Doubleclick handler doesn't give row index or column index we will use addCellPreviewHandler to return row index or column index.
_Grid.addDomHandler(new DoubleClickHandler() {

        @Override
        public void onDoubleClick(final DoubleClickEvent event) {
            System.out.println(" You clicked row = " + row);
            System.out.println(" You clicked column = " + column);

        }
    }, DoubleClickEvent.getType());

1 commentaires

Dans notre cas, nous suivons déjà le contexte de sélection, ajouter le gestionnaire de cette façon fonctionne très bien et est agréable et non invasif. Et cela fonctionne avec la grille SélectionModels ainsi que surCellPreview.



1
votes

Pour les listes de cellules, ce code fonctionne bien:

  cellList.addDomHandler(new DoubleClickHandler() {
    @Override
    public void onDoubleClick(DoubleClickEvent event) {
      // do the stuff
    }
  }, DoubleClickEvent.getType());


0 commentaires

0
votes

laissant cela ici pour une référence future xxx

dblclickhikhandlers simplifie simplement les implémentations d'interface de mon choix xxx

Le truc est de sonner le " DBLCLICK 'Event.


0 commentaires