IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

Affichage item dans TabPanel


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut Affichage item dans TabPanel
    Je développe actuellement une application en GWT (+GXT).

    Cette dernière affiche un TabPanel au milieu d'un BorderLayout.

    Dans chaque item de mon TabPanel, j'affiche une page si cette dernière n'est pas déjà affichée (même titre).

    Quand j'affiche ma page (item) dans un RootLayoutPanel, j'ai toutes les infos désirées.

    Quand je l'affiche via mon TabPanel, rien ne s'affiche à l'intérieur de mon TabItem (tout est blanc).

    Mon controleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public class MyControler implements Presenter, ValueChangeHandler<String> {
     
    	private final EventBus eventBus;
    	private SerietvGinInjector injector;
    	private HasWidgets container;
    	private MyView vuePrincipale;
    	private MessageBox waitBox; 
     
    	public MyControler(MyGinInjector injector) {
     
    		this.injector = injector;
    		this.eventBus = injector.getEventBus();
    	}
     
     
    	public void go(HasWidgets container) {
     
    		this.container = container;
     
    		vuePrincipale = new MyView();
     
    		this.container.add(vuePrincipale);
     
    		if ((History.getToken() != null) && (History.getToken().equals(""))) {
    			History.newItem(Constante.MenuAccueil);
    		} else {
    			// Déclenchement de l'état initial de l'historique 
    			History.fireCurrentHistoryState();
    		}
    	}
     
    	public void onValueChange(ValueChangeEvent<String> event) {
     
    		String token = event.getValue();
    		if (token != null) {
    ...
    			// Si le token correspond à l'affichage d'une fiche
    			if (Constante.ConsultFiche.equals(token)) {
    				PresenterGTX presenter = new FichePresenter(injector, new FicheView(injector));
    				presenter.go(vuePrincipale);
    			}
    		}
    	}

    ma vue principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    public class MyView extends LayoutContainer {
     
    	private Viewport viewport;
     
    	private TitreWidget north;;
    	private MenuWidget west;
    	private TabPanel center;
     
    	public MyView() {
    		super();
    	}
     
    	protected void onRender(Element target, int index) {   
    		super.onRender(target, index);   
     
    		viewport = new Viewport();
    		viewport.setLayout(new BorderLayout());
    		viewport.setStyleAttribute("padding", "10px");
     
    		north = new TitreWidget();
     
    		west = new MenuWidget();
     
    		center = new TabPanel();
    		center.setMinTabWidth(115);
    		center.setResizeTabs(true);
    		center.setAnimScroll(true);
    		center.setTabScroll(true);
    		center.setCloseContextMenu(true);
     
    		BorderLayoutData northData = new BorderLayoutData(LayoutRegion.NORTH, 50);
    		northData.setCollapsible(true);
    		northData.setFloatable(true);
    		northData.setHideCollapseTool(true);
    		northData.setSplit(true);
    		northData.setMargins(new Margins(0, 0, 5, 0));
     
    		BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 150);
    		westData.setSplit(true);
    		westData.setCollapsible(true);
    		westData.setMargins(new Margins(0,5,0,0));
     
    		BorderLayoutData centerData = new BorderLayoutData(LayoutRegion.CENTER);
    		centerData.setMargins(new Margins(0,5,0,0));
     
    		viewport.add(north, northData);   
    		viewport.add(west, westData);   
    		viewport.add(center, centerData);   
     
    		add(viewport);
    	}
     
    	public boolean add(Widget widget) {
     
    		if (widget instanceof ListeTitreView) { 
    			addItem(widget, "Liste des titres");
    		} else {
    			if (widget instanceof FicheView) {
    				String titre = ((FicheView) widget).getTitre();
     
    				addItem(widget, "Fiche ".concat(titre));
    			} else {
    				super.add(widget);
    			}
    		}
     
    		return attachChildren;
    	}
     
    	private void addItem(Widget widget, String titre) {
     
    		String itemListe = null;
     
    		for(TabItem item : center.getItems()) {
    			if (titre.equals(item.getText())) {
    				itemListe = item.getId();
    				break;
    			}
    		}
     
    		if (null != itemListe) {
    			// L'item existe deja
    			center.getItemByItemId(itemListe).removeAll();
    			center.getItemByItemId(itemListe).add(widget);
     
    			center.setSelection(center.getItemByItemId(itemListe));
    		} else {
    			// Creation de l'item
    			MyTabItem tabItem = new MyTabItem(titre);
    			tabItem.add(widget);
     
    			center.add(tabItem);
    			center.setSelection(center.getItem(center.getItemCount()));
    		}
    	}
    }
    mon TabItem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class MyTabItem extends TabItem {
     
    	public MyTabItem(String title) {
    		super(title);
     
    		setBorders(false);
    		setScrollMode(Scroll.AUTO);
    		setText(title);
     
    		setLayout(new FitLayout());
    		setWidth("100%");
    		setClosable(true);
    	}
    }

    Mon presenter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public class FichePresenter implements PresenterGTX {
     
    	private final Display display;
    	private MyGinInjector injector;
     
    	public interface Display {
     
    		Widget asWidget();
    	}
     
    	public FichePresenter(MyGinInjector injector, Display view) {
    		this.injector = injector;
    		this.display = view;
    	}
     
    	public void go(LayoutContainer container) {
    	    container.add(display.asWidget());
    	}
    ma view FichView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public class FicheView extends LayoutContainer implements FichePresenter.Display {
     
    	/** Injecteur */
    	MyGinInjector injector;
     
    	/** Bus d'évènements */
    	private EventBus eventBus;
     
    	/** la fiche courante */
    	private Fiche fiche;
     
    	public FicheView(MyGinInjector injector) {
    		super();
     
    		this.injector = injector;
    		this.eventBus = injector.getEventBus();
     
    		fiche = Contexte.getFiche();
    	}
     
    	protected void onRender(Element parent, int index) {
    		super.onRender(parent, index);
     
    		setLayout(new AccordionLayout());
     
    		add(new SerieWidget(injector, fiche));
    		add(new ProductionWidget(injector, fiche));
    		add(new CastingWidget(injector, fiche));
    	}
     
    	public String getTitre() {
    		return serie.getTitre();
    	}
     
    	public Widget asWidget() {
    		return this;
    	}
    }

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 39
    Par défaut
    En fait, çà marche : c'est juste le temps de chargement qui est long

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage items dans listbox selon l'année
    Par BERRACHED SAID dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/05/2013, 14h13
  2. Réponses: 4
    Dernier message: 01/04/2009, 15h45
  3. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  4. Réponses: 9
    Dernier message: 02/02/2005, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo