I have an application with a number of views. The sequence I am following is:
- When the application starts it displays the "Login" view.
- When I login the "SelectPerson" view is displayed showing the selectable images of a number of people.
- When I select an image the "AwardOverview" view is displayed.
- I then select the Button to go back to the "SelectPerson" view which is displayed. However, the "Loading Award Overview, please wait ..." (a pop up in the "AwardOverview" view) message also appears.
This indicates that the "AwardOverview" view is also reloading in the background despite the line "rootPanel.remove(AwardOverview);". This slows the application down a lot as the "AwardOverview" view displays a large number of images.
My code is below.
How do I properly remove the "AwardOverview" view (once I have this information I will implement it for all views).
Regards,
Glyn
package org.AwardTracker.client;
/**
* The purpose of this package is to define the
* entry point classes onModuleLoad(). List each
* view below.
* If you add a view here then also update NavHandler.java.
*/
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class AwardTracker implements EntryPoint {
public void onModuleLoad() {
NavHandler nav = new NavHandler(RootPanel.get());
nav.setLogin(new LoginView(nav));
nav.setNewAccount(new CreateAccountView(nav));
nav.setUpdateAccount(new UpdateAccountView(nav));
nav.setSelectPerson(new SelectPersonView(nav));
nav.setAwardOverview(new AwardOverviewView(nav));
nav.setAwardGroup(new AwardGroupView(nav));
nav.setEditYouthMember(new EditYouthMemberView(nav));
nav.setEditAwards1(new EditAwardsView1(nav));
nav.setEditAwards2(new EditAwardsView2(nav));
nav.setEditAwards3(new EditAwardsView3(nav));
nav.setAccountUpdate(new AccountUpdateView(nav));
nav.setYouthMemberList(new YouthMemberListView(nav));
nav.setScoutAward(new ScoutAwardView(nav));
nav.setAwardStock(new AwardStockView(nav));
RootPanel.get().add(new LoginView(nav));
}
}
package org.AwardTracker.client;
/**
* The purpose of this package is to define the
* widgets that make up the Award Tracker views.
* If you add a view here also update AwardTracker.java.
*/
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
public class NavHandler {
private RootPanel rootPanel;
private Widget login;
private Widget createAccount;
private Widget updateAccount;
private Widget selectPerson;
private Widget awardOverview;
private Widget awardGroup;
private Widget editYouthMember;
private Widget editAwards1;
private Widget editAwards2;
private Widget editAwards3;
private Widget accountUpdate;
private Widget youthMemberList;
private Widget scoutAward;
private Widget awardStock;
public NavHandler(RootPanel rootPanel2) {
this.rootPanel = rootPanel2;
}
public void go(String code) {
rootPanel.clear();
RootPanel.get().clear();
login.removeFromParent();
createAccount.removeFromParent();
updateAccount.removeFromParent();
selectPerson.removeFromParent();
awardOverview.removeFromParent();
awardGroup.removeFromParent();
editYouthMember.removeFromParent();
editAwards1.removeFromParent();
editAwards2.removeFromParent();
editAwards3.removeFromParent();
accountUpdate.removeFromParent();
youthMemberList.removeFromParent();
scoutAward.removeFromParent();
awardStock.removeFromParent();
if (code.equalsIgnoreCase("Login")){
rootPanel.add(login);
}else if (code.equalsIgnoreCase("CreateAccount")){
rootPanel.add(createAccount);
}else if (code.equalsIgnoreCase("UpdateAccount")){
rootPanel.add(updateAccount);
}else if (code.equalsIgnoreCase("SelectPerson")){
rootPanel.add(selectPerson);
}else if (code.equalsIgnoreCase("AwardOverview")){
rootPanel.add(awardOverview);
}else if (code.equalsIgnoreCase("AwardGroup")){
rootPanel.add(awardGroup);
}else if (code.equalsIgnoreCase("EditYouthMember")){
rootPanel.add(editYouthMember);
}else if (code.equalsIgnoreCase("EditAwards1")){
rootPanel.add(editAwards1);
}else if (code.equalsIgnoreCase("EditAwards2")){
rootPanel.add(editAwards2);
}else if (code.equalsIgnoreCase("EditAwards3")){
rootPanel.add(editAwards3);
}else if (code.equalsIgnoreCase("AccountUpdate")){
rootPanel.add(accountUpdate);
}else if (code.equalsIgnoreCase("YouthMemberList")){
rootPanel.add(youthMemberList);
}else if (code.equalsIgnoreCase("ScoutAward")){
rootPanel.add(scoutAward);
}else if (code.equalsIgnoreCase("AwardStock")){
rootPanel.add(awardStock);
}
}
public void setLogin(Widget view) {
login = view;
}
public void setNewAccount(Widget view) {
createAccount = view;
}
public void setUpdateAccount(Widget view) {
updateAccount = view;
}
public void setSelectPerson(Widget view) {
selectPerson = view;
}
public void setAwardOverview(Widget view) {
awardOverview = view;
}
public void setAwardGroup(Widget view) {
awardGroup = view;
}
public void setEditYouthMember(Widget view) {
editYouthMember = view;
}
public void setEditAwards1(Widget view) {
editAwards1 = view;
}
public void setEditAwards2(Widget view) {
editAwards2 = view;
}
public void setEditAwards3(Widget view) {
editAwards3 = view;
}
public void setAccountUpdate(Widget view) {
accountUpdate = view;
}
public void setYouthMemberList(Widget view) {
youthMemberList = view;
}
public void setScoutAward(Widget view) {
scoutAward = view;
}
public void setAwardStock(Widget view) {
awardStock = view;
}
}
Button to return to "SelectPerson" view:
//Add each button to the horizontal panel.
btnSelectYM.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
navHandler2.go("SelectPerson");
}
});
btnSelectYM.setStyleName("gwt-PushButton-up");
btnSelectYM.setText("Select Youth Member");
btnSelectYM.setWidth("184px");
btnSelectYM.setHeight("40px");
horizontalPanel.add(btnSelectYM);