org.onebusaway.webapp.gwt.mobile_application.view.BookmarkViewController.java Source code

Java tutorial

Introduction

Here is the source code for org.onebusaway.webapp.gwt.mobile_application.view.BookmarkViewController.java

Source

/**
 * Copyright (C) 2011 Brian Ferris <bdferris@onebusaway.org>
 *
 * 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.
 */
package org.onebusaway.webapp.gwt.mobile_application.view;

import org.onebusaway.webapp.gwt.common.widgets.DivWidget;
import org.onebusaway.webapp.gwt.mobile_application.MobileApplicationContext;
import org.onebusaway.webapp.gwt.mobile_application.control.MobileApplicationDao;
import org.onebusaway.webapp.gwt.mobile_application.model.Bookmark;
import org.onebusaway.webapp.gwt.mobile_application.resources.MobileApplicationCssResource;
import org.onebusaway.webapp.gwt.mobile_application.resources.MobileApplicationResources;
import org.onebusaway.webapp.gwt.viewkit.BarButtonItem;
import org.onebusaway.webapp.gwt.viewkit.NavigationController;
import org.onebusaway.webapp.gwt.viewkit.ViewController;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitHandler;

public class BookmarkViewController extends ViewController {

    private static final MobileApplicationCssResource _css = MobileApplicationResources.INSTANCE.getCSS();

    private Bookmark _bookmark;

    private boolean _newBookmark;

    private TextBox _input;

    public BookmarkViewController(Bookmark bookmark, boolean newBookmark) {
        _bookmark = bookmark;
        _newBookmark = newBookmark;

    }

    @Override
    protected void loadView() {
        super.loadView();

        getNavigationItem().setTitle(_newBookmark ? "Add Bookmark" : "Edit Bookmark");
        getNavigationItem().setRightBarButtonItem(new BarButtonItem("Cancel", new CancelHandler()));

        FlowPanel panel = new FlowPanel();
        panel.add(new DivWidget("Name:"));

        FormPanel form = new FormPanel();
        panel.add(form);

        FlowPanel formRow = new FlowPanel();
        form.add(formRow);

        _input = new TextBox();
        _input.setText(_bookmark.getName());
        _input.addStyleName(_css.BookmarkTextBox());
        formRow.add(_input);

        Button submitButton = new Button("Save");
        submitButton.addStyleName(_css.BookmarkSaveButton());
        formRow.add(submitButton);

        SaveHandler handler = new SaveHandler();
        form.addSubmitHandler(handler);
        submitButton.addClickHandler(handler);

        _view = panel;
    }

    private void save() {

        String text = _input.getText();
        if (text.length() == 0)
            return;

        _bookmark.setName(text);

        if (_newBookmark) {
            MobileApplicationDao dao = MobileApplicationContext.getDao();
            dao.addBookmark(_bookmark);
        }

        NavigationController nav = getNavigationController();
        nav.popViewController();
    }

    private class SaveHandler implements ClickHandler, SubmitHandler {

        @Override
        public void onClick(ClickEvent arg0) {
            save();
        }

        @Override
        public void onSubmit(SubmitEvent event) {
            event.cancel();
            save();
        }
    }

    private class CancelHandler implements ClickHandler {

        @Override
        public void onClick(ClickEvent arg0) {
            NavigationController nav = getNavigationController();
            nav.popViewController();
        }
    }
}