package com.zenika.demo.mobile.gwt.client; import java.util.List; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import com.zenika.demo.mobile.gwt.client.handler.ConferenceClickHandler; import com.zenika.demo.mobile.gwt.client.handler.ExpertClickHandler; import com.zenika.demo.mobile.gwt.client.handler.FormationClickHandler; import com.zenika.demo.mobile.gwt.client.widget.Row; import com.zenika.demo.mobile.gwt.client.widget.RowList; import com.zenika.demo.mobile.gwt.shared.Conference; import com.zenika.demo.mobile.gwt.shared.Expert; import com.zenika.demo.mobile.gwt.shared.Formation; public class ZenikaMobile implements EntryPoint { ZenikaDataServiceAsync dataService = GWT.create(ZenikaDataService.class); @Override public void onModuleLoad() { initialize(); } private void initialize() { initializeConferences(); initializeFormations(); initializeExperts(); } private void initializeExperts() { dataService.getAllExperts(new AsyncCallback<List<Expert>>() { @Override public void onSuccess(List<Expert> result) { fillExperts(result); } @Override public void onFailure(Throwable caught) { Window.alert("Impossible de récupérer la liste des experts"); } }); } protected void fillExperts(List<Expert> result) { RootPanel expertPanel = RootPanel.get("expertres"); expertPanel.clear(); if (result == null || result.size() == 0) { expertPanel.add(new Label("Aucun expert correspondant")); } else { RowList list = new RowList(); Row row; Anchor a; for (Expert e : result) { row = new Row(); row.addStyleName("arrow"); a = new Anchor(e.getName()); a.setHref("#expertdetail"); row.add(a); row.addClickHandler(new ExpertClickHandler(e)); list.add(row); } expertPanel.add(list); } } private void initializeFormations() { dataService.getAllFormations(new AsyncCallback<List<Formation>>() { @Override public void onSuccess(List<Formation> result) { fillFormations(result); } @Override public void onFailure(Throwable caught) { } }); } protected void fillFormations(List<Formation> result) { RootPanel formationPanel = RootPanel.get("formationres"); formationPanel.clear(); if (result == null || result.size() == 0) { formationPanel.add(new Label("Aucune formation correspondante")); } else { RowList list = new RowList(); Row row; Anchor a; for (Formation f : result) { row = new Row(); row.addStyleName("arrow"); a = new Anchor(f.getTitle()); a.setHref("#formationdetail"); row.add(a); row.addClickHandler(new FormationClickHandler(f)); list.add(row); } formationPanel.add(list); } } private void initializeConferences() { dataService.getAllConferences(new AsyncCallback<List<Conference>>() { @Override public void onSuccess(List<Conference> result) { fillConferences(result); } @Override public void onFailure(Throwable caught) { } }); } protected void fillConferences(List<Conference> result) { RootPanel conferencesAVenirPanel = RootPanel.get("conferencesavenirres"); conferencesAVenirPanel.clear(); RootPanel conferencesPasseesPanel = RootPanel.get("conferencesprecres"); conferencesPasseesPanel.clear(); if (result == null || result.size() == 0) { conferencesAVenirPanel.add(new Label("Aucune formation correspondante")); conferencesPasseesPanel.add(new Label("Aucune formation correspondante")); } else { RowList aVenirList = new RowList(); RowList passeesList = new RowList(); Row row; Anchor a; for (Conference c : result) { row = new Row(); row.addStyleName("arrow"); a = new Anchor(c.getTitle()); a.setHref("#conferencedetail"); row.add(a); row.addClickHandler(new ConferenceClickHandler(c)); if (c.getEnded()) { passeesList.add(row); } else { aVenirList.add(row); } } if (aVenirList.getWidgetCount() == 0) { conferencesAVenirPanel.add(new Label("Aucune formation correspondante")); } else { conferencesAVenirPanel.add(aVenirList); } if (passeesList.getWidgetCount() == 0) { conferencesPasseesPanel.add(new Label("Aucune formation correspondante")); } else { conferencesPasseesPanel.add(passeesList); } } } }