ch.tkuhn.nanobrowser.AgentPage.java Source code

Java tutorial

Introduction

Here is the source code for ch.tkuhn.nanobrowser.AgentPage.java

Source

// This file is part of Nanobrowser.
// Copyright 2012, Tobias Kuhn, http://www.tkuhn.ch
//
// Nanobrowser is free software: you can redistribute it and/or modify it under the terms of the
// GNU Lesser General Public License as published by the Free Software Foundation, either version
// 3 of the License, or (at your option) any later version.
//
// Nanobrowser is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License along with Nanobrowser.
// If not, see http://www.gnu.org/licenses/.

package ch.tkuhn.nanobrowser;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.util.ListModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

public class AgentPage extends NanobrowserWebPage {

    private static final long serialVersionUID = -4673886567380719848L;

    private AgentElement agent;
    private ListModel<NanopubElement> nanopubModel = new ListModel<NanopubElement>();
    private ListModel<Opinion> opinionModel = new ListModel<Opinion>();

    public AgentPage(final PageParameters parameters) {

        agent = new AgentElement(parameters.get("uri").toString());
        boolean isBot = agent.isBot();

        update();

        add(new MenuBar("menubar"));

        WebMarkupContainer icon = new WebMarkupContainer("icon");
        if (isBot) {
            icon.add(new AttributeModifier("src", new Model<String>("icons/bot.svg")));
        }
        add(icon);

        add(new Label("title", agent.getName()));

        add(new ExternalLink("uri", agent.getURI(), agent.getTruncatedURI()));

        add(new HList("typelist", agent.getTypes(), "Types"));

        if (isBot) {
            add(new HList("commanderlist", agent.getCommanders(), "Commanders"));
        } else {
            add(new WebMarkupContainer("commanderlist"));
        }

        add(new VList("nanopublist", nanopubModel, "Nanopublications"));

        add(new Label("emptyopinions", opinionModel.getObject().isEmpty() ? "(nothing)" : ""));

        add(new ListView<Opinion>("opinions", opinionModel) {

            private static final long serialVersionUID = -4257147575068849793L;

            protected void populateItem(ListItem<Opinion> item) {
                item.add(new Label("opinion", Opinion.getVerbPhrase(item.getModelObject().getOpinionType(), true)));
                item.add(new SentenceItem("opinionsentence", item.getModelObject().getSentence()));
                item.add(new NanopubItem("opinionpub", item.getModelObject().getNanopub(),
                        ThingElement.TINY_GUI_ITEM));
            }

        });

        WebMarkupContainer aa = new WebMarkupContainer("adminactions");
        if (NanobrowserApplication.isInDevelopmentMode()) {
            Link<Object> thatsmeButton;
            aa.add(thatsmeButton = new Link<Object>("thatsme") {

                private static final long serialVersionUID = 8608371149183694875L;

                public void onClick() {
                    NanobrowserSession.get().setUser(agent);
                    update();
                    setResponsePage(AgentPage.class, getPageParameters());
                }

            });
            thatsmeButton.setVisible(!isBot);
        } else {
            aa.add(new AttributeModifier("class", new Model<String>("hidden")));
            aa.add(new Label("thatsme", ""));
        }
        add(aa);

    }

    private void update() {
        nanopubModel.setObject(agent.getAuthoredNanopubs(20));
        opinionModel.setObject(agent.getOpinions(true));
    }

}