com.apress.progwt.client.forum.CreatePostButton.java Source code

Java tutorial

Introduction

Here is the source code for com.apress.progwt.client.forum.CreatePostButton.java

Source

/*
 * Copyright 2008 Jeff Dwyer
 * 
 * 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 com.apress.progwt.client.forum;

import com.allen_sauer.gwt.log.client.Log;
import com.apress.progwt.client.college.gui.ext.JSUtil;
import com.apress.progwt.client.domain.User;
import com.apress.progwt.client.domain.forum.ForumTopic;
import com.apress.progwt.client.rpc.StdAsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Widget;

public class CreatePostButton extends Button implements ClickListener {

    private ForumApp app;
    private boolean isReply;

    // private ForumPost thread;

    /**
     * 
     * @param app
     * @param buttonText
     * @param topic -
     *            can be null for new thread creation
     */
    public CreatePostButton(ForumApp app, boolean isReply, ForumTopic topic) {
        super("Create New Thread");
        if (isReply) {
            setText("Reply");
        }
        addClickListener(this);
        this.app = app;
        this.isReply = isReply;
    }

    public void onClick(Widget sender) {

        String secureTargetURL = "secure/forums.html";

        // let the /secure/ page know that we should
        // fire the create action
        ForumCommand fc = app.getCurrentCommand();
        fc.setCreate(true);
        secureTargetURL += fc.getAsQueryString();

        app.getLoginService().getUserOrDoLogin(secureTargetURL,
                new StdAsyncCallback<User>("Login For Create Post") {
                    public void onSuccess(User author) {
                        super.onSuccess(author);

                        Log.info("success " + author);
                        openCreatePost(author);
                    }
                });

        // app.getUserService().getCurrentUser(
        // new StdAsyncCallback<UserAndToken>(
        // "Login For Create Post") {
        // public void onSuccess(UserAndToken author) {
        // super.onSuccess(author);
        //
        // // force a login
        // if (author.getUser() == null) {
        //
        // String base = "secure/forums.html";
        //
        // // let the /secure/ page know that we should
        // // fire the create action
        // ForumCommand fc = app.getCurrentCommand();
        // fc.setCreate(true);
        // base += fc.getAsQueryString();
        //
        // Location.replace(Interactive
        // .getRelativeURL(base));
        // } else {
        // Log.info("success " + author.getUser());
        // openCreatePost(author.getUser());
        // }
        // }
        // });

    }

    protected void openCreatePost(User author) {
        String selection = JSUtil.getTextSelection();

        CreatePostDialog cpd = new CreatePostDialog(app, author, isReply, selection);
        cpd.center();
    }

}