Package org.jboss.seam.wiki.plugin.faqBrowser

Source Code of org.jboss.seam.wiki.plugin.faqBrowser.FaqQuestionHome

package org.jboss.seam.wiki.plugin.faqBrowser;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.*;
import org.jboss.seam.core.Conversation;
import org.jboss.seam.core.Events;
import org.jboss.seam.international.StatusMessages;
import org.jboss.seam.wiki.core.action.DocumentHome;
import org.jboss.seam.wiki.core.model.WikiDocument;

import static org.jboss.seam.international.StatusMessage.Severity.INFO;


@Name("faqQuestionHome")
@Scope(ScopeType.CONVERSATION)
public class FaqQuestionHome extends DocumentHome {

    @In(create = true)
    FaqBrowser faqBrowser;

    private boolean showForm = false;

    /* -------------------------- Basic Overrides ------------------------------ */

    @Override
    protected boolean isPageRootController() {
        return false;
    }

    @Override
    public Class<WikiDocument> getEntityClass() {
        return WikiDocument.class;
    }

    @Override
    public void create() {
        super.create();
        setParentNodeId(faqBrowser.getSelectedDir().getNode().getId());
    }

    @Override
    public WikiDocument afterNodeCreated(WikiDocument doc) {
        WikiDocument newQuestion = super.afterNodeCreated(doc);
        newQuestion.setDefaults(new FaqQuestionDefaults());
        return newQuestion;
    }

    @Override
    public String persist() {
        String outcome = super.persist();
        if (outcome != null) endConversation();
        return null; // Prevent navigation
    }

    @Override
    public String update() {
        String outcome = super.update();
        if (outcome != null) endConversation();
        return null; // Prevent navigation
    }

    @Override
    public String remove() {
        String outcome = super.remove();
        if (outcome != null) endConversation();
        return null; // Prevent navigation
    }

    /* -------------------------- Messages ------------------------------ */

    protected void createdMessage() {
        StatusMessages.instance().addFromResourceBundleOrDefault(
                INFO,
                "fb.faqBrowser.msg.Question.Persist",
                "Question '{0}' has been saved.",
                getInstance().getName()
        );
    }

    protected void updatedMessage() {
        StatusMessages.instance().addFromResourceBundleOrDefault(
                INFO,
                "fb.faqBrowser.msg.Question.Update",
                "Question '{0}' has been updated.",
                getInstance().getName()
        );
    }

    protected void deletedMessage() {
        StatusMessages.instance().addFromResourceBundleOrDefault(
                INFO,
                "fb.faqBrowser.msg.Question.Delete",
                "Question '{0}' has been deleted.",
                getInstance().getName()
        );
    }

    /* -------------------------- Internal Methods ------------------------------ */

    private void endConversation() {
        getLog().debug("ending conversation and hiding question form");
        showForm = false;
        Conversation.instance().end();
        getEntityManager().clear(); // Need to force re-read in the question list refresh
        Events.instance().raiseEvent("FaqBrowser.questionListRefresh");
    }

    /* -------------------------- Public Features ------------------------------ */

    public boolean isShowForm() {
        return showForm;
    }

    public void setShowForm(boolean showForm) {
        this.showForm = showForm;
    }

    @Begin(flushMode = FlushModeType.MANUAL, join = true)
    public void newQuestion() {
        initEditor(false);
        showForm = true;
    }

    public void cancel() {
        endConversation();
    }

}
TOP

Related Classes of org.jboss.seam.wiki.plugin.faqBrowser.FaqQuestionHome

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.