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

225 lines
7.4 KiB
Java
Raw Normal View History

2021-06-18 12:10:49 +02:00
package org.gcube.portlets.widgets.ckancontentmoderator.client;
2021-06-22 17:38:42 +02:00
import java.util.List;
2021-06-18 12:10:49 +02:00
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
2021-06-22 17:38:42 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CheckBoxSelectIemsEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CheckBoxSelectIemsEventHandler;
2021-06-18 12:10:49 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ClickItemEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ClickItemEventHandler;
2021-06-22 18:09:16 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CloseAllTabsEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CloseAllTabsEventHandler;
2021-06-28 15:40:53 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.IFrameInstanciedEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.IFrameInstanciedEvent.OPERATION;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.IFrameInstanciedEventHandler;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStatusEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStatusEventHandler;
2021-06-22 17:38:42 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowItemEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowItemEventHandler;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowMessageEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowMessageEventHandler;
2021-06-22 17:38:42 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEventHandler;
2021-06-18 12:10:49 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.CkanFramePanel;
2021-06-21 15:35:47 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorToolbar;
2021-06-21 18:08:20 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.HomeView;
2021-06-18 12:10:49 +02:00
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.MainTabPanel;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
2021-06-29 17:56:15 +02:00
import com.github.gwtbootstrap.client.ui.Alert;
import com.github.gwtbootstrap.client.ui.constants.AlertType;
2021-06-18 12:10:49 +02:00
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.HandlerManager;
2021-06-29 17:56:15 +02:00
import com.google.gwt.user.client.Timer;
2021-06-21 15:35:47 +02:00
import com.google.gwt.user.client.ui.ComplexPanel;
import com.google.gwt.user.client.ui.FlowPanel;
2021-06-18 12:10:49 +02:00
/**
2021-06-29 17:30:44 +02:00
* The Class CkanContentModeratorWidgetController.
2021-06-18 12:10:49 +02:00
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
2021-06-29 17:30:44 +02:00
* Jun 29, 2021
2021-06-18 12:10:49 +02:00
*/
public class CkanContentModeratorWidgetController {
public final static CkanContentModeratorServiceAsync contentModeratorService = GWT
.create(CkanContentModeratorService.class);
2021-06-22 17:38:42 +02:00
2021-06-21 15:35:47 +02:00
private FlowPanel mainPanel = new FlowPanel();
2021-06-29 17:56:15 +02:00
private FlowPanel infoPanel = new FlowPanel();
2021-06-18 12:10:49 +02:00
2021-06-21 15:35:47 +02:00
private ContentModeratorToolbar toolbar;
2021-06-18 12:10:49 +02:00
private MainTabPanel mainTabPanel = new MainTabPanel();
2021-06-18 12:10:49 +02:00
public final static HandlerManager eventBus = new HandlerManager(null);
2021-06-21 18:08:20 +02:00
private HomeView howeView;
2021-06-18 12:10:49 +02:00
/**
* Instantiates a new ckan content moderator widget.
*
2021-06-22 17:38:42 +02:00
* @param status the status
2021-06-18 12:10:49 +02:00
* @param displayFields the display fields
* @param sortByField the sort by field
*/
public CkanContentModeratorWidgetController(ItemStatus status, DISPLAY_FIELD[] displayFields,
DISPLAY_FIELD sortByField) {
2021-06-25 16:56:43 +02:00
toolbar = new ContentModeratorToolbar(eventBus, status);
2021-06-21 18:08:20 +02:00
howeView = new HomeView(eventBus, status, displayFields, sortByField);
mainTabPanel.addHomeWidget(howeView.getPanel());
2021-06-21 15:35:47 +02:00
mainPanel.add(toolbar);
2021-06-29 17:56:15 +02:00
mainPanel.add(infoPanel);
2021-06-21 15:35:47 +02:00
mainPanel.add(mainTabPanel);
2021-06-18 12:10:49 +02:00
bindEvents();
}
/**
* Bind events.
*/
private void bindEvents() {
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
@Override
public <T> void onClick(ClickItemEvent<T> clickItemEvent) {
2021-06-22 17:38:42 +02:00
if (clickItemEvent.getSelectItems() != null) {
List<T> items = clickItemEvent.getSelectItems();
// if items selected are > 0 then shows button "Update status as.."
howeView.setVisibleUpdateStatusAction(items.size() > 0);
2021-06-18 12:10:49 +02:00
}
2021-06-22 17:38:42 +02:00
}
});
eventBus.addHandler(ShowItemEvent.TYPE, new ShowItemEventHandler() {
2021-06-18 12:10:49 +02:00
2021-06-22 17:38:42 +02:00
@Override
public <T> void onShowItemClicked(ShowItemEvent<T> showItemEvent) {
if (showItemEvent.getSelectItems() != null) {
List<T> items = showItemEvent.getSelectItems();
for (T t : items) {
CatalogueDataset clickedDataset = (CatalogueDataset) t;
CkanFramePanel cfp = new CkanFramePanel(eventBus);
2021-06-29 17:30:44 +02:00
cfp.instanceFrame(clickedDataset.getUrl());
2021-06-22 17:38:42 +02:00
mainTabPanel.addTab(clickedDataset.getTitle(), cfp);
}
}
}
});
2021-06-28 15:40:53 +02:00
eventBus.addHandler(IFrameInstanciedEvent.TYPE, new IFrameInstanciedEventHandler() {
@Override
public void onIFrameAction(IFrameInstanciedEvent iFrameInstanciedEent) {
OPERATION operation = iFrameInstanciedEent.getOperation();
if (operation != null) {
switch (operation) {
case INIT:
break;
case ONLOAD:
2021-06-29 17:30:44 +02:00
2021-06-28 15:40:53 +02:00
break;
default:
break;
}
}
}
});
2021-06-22 17:38:42 +02:00
eventBus.addHandler(CheckBoxSelectIemsEvent.TYPE, new CheckBoxSelectIemsEventHandler() {
@Override
public <T> void onValueChanged(CheckBoxSelectIemsEvent<T> onValueChangedEvent) {
howeView.markItemsAsChecked(onValueChangedEvent.isChecked(), true);
}
});
2021-06-25 16:56:43 +02:00
2021-06-22 17:38:42 +02:00
eventBus.addHandler(TableRangeViewChangedEvent.TYPE, new TableRangeViewChangedEventHandler() {
2021-06-25 16:56:43 +02:00
2021-06-22 17:38:42 +02:00
@Override
public <T> void onRangeChanged(TableRangeViewChangedEvent<T> tableRangeViewChangedEvent) {
howeView.setVisibleUpdateStatusAction(false);
howeView.setCheckedCheckboxSelectAll(false);
2021-06-18 12:10:49 +02:00
}
});
2021-06-25 16:56:43 +02:00
2021-06-22 18:09:16 +02:00
eventBus.addHandler(CloseAllTabsEvent.TYPE, new CloseAllTabsEventHandler() {
2021-06-25 16:56:43 +02:00
2021-06-22 18:09:16 +02:00
@Override
public void onClick(CloseAllTabsEvent closeAllTabsEvent) {
mainTabPanel.closeTabs();
}
});
2021-06-25 16:56:43 +02:00
2021-06-28 15:40:53 +02:00
eventBus.addHandler(SelectItemsWithItemStatusEvent.TYPE, new SelectItemsWithItemStatusEventHandler() {
2021-06-25 16:56:43 +02:00
@Override
2021-06-28 15:40:53 +02:00
public void onValueChanged(SelectItemsWithItemStatusEvent statusSelectedEvent) {
2021-06-29 17:30:44 +02:00
GWT.log("On value changed: " + statusSelectedEvent.getItemStatus());
2021-06-29 17:56:15 +02:00
infoPanel.clear();
2021-06-28 15:40:53 +02:00
if (statusSelectedEvent.getItemStatus() != null) {
2021-06-25 16:56:43 +02:00
howeView.loadItemsWithStatus(statusSelectedEvent.getItemStatus());
mainTabPanel.selectTab(0);
}
if (statusSelectedEvent.getDisplayMessage() != null) {
showMessage(statusSelectedEvent.getDisplayMessage(), statusSelectedEvent.getAlertType());
2021-06-29 17:56:15 +02:00
}
2021-06-25 16:56:43 +02:00
}
});
2021-06-18 12:10:49 +02:00
eventBus.addHandler(ShowMessageEvent.TYPE, new ShowMessageEventHandler() {
2021-06-18 12:10:49 +02:00
@Override
public void onShowMessage(ShowMessageEvent showMessageEvent) {
2021-06-18 12:10:49 +02:00
if (showMessageEvent.getMsg() != null) {
showMessage(showMessageEvent.getMsg(), showMessageEvent.getAlerType());
2021-06-18 12:10:49 +02:00
}
}
});
2021-06-18 12:10:49 +02:00
}
private void showMessage(String msg, AlertType alertType) {
2021-06-18 12:10:49 +02:00
final Alert alert = new Alert(msg);
alertType = alertType != null ? alertType : AlertType.INFO;
alert.setType(alertType);
alert.setClose(true);
alert.setAnimation(true);
infoPanel.add(alert);
2021-06-18 12:10:49 +02:00
// Cleans the info panel after 12 sec.
Timer t = new Timer() {
2021-06-18 12:10:49 +02:00
@Override
public void run() {
infoPanel.clear();
2021-06-18 12:10:49 +02:00
}
};
2021-06-18 12:10:49 +02:00
t.schedule(12000);
2021-06-18 12:10:49 +02:00
}
/**
* Gets the main panel.
*
* @return the main panel
*/
2021-06-21 15:35:47 +02:00
public ComplexPanel getMainPanel() {
return mainPanel;
2021-06-18 12:10:49 +02:00
}
}