Java tutorial
/** * MVPGettingStarted Application. * * Copyright 2011 Harmonic-Pharma * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * See http://www.harmonic-pharma.com/ for more information * about this app. */ package com.linkcorp.mvp.client; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.HasWidgets; import com.linkcorp.mvp.client.event.AddConctactEventHandler; import com.linkcorp.mvp.client.event.AddContactEvent; import com.linkcorp.mvp.client.event.UpdatedContactEvent; import com.linkcorp.mvp.client.event.UpdatedContactEventHandler; import com.linkcorp.mvp.client.event.EditContactEvent; import com.linkcorp.mvp.client.event.EditContactEventHandler; import com.linkcorp.mvp.client.presenter.ContactsPresenter; import com.linkcorp.mvp.client.presenter.EditContactPresenter; import com.linkcorp.mvp.client.presenter.Presenter; import com.linkcorp.mvp.client.service.ContactServiceAsync; import com.linkcorp.mvp.client.view.ContactsView; import com.linkcorp.mvp.client.view.EditContactView; import com.linkcorp.mvp.shared.ContactDTO; /** * @author Nelson Lionel KEMINSE * 18 juil. 2011 19:10:19 */ public class AppController implements Presenter, ValueChangeHandler<String> { private final HandlerManager eventBus; private final ContactServiceAsync rpcService; private HasWidgets container; private ContactDTO contact; public AppController(ContactServiceAsync rpcService, HandlerManager eventBus) { this.rpcService = rpcService; this.eventBus = eventBus; bind(); } @Override public void go(final HasWidgets container) { this.container = container; if ("".equals(History.getToken())) { History.newItem("list"); } else { History.fireCurrentHistoryState(); } } @Override public void bind() { History.addValueChangeHandler(this); this.eventBus.addHandler(AddContactEvent.TYPE, new AddConctactEventHandler() { @Override public void onAddContactEvent(AddContactEvent event) { doAddNewContact(); } }); this.eventBus.addHandler(EditContactEvent.TYPE, new EditContactEventHandler() { @Override public void onEditContact(EditContactEvent event) { contact = event.getContact(); doEditContact(event.getContact()); } }); this.eventBus.addHandler(UpdatedContactEvent.TYPE, new UpdatedContactEventHandler() { public void onUpdatedContact(UpdatedContactEvent event) { doUpdatedContact(); } }); } private void doAddNewContact() { History.newItem("add"); } private void doEditContact(ContactDTO contact) { History.newItem("edit", false); Presenter presenter = new EditContactPresenter(rpcService, this.eventBus, new EditContactView(), contact); presenter.go(this.container); } private void doUpdatedContact() { History.newItem("list"); } public void onValueChange(ValueChangeEvent<String> event) { String token = event.getValue(); if (token != null) { Presenter presenter = null; if (token.equals("list")) { presenter = new ContactsPresenter(rpcService, eventBus, new ContactsView()); } else if (token.equals("add")) { presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView(), new ContactDTO()); } else if (token.equals("edit")) { presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView(), contact); } if (presenter != null) { presenter.go(container); } } } public AppController asWidget() { return this; } }