2 * Copyright (C) 2011 Openismus GmbH
4 * This file is part of GWT-Glom.
6 * GWT-Glom is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version.
11 * GWT-Glom is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with GWT-Glom. If not, see <http://www.gnu.org/licenses/>.
20 package org.glom.web.client.activity;
22 import org.glom.web.client.ClientFactory;
23 import org.glom.web.client.OnlineGlomServiceAsync;
24 import org.glom.web.client.ui.DocumentSelectionView;
25 import org.glom.web.shared.Documents;
27 import com.google.gwt.activity.shared.AbstractActivity;
28 import com.google.gwt.event.shared.EventBus;
29 import com.google.gwt.place.shared.Place;
30 import com.google.gwt.user.client.Window;
31 import com.google.gwt.user.client.rpc.AsyncCallback;
32 import com.google.gwt.user.client.ui.AcceptsOneWidget;
34 public class DocumentSelectionActivity extends AbstractActivity implements DocumentSelectionView.Presenter {
36 // TODO inject with GIN
37 private final ClientFactory clientFactory;
38 private final DocumentSelectionView documentSelectionView;
40 public DocumentSelectionActivity(ClientFactory clientFactory) {
41 this.clientFactory = clientFactory;
42 this.documentSelectionView = clientFactory.getDocumentSelectionView();
46 public void start(AcceptsOneWidget panel, EventBus eventBus) {
47 Window.setTitle("Online Glom");
49 documentSelectionView.setPresenter(this);
51 AsyncCallback<Documents> callback = new AsyncCallback<Documents>() {
52 public void onFailure(Throwable caught) {
53 // Try to get an error message. Most likely this won't work but it's worth a try.
54 getAndSetErrorMessage();
57 public void onSuccess(Documents documents) {
58 documentSelectionView.clearHyperLinks();
59 if (documents.getCount() > 0) {
60 for (int i = 0; i < documents.getCount(); i++) {
61 documentSelectionView.addDocumentLink(documents.getDocumentID(i), documents.getTitle(i));
64 getAndSetErrorMessage();
68 OnlineGlomServiceAsync.Util.getInstance().getDocuments(callback);
70 panel.setWidget(documentSelectionView.asWidget());
74 public void goTo(Place place) {
75 clientFactory.getPlaceController().goTo(place);
78 private void getAndSetErrorMessage() {
80 AsyncCallback<String> callback = new AsyncCallback<String>() {
81 public void onFailure(Throwable caught) {
83 .setErrorMessage("Unable to communicate with the servlet. Check the error log for more information.");
86 public void onSuccess(String errorMessage) {
87 documentSelectionView.setErrorMessage("Configuration Error: " + errorMessage);
90 OnlineGlomServiceAsync.Util.getInstance().getConfigurationErrorMessage(callback);