Guest User

Untitled

a guest
Jun 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. // ok, stel dat je in de view zit waarbij je een client aan het toevoegen bent of aan het editen, en je klikt op 'Save':
  2.  
  3. public class EditClientPresenter implements Presenter {
  4. public interface Display {
  5. HasClickHandlers getSaveButton();
  6. ...
  7. }
  8. public void bind() {
  9. this.display.getSaveButton().addClickHandler(new ClickHandler() {
  10. public void onClick(ClickEvent event) {
  11. doSave();
  12. }
  13. });
  14. private void doSave() {
  15. client.setFirstName(display.getFirstName().getValue());
  16. client.setLastName(display.getLastName().getValue());
  17. client.setEmailAddress(display.getEmailAddress().getValue());
  18.  
  19. rpcService.updateClient(client, new AsyncCallback<Client>() {
  20. public void onSuccess(Client result) {
  21. eventBus.fireEvent(new ClientUpdatedEvent(result));
  22. }
  23.  
  24. public void onFailure(Throwable caught) {
  25. Window.alert("Error updating client");
  26. }
  27. });
  28. }
  29. }
  30.  
  31. // zo, en dan nu nog hoe die event wordt afgevangen (precies zoals wij hebben met onze ESB):
  32. public class ClientUpdatedEvent extends GwtEvent<ClientUpdatedEventHandler> {
  33. public static Type<ClientUpdatedEventHandler> TYPE = new Type<ClientUpdatedEventHandler>();
  34. private final Client updatedClient;
  35.  
  36. public ClientUpdatedEvent(Client updatedClient) {
  37. this.updatedClient = updatedClient;
  38. }
  39.  
  40. public Client getUpdatedClient() {
  41. return updatedClient;
  42. }
  43.  
  44. @Override
  45. public Type<ClientUpdatedEventHandler> getAssociatedType() {
  46. return TYPE;
  47. }
  48.  
  49. @Override
  50. protected void dispatch(ClientUpdatedEventHandler handler) {
  51. handler.onClientUpdated(this);
  52. }
  53. }
  54. public interface ClientUpdatedEventHandler extends EventHandler {
  55. void onClientUpdated(ClientUpdatedEvent event);
  56. }
  57.  
  58. // en hier wordt ie afgevangen:
  59. public class AppController implements Presenter, ValueChangeHandler<String> {
  60. private void bind() {
  61. ...
  62. eventBus.addHandler(ClientUpdatedEvent.TYPE,
  63. new ClientUpdatedEventHandler() {
  64. public void onClientUpdated(ClientUpdatedEvent event) {
  65. doClientUpdated();
  66. }
  67. });
  68. }
  69. private void doClientUpdated() {
  70. History.newItem(AppState.VIEW_CLIENTS.getToken());
  71. }
  72. }
  73.  
  74. // maar dan nog die rpcService waarmee alles ook nog naar de server wordt gestuurd:
  75. public interface ClientsServiceAsync {
  76. ...
  77. public void updateClient(Client client, AsyncCallback<Client> callback);
  78. }
  79.  
  80. // de daadwerkelijke server-side implementatie hiervan bijv.:
  81. public class ClientsServiceImpl extends RemoteServiceServlet implements
  82. ClientsService {
  83. ...
  84. public Client updateClient(Client client) {
  85. clients.remove(client.getId());
  86. clients.put(client.getId(), client);
  87. return client;
  88. }
  89. }
Add Comment
Please, Sign In to add comment