3 votes

Existe-t-il un `AcceptsOneWidget` qui fournit également `Resze` (autre que `ScrollPanel`) ?

J'ai un composite qui étend ResizeComposite et dispose d'un DockLayoutPanel comme racine. Je peux l'insérer directement dans RootLayoutPanel et cela fonctionne parce que DockLayoutPanel ProvidesResize .

Cependant, je souhaite utiliser les fonctionnalités MVP de GWT 2.2, et RootLayoutPanel ne peut pas être transmis à ActivityManager#setDiplay(AcceptsOneWidget) (puisqu'il s'agit d'un conteneur multi-widgets).

À première vue, ScrollPanel semble répondre à la double exigence de mise en œuvre AcceptsOneWidget et les deux ProvidesResize y RequiresResize .

Mais je constate que lorsque je place mon widget dans un fichier ScrollPanel J'ai l'impression qu'il a une "taille zéro", et je dois le dimensionner manuellement pour le voir, et j'ai du mal à savoir quelle taille lui donner. Je préférerais un panneau qui ne défile pas nécessairement.

3voto

Thomas Broyer Points 45499

Il y aura un SimpleLayoutPanel dans GWT 2.3, décrite comme :

A simple panel that {@link ProvidesResize} to its one child.

2voto

Riley Lark Points 11212

Vous pouvez ajouter ProvidesResize à n'importe quel widget en l'implémentant vous-même, ce qui est relativement simple - vous transmettez simplement toutes les notifications de redimensionnement que vous obtenez à chaque sous-enfant que RequiresResize .

Par ailleurs, si vous souhaitez que votre panneau occupe tout l'espace disponible, vous pouvez essayer de définir la largeur et la hauteur de l'élément ScrollPanel a "100%" .

Enfin, voici mon implémentation d'un LayoutPanel qui AcceptsOneWidget :

public class PanelForView extends LayoutPanel implements AcceptsOneWidget
{
    IsWidget myWidget = null;

    @Override
    public void setWidget(IsWidget w)
    {
        if (myWidget != w)
        {
            if (myWidget != null)
            {
                remove(myWidget);
            }

            if (w != null)
            {
                add(w);
            }

            myWidget = w;
        }
    }

}

Je l'utilise dans mon application commerciale depuis des mois sans aucun problème, et il est facile de changer de vue. N'hésitez pas à utiliser ce code vous-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X