package com.example.listmaker.app.client.ui.web.nav; import com.example.listmaker.app.client.App; import com.example.listmaker.app.client.activity.NavActivity; import com.example.listmaker.app.client.domain.NoteList; import com.example.listmaker.app.client.place.HomePlace; import com.example.listmaker.common.client.ui.web.AppStyles; import com.example.listmaker.common.client.ui.web.ViewImpl; import com.google.gwt.user.client.ui.*; import java.util.Collection; public class NavViewImpl extends ViewImpl<NavActivity> implements NavActivity.NavView { private static final String CSS_NAV_ITEM = "listmaker-navItem"; private static final String CSS_NAV_HEADER = "listmaker-navHeader"; private FlowPanel listsPanel = new FlowPanel(); private final VerticalPanel navTree = new VerticalPanel(); public NavViewImpl() { navTree.add(createHomeLink()); navTree.add(createListsMenu()); } @Override public void init() { super.init(); this.viewPanel.getElement().setId(AppStyles.BODY_PANEL_NAV_ID); } @Override public Widget asWidget() { return navTree; } @Override public void hide() { navTree.setVisible(false); } @Override public void show() { navTree.setVisible(true); } @Override public boolean isShowing() { return navTree.isVisible(); } @Override public void startProcessing() { } @Override public void stopProcessing() { } @Override public void populateLists(Collection<NoteList> noteLists) { listsPanel.clear(); for (NoteList noteList : noteLists) { String link = App.getPlaceHistoryMapper().getToken(new HomePlace(String.valueOf(noteList.id))); Hyperlink y = new Hyperlink(noteList.name, link); y.addStyleName(CSS_NAV_ITEM); listsPanel.add(y); } } private Widget createListsMenu() { FlowPanel h = new FlowPanel(); h.addStyleName(CSS_NAV_HEADER); Image n = App.getAppImages().notepad_32().createImage(); h.add(n); h.add(new Label("My Lists")); // Create temp panel to hold lists--not a tree DisclosurePanel d = new DisclosurePanel(); d.setHeader(h); d.setContent(listsPanel); d.setAnimationEnabled(true); return d; } private Widget createHomeLink() { FlowPanel f = new FlowPanel(); f.addStyleName(CSS_NAV_HEADER); f.add(App.getAppImages().home_32().createImage()); String link = App.getPlaceHistoryMapper().getToken(new HomePlace("-1")); f.add(new Hyperlink("Home", link)); return f; } }