task_21363 #1
|
@ -5,7 +5,6 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTabl
|
||||||
|
|
||||||
import com.google.gwt.user.client.Command;
|
import com.google.gwt.user.client.Command;
|
||||||
import com.google.gwt.user.client.ui.ComplexPanel;
|
import com.google.gwt.user.client.ui.ComplexPanel;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class CkanContentModeratorWidget.
|
* The Class CkanContentModeratorWidget.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.ClickItemEventHandler;
|
||||||
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.ContentModeratorSystemBaseView;
|
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorToolbar;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorToolbar;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.HomeView;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.MainTabPanel;
|
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.client.ui.table.ItemsTable.DISPLAY_FIELD;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
||||||
|
@ -16,9 +16,7 @@ import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.user.client.Command;
|
import com.google.gwt.user.client.Command;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.ComplexPanel;
|
import com.google.gwt.user.client.ui.ComplexPanel;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class CkanContentModeratorWidget.
|
* The Class CkanContentModeratorWidget.
|
||||||
|
@ -34,13 +32,12 @@ public class CkanContentModeratorWidgetController {
|
||||||
|
|
||||||
private FlowPanel mainPanel = new FlowPanel();
|
private FlowPanel mainPanel = new FlowPanel();
|
||||||
|
|
||||||
// private ItemsTable<CatalogueDataset> itemsTable;
|
|
||||||
private ContentModeratorSystemBaseView cmsPanel = new ContentModeratorSystemBaseView();
|
|
||||||
private ContentModeratorToolbar toolbar;
|
private ContentModeratorToolbar toolbar;
|
||||||
private MainTabPanel mainTabPanel = new MainTabPanel();
|
private MainTabPanel mainTabPanel = new MainTabPanel();
|
||||||
private Boolean isContentModeratorEnabled = null;
|
private Boolean isContentModeratorEnabled = null;
|
||||||
private ContentModeratorPaginatedView paginatedView;
|
private ContentModeratorPaginatedView paginatedView;
|
||||||
public final static HandlerManager eventBus = new HandlerManager(null);
|
public final static HandlerManager eventBus = new HandlerManager(null);
|
||||||
|
private HomeView howeView;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new ckan content moderator widget.
|
* Instantiates a new ckan content moderator widget.
|
||||||
|
@ -51,17 +48,9 @@ public class CkanContentModeratorWidgetController {
|
||||||
*/
|
*/
|
||||||
public CkanContentModeratorWidgetController(ItemStatus status, DISPLAY_FIELD[] displayFields,
|
public CkanContentModeratorWidgetController(ItemStatus status, DISPLAY_FIELD[] displayFields,
|
||||||
DISPLAY_FIELD sortByField) {
|
DISPLAY_FIELD sortByField) {
|
||||||
// itemsTable = new ItemsTable<CatalogueDataset>(null, displayFields, sortByField);
|
|
||||||
// itemsTable.initTable(null, null, new ListDataProvider<CatalogueDataset>());
|
|
||||||
// cmsPanel.add(itemsTable.getCellTable());
|
|
||||||
|
|
||||||
toolbar = new ContentModeratorToolbar(eventBus);
|
toolbar = new ContentModeratorToolbar(eventBus);
|
||||||
paginatedView = new ContentModeratorPaginatedView(eventBus, status, displayFields, sortByField);
|
howeView = new HomeView(eventBus, status, displayFields, sortByField);
|
||||||
// cmsPanel.addToTop(new LoadingPanel(new HTML("Loading...")));
|
mainTabPanel.addHomeWidget(howeView.getPanel());
|
||||||
//cmsPanel.addToTop(toolbar);
|
|
||||||
cmsPanel.addToCenter(paginatedView.getCellPanel());
|
|
||||||
cmsPanel.addToBottom(paginatedView.getPagerPanel());
|
|
||||||
mainTabPanel.addHomeWidget(cmsPanel.getPanel());
|
|
||||||
mainPanel.add(toolbar);
|
mainPanel.add(toolbar);
|
||||||
mainPanel.add(mainTabPanel);
|
mainPanel.add(mainTabPanel);
|
||||||
bindEvents();
|
bindEvents();
|
||||||
|
|
|
@ -4,7 +4,7 @@ import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
// TODO: Auto-generated Javadoc
|
|
||||||
/**
|
/**
|
||||||
* The Class ContentModeratorSystemBaseView.
|
* The Class ContentModeratorSystemBaseView.
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.CheckBox;
|
||||||
|
import com.github.gwtbootstrap.client.ui.Dropdown;
|
||||||
|
import com.github.gwtbootstrap.client.ui.NavLink;
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
public class HomeView extends Composite {
|
||||||
|
|
||||||
|
private static HomeViewUiBinder uiBinder = GWT.create(HomeViewUiBinder.class);
|
||||||
|
private ContentModeratorSystemBaseView cmsPanel = new ContentModeratorSystemBaseView();
|
||||||
|
private ContentModeratorPaginatedView paginatedView;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
HTMLPanel panelContainer;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
CheckBox cbSelectAll;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Dropdown dropdownSetStatus;
|
||||||
|
|
||||||
|
private List<NavLink> setStatusOptions = new ArrayList<>();
|
||||||
|
|
||||||
|
private ItemStatus displayingItemStatus;
|
||||||
|
|
||||||
|
interface HomeViewUiBinder extends UiBinder<Widget, HomeView> {
|
||||||
|
}
|
||||||
|
|
||||||
|
public HomeView(HandlerManager eventBus, ItemStatus status, DISPLAY_FIELD[] displayFields,
|
||||||
|
DISPLAY_FIELD sortByField) {
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
this.displayingItemStatus = status;
|
||||||
|
paginatedView = new ContentModeratorPaginatedView(eventBus, status, displayFields, sortByField);
|
||||||
|
cmsPanel.addToCenter(paginatedView.getCellPanel());
|
||||||
|
cmsPanel.addToBottom(paginatedView.getPagerPanel());
|
||||||
|
panelContainer.add(cmsPanel.getPanel());
|
||||||
|
|
||||||
|
fillSetStatusOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillSetStatusOptions() {
|
||||||
|
for (ItemStatus status : ItemStatus.values()) {
|
||||||
|
if (!status.equals(displayingItemStatus)) {
|
||||||
|
NavLink nl = new NavLink(status.getLabel());
|
||||||
|
dropdownSetStatus.add(nl);
|
||||||
|
setStatusOptions.add(nl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Composite getPanel() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||||
|
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||||
|
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
|
||||||
|
<ui:style>
|
||||||
|
.important {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin-left-20 {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin-left-5 {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
</ui:style>
|
||||||
|
<g:HTMLPanel>
|
||||||
|
<g:HorizontalPanel
|
||||||
|
addStyleNames="{style.margin-left-5}">
|
||||||
|
<b:CheckBox ui:field="cbSelectAll"></b:CheckBox>
|
||||||
|
<b:Dropdown text="Set status as..."
|
||||||
|
ui:field="dropdownSetStatus" addStyleNames="{style.margin-left-20}">
|
||||||
|
</b:Dropdown>
|
||||||
|
<!-- <b:SubmitButton addStyleNames="btn">Confirm</b:SubmitButton> -->
|
||||||
|
</g:HorizontalPanel>
|
||||||
|
<g:HTMLPanel ui:field="panelContainer"></g:HTMLPanel>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
|
@ -8,7 +8,6 @@ import com.github.gwtbootstrap.client.ui.TabPanel;
|
||||||
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;
|
||||||
import com.google.gwt.dom.client.Element;
|
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
import com.google.gwt.uibinder.client.UiBinder;
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
|
|
@ -14,7 +14,6 @@ import com.google.gwt.event.dom.client.ContextMenuHandler;
|
||||||
import com.google.gwt.event.dom.client.DoubleClickEvent;
|
import com.google.gwt.event.dom.client.DoubleClickEvent;
|
||||||
import com.google.gwt.event.dom.client.DoubleClickHandler;
|
import com.google.gwt.event.dom.client.DoubleClickHandler;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
|
|
||||||
import com.google.gwt.user.cellview.client.SimplePager;
|
import com.google.gwt.user.cellview.client.SimplePager;
|
||||||
import com.google.gwt.user.client.Event;
|
import com.google.gwt.user.client.Event;
|
||||||
import com.google.gwt.user.client.ui.DialogBox;
|
import com.google.gwt.user.client.ui.DialogBox;
|
||||||
|
@ -146,25 +145,25 @@ public abstract class AbstractItemsCellTable<T> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Update items.
|
// * Update items.
|
||||||
*
|
// *
|
||||||
* @param items the items
|
// * @param items the items
|
||||||
* @param removeOldItems the remove old items
|
// * @param removeOldItems the remove old items
|
||||||
*/
|
// */
|
||||||
public void updateItems(List<T> items, boolean removeOldItems) {
|
// public void updateItems(List<T> items, boolean removeOldItems) {
|
||||||
|
//
|
||||||
if (removeOldItems) {
|
// if (removeOldItems) {
|
||||||
if (theSelectionModel instanceof SingleSelectionModel) {
|
// if (theSelectionModel instanceof SingleSelectionModel) {
|
||||||
((SingleSelectionModel<T>) theSelectionModel).clear();
|
// ((SingleSelectionModel<T>) theSelectionModel).clear();
|
||||||
} else if (theSelectionModel instanceof MultiSelectionModel) {
|
// } else if (theSelectionModel instanceof MultiSelectionModel) {
|
||||||
((MultiSelectionModel<T>) theSelectionModel).clear();
|
// ((MultiSelectionModel<T>) theSelectionModel).clear();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
sortedCellTable.setList(items);
|
// sortedCellTable.setList(items);
|
||||||
sortedCellTable.setPageSize(items.size() + 1);
|
// sortedCellTable.setPageSize(items.size() + 1);
|
||||||
sortedCellTable.redraw();
|
// sortedCellTable.redraw();
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the cell tables.
|
* Gets the cell tables.
|
||||||
|
|
|
@ -19,6 +19,7 @@ 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.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.core.shared.GWT;
|
import com.google.gwt.core.shared.GWT;
|
||||||
import com.google.gwt.dom.client.Style.Unit;
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
|
@ -85,22 +86,22 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
|
||||||
setDisplayFields(fields);
|
setDisplayFields(fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Update items.
|
// * Update items.
|
||||||
*
|
// *
|
||||||
* @param items the items
|
// * @param items the items
|
||||||
* @param removeOldItems the remove old items
|
// * @param removeOldItems the remove old items
|
||||||
*/
|
// */
|
||||||
/*
|
// /*
|
||||||
* (non-Javadoc)
|
// * (non-Javadoc)
|
||||||
*
|
// *
|
||||||
* @see
|
// * @see
|
||||||
* org.gcube.portlets.widgets.wsexplorer.client.view.grid.AbstractItemsCellTable
|
// * org.gcube.portlets.widgets.wsexplorer.client.view.grid.AbstractItemsCellTable
|
||||||
* #updateItems(java.util.List, boolean)
|
// * #updateItems(java.util.List, boolean)
|
||||||
*/
|
// */
|
||||||
public void updateItems(List<T> items, boolean removeOldItems) {
|
// public void updateItems(List<T> items, boolean removeOldItems) {
|
||||||
super.updateItems(items, removeOldItems);
|
// super.updateItems(items, removeOldItems);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the items.
|
* Adds the items.
|
||||||
|
@ -141,6 +142,23 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
|
||||||
};
|
};
|
||||||
sortedCellTable.addColumn(checkColumn, "", false);
|
sortedCellTable.addColumn(checkColumn, "", false);
|
||||||
sortedCellTable.setColumnWidth(checkColumn, 40, Unit.PX);
|
sortedCellTable.setColumnWidth(checkColumn, 40, Unit.PX);
|
||||||
|
|
||||||
|
ButtonCell previewButton = new ButtonCell();
|
||||||
|
Column<T,String> showdItemColumn = new Column<T,String>(previewButton) {
|
||||||
|
public String getValue(T object) {
|
||||||
|
return "Show";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
showdItemColumn.setFieldUpdater(new FieldUpdater<T, String>() {
|
||||||
|
@Override
|
||||||
|
public void update(int index, T object, String value) {
|
||||||
|
GWT.log("clicked");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
sortedCellTable.addColumn(showdItemColumn);
|
||||||
|
sortedCellTable.setColumnWidth(showdItemColumn, 80, Unit.PX);
|
||||||
|
|
||||||
|
|
||||||
if (this.displayFields.contains(DISPLAY_FIELD.NAME)) {
|
if (this.displayFields.contains(DISPLAY_FIELD.NAME)) {
|
||||||
|
|
||||||
|
@ -313,7 +331,8 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
|
||||||
|
|
||||||
if (o2 == null || o2.getExtra_SystemType() == null)
|
if (o2 == null || o2.getExtra_SystemType() == null)
|
||||||
return 1;
|
return 1;
|
||||||
return ((CatalogueDataset) o1).getExtra_SystemType().compareTo(((CatalogueDataset) o2).getExtra_SystemType());
|
return ((CatalogueDataset) o1).getExtra_SystemType()
|
||||||
|
.compareTo(((CatalogueDataset) o2).getExtra_SystemType());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -321,7 +340,7 @@ public class ItemsTable<T extends CatalogueDataset> extends AbstractItemsCellTab
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GWT.log("startSortByColumn: " + startSortByColumn);
|
GWT.log("startSortByColumn: " + startSortByColumn);
|
||||||
|
|
||||||
if (startSortByColumn != null)
|
if (startSortByColumn != null)
|
||||||
|
|
|
@ -12,7 +12,7 @@ import com.google.gwt.safehtml.shared.SafeHtml;
|
||||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||||
import com.google.gwt.user.cellview.client.Column;
|
import com.google.gwt.user.cellview.client.Column;
|
||||||
|
|
||||||
// TODO: Auto-generated Javadoc
|
|
||||||
/**
|
/**
|
||||||
* The Class MyToolTipColumn.
|
* The Class MyToolTipColumn.
|
||||||
*
|
*
|
||||||
|
|
|
@ -15,19 +15,20 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.resources.CellTabl
|
||||||
import com.github.gwtbootstrap.client.ui.CellTable;
|
import com.github.gwtbootstrap.client.ui.CellTable;
|
||||||
import com.google.gwt.user.cellview.client.Column;
|
import com.google.gwt.user.cellview.client.Column;
|
||||||
import com.google.gwt.user.cellview.client.ColumnSortEvent;
|
import com.google.gwt.user.cellview.client.ColumnSortEvent;
|
||||||
|
import com.google.gwt.user.cellview.client.ColumnSortEvent.AsyncHandler;
|
||||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||||
import com.google.gwt.user.cellview.client.ColumnSortList.ColumnSortInfo;
|
import com.google.gwt.user.cellview.client.ColumnSortList.ColumnSortInfo;
|
||||||
import com.google.gwt.user.cellview.client.Header;
|
import com.google.gwt.user.cellview.client.Header;
|
||||||
import com.google.gwt.view.client.AbstractDataProvider;
|
import com.google.gwt.view.client.AbstractDataProvider;
|
||||||
|
import com.google.gwt.view.client.AsyncDataProvider;
|
||||||
import com.google.gwt.view.client.ListDataProvider;
|
import com.google.gwt.view.client.ListDataProvider;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class SortedCellTable.
|
* The Class SortedCellTable.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
*
|
*
|
||||||
* Jun 15, 2021
|
* Jun 15, 2021
|
||||||
* @param <T> the generic type
|
* @param <T> the generic type
|
||||||
*/
|
*/
|
||||||
public class SortedCellTable<T> extends CellTable<T> {
|
public class SortedCellTable<T> extends CellTable<T> {
|
||||||
|
@ -58,8 +59,7 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
* Special column sorting handler that will allow us to do more controlled
|
* Special column sorting handler that will allow us to do more controlled
|
||||||
* sorting
|
* sorting
|
||||||
*/
|
*/
|
||||||
private ListHandler<T> columnSortHandler;
|
private ColumnSortEvent.Handler columnSortHandler;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new sorted cell table.
|
* Instantiates a new sorted cell table.
|
||||||
|
@ -68,11 +68,12 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
* @param dataProv the data prov
|
* @param dataProv the data prov
|
||||||
*/
|
*/
|
||||||
public SortedCellTable(int pageSize, AbstractDataProvider<T> dataProv) {
|
public SortedCellTable(int pageSize, AbstractDataProvider<T> dataProv) {
|
||||||
super(pageSize,CellTableResources.INSTANCE);
|
super(pageSize, CellTableResources.INSTANCE);
|
||||||
this.dataProvider = dataProv;
|
this.dataProvider = dataProv;
|
||||||
|
|
||||||
if(this.dataProvider instanceof ListDataProvider){
|
if (this.dataProvider instanceof ListDataProvider) {
|
||||||
columnSortHandler = new ListHandler<T>(((ListDataProvider<T>) this.dataProvider).getList()) {
|
ListDataProvider<T> listDataProvider = (ListDataProvider<T>) this.dataProvider;
|
||||||
|
ListHandler<T> listSortHandler = new ListHandler<T>((listDataProvider).getList()) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onColumnSort(ColumnSortEvent event) {
|
public void onColumnSort(ColumnSortEvent event) {
|
||||||
|
@ -85,8 +86,7 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
if (column.equals(currentlySortedColumn)) {
|
if (column.equals(currentlySortedColumn)) {
|
||||||
// Default behavior
|
// Default behavior
|
||||||
super.onColumnSort(event);
|
super.onColumnSort(event);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Initial sort; look up which direction we need
|
// Initial sort; look up which direction we need
|
||||||
final Comparator<T> comparator = comparators.get(column);
|
final Comparator<T> comparator = comparators.get(column);
|
||||||
if (comparator == null) {
|
if (comparator == null) {
|
||||||
|
@ -96,8 +96,7 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
if (ascending == null || ascending) {
|
if (ascending == null || ascending) {
|
||||||
// Default behavior
|
// Default behavior
|
||||||
super.onColumnSort(event);
|
super.onColumnSort(event);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Sort the column descending
|
// Sort the column descending
|
||||||
Collections.sort(getList(), new Comparator<T>() {
|
Collections.sort(getList(), new Comparator<T>() {
|
||||||
|
|
||||||
|
@ -120,19 +119,62 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
super.setComparator(column, comparator);
|
super.setComparator(column, comparator);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
addColumnSortHandler(listSortHandler);
|
||||||
|
columnSortHandler = listSortHandler;
|
||||||
|
} else if (this.dataProvider instanceof AsyncDataProvider) {
|
||||||
|
//AsyncDataProvider asyncDataProvider = ((AsyncDataProvider) this.dataProvider);
|
||||||
|
//asyncDataProvider.get
|
||||||
|
AsyncHandler asyncSortHandler = new AsyncHandler(this) {
|
||||||
|
@Override
|
||||||
|
public void onColumnSort(ColumnSortEvent event) {
|
||||||
|
|
||||||
addColumnSortHandler(columnSortHandler);
|
@SuppressWarnings("unchecked")
|
||||||
|
Column<T, ?> column = (Column<T, ?>) event.getColumn();
|
||||||
|
if (column == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (column.equals(currentlySortedColumn)) {
|
||||||
|
// Default behavior
|
||||||
|
super.onColumnSort(event);
|
||||||
|
} else {
|
||||||
|
// Initial sort; look up which direction we need
|
||||||
|
final Comparator<T> comparator = comparators.get(column);
|
||||||
|
if (comparator == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Boolean ascending = defaultSortOrderMap.get(column);
|
||||||
|
if (ascending == null || ascending) {
|
||||||
|
// Default behavior
|
||||||
|
super.onColumnSort(event);
|
||||||
|
} else {
|
||||||
|
// Sort the column descending
|
||||||
|
Collections.sort(getVisibleItems(), new Comparator<T>() {
|
||||||
|
|
||||||
|
public int compare(T o1, T o2) {
|
||||||
|
|
||||||
|
return -comparator.compare(o1, o2);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Set the proper arrow in the header
|
||||||
|
getColumnSortList().push(new ColumnSortInfo(column, false));
|
||||||
|
}
|
||||||
|
currentlySortedColumn = column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// addColumnSortHandler(asyncSortHandler);
|
||||||
|
// columnSortHandler = asyncSortHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a column to the table and sets its sortable state.
|
* Adds a column to the table and sets its sortable state.
|
||||||
*
|
*
|
||||||
* @param column the column
|
* @param column the column
|
||||||
* @param headerName the header name
|
* @param headerName the header name
|
||||||
* @param sortable the sortable
|
* @param sortable the sortable
|
||||||
*/
|
*/
|
||||||
public void addColumn(Column<T, ?> column, String headerName, boolean sortable) {
|
public void addColumn(Column<T, ?> column, String headerName, boolean sortable) {
|
||||||
|
|
||||||
|
@ -146,11 +188,15 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
/**
|
/**
|
||||||
* Adds the column.
|
* Adds the column.
|
||||||
*
|
*
|
||||||
* @param column the column
|
* @param column the column
|
||||||
* @param headerName the header name
|
* @param headerName the header name
|
||||||
*/
|
*/
|
||||||
/* (non-Javadoc)
|
/*
|
||||||
* @see com.google.gwt.user.cellview.client.AbstractCellTable#addColumn(com.google.gwt.user.cellview.client.Column, java.lang.String)
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.google.gwt.user.cellview.client.AbstractCellTable#addColumn(com.google.
|
||||||
|
* gwt.user.cellview.client.Column, java.lang.String)
|
||||||
*/
|
*/
|
||||||
public void addColumn(Column<T, ?> column, String headerName) {
|
public void addColumn(Column<T, ?> column, String headerName) {
|
||||||
|
|
||||||
|
@ -160,8 +206,8 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
/**
|
/**
|
||||||
* Adds a column to the table and sets its sortable state.
|
* Adds a column to the table and sets its sortable state.
|
||||||
*
|
*
|
||||||
* @param column the column
|
* @param column the column
|
||||||
* @param header the header
|
* @param header the header
|
||||||
* @param sortable the sortable
|
* @param sortable the sortable
|
||||||
*/
|
*/
|
||||||
public void addColumn(Column<T, ?> column, Header<?> header, boolean sortable) {
|
public void addColumn(Column<T, ?> column, Header<?> header, boolean sortable) {
|
||||||
|
@ -183,23 +229,22 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
|
|
||||||
initialSortColumn = column;
|
initialSortColumn = column;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a comparator to use when sorting the given column.
|
* Set the comparator used to sort the specified column in ascending order.
|
||||||
*
|
*
|
||||||
* @param column the column
|
* @param column the {@link Column}
|
||||||
* @param comparator the comparator
|
* @param comparator the {@link Comparator} to use for the {@link Column}
|
||||||
*/
|
*/
|
||||||
public void setComparator(Column<T, ?> column, Comparator<T> comparator) {
|
public void setComparator(Column<T, ?> column, Comparator<T> comparator) {
|
||||||
|
comparators.put(column, comparator);
|
||||||
columnSortHandler.setComparator(column, comparator);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the sort order to use when this column is clicked and it was not
|
* Sets the sort order to use when this column is clicked and it was not
|
||||||
* previously sorted.
|
* previously sorted.
|
||||||
*
|
*
|
||||||
* @param column the column
|
* @param column the column
|
||||||
* @param ascending the ascending
|
* @param ascending the ascending
|
||||||
*/
|
*/
|
||||||
public void setDefaultSortOrder(Column<T, ?> column, boolean ascending) {
|
public void setDefaultSortOrder(Column<T, ?> column, boolean ascending) {
|
||||||
|
@ -208,20 +253,20 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the table's data provider list and sorts the table based on the
|
* Sets the table's data provider list and sorts the table based on the column
|
||||||
* column given in {@link SortedCellTable#setInitialSortColumn(Column)}.
|
* given in {@link SortedCellTable#setInitialSortColumn(Column)}.
|
||||||
*
|
*
|
||||||
* @param list the new list
|
* @param list the new list
|
||||||
*/
|
*/
|
||||||
public void setList(List<T> list) {
|
public void setList(List<T> list) {
|
||||||
|
|
||||||
if(dataProvider instanceof ListDataProvider){
|
if (dataProvider instanceof ListDataProvider) {
|
||||||
List<T> myData = ((ListDataProvider) dataProvider).getList();
|
List<T> myData = ((ListDataProvider) dataProvider).getList();
|
||||||
myData.clear();
|
myData.clear();
|
||||||
if (list != null) {
|
if (list != null) {
|
||||||
/*for (T t : list) {
|
/*
|
||||||
dataProvider.getList().add(t);
|
* for (T t : list) { dataProvider.getList().add(t); }
|
||||||
}*/
|
*/
|
||||||
myData.addAll(list);
|
myData.addAll(list);
|
||||||
}
|
}
|
||||||
// Do a first-time sort based on which column was set in
|
// Do a first-time sort based on which column was set in
|
||||||
|
@ -232,22 +277,19 @@ public class SortedCellTable<T> extends CellTable<T> {
|
||||||
@Override
|
@Override
|
||||||
public int compare(T o1, T o2) {
|
public int compare(T o1, T o2) {
|
||||||
|
|
||||||
return (defaultSortOrderMap.get(initialSortColumn) ? 1 : -1) * comparators.get(initialSortColumn).compare(o1, o2);
|
return (defaultSortOrderMap.get(initialSortColumn) ? 1 : -1)
|
||||||
|
* comparators.get(initialSortColumn).compare(o1, o2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Might as well get the little arrow on the header to make it
|
// Might as well get the little arrow on the header to make it
|
||||||
// official
|
// official
|
||||||
getColumnSortList().push(
|
getColumnSortList().push(new ColumnSortInfo(initialSortColumn, defaultSortOrderMap.get(initialSortColumn)));
|
||||||
new ColumnSortInfo(
|
|
||||||
initialSortColumn,
|
|
||||||
defaultSortOrderMap.get(initialSortColumn)));
|
|
||||||
|
|
||||||
currentlySortedColumn = initialSortColumn;
|
currentlySortedColumn = initialSortColumn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the data provider.
|
* Gets the data provider.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue