package org.gcube.portlet.user.userstatisticsportlet.client.ui; import org.gcube.portal.databook.shared.ShowUserStatisticAction; import org.gcube.portlet.user.userstatisticsportlet.client.events.ShowFeedsRelatedToUserStatisticsEvent; import com.github.gwtbootstrap.client.ui.Button; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Cursor; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class ActivityWidget extends Composite { private static CommentsAndLikesWidgetUiBinder uiBinder = GWT .create(CommentsAndLikesWidgetUiBinder.class); interface CommentsAndLikesWidgetUiBinder extends UiBinder { } @UiField Button likesButton; @UiField Button commentsButton; @UiField Button postsButton; @UiField Label likesValue; @UiField Label commentsValue; @UiField Label postsValue; private HandlerManager busEvents; public ActivityWidget() { initWidget(uiBinder.createAndBindUi(this)); // set styles commentsButton.addStyleName("buttons-statistics-style"); likesButton.addStyleName("buttons-statistics-style"); postsButton.addStyleName("buttons-statistics-style"); } /** * Set comments information * @param value * @param tipIcon * @param tipValue * @param actionToTakeOnClick * @param landingPage */ public void setComments(String value, String tipIcon, String tipValue, final ShowUserStatisticAction actionToTakeOnClick, final String landingPage){ commentsButton.setTitle(tipIcon); commentsValue.setText(value); commentsValue.setTitle(tipValue); if(busEvents != null && actionToTakeOnClick != null){ commentsValue.getElement().getStyle().setCursor(Cursor.POINTER); commentsValue.addStyleName("statistic-value-underline"); commentsValue.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { busEvents.fireEvent(new ShowFeedsRelatedToUserStatisticsEvent(actionToTakeOnClick, landingPage)); } }); } // set to visible commentsValue.setVisible(true); commentsButton.setVisible(true); } /** * Set likes information * @param value * @param tipIcon * @param tipValue * @param actionToTakeOnClick * @param landingPage */ public void setLikes(String value, String tipIcon, String tipValue, final ShowUserStatisticAction actionToTakeOnClick, final String landingPage){ likesButton.setTitle(tipIcon); likesValue.setText(value); likesValue.setTitle(tipValue); if(busEvents != null && actionToTakeOnClick != null){ likesValue.getElement().getStyle().setCursor(Cursor.POINTER); likesValue.addStyleName("statistic-value-underline"); likesValue.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { busEvents.fireEvent(new ShowFeedsRelatedToUserStatisticsEvent(actionToTakeOnClick, landingPage)); } }); } // set to visible likesValue.setVisible(true); likesButton.setVisible(true); } /** * Set posts information * @param value * @param tipIcon * @param tipValue * @param actionToTakeOnClick * @param landingPage */ public void setPosts(String value, String tipIcon, String tipValue, final ShowUserStatisticAction actionToTakeOnClick, final String landingPage){ postsButton.setTitle(tipIcon); postsValue.setText(value); postsValue.setTitle(tipValue); if(busEvents != null && actionToTakeOnClick != null){ postsValue.getElement().getStyle().setCursor(Cursor.POINTER); postsValue.addStyleName("statistic-value-underline"); postsValue.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { busEvents.fireEvent(new ShowFeedsRelatedToUserStatisticsEvent(actionToTakeOnClick, landingPage)); } }); } // set to visible postsValue.setVisible(true); postsButton.setVisible(true); } /** * Set the event bus to let this widget fire events * @param busEvents */ public void setEventBus(HandlerManager busEvents){ this.busEvents = busEvents; } }