diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java index d3a8c3b..6e11087 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidgetController.java @@ -9,8 +9,11 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ClickItemEv import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ClickItemEventHandler; import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CloseAllTabsEvent; import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CloseAllTabsEventHandler; -import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStausEvent; -import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStausEventHandler; +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; 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.TableRangeViewChangedEvent; @@ -104,6 +107,28 @@ public class CkanContentModeratorWidgetController { } }); + 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: + + break; + + default: + break; + } + } + + } + }); + eventBus.addHandler(CheckBoxSelectIemsEvent.TYPE, new CheckBoxSelectIemsEventHandler() { @Override @@ -130,15 +155,15 @@ public class CkanContentModeratorWidgetController { } }); - eventBus.addHandler(SelectItemsWithItemStausEvent.TYPE, new SelectItemsWithItemStausEventHandler() { + eventBus.addHandler(SelectItemsWithItemStatusEvent.TYPE, new SelectItemsWithItemStatusEventHandler() { @Override - public void onValueChanged(SelectItemsWithItemStausEvent statusSelectedEvent) { - if(statusSelectedEvent.getItemStatus()!=null) { + public void onValueChanged(SelectItemsWithItemStatusEvent statusSelectedEvent) { + GWT.log("On value changed: "+statusSelectedEvent.getItemStatus()); + if (statusSelectedEvent.getItemStatus() != null) { howeView.loadItemsWithStatus(statusSelectedEvent.getItemStatus()); mainTabPanel.selectTab(0); } - } }); diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/IFrameInstanciedEvent.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/IFrameInstanciedEvent.java index a9f5600..ee84ed5 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/IFrameInstanciedEvent.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/IFrameInstanciedEvent.java @@ -4,26 +4,48 @@ import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.user.client.ui.Frame; - /** - * The Class NotifyLogoutEvent. + * The Class IFrameInstanciedEvent. * - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * Jun 23, 2016 + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 28, 2021 */ public class IFrameInstanciedEvent extends GwtEvent { public static Type TYPE = new Type(); private Frame iFrame; + private OPERATION operation; + /** + * The Enum OPERATION. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 28, 2021 + */ + public static enum OPERATION { + INIT, ONLOAD + } /** * Instantiates a new insert metadata event. + * + * @param iFrame the i frame + * @param operation the operation */ - public IFrameInstanciedEvent(Frame iFrame) { + public IFrameInstanciedEvent(Frame iFrame, OPERATION operation) { this.iFrame = iFrame; + this.operation = operation; } - /* (non-Javadoc) + /** + * Gets the associated type. + * + * @return the associated type + */ + /* + * (non-Javadoc) + * * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() */ @Override @@ -31,16 +53,39 @@ public class IFrameInstanciedEvent extends GwtEvent { - public static Type TYPE = new Type(); +public class SelectItemsWithItemStatusEvent extends GwtEvent { + public static Type TYPE = new Type(); private ItemStatus itemStatus; /** @@ -21,7 +20,7 @@ public class SelectItemsWithItemStausEvent extends GwtEvent getAssociatedType() { + public Type getAssociatedType() { return TYPE; } @@ -41,7 +40,7 @@ public class SelectItemsWithItemStausEvent extends GwtEvent sm = getCellTable().getSelectionModel(); - + if (sm instanceof SingleSelectionModel) { SingleSelectionModel ssm = (SingleSelectionModel) sm; ssm.clear(); + }else if (sm instanceof MultiSelectionModel) { + MultiSelectionModel msm = (MultiSelectionModel) sm; + msm.clear(); } getAsycnDataProvider().updateRowCount((int) result.getTotalItems(), true); @@ -209,7 +210,7 @@ public class ContentModeratorPaginatedView { GWT.log("Search finished!!!"); getAsycnDataProvider().updateRowCount(getCellTable().getRowCount(), true); } - //initFirstRangeChanged = false; + // initFirstRangeChanged = false; } @@ -244,6 +245,31 @@ public class ContentModeratorPaginatedView { } + /** + * Select items. + * + * @param select the select + * @param limitToPage the limit to page + */ + public void selectItems(boolean select, boolean limitToPage) { + SortedCellTable table = getCellTable(); + int rowSize = table.getVisibleItemCount(); + + for (int i = 0; i < rowSize; i++) { + CatalogueDataset item = table.getVisibleItem(i); + itemsTable.getSelectionModel().setSelected(item, select); + } + } + + /** + * Gets the select items. + * + * @return the select items + */ + public List getSelectItems() { + return itemsTable.getSelectedItems(); + } + /** * A custom {@link AsyncDataProvider}. * @@ -281,14 +307,4 @@ public class ContentModeratorPaginatedView { } - public void selectItems(boolean select, boolean limitToPage) { - SortedCellTable table = getCellTable(); - int rowSize = table.getVisibleItemCount(); - - for (int i = 0; i < rowSize; i++) { - CatalogueDataset item = table.getVisibleItem(i); - itemsTable.getSelectionModel().setSelected(item, select); - } - } - } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorToolbar.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorToolbar.java index f55ceec..01fce9f 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorToolbar.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorToolbar.java @@ -2,7 +2,7 @@ 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.SelectItemsWithItemStausEvent; +import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStatusEvent; import com.github.gwtbootstrap.client.ui.Dropdown; import com.github.gwtbootstrap.client.ui.Label; @@ -39,10 +39,10 @@ public class ContentModeratorToolbar extends Composite { public ContentModeratorToolbar(HandlerManager eventBus, ItemStatus status) { initWidget(uiBinder.createAndBindUi(this)); this.eventBus = eventBus; - //statusInfo.setReadOnly(true); + setActiveStatus(status); fillItemStatusOptions(); bindEvents(); - setActiveStatus(status); + } private void bindEvents() { @@ -59,24 +59,25 @@ public class ContentModeratorToolbar extends Composite { private void fillItemStatusOptions() { for (final ItemStatus status : ItemStatus.values()) { - NavLink link = new NavLink(); - link.setText(status.getLabel()); - link.addClickHandler(new ClickHandler() { + 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 SelectItemsWithItemStausEvent(activeStatus)); + eventBus.fireEvent(new SelectItemsWithItemStatusEvent(status)); } }); - dropdownSelectStatus.add(link); + dropdownSelectStatus.add(navLink); } } private void setActiveStatus(ItemStatus status) { this.activeStatus = status; - statusInfo.setText(activeStatus.getLabel()); + this.statusInfo.setText(activeStatus.getLabel()); } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java index 9d74e7c..bf28c65 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java @@ -14,7 +14,12 @@ import com.github.gwtbootstrap.client.ui.CheckBox; import com.github.gwtbootstrap.client.ui.Dropdown; import com.github.gwtbootstrap.client.ui.Heading; import com.github.gwtbootstrap.client.ui.NavLink; +import com.github.gwtbootstrap.client.ui.base.AlertBase; +import com.github.gwtbootstrap.client.ui.constants.AlertType; +import com.github.gwtbootstrap.client.ui.event.ClosedEvent; +import com.github.gwtbootstrap.client.ui.event.ClosedHandler; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; @@ -24,6 +29,7 @@ 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.HTMLPanel; +import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.Widget; // TODO: Auto-generated Javadoc @@ -32,7 +38,7 @@ import com.google.gwt.user.client.ui.Widget; * * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it * - * Jun 22, 2021 + * Jun 22, 2021 */ public class HomeView extends Composite { @@ -51,28 +57,26 @@ public class HomeView extends Composite { @UiField Heading pageHeader; - - @UiField - AlertBlock actionConfirmAlert; - - @UiField - Button buttActionConfirmYes; - - @UiField - Button buttonActionConfirmNo; - private List setStatusOptions = new ArrayList<>(); + @UiField + HTMLPanel confirmPanel; + + private ScrollPanel confirmPanelContainer = new ScrollPanel(); + + private List setStatusOptions = new ArrayList(); private ItemStatus displayingItemStatus; private HandlerManager eventBus; + private List selectedItems; + /** * The Interface HomeViewUiBinder. * * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it * - * Jun 22, 2021 + * Jun 22, 2021 */ interface HomeViewUiBinder extends UiBinder { } @@ -80,10 +84,10 @@ public class HomeView extends Composite { /** * Instantiates a new home view. * - * @param eventBus the event bus - * @param status the status + * @param eventBus the event bus + * @param status the status * @param displayFields the display fields - * @param sortByField the sort by field + * @param sortByField the sort by field */ public HomeView(HandlerManager eventBus, ItemStatus status, DISPLAY_FIELD[] displayFields, DISPLAY_FIELD sortByField) { @@ -95,9 +99,9 @@ public class HomeView extends Composite { cmsPanel.addToBottom(paginatedView.getPagerPanel()); panelContainer.add(cmsPanel.getPanel()); setVisibleUpdateStatusAction(false); - fillSetStatusOptions(); bindEvents(); + confirmPanel.add(confirmPanelContainer); } /** @@ -113,7 +117,7 @@ public class HomeView extends Composite { } } - + private void setDisplayingWithStatus(ItemStatus status) { this.displayingItemStatus = status; this.pageHeader.setSubtext(status.getLabel()); @@ -133,25 +137,32 @@ public class HomeView extends Composite { } }); - - - buttActionConfirmYes.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - // TODO Auto-generated method stub - - } - }); - - buttonActionConfirmNo.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - actionConfirmAlert.setVisible(false); - - } - }); + + for (final NavLink navLink : setStatusOptions) { + navLink.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + selectedItems = paginatedView.getSelectItems(); + int count = selectedItems.size(); + String msg = "Going to update status of"; + if (count > 0) { + if (count == 1) { + msg += " one item"; + } else { + msg += " " + count + " items"; + } + + msg += " from " + displayingItemStatus.getLabel() + " to " + navLink.getText() + + ". Confirm?"; + }else + return; + + showConfirm(msg); + + } + }); + } } /** @@ -175,7 +186,7 @@ public class HomeView extends Composite { /** * Mark items as checked. * - * @param select the select + * @param select the select * @param limitToPage the limit to page */ public void markItemsAsChecked(boolean select, boolean limitToPage) { @@ -190,15 +201,52 @@ public class HomeView extends Composite { public void setCheckedCheckboxSelectAll(boolean bool) { cbSelectAll.setValue(bool); } - - + /** * Show confirm. * * @param msg the msg */ public void showConfirm(String msg) { - actionConfirmAlert.setVisible(true); + confirmPanelContainer.clear(); + + final AlertBlock newAlertBlock = new AlertBlock(AlertType.DEFAULT); + newAlertBlock.setAnimation(true); + newAlertBlock.setClose(true); + + newAlertBlock.addClosedHandler(new ClosedHandler() { + + @Override + public void onClosed(ClosedEvent event) { + confirmPanelContainer.clear(); + } + }); + + Button buttActionConfirmYes = new Button(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + confirmPanelContainer.clear(); + } + }); + buttActionConfirmYes.getElement().getStyle().setMarginLeft(10, Unit.PX); + buttActionConfirmYes.setText("YES"); + newAlertBlock.add(buttActionConfirmYes); + + Button buttonActionConfirmNo = new Button(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + confirmPanelContainer.clear(); + } + }); + buttonActionConfirmNo.getElement().getStyle().setMarginLeft(10, Unit.PX); + buttonActionConfirmNo.setText("NO"); + newAlertBlock.add(buttonActionConfirmNo); + + newAlertBlock.setHTML(msg); + + confirmPanelContainer.add(newAlertBlock); } /** @@ -207,10 +255,19 @@ public class HomeView extends Composite { * @param itemStatus the item status */ public void loadItemsWithStatus(ItemStatus itemStatus) { + GWT.log("loadItemsWithStatus started"); setDisplayingWithStatus(itemStatus); + setCheckedCheckboxSelectAll(false); + setVisibleUpdateStatusAction(false); + try { + confirmPanelContainer.clear(); + }catch (Exception e) { + GWT.log("error: "+e.getMessage() + " cause: "+e.getCause().toString()); + } paginatedView.loadItemsForStatus(itemStatus); - + + + GWT.log("loadItemsWithStatus end"); } - } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.ui.xml b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.ui.xml index 1fe4762..8e81cce 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.ui.xml +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.ui.xml @@ -35,13 +35,7 @@ ui:field="dropdownSetStatus" addStyleNames="{style.margin-left-20}"> - - - Yes - No - - + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/MainTabPanel.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/MainTabPanel.java index a0d5874..c6dd586 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/MainTabPanel.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/MainTabPanel.java @@ -13,8 +13,11 @@ import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.LoadEvent; +import com.google.gwt.event.dom.client.LoadHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; @@ -73,16 +76,28 @@ public class MainTabPanel extends Composite { * @return the tab */ public Tab addTab(String heading, Widget w) { - Tab tab = new Tab(); - tab.setIcon(IconType.BOOK); + final Tab tab = new Tab(); + + if (w instanceof CkanFramePanel) { + tab.setCustomIconStyle("icon-rotate-right icon-spin"); + CkanFramePanel ckanFramePanel = (CkanFramePanel) w; + ckanFramePanel.getFrame().addLoadHandler(new LoadHandler() { + + @Override + public void onLoad(LoadEvent event) { + tab.setIcon(IconType.BOOK); + setNoSpinner(tab); + } + }); + } + tab.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - // TODO Auto-generated method stub - } }); + String shortTitle = UtilFunct.ellipsis(heading, 20, false); tab.asWidget().setTitle(heading); tab.setHeading(shortTitle); @@ -91,13 +106,13 @@ public class MainTabPanel extends Composite { results.add(tab); mainTabPanel.add(tab); - //activeTabPanels(false); + // activeTabPanels(false); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { - //mainTabPanel.selectTab(results.size() - 1); + // mainTabPanel.selectTab(results.size() - 1); } }); @@ -133,11 +148,12 @@ public class MainTabPanel extends Composite { int tabSize = results.size(); GWT.log("tab size is: " + tabSize); for (int i = 1; i < tabSize; i++) { - //each remove shifts any subsequent elements to the left, so I'm removing always the first element - mainTabPanel.remove(1); + // each remove shifts any subsequent elements to the left, so I'm removing + // always the first element + mainTabPanel.remove(1); results.remove(1); } - //selecting Home Tab + // selecting Home Tab selectTab(0); } @@ -147,5 +163,26 @@ public class MainTabPanel extends Composite { } } + + /** + * Sets the no spinner. + * + * @param tab the new no spinner + */ + private void setNoSpinner(Tab tab) { + try{ + tab.asTabLink().getAnchor().removeStyleName("icon-spin"); + tab.asTabLink().getAnchor().removeStyleName("icon-rotate-right"); + Element anchorElem = tab.asTabLink().getAnchor().asWidget().getElement(); + anchorElem.getFirstChildElement().removeClassName("icon-spin"); + anchorElem.getFirstChildElement().removeClassName("icon-rotate-right"); + }catch(Exception e){ + //silent + } + tab.asTabLink().getAnchor().setIcon(IconType.BOOK); + //tab.asTabLink().getAnchor().setVisible(false); + //if(tab.asTabLink().getAnchor().setVisible(false);) + + } }