From 199d4f1566683a28822a62916ae202cfd1a285b8 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 22 Jun 2021 17:38:42 +0200 Subject: [PATCH] in progress --- .../CkanContentModeratorWidgetController.java | 64 ++++++++++--- .../events/CheckBoxSelectIemsEvent.java | 62 +++++++++++++ .../CheckBoxSelectIemsEventHandler.java | 23 +++++ .../client/events/ClickItemEvent.java | 48 ++++++---- .../client/events/ShowItemEvent.java | 68 ++++++++++++++ .../client/events/ShowItemEventHandler.java | 23 +++++ .../events/TableRangeViewChangedEvent.java | 47 ++++++++++ .../TableRangeViewChangedEventHandler.java | 16 ++++ .../ui/ContentModeratorPaginatedView.java | 20 ++++- .../client/ui/HomeView.java | 89 +++++++++++++++++++ .../client/ui/HomeView.ui.xml | 14 ++- .../client/ui/MainTabPanel.java | 8 +- .../ui/table/AbstractItemsCellTable.java | 6 +- .../client/ui/table/ItemsTable.java | 77 ++++++++-------- .../client/ui/util/UtilFunct.java | 34 +++++++ 15 files changed, 525 insertions(+), 74 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEventHandler.java create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEventHandler.java create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEventHandler.java create mode 100644 src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/util/UtilFunct.java 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 f9d75e3..e0f79cc 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 @@ -1,8 +1,16 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client; +import java.util.List; + import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; +import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CheckBoxSelectIemsEvent; +import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CheckBoxSelectIemsEventHandler; import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ClickItemEvent; import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ClickItemEventHandler; +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; +import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEventHandler; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.CkanFramePanel; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorPaginatedView; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorToolbar; @@ -29,7 +37,7 @@ public class CkanContentModeratorWidgetController { public final static CkanContentModeratorServiceAsync contentModeratorService = GWT .create(CkanContentModeratorService.class); - + private FlowPanel mainPanel = new FlowPanel(); private ContentModeratorToolbar toolbar; @@ -42,7 +50,7 @@ public class CkanContentModeratorWidgetController { /** * Instantiates a new ckan content moderator widget. * - * @param status the status + * @param status the status * @param displayFields the display fields * @param sortByField the sort by field */ @@ -66,14 +74,49 @@ public class CkanContentModeratorWidgetController { @Override public void onClick(ClickItemEvent clickItemEvent) { - if (clickItemEvent.getItem() instanceof CatalogueDataset) { - CatalogueDataset clickedDataset = (CatalogueDataset) clickItemEvent.getItem(); - CkanFramePanel cfp = new CkanFramePanel(eventBus); - cfp.instanceFrame(clickedDataset.getUrl(), null); - mainTabPanel.addTab(clickedDataset.getName(), cfp); - // Window.open(clickedDataset.getUrl(), null, "_blank"); - } + if (clickItemEvent.getSelectItems() != null) { + List items = clickItemEvent.getSelectItems(); + // if items selected are > 0 then shows button "Update status as.." + howeView.setVisibleUpdateStatusAction(items.size() > 0); + } + } + }); + + eventBus.addHandler(ShowItemEvent.TYPE, new ShowItemEventHandler() { + + @Override + public void onShowItemClicked(ShowItemEvent showItemEvent) { + + if (showItemEvent.getSelectItems() != null) { + List items = showItemEvent.getSelectItems(); + + for (T t : items) { + CatalogueDataset clickedDataset = (CatalogueDataset) t; + CkanFramePanel cfp = new CkanFramePanel(eventBus); + cfp.instanceFrame(clickedDataset.getUrl(), null); + mainTabPanel.addTab(clickedDataset.getTitle(), cfp); + + } + } + } + }); + + eventBus.addHandler(CheckBoxSelectIemsEvent.TYPE, new CheckBoxSelectIemsEventHandler() { + + @Override + public void onValueChanged(CheckBoxSelectIemsEvent onValueChangedEvent) { + howeView.markItemsAsChecked(onValueChangedEvent.isChecked(), true); + + } + }); + + eventBus.addHandler(TableRangeViewChangedEvent.TYPE, new TableRangeViewChangedEventHandler() { + + @Override + public void onRangeChanged(TableRangeViewChangedEvent tableRangeViewChangedEvent) { + howeView.setVisibleUpdateStatusAction(false); + howeView.setCheckedCheckboxSelectAll(false); } }); } @@ -93,7 +136,6 @@ public class CkanContentModeratorWidgetController { } - /** * Check content moderator configuration. * @@ -113,7 +155,7 @@ public class CkanContentModeratorWidgetController { @Override public void onSuccess(Boolean result) { isContentModeratorEnabled = result; - if(whenDone!=null) + if (whenDone != null) whenDone.execute(); } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEvent.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEvent.java new file mode 100644 index 0000000..9f39cf7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEvent.java @@ -0,0 +1,62 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.client.events; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * The Class CheckBoxSelectIemsEvent. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + * @param the generic type + */ +public class CheckBoxSelectIemsEvent extends GwtEvent { + public static Type TYPE = new Type(); + private boolean isChecked; + + /** + * Instantiates a new click item event. + * + * @param selectItems the select items + */ + public CheckBoxSelectIemsEvent(boolean checkedValue) { + this.isChecked = checkedValue; + } + + /** + * Gets the associated type. + * + * @return the associated type + */ + /* + * (non-Javadoc) + * + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /** + * Dispatch. + * + * @param handler the handler + */ + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared. + * EventHandler) + */ + @Override + protected void dispatch(CheckBoxSelectIemsEventHandler handler) { + handler.onValueChanged(this); + } + + public boolean isChecked() { + return isChecked; + } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEventHandler.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEventHandler.java new file mode 100644 index 0000000..99169fc --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/CheckBoxSelectIemsEventHandler.java @@ -0,0 +1,23 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.client.events; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * The Interface CheckBoxSelectIemsEventHandler. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + */ +public interface CheckBoxSelectIemsEventHandler extends EventHandler { + + + /** + * On value changed. + * + * @param the generic type + * @param onValueChangedEvent the on value changed event + */ + void onValueChanged(CheckBoxSelectIemsEvent onValueChangedEvent); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ClickItemEvent.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ClickItemEvent.java index 6bb0a89..5788651 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ClickItemEvent.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ClickItemEvent.java @@ -1,29 +1,38 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client.events; -import com.google.gwt.event.shared.GwtEvent; +import java.util.List; +import com.google.gwt.event.shared.GwtEvent; /** * The Class ClickItemEvent. * - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * Jul 6, 2015 + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + * @param the generic type */ public class ClickItemEvent extends GwtEvent { public static Type TYPE = new Type(); - private T item; - + private List selectItems; /** * Instantiates a new click item event. * - * @param item the item + * @param selectItems the select items */ - public ClickItemEvent(T item) { - this.item = item; + public ClickItemEvent(List selectItems) { + this.selectItems = selectItems; } - /* (non-Javadoc) + /** + * Gets the associated type. + * + * @return the associated type + */ + /* + * (non-Javadoc) + * * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() */ @Override @@ -31,8 +40,17 @@ public class ClickItemEvent extends GwtEvent { return TYPE; } - /* (non-Javadoc) - * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + /** + * Dispatch. + * + * @param handler the handler + */ + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared. + * EventHandler) */ @Override protected void dispatch(ClickItemEventHandler handler) { @@ -40,11 +58,11 @@ public class ClickItemEvent extends GwtEvent { } /** - * Gets the item. + * Gets the select items. * - * @return the item + * @return the select items */ - public T getItem() { - return item; + public List getSelectItems() { + return selectItems; } } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEvent.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEvent.java new file mode 100644 index 0000000..42bbb50 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEvent.java @@ -0,0 +1,68 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.client.events; + +import java.util.List; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * The Class ShowItemEvent. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + * @param the generic type + */ +public class ShowItemEvent extends GwtEvent { + public static Type TYPE = new Type(); + private List selectItems; + + /** + * Instantiates a new click item event. + * + * @param selectItems the select items + */ + public ShowItemEvent(List selectItems) { + this.selectItems = selectItems; + } + + /** + * Gets the associated type. + * + * @return the associated type + */ + /* + * (non-Javadoc) + * + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /** + * Dispatch. + * + * @param handler the handler + */ + /* + * (non-Javadoc) + * + * @see + * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared. + * EventHandler) + */ + @Override + protected void dispatch(ShowItemEventHandler handler) { + handler.onShowItemClicked(this); + } + + /** + * Gets the select items. + * + * @return the select items + */ + public List getSelectItems() { + return selectItems; + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEventHandler.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEventHandler.java new file mode 100644 index 0000000..75bceb8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/ShowItemEventHandler.java @@ -0,0 +1,23 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.client.events; + +import com.google.gwt.event.shared.EventHandler; + + +// TODO: Auto-generated Javadoc +/** + * The Interface ShowItemEventHandler. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + */ +public interface ShowItemEventHandler extends EventHandler { + + /** + * On show item clicked. + * + * @param the generic type + * @param showItemEvent the show item event + */ + void onShowItemClicked(ShowItemEvent showItemEvent); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEvent.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEvent.java new file mode 100644 index 0000000..b235763 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEvent.java @@ -0,0 +1,47 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.client.events; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * The Class TableRangeViewChangedEvent. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + * @param the generic type + */ +public class TableRangeViewChangedEvent extends GwtEvent { + public static Type TYPE = new Type(); + private int startIndex; + private int limitIndex; + + /** + * Instantiates a new click item event. + * + * @param handler the handler + * @return + */ + public TableRangeViewChangedEvent(int start, int limit) { + this.startIndex = start; + this.limitIndex = limit; + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + @Override + protected void dispatch(TableRangeViewChangedEventHandler handler) { + handler.onRangeChanged(this); + } + + public int getStartIndex() { + return startIndex; + } + + public int getLimitIndex() { + return limitIndex; + } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEventHandler.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEventHandler.java new file mode 100644 index 0000000..a7538ab --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/events/TableRangeViewChangedEventHandler.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.client.events; + +import com.google.gwt.event.shared.EventHandler; + +/** + * The Interface TableRangeViewChangedEventHandler. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + */ +public interface TableRangeViewChangedEventHandler extends EventHandler { + + void onRangeChanged(TableRangeViewChangedEvent tableRangeViewChangedEvent); + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorPaginatedView.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorPaginatedView.java index a1348f7..7526960 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorPaginatedView.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/ContentModeratorPaginatedView.java @@ -5,6 +5,7 @@ import java.util.List; import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorWidgetController; import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants; +import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEvent; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.SortedCellTable; @@ -48,6 +49,7 @@ public class ContentModeratorPaginatedView { private LoadingPanel loadingPanel = new LoadingPanel(new HTML("Loading data...")); private ItemStatus itemStatus; private int serverStartIndex; + private HandlerManager eventBus; /** * Instantiates a new content moderator paginated view. @@ -62,6 +64,7 @@ public class ContentModeratorPaginatedView { DISPLAY_FIELD sortByField) { this.itemStatus = theStatus; this.newLoading = true; + this.eventBus = eventbus; itemsTable = new ItemsTable(eventbus, displayFields, sortByField); itemsTable.initTable(null, null, dataProvider); @@ -215,9 +218,9 @@ public class ContentModeratorPaginatedView { GWT.log("calling getDataForStatus with parameters [startIndex: " + offset + ", limit: " + limit + ", serverIndex:" + serverIndex + "]"); - - CkanContentModeratorWidgetController.contentModeratorService.getDataForStatus(status, offset, limit, serverIndex, - new AsyncCallback() { + + CkanContentModeratorWidgetController.contentModeratorService.getDataForStatus(status, offset, limit, + serverIndex, new AsyncCallback() { @Override public void onSuccess(SearchedData result) { @@ -264,9 +267,20 @@ public class ContentModeratorPaginatedView { GWT.log("Range changed: " + start + " " + length + " visible count: " + display.getVisibleItemCount()); loadNewPage(start, length, false); + eventBus.fireEvent(new TableRangeViewChangedEvent(start, length)); } } + 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/HomeView.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/HomeView.java index 2719fb5..636cfdb 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 @@ -4,12 +4,17 @@ import java.util.ArrayList; import java.util.List; import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; +import org.gcube.portlets.widgets.ckancontentmoderator.client.events.CheckBoxSelectIemsEvent; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD; +import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; 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.google.gwt.core.client.GWT; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; @@ -17,6 +22,14 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; +// TODO: Auto-generated Javadoc +/** + * The Class HomeView. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + */ public class HomeView extends Composite { private static HomeViewUiBinder uiBinder = GWT.create(HomeViewUiBinder.class); @@ -32,25 +45,52 @@ public class HomeView extends Composite { @UiField Dropdown dropdownSetStatus; + @UiField + Heading pageHeader; + private List setStatusOptions = new ArrayList<>(); private ItemStatus displayingItemStatus; + private HandlerManager eventBus; + + /** + * The Interface HomeViewUiBinder. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + */ interface HomeViewUiBinder extends UiBinder { } + /** + * Instantiates a new home view. + * + * @param eventBus the event bus + * @param status the status + * @param displayFields the display fields + * @param sortByField the sort by field + */ public HomeView(HandlerManager eventBus, ItemStatus status, DISPLAY_FIELD[] displayFields, DISPLAY_FIELD sortByField) { initWidget(uiBinder.createAndBindUi(this)); this.displayingItemStatus = status; + this.eventBus = eventBus; + this.pageHeader.setSubtext(status.getLabel()); paginatedView = new ContentModeratorPaginatedView(eventBus, status, displayFields, sortByField); cmsPanel.addToCenter(paginatedView.getCellPanel()); cmsPanel.addToBottom(paginatedView.getPagerPanel()); panelContainer.add(cmsPanel.getPanel()); + setVisibleUpdateStatusAction(false); fillSetStatusOptions(); + bindEvents(); } + /** + * Fill set status options. + */ private void fillSetStatusOptions() { for (ItemStatus status : ItemStatus.values()) { if (!status.equals(displayingItemStatus)) { @@ -62,8 +102,57 @@ public class HomeView extends Composite { } + /** + * Bind events. + */ + public void bindEvents() { + + cbSelectAll.addValueChangeHandler(new ValueChangeHandler() { + + @Override + public void onValueChange(ValueChangeEvent event) { + GWT.log("Is checked: " + cbSelectAll.getValue()); + eventBus.fireEvent(new CheckBoxSelectIemsEvent(cbSelectAll.getValue())); + + } + }); + } + + /** + * Gets the panel. + * + * @return the panel + */ public Composite getPanel() { return this; } + /** + * Sets the visible update status action. + * + * @param bool the new visible update status action + */ + public void setVisibleUpdateStatusAction(boolean bool) { + dropdownSetStatus.setVisible(bool); + } + + /** + * Mark items as checked. + * + * @param select the select + * @param limitToPage the limit to page + */ + public void markItemsAsChecked(boolean select, boolean limitToPage) { + paginatedView.selectItems(select, limitToPage); + } + + /** + * Sets the checked checkbox select all. + * + * @param bool the new checked checkbox select all + */ + public void setCheckedCheckboxSelectAll(boolean bool) { + cbSelectAll.setValue(bool); + } + } 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 802c5d3..3a24749 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 @@ -14,15 +14,25 @@ .margin-left-5 { margin-left: 5px; } + + .headinghome { + margin-left: 5px; + margin-bottom: 20px; + font-size: 16px !important; + } + .headinghome>small { + font-size: 16px !important; + } + Items with status: - - 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 4b5d21d..878f7c8 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 @@ -3,8 +3,11 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client.ui; import java.util.ArrayList; import java.util.List; +import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.util.UtilFunct; + import com.github.gwtbootstrap.client.ui.Tab; import com.github.gwtbootstrap.client.ui.TabPanel; +import com.github.gwtbootstrap.client.ui.constants.IconType; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; @@ -70,6 +73,7 @@ public class MainTabPanel extends Composite { */ public Tab addTab(String heading, Widget w){ Tab tab = new Tab(); + tab.setIcon(IconType.BOOK); tab.addClickHandler(new ClickHandler() { @Override @@ -78,7 +82,9 @@ public class MainTabPanel extends Composite { } }); - tab.setHeading(heading); + String shortTitle = UtilFunct.ellipsis(heading, 20, false); + tab.asWidget().setTitle(heading); + tab.setHeading(shortTitle); if(w!=null) tab.add(w); diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/AbstractItemsCellTable.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/AbstractItemsCellTable.java index fcc0da2..34e774d 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/AbstractItemsCellTable.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/AbstractItemsCellTable.java @@ -1,5 +1,7 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Set; @@ -92,11 +94,13 @@ public abstract class AbstractItemsCellTable { GWT.log("Clicked: " + selectedObject); // selectedItem(selectedObject); if (fireEventOnClick) - AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent(selectedObject)); + AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent(Arrays.asList(selectedObject))); } }else if (theSelectionModel instanceof MultiSelectionModel) { Set selected = ((MultiSelectionModel) theSelectionModel).getSelectedSet(); GWT.log("Selected are:" +selected); + if (fireEventOnClick) + AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent(new ArrayList(selected))); } } }); diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/ItemsTable.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/ItemsTable.java index 604d17b..021189d 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/ItemsTable.java +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/table/ItemsTable.java @@ -11,12 +11,14 @@ import java.util.List; import java.util.Set; import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants; +import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowItemEvent; import org.gcube.portlets.widgets.ckancontentmoderator.client.resources.ContentModeratorWidgetResources; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.SelectionItems; import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; import com.github.gwtbootstrap.client.ui.Pagination; import com.google.gwt.cell.client.ButtonCell; +import com.google.gwt.cell.client.Cell.Context; import com.google.gwt.cell.client.CheckboxCell; import com.google.gwt.cell.client.DateCell; import com.google.gwt.cell.client.FieldUpdater; @@ -38,6 +40,7 @@ import com.google.gwt.user.client.ui.Label; import com.google.gwt.view.client.AbstractDataProvider; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.MultiSelectionModel; +import com.google.gwt.view.client.SelectionModel; import com.google.gwt.view.client.SingleSelectionModel; /** @@ -86,23 +89,6 @@ public class ItemsTable extends AbstractItemsCellTab setDisplayFields(fields); } -// /** -// * Update items. -// * -// * @param items the items -// * @param removeOldItems the remove old items -// */ -// /* -// * (non-Javadoc) -// * -// * @see -// * org.gcube.portlets.widgets.wsexplorer.client.view.grid.AbstractItemsCellTable -// * #updateItems(java.util.List, boolean) -// */ -// public void updateItems(List items, boolean removeOldItems) { -// super.updateItems(items, removeOldItems); -// } - /** * Adds the items. * @@ -130,36 +116,42 @@ public class ItemsTable extends AbstractItemsCellTab this.isAsyncronusTable = dataProvider instanceof ListDataProvider ? false : true; setEmptyTableMessage(ContentModeratorWidgetConstants.NO_DATA); - // Checkbox column. This table will uses a checkbox column for selection. - // Alternatively, you can call cellTable.setSelectionEnabled(true) to enable - // mouse selection. - Column checkColumn = new Column(new CheckboxCell(true, false)) { + final CheckboxCell cellCheckBox = new CheckboxCell(true, false); + Column checkColumn = new Column(cellCheckBox) { @Override public Boolean getValue(T object) { // Get the value from the selection model. return theSelectionModel.isSelected(object); } + + @Override + public void render(Context context, T object, SafeHtmlBuilder sb) { + super.render(context, object, sb); + GWT.log("added checkbox: " + cellCheckBox + " to object: " + object); + } + }; + sortedCellTable.addColumn(checkColumn, "", false); sortedCellTable.setColumnWidth(checkColumn, 40, Unit.PX); - + ButtonCell previewButton = new ButtonCell(); - Column showdItemColumn = new Column(previewButton) { - public String getValue(T object) { - return "Show"; - } + Column showdItemColumn = new Column(previewButton) { + public String getValue(T object) { + return "Show"; + } }; - + showdItemColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, T object, String value) { - GWT.log("clicked"); - } - }); + @Override + public void update(int index, T object, String value) { + GWT.log("clicked show"); + eventBus.fireEvent(new ShowItemEvent(Arrays.asList(object))); + } + }); sortedCellTable.addColumn(showdItemColumn); sortedCellTable.setColumnWidth(showdItemColumn, 80, Unit.PX); - if (this.displayFields.contains(DISPLAY_FIELD.NAME)) { // NAME @@ -340,7 +332,7 @@ public class ItemsTable extends AbstractItemsCellTab } } - + GWT.log("startSortByColumn: " + startSortByColumn); if (startSortByColumn != null) @@ -376,13 +368,6 @@ public class ItemsTable extends AbstractItemsCellTab break; } - /* - * final SingleSelectionModel selectionModel = new - * SingleSelectionModel(); selectionModel.addSelectionChangeHandler(new - * Handler() { - * - * @Override public void onSelectionChange(SelectionChangeEvent event) { } }); - */ } /** @@ -506,4 +491,14 @@ public class ItemsTable extends AbstractItemsCellTab if (sortedCellTable != null) sortedCellTable.setEmptyTableWidget(new Label(msg)); } + + /** + * Gets the selection model. + * + * @return the selection model + */ + public SelectionModel getSelectionModel() { + return theSelectionModel; + } + } diff --git a/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/util/UtilFunct.java b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/util/UtilFunct.java new file mode 100644 index 0000000..0f8acc2 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/ui/util/UtilFunct.java @@ -0,0 +1,34 @@ +package org.gcube.portlets.widgets.ckancontentmoderator.client.ui.util; + + +/** + * The Class UtilFunct. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Jun 22, 2021 + */ +public class UtilFunct { + + /** + * Ellipsis. + * + * @param value the value + * @param lenght the length + * @param left the left + * @return the string + */ + public static String ellipsis(String value, int length, boolean left) { + if (value.length() < 3) + return value; + + if (value.length() > length) { + if (left) + return "..." + value.substring(value.length() - length + 3); + else + return value.substring(0, length) + "..."; + } + return value; + } + +}