task_21363 #1

Closed
francesco.mangiacrapa wants to merge 53 commits from task_21363 into master
15 changed files with 525 additions and 74 deletions
Showing only changes of commit 199d4f1566 - Show all commits

View File

@ -1,8 +1,16 @@
package org.gcube.portlets.widgets.ckancontentmoderator.client; package org.gcube.portlets.widgets.ckancontentmoderator.client;
import java.util.List;
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; 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.ClickItemEvent;
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ClickItemEventHandler; 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.CkanFramePanel;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorPaginatedView; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorPaginatedView;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorToolbar; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorToolbar;
@ -66,15 +74,50 @@ public class CkanContentModeratorWidgetController {
@Override @Override
public <T> void onClick(ClickItemEvent<T> clickItemEvent) { public <T> void onClick(ClickItemEvent<T> clickItemEvent) {
if (clickItemEvent.getItem() instanceof CatalogueDataset) { if (clickItemEvent.getSelectItems() != null) {
CatalogueDataset clickedDataset = (CatalogueDataset) clickItemEvent.getItem(); List<T> 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 <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); CkanFramePanel cfp = new CkanFramePanel(eventBus);
cfp.instanceFrame(clickedDataset.getUrl(), null); cfp.instanceFrame(clickedDataset.getUrl(), null);
mainTabPanel.addTab(clickedDataset.getName(), cfp); mainTabPanel.addTab(clickedDataset.getTitle(), cfp);
// Window.open(clickedDataset.getUrl(), null, "_blank");
}
} }
}
}
});
eventBus.addHandler(CheckBoxSelectIemsEvent.TYPE, new CheckBoxSelectIemsEventHandler() {
@Override
public <T> void onValueChanged(CheckBoxSelectIemsEvent<T> onValueChangedEvent) {
howeView.markItemsAsChecked(onValueChangedEvent.isChecked(), true);
}
});
eventBus.addHandler(TableRangeViewChangedEvent.TYPE, new TableRangeViewChangedEventHandler() {
@Override
public <T> void onRangeChanged(TableRangeViewChangedEvent<T> tableRangeViewChangedEvent) {
howeView.setVisibleUpdateStatusAction(false);
howeView.setCheckedCheckboxSelectAll(false);
}
}); });
} }
@ -93,7 +136,6 @@ public class CkanContentModeratorWidgetController {
} }
/** /**
* Check content moderator configuration. * Check content moderator configuration.
* *
@ -113,7 +155,7 @@ public class CkanContentModeratorWidgetController {
@Override @Override
public void onSuccess(Boolean result) { public void onSuccess(Boolean result) {
isContentModeratorEnabled = result; isContentModeratorEnabled = result;
if(whenDone!=null) if (whenDone != null)
whenDone.execute(); whenDone.execute();
} }

View File

@ -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 <T> the generic type
*/
public class CheckBoxSelectIemsEvent<T> extends GwtEvent<CheckBoxSelectIemsEventHandler> {
public static Type<CheckBoxSelectIemsEventHandler> TYPE = new Type<CheckBoxSelectIemsEventHandler>();
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<CheckBoxSelectIemsEventHandler> 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;
}
}

View File

@ -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 <T> the generic type
* @param onValueChangedEvent the on value changed event
*/
<T> void onValueChanged(CheckBoxSelectIemsEvent<T> onValueChangedEvent);
}

View File

@ -1,29 +1,38 @@
package org.gcube.portlets.widgets.ckancontentmoderator.client.events; 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. * The Class ClickItemEvent.
* *
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
* Jul 6, 2015 *
* Jun 22, 2021
* @param <T> the generic type
*/ */
public class ClickItemEvent<T> extends GwtEvent<ClickItemEventHandler> { public class ClickItemEvent<T> extends GwtEvent<ClickItemEventHandler> {
public static Type<ClickItemEventHandler> TYPE = new Type<ClickItemEventHandler>(); public static Type<ClickItemEventHandler> TYPE = new Type<ClickItemEventHandler>();
private T item; private List<T> selectItems;
/** /**
* Instantiates a new click item event. * Instantiates a new click item event.
* *
* @param item the item * @param selectItems the select items
*/ */
public ClickItemEvent(T item) { public ClickItemEvent(List<T> selectItems) {
this.item = item; this.selectItems = selectItems;
} }
/* (non-Javadoc) /**
* Gets the associated type.
*
* @return the associated type
*/
/*
* (non-Javadoc)
*
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/ */
@Override @Override
@ -31,8 +40,17 @@ public class ClickItemEvent<T> extends GwtEvent<ClickItemEventHandler> {
return TYPE; 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 @Override
protected void dispatch(ClickItemEventHandler handler) { protected void dispatch(ClickItemEventHandler handler) {
@ -40,11 +58,11 @@ public class ClickItemEvent<T> extends GwtEvent<ClickItemEventHandler> {
} }
/** /**
* Gets the item. * Gets the select items.
* *
* @return the item * @return the select items
*/ */
public T getItem() { public List<T> getSelectItems() {
return item; return selectItems;
} }
} }

View File

@ -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 <T> the generic type
*/
public class ShowItemEvent<T> extends GwtEvent<ShowItemEventHandler> {
public static Type<ShowItemEventHandler> TYPE = new Type<ShowItemEventHandler>();
private List<T> selectItems;
/**
* Instantiates a new click item event.
*
* @param selectItems the select items
*/
public ShowItemEvent(List<T> 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<ShowItemEventHandler> 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<T> getSelectItems() {
return selectItems;
}
}

View File

@ -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 <T> the generic type
* @param showItemEvent the show item event
*/
<T> void onShowItemClicked(ShowItemEvent<T> showItemEvent);
}

View File

@ -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 <T> the generic type
*/
public class TableRangeViewChangedEvent<T> extends GwtEvent<TableRangeViewChangedEventHandler> {
public static Type<TableRangeViewChangedEventHandler> TYPE = new Type<TableRangeViewChangedEventHandler>();
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<TableRangeViewChangedEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(TableRangeViewChangedEventHandler handler) {
handler.onRangeChanged(this);
}
public int getStartIndex() {
return startIndex;
}
public int getLimitIndex() {
return limitIndex;
}
}

View File

@ -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 {
<T> void onRangeChanged(TableRangeViewChangedEvent<T> tableRangeViewChangedEvent);
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorWidgetController; import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorWidgetController;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants; 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;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.SortedCellTable; 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 LoadingPanel loadingPanel = new LoadingPanel(new HTML("Loading data..."));
private ItemStatus itemStatus; private ItemStatus itemStatus;
private int serverStartIndex; private int serverStartIndex;
private HandlerManager eventBus;
/** /**
* Instantiates a new content moderator paginated view. * Instantiates a new content moderator paginated view.
@ -62,6 +64,7 @@ public class ContentModeratorPaginatedView {
DISPLAY_FIELD sortByField) { DISPLAY_FIELD sortByField) {
this.itemStatus = theStatus; this.itemStatus = theStatus;
this.newLoading = true; this.newLoading = true;
this.eventBus = eventbus;
itemsTable = new ItemsTable<CatalogueDataset>(eventbus, displayFields, sortByField); itemsTable = new ItemsTable<CatalogueDataset>(eventbus, displayFields, sortByField);
itemsTable.initTable(null, null, dataProvider); itemsTable.initTable(null, null, dataProvider);
@ -216,8 +219,8 @@ public class ContentModeratorPaginatedView {
GWT.log("calling getDataForStatus with parameters [startIndex: " + offset + ", limit: " + limit GWT.log("calling getDataForStatus with parameters [startIndex: " + offset + ", limit: " + limit
+ ", serverIndex:" + serverIndex + "]"); + ", serverIndex:" + serverIndex + "]");
CkanContentModeratorWidgetController.contentModeratorService.getDataForStatus(status, offset, limit, serverIndex, CkanContentModeratorWidgetController.contentModeratorService.getDataForStatus(status, offset, limit,
new AsyncCallback<SearchedData>() { serverIndex, new AsyncCallback<SearchedData>() {
@Override @Override
public void onSuccess(SearchedData result) { public void onSuccess(SearchedData result) {
@ -264,9 +267,20 @@ public class ContentModeratorPaginatedView {
GWT.log("Range changed: " + start + " " + length + " visible count: " + display.getVisibleItemCount()); GWT.log("Range changed: " + start + " " + length + " visible count: " + display.getVisibleItemCount());
loadNewPage(start, length, false); loadNewPage(start, length, false);
eventBus.fireEvent(new TableRangeViewChangedEvent<T>(start, length));
} }
} }
public void selectItems(boolean select, boolean limitToPage) {
SortedCellTable<CatalogueDataset> table = getCellTable();
int rowSize = table.getVisibleItemCount();
for (int i = 0; i < rowSize; i++) {
CatalogueDataset item = table.getVisibleItem(i);
itemsTable.getSelectionModel().setSelected(item, select);
}
}
} }

View File

@ -4,12 +4,17 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus; 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.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.CheckBox;
import com.github.gwtbootstrap.client.ui.Dropdown; 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.NavLink;
import com.google.gwt.core.client.GWT; 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.event.shared.HandlerManager;
import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField; 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.HTMLPanel;
import com.google.gwt.user.client.ui.Widget; 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 { public class HomeView extends Composite {
private static HomeViewUiBinder uiBinder = GWT.create(HomeViewUiBinder.class); private static HomeViewUiBinder uiBinder = GWT.create(HomeViewUiBinder.class);
@ -32,25 +45,52 @@ public class HomeView extends Composite {
@UiField @UiField
Dropdown dropdownSetStatus; Dropdown dropdownSetStatus;
@UiField
Heading pageHeader;
private List<NavLink> setStatusOptions = new ArrayList<>(); private List<NavLink> setStatusOptions = new ArrayList<>();
private ItemStatus displayingItemStatus; 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<Widget, HomeView> { interface HomeViewUiBinder extends UiBinder<Widget, HomeView> {
} }
/**
* 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, public HomeView(HandlerManager eventBus, ItemStatus status, DISPLAY_FIELD[] displayFields,
DISPLAY_FIELD sortByField) { DISPLAY_FIELD sortByField) {
initWidget(uiBinder.createAndBindUi(this)); initWidget(uiBinder.createAndBindUi(this));
this.displayingItemStatus = status; this.displayingItemStatus = status;
this.eventBus = eventBus;
this.pageHeader.setSubtext(status.getLabel());
paginatedView = new ContentModeratorPaginatedView(eventBus, status, displayFields, sortByField); paginatedView = new ContentModeratorPaginatedView(eventBus, status, displayFields, sortByField);
cmsPanel.addToCenter(paginatedView.getCellPanel()); cmsPanel.addToCenter(paginatedView.getCellPanel());
cmsPanel.addToBottom(paginatedView.getPagerPanel()); cmsPanel.addToBottom(paginatedView.getPagerPanel());
panelContainer.add(cmsPanel.getPanel()); panelContainer.add(cmsPanel.getPanel());
setVisibleUpdateStatusAction(false);
fillSetStatusOptions(); fillSetStatusOptions();
bindEvents();
} }
/**
* Fill set status options.
*/
private void fillSetStatusOptions() { private void fillSetStatusOptions() {
for (ItemStatus status : ItemStatus.values()) { for (ItemStatus status : ItemStatus.values()) {
if (!status.equals(displayingItemStatus)) { if (!status.equals(displayingItemStatus)) {
@ -62,8 +102,57 @@ public class HomeView extends Composite {
} }
/**
* Bind events.
*/
public void bindEvents() {
cbSelectAll.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(ValueChangeEvent<Boolean> event) {
GWT.log("Is checked: " + cbSelectAll.getValue());
eventBus.fireEvent(new CheckBoxSelectIemsEvent<CatalogueDataset>(cbSelectAll.getValue()));
}
});
}
/**
* Gets the panel.
*
* @return the panel
*/
public Composite getPanel() { public Composite getPanel() {
return this; 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);
}
} }

View File

@ -14,15 +14,25 @@
.margin-left-5 { .margin-left-5 {
margin-left: 5px; margin-left: 5px;
} }
.headinghome {
margin-left: 5px;
margin-bottom: 20px;
font-size: 16px !important;
}
.headinghome>small {
font-size: 16px !important;
}
</ui:style> </ui:style>
<g:HTMLPanel> <g:HTMLPanel>
<b:Heading ui:field="pageHeader" size="4"
addStyleNames="{style.headinghome}">Items with status: </b:Heading>
<g:HorizontalPanel <g:HorizontalPanel
addStyleNames="{style.margin-left-5}"> addStyleNames="{style.margin-left-5}">
<b:CheckBox ui:field="cbSelectAll"></b:CheckBox> <b:CheckBox ui:field="cbSelectAll"></b:CheckBox>
<b:Dropdown text="Set status as..." <b:Dropdown text="Update status as..."
ui:field="dropdownSetStatus" addStyleNames="{style.margin-left-20}"> ui:field="dropdownSetStatus" addStyleNames="{style.margin-left-20}">
</b:Dropdown> </b:Dropdown>
<!-- <b:SubmitButton addStyleNames="btn">Confirm</b:SubmitButton> -->
</g:HorizontalPanel> </g:HorizontalPanel>
<g:HTMLPanel ui:field="panelContainer"></g:HTMLPanel> <g:HTMLPanel ui:field="panelContainer"></g:HTMLPanel>
</g:HTMLPanel> </g:HTMLPanel>

View File

@ -3,8 +3,11 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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.Tab;
import com.github.gwtbootstrap.client.ui.TabPanel; 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.GWT;
import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@ -70,6 +73,7 @@ public class MainTabPanel extends Composite {
*/ */
public Tab addTab(String heading, Widget w){ public Tab addTab(String heading, Widget w){
Tab tab = new Tab(); Tab tab = new Tab();
tab.setIcon(IconType.BOOK);
tab.addClickHandler(new ClickHandler() { tab.addClickHandler(new ClickHandler() {
@Override @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) if(w!=null)
tab.add(w); tab.add(w);

View File

@ -1,5 +1,7 @@
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table; package org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -92,11 +94,13 @@ public abstract class AbstractItemsCellTable<T> {
GWT.log("Clicked: " + selectedObject); GWT.log("Clicked: " + selectedObject);
// selectedItem(selectedObject); // selectedItem(selectedObject);
if (fireEventOnClick) if (fireEventOnClick)
AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent<T>(selectedObject)); AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent<T>(Arrays.asList(selectedObject)));
} }
}else if (theSelectionModel instanceof MultiSelectionModel) { }else if (theSelectionModel instanceof MultiSelectionModel) {
Set<T> selected = ((MultiSelectionModel<T>) theSelectionModel).getSelectedSet(); Set<T> selected = ((MultiSelectionModel<T>) theSelectionModel).getSelectedSet();
GWT.log("Selected are:" +selected); GWT.log("Selected are:" +selected);
if (fireEventOnClick)
AbstractItemsCellTable.this.eventBus.fireEvent(new ClickItemEvent<T>(new ArrayList<T>(selected)));
} }
} }
}); });

View File

@ -11,12 +11,14 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants; 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.resources.ContentModeratorWidgetResources;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.SelectionItems; import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.SelectionItems;
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset; import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
import com.github.gwtbootstrap.client.ui.Pagination; import com.github.gwtbootstrap.client.ui.Pagination;
import com.google.gwt.cell.client.ButtonCell; 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.CheckboxCell;
import com.google.gwt.cell.client.DateCell; import com.google.gwt.cell.client.DateCell;
import com.google.gwt.cell.client.FieldUpdater; 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.AbstractDataProvider;
import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel; import com.google.gwt.view.client.SingleSelectionModel;
/** /**
@ -86,23 +89,6 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
setDisplayFields(fields); 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<T> items, boolean removeOldItems) {
// super.updateItems(items, removeOldItems);
// }
/** /**
* Adds the items. * Adds the items.
* *
@ -130,21 +116,27 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
this.isAsyncronusTable = dataProvider instanceof ListDataProvider ? false : true; this.isAsyncronusTable = dataProvider instanceof ListDataProvider ? false : true;
setEmptyTableMessage(ContentModeratorWidgetConstants.NO_DATA); setEmptyTableMessage(ContentModeratorWidgetConstants.NO_DATA);
// Checkbox column. This table will uses a checkbox column for selection. final CheckboxCell cellCheckBox = new CheckboxCell(true, false);
// Alternatively, you can call cellTable.setSelectionEnabled(true) to enable Column<T, Boolean> checkColumn = new Column<T, Boolean>(cellCheckBox) {
// mouse selection.
Column<T, Boolean> checkColumn = new Column<T, Boolean>(new CheckboxCell(true, false)) {
@Override @Override
public Boolean getValue(T object) { public Boolean getValue(T object) {
// Get the value from the selection model. // Get the value from the selection model.
return theSelectionModel.isSelected(object); 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.addColumn(checkColumn, "", false);
sortedCellTable.setColumnWidth(checkColumn, 40, Unit.PX); sortedCellTable.setColumnWidth(checkColumn, 40, Unit.PX);
ButtonCell previewButton = new ButtonCell(); ButtonCell previewButton = new ButtonCell();
Column<T,String> showdItemColumn = new Column<T,String>(previewButton) { Column<T, String> showdItemColumn = new Column<T, String>(previewButton) {
public String getValue(T object) { public String getValue(T object) {
return "Show"; return "Show";
} }
@ -153,13 +145,13 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
showdItemColumn.setFieldUpdater(new FieldUpdater<T, String>() { showdItemColumn.setFieldUpdater(new FieldUpdater<T, String>() {
@Override @Override
public void update(int index, T object, String value) { public void update(int index, T object, String value) {
GWT.log("clicked"); GWT.log("clicked show");
eventBus.fireEvent(new ShowItemEvent<T>(Arrays.asList(object)));
} }
}); });
sortedCellTable.addColumn(showdItemColumn); sortedCellTable.addColumn(showdItemColumn);
sortedCellTable.setColumnWidth(showdItemColumn, 80, Unit.PX); sortedCellTable.setColumnWidth(showdItemColumn, 80, Unit.PX);
if (this.displayFields.contains(DISPLAY_FIELD.NAME)) { if (this.displayFields.contains(DISPLAY_FIELD.NAME)) {
// NAME // NAME
@ -376,13 +368,6 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
break; break;
} }
/*
* final SingleSelectionModel<Item> selectionModel = new
* SingleSelectionModel<Item>(); selectionModel.addSelectionChangeHandler(new
* Handler() {
*
* @Override public void onSelectionChange(SelectionChangeEvent event) { } });
*/
} }
/** /**
@ -506,4 +491,14 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
if (sortedCellTable != null) if (sortedCellTable != null)
sortedCellTable.setEmptyTableWidget(new Label(msg)); sortedCellTable.setEmptyTableWidget(new Label(msg));
} }
/**
* Gets the selection model.
*
* @return the selection model
*/
public SelectionModel<T> getSelectionModel() {
return theSelectionModel;
}
} }

View File

@ -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;
}
}