ontopoly.pages.InstanceTypesPage.java Source code

Java tutorial

Introduction

Here is the source code for ontopoly.pages.InstanceTypesPage.java

Source

/*
 * #!
 * Ontopoly Editor
 * #-
 * Copyright (C) 2001 - 2013 The Ontopia Project
 * #-
 * 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 ontopoly.pages;

import java.util.HashMap;
import java.util.Map;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;

import ontopoly.components.LinkPanel;
import ontopoly.components.TitleHelpPanel;
import ontopoly.components.TreePanel;
import ontopoly.model.Topic;
import ontopoly.models.HelpLinkResourceModel;
import ontopoly.pojos.TopicNode;
import ontopoly.utils.TreeModels;

import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;

public class InstanceTypesPage extends OntopolyAbstractPage {

    public InstanceTypesPage() {
    }

    public InstanceTypesPage(PageParameters parameters) {
        super(parameters);

        // Adding part containing title and help link
        createTitle();

        // create a tree
        final TreeModel treeModel = TreeModels.createTopicTypesTreeModel(getTopicMapModel().getTopicMap(),
                isAnnotationEnabled(), isAdministrationEnabled());
        IModel<TreeModel> treeModelModel = new AbstractReadOnlyModel<TreeModel>() {
            @Override
            public TreeModel getObject() {
                return treeModel;
            }
        };
        Panel treePanel = new TreePanel("tree", treeModelModel) {
            @Override
            protected Component populateNode(String id, TreeNode treeNode) {
                DefaultMutableTreeNode mTreeNode = (DefaultMutableTreeNode) treeNode;
                final TopicNode node = (TopicNode) mTreeNode.getUserObject();
                // create link with label
                return new LinkPanel(id) {
                    @Override
                    protected Label newLabel(String id) {
                        Topic topic = node.getTopic();
                        final boolean isSystemTopic = topic.isSystemTopic();
                        return new Label(id, new Model<String>(getLabel(topic))) {
                            @Override
                            protected void onComponentTag(final ComponentTag tag) {
                                if (isSystemTopic)
                                    tag.put("class", "italic");
                                super.onComponentTag(tag);
                            }
                        };
                    }

                    @Override
                    protected Link<Page> newLink(String id) {
                        Map<String, String> pageParametersMap = new HashMap<String, String>(2);
                        pageParametersMap.put("topicMapId", node.getTopicMapId());
                        pageParametersMap.put("topicId", node.getTopicId());
                        return new BookmarkablePageLink<Page>(id, InstancesPage.class,
                                new PageParameters(pageParametersMap));
                    }
                };
            }
        };
        treePanel.setOutputMarkupId(true);
        add(treePanel);

        // initialize parent components
        initParentComponents();
    }

    @Override
    protected int getMainMenuIndex() {
        return INSTANCES_PAGE_INDEX_IN_MAINMENU;
    }

    private void createTitle() {
        // Adding part containing title and help link
        add(new TitleHelpPanel("titlePartPanel", new ResourceModel("instancetypes"),
                new HelpLinkResourceModel("help.link.instancetypespage")));
    }
}