/*
* 2012-3 Red Hat Inc. and/or its affiliates and other contributors.
*
* 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.overlord.gadgets.web.client.view;
import org.overlord.gadgets.web.client.ApplicationEntryPoint;
import org.overlord.gadgets.web.client.NameTokens;
import org.overlord.gadgets.web.client.auth.CurrentUser;
import org.overlord.gadgets.web.client.presenter.StorePresenter;
import org.overlord.gadgets.web.client.widgets.StoreItem;
import org.overlord.gadgets.web.shared.dto.PageResponse;
import org.overlord.gadgets.web.shared.dto.StoreItemModel;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.ViewImpl;
import com.gwtplatform.mvp.client.proxy.PlaceRequest;
/**
* @author: Jeff Yu
* @date: 30/04/12
*/
public class StoreViewImpl extends ViewImpl implements StorePresenter.StoreView{
private LayoutPanel headerPanel;
private DockLayoutPanel panel;
private LayoutPanel footerPanel;
private LayoutPanel mainPanel;
// private StorePresenter presenter;
private CurrentUser currentUser;
private Label messageBar = new Label();
@Inject
public StoreViewImpl(CurrentUser user) {
this.currentUser = user;
headerPanel = new LayoutPanel();
headerPanel.setStyleName("header-panel");
HTML backToTabs = new HTML("Back to Tabs");
backToTabs.addStyleName("header-link");
backToTabs.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
ApplicationEntryPoint.MODULES.getPlaceManager().revealPlace(
new PlaceRequest(NameTokens.INDEX_VIEW)
);
}
});
headerPanel.add(backToTabs);
headerPanel.setWidgetRightWidth(backToTabs, 5, Style.Unit.PX, 110, Style.Unit.PX);
headerPanel.setWidgetTopHeight(backToTabs, 5, Style.Unit.PX, 28, Style.Unit.PX);
footerPanel = new LayoutPanel();
footerPanel.setStyleName("footer-panel");
panel = new DockLayoutPanel(Style.Unit.PX);
panel.getElement().setAttribute("id", "container");
mainPanel = new LayoutPanel();
mainPanel.getElement().setId("mainpanel");
panel.addNorth(headerPanel, 25);
panel.addSouth(footerPanel, 25);
panel.add(mainPanel);
footerPanel.add(ApplicationEntryPoint.MODULES.getFooter().asWidget());
}
@Override
public void loadStoreItems(PageResponse<StoreItemModel> storeItems) {
mainPanel.clear();
FlowPanel storesList = new FlowPanel();
storesList.getElement().setId("gadget-store-list");
storesList.setWidth("100%");
messageBar.setStyleName("storeItemInfo");
storesList.add(messageBar);
for (StoreItemModel item : storeItems.getResultSet()) {
StoreItem storeItem = new StoreItem(item, currentUser, messageBar);
storesList.add(storeItem);
}
mainPanel.add(storesList);
}
@Override
public Widget asWidget() {
return panel;
}
@Override
public void setPresenter(StorePresenter presenter) {
// this.presenter = presenter;
}
@Override
public void clearMessageBar() {
messageBar.setText("");
}
}