Package org.appfuse.webapp.client.ui.navigation

Source Code of org.appfuse.webapp.client.ui.navigation.SideNavigationBar$SideNavigationBarUiBinder

package org.appfuse.webapp.client.ui.navigation;

import org.appfuse.webapp.client.application.utils.menu.MenuItem;

import com.github.gwtbootstrap.client.ui.constants.Constants;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.LIElement;
import com.google.gwt.dom.client.UListElement;
import com.google.gwt.place.shared.PlaceChangeEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Widget;

public class SideNavigationBar extends BaseNavigationBar {

    private static SideNavigationBarUiBinder uiBinder = GWT.create(SideNavigationBarUiBinder.class);

    interface SideNavigationBarUiBinder extends UiBinder<Widget, SideNavigationBar> {
    }

    @UiField
    UListElement sideBar;

    public SideNavigationBar() {
        initWidget(uiBinder.createAndBindUi(this));
    }

    @Override
    public void onPlaceChange(final PlaceChangeEvent event) {
        sideBar.setInnerHTML("");
        final MenuItem currentMenuItem = findCurrentMenuItem(event.getNewPlace());
        if (currentMenuItem != null && currentMenuItem.getParent() != null && currentMenuItem.getParent().getTitle() != null) {
            drawMenu(currentMenuItem);
            sideBar.removeClassName("hide");
        } else {
            // do not draw root menu on the side
            sideBar.addClassName("hide");
        }
    }

    private void drawMenu(final MenuItem currentMenuItem) {
        final LIElement navHeader = Document.get().createLIElement();
        navHeader.setInnerText(currentMenuItem.getParent().getTitle());
        navHeader.addClassName("nav-header");
        sideBar.appendChild(navHeader);

        for (final MenuItem menuItem : currentMenuItem.getParent()) {
            final LIElement li = Document.get().createLIElement();
            final AnchorElement anchor = Document.get().createAnchorElement();
            anchor.setTitle(menuItem.getTitle());
            anchor.setInnerText(menuItem.getTitle());
            anchor.setHref("#" + application.getPlaceHistoryMapper().getToken(menuItem.getPlace()));
            li.appendChild(anchor);
            menuItem.setElement(li);
            sideBar.appendChild(li);

            if (menuItem == currentMenuItem) {
                li.addClassName(Constants.ACTIVE);
            }
        }
    }

}
TOP

Related Classes of org.appfuse.webapp.client.ui.navigation.SideNavigationBar$SideNavigationBarUiBinder

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.