ckan-content-moderator-widget/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorToolbar.java

143 lines
3.6 KiB
Java
Raw Normal View History

2021-06-21 15:35:47 +02:00
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
2022-04-22 15:38:57 +02:00
import java.util.List;
2021-06-21 15:35:47 +02:00
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
2021-06-22 18:09:16 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CloseAllTabsEvent;
2021-06-28 15:40:53 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStatusEvent;
2022-04-22 15:38:57 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.shared.ItemFieldDV;
2021-06-21 15:35:47 +02:00
import com.github.gwtbootstrap.client.ui.Dropdown;
2021-06-25 16:56:43 +02:00
import com.github.gwtbootstrap.client.ui.Label;
2021-06-21 15:35:47 +02:00
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<Widget, ContentModeratorToolbar> {
}
@UiField
Dropdown dropdownSelectStatus;
2022-04-22 15:38:57 +02:00
@UiField
Dropdown dropdownSortBy;
2021-06-22 18:09:16 +02:00
@UiField
NavLink closeAllTabs;
2021-06-25 16:56:43 +02:00
@UiField
Label statusInfo;
2022-04-22 15:38:57 +02:00
@UiField
Label orderInfo;
2021-06-25 16:56:43 +02:00
2021-06-21 15:35:47 +02:00
private HandlerManager eventBus;
2021-06-25 16:56:43 +02:00
private ItemStatus activeStatus;
2022-04-22 15:38:57 +02:00
private List<ItemFieldDV> sortByList;
private ItemFieldDV activeSortBy;
public ContentModeratorToolbar(HandlerManager eventBus, ItemStatus status, List<ItemFieldDV> sortBy) {
2021-06-21 15:35:47 +02:00
initWidget(uiBinder.createAndBindUi(this));
this.eventBus = eventBus;
2022-04-22 15:38:57 +02:00
this.sortByList = sortBy;
2021-06-28 15:40:53 +02:00
setActiveStatus(status);
2022-04-22 15:38:57 +02:00
setActiveSortBy(sortBy.get(0));
fillSelectionOptions();
2021-06-22 18:09:16 +02:00
bindEvents();
2021-06-28 15:40:53 +02:00
2021-06-22 18:09:16 +02:00
}
private void bindEvents() {
closeAllTabs.addClickHandler(new ClickHandler() {
2021-06-25 16:56:43 +02:00
2021-06-22 18:09:16 +02:00
@Override
public void onClick(ClickEvent event) {
eventBus.fireEvent(new CloseAllTabsEvent());
2021-06-25 16:56:43 +02:00
2021-06-22 18:09:16 +02:00
}
});
2021-06-21 15:35:47 +02:00
}
2022-04-22 15:38:57 +02:00
private void fillSelectionOptions() {
2021-06-25 16:56:43 +02:00
for (final ItemStatus status : ItemStatus.values()) {
2021-06-21 15:35:47 +02:00
2021-06-28 15:40:53 +02:00
NavLink navLink = new NavLink();
navLink.setText(status.getLabel());
navLink.addClickHandler(new ClickHandler() {
2021-06-21 15:35:47 +02:00
@Override
public void onClick(ClickEvent event) {
2022-02-18 14:17:19 +01:00
GWT.log("clicked: " + status);
2021-06-25 16:56:43 +02:00
setActiveStatus(status);
2022-04-22 15:38:57 +02:00
eventBus.fireEvent(new SelectItemsWithItemStatusEvent(status, null, null, getActiveSortBy()));
2021-06-21 15:35:47 +02:00
}
});
2021-06-28 15:40:53 +02:00
dropdownSelectStatus.add(navLink);
2021-06-21 15:35:47 +02:00
}
2022-04-22 15:38:57 +02:00
for (final ItemFieldDV itemField : sortByList) {
NavLink navLink = new NavLink();
navLink.setText(itemField.getDisplayName());
navLink.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
setActiveSortBy(itemField);
eventBus.fireEvent(new SelectItemsWithItemStatusEvent(getActiveStatus(), null, null, itemField));
}
});
dropdownSortBy.add(navLink);
}
}
private void setActiveSortBy(ItemFieldDV itemField) {
this.activeSortBy = itemField;
this.orderInfo.setText(activeSortBy.getDisplayName());
2021-06-25 16:56:43 +02:00
}
private void setActiveStatus(ItemStatus status) {
this.activeStatus = status;
2021-06-28 15:40:53 +02:00
this.statusInfo.setText(activeStatus.getLabel());
2021-06-25 16:56:43 +02:00
}
2021-06-21 15:35:47 +02:00
2022-04-22 15:38:57 +02:00
public ItemFieldDV getActiveSortBy() {
if (activeSortBy != null)
return activeSortBy;
NavLink navLink = dropdownSortBy.getLastSelectedNavLink();
String selectedText = navLink.getText();
for (ItemFieldDV itemField : sortByList) {
if (itemField.getDisplayName().compareTo(selectedText) == 0) {
return itemField;
}
}
return sortByList.get(0);
}
2021-06-25 16:56:43 +02:00
public ItemStatus getActiveStatus() {
return activeStatus;
2021-06-21 15:35:47 +02:00
}
}