org.vaadin.spring.samples.mvp.ui.view.NavigationPanelView.java Source code

Java tutorial

Introduction

Here is the source code for org.vaadin.spring.samples.mvp.ui.view.NavigationPanelView.java

Source

/*
 * Copyright 2015 The original authors
 *
 * 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.vaadin.spring.samples.mvp.ui.view;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.inject.Inject;

import org.vaadin.spring.navigator.annotation.VaadinView;
import org.vaadin.spring.samples.mvp.ui.component.listener.NavigationPanelListener;
import org.vaadin.spring.samples.mvp.ui.component.nav.NavContainerFactory;
import org.vaadin.spring.samples.mvp.ui.component.nav.NavElement;

import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.Panel;
import com.vaadin.ui.Tree;

/**
 * Primary navigation view that employs a {@link Tree} to render a hierarchical display of
 * targeted links.  Each link targets a single {@link View}.  Targeting is handled by the
 * {@link NavigationPanelListener} (which is an {@link com.vaadin.event.ItemClickEvent.ItemClickListener}).
 * @author Chris Phillipson (fastnsilver@gmail.com)
 *
 */
@VaadinUIScope
@VaadinView(name = NavigationPanelView.NAME)
public class NavigationPanelView extends Panel implements View {

    private static final long serialVersionUID = 1L;

    public static final String NAME = "navPanel";

    @Inject
    private NavigationPanelListener listener;

    private final Tree tree;

    public NavigationPanelView() {
        tree = new Tree();
    }

    @PostConstruct
    private void init() {
        tree.addItemClickListener(listener);
        tree.setSizeUndefined();
        tree.setImmediate(true);
        setContent(tree);
        setSizeFull();
    }

    /**
     * @param navElements
     */
    public void setData(List<NavElement> navElements) {
        NavContainerFactory nc = new NavContainerFactory(navElements);
        tree.setContainerDataSource(nc.constructNavigationHierarchy());

        // Expand whole tree
        for (final Object id : tree.rootItemIds()) {
            tree.expandItemsRecursively(id);
        }
    }

    @Override
    public void enter(ViewChangeEvent event) {

    }

}