mardi 27 septembre 2011

DynamicForm + CanvasItem (2 IButton)

Même si on peut jouer avec le setStartRow et setEndRow il n'est pas toujours très pratique de positionner des boutons dans un formulaire comme on le désire.
 Dans certains cas je n'utilise pas de ButtonItem mais plutôt un CanvasItem qui va inclure un HLayout contenant lui même des boutons et des LayoutSpacer pour assurer leur centrage, on peut éventuellement fixer la largeur de ceux-ci :

public class ValiderAnnulerItem extends CanvasItem{

    private MyDialogButton btnValidate ;
    private MyDialogButton btnCancel ;
   
    public MyDialogButton getBtnValidate() {
        return btnValidate;
    }
    public void setBtnValider(MyDialogButton btnValidate) {
        this.btnValidate = btnValidate;
    }
    public MyDialogButton getBtnAnnuler() {
        return btnCancel;
    }
    public void setBtnAnnuler(MyDialogButton btnCancel) {
        this.btnCancel = btnCancel;
    }
   
    HLayout lesBoutons = new HLayout();
    public ValiderAnnulerItem(){
        this.setTitle("");
    }
   
    public void initialize(){
        lesBoutons.setHeight(btnValidate.getHeight() +5);
        lesBoutons.addMember(new LayoutSpacer());
        lesBoutons.addMember(btnValidate);
        lesBoutons.addMember(new LayoutSpacer());
        lesBoutons.addMember(btnCancel);
        lesBoutons.addMember(new LayoutSpacer());
        this.setCanvas(lesBoutons);
    }
}

A l'utilisation:
ValiderAnnulerItem canvasButtons = new ValiderAnnulerItem();
        canvasButtons.setBtnValider(btnValidate);
        canvasButtons.setBtnAnnuler(btnCancel);
        canvasButtons.initialize();
..............       
          
        f.setItems(...........,canvasButtons);


Even if we can position ButtonItem in a DynamicForm with the setStartRow and setEndRow, it's not always very practical to get the appearance we like to obtain.
So sometime I use in place a CanvasItem subclass with  IButton subclass (which fire business events via the SimpleEventBus). In this case we can use a normal Hlayout (we could use a Vlayout depending of a property...) to setup the arrangement we need. I use LayoutSpacer with or without setting their width to center the buttons.

Aucun commentaire:

Enregistrer un commentaire

It's your turn / Exprimez vous
What do you think, what would you like to be exposed, on which topic you don't agree....
Qu'en pensez vous, quels sujets aimeriez vous voir traités, sur quels point n'êtes vous pas d'accord....