package org.gcube.portlets.widgets.ckancontentmoderator.client.ui; import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CloseAllTabsEvent; import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStatusEvent; import com.github.gwtbootstrap.client.ui.Dropdown; import com.github.gwtbootstrap.client.ui.Label; import com.github.gwtbootstrap.client.ui.NavLink; import com.google.gwt.core.client.GWT; 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.Widget; public class ContentModeratorToolbar extends Composite { private static ContentModeratorToolbarUiBinder uiBinder = GWT.create(ContentModeratorToolbarUiBinder.class); interface ContentModeratorToolbarUiBinder extends UiBinder { } @UiField Dropdown dropdownSelectStatus; @UiField NavLink closeAllTabs; @UiField Label statusInfo; private HandlerManager eventBus; private ItemStatus activeStatus; public ContentModeratorToolbar(HandlerManager eventBus, ItemStatus status) { initWidget(uiBinder.createAndBindUi(this)); this.eventBus = eventBus; setActiveStatus(status); fillItemStatusOptions(); bindEvents(); } private void bindEvents() { closeAllTabs.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { eventBus.fireEvent(new CloseAllTabsEvent()); } }); } private void fillItemStatusOptions() { for (final ItemStatus status : ItemStatus.values()) { NavLink navLink = new NavLink(); navLink.setText(status.getLabel()); navLink.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { GWT.log("clicked: "+status); setActiveStatus(status); eventBus.fireEvent(new SelectItemsWithItemStatusEvent(status)); } }); dropdownSelectStatus.add(navLink); } } private void setActiveStatus(ItemStatus status) { this.activeStatus = status; this.statusInfo.setText(activeStatus.getLabel()); } public ItemStatus getActiveStatus() { return activeStatus; } }