2013-02-08 10:56:27 +01:00
|
|
|
package org.gcube.portlets.user.workspace.client.view.grids;
|
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
import java.util.ArrayList;
|
2013-02-08 10:56:27 +01:00
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.gcube.portlets.user.workspace.client.AppController;
|
|
|
|
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.DoubleClickElementSelectedEvent;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent.DownloadType;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.GridElementSelectedEvent;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.GridElementUnSelectedEvent;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.ImagePreviewEvent;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.OpenContextMenuTreeEvent;
|
|
|
|
import org.gcube.portlets.user.workspace.client.event.OpenReportsEvent;
|
2014-09-03 15:51:58 +02:00
|
|
|
import org.gcube.portlets.user.workspace.client.event.OpenUrlEvent;
|
2014-05-16 17:44:31 +02:00
|
|
|
import org.gcube.portlets.user.workspace.client.event.StoreGridChangedEvent;
|
2013-02-08 10:56:27 +01:00
|
|
|
import org.gcube.portlets.user.workspace.client.model.FileGridModel;
|
|
|
|
import org.gcube.portlets.user.workspace.client.model.FileModel;
|
|
|
|
import org.gcube.portlets.user.workspace.client.model.GroupingStoreModel;
|
2014-01-15 12:50:21 +01:00
|
|
|
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplay;
|
2013-02-08 10:56:27 +01:00
|
|
|
|
|
|
|
import com.extjs.gxt.ui.client.Style.SelectionMode;
|
|
|
|
import com.extjs.gxt.ui.client.data.ModelData;
|
2014-01-14 14:40:25 +01:00
|
|
|
import com.extjs.gxt.ui.client.dnd.GridDragSource;
|
2013-02-08 10:56:27 +01:00
|
|
|
import com.extjs.gxt.ui.client.event.BaseEvent;
|
|
|
|
import com.extjs.gxt.ui.client.event.Events;
|
|
|
|
import com.extjs.gxt.ui.client.event.GridEvent;
|
|
|
|
import com.extjs.gxt.ui.client.event.Listener;
|
|
|
|
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
|
|
|
|
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
|
|
|
|
import com.extjs.gxt.ui.client.store.GroupingStore;
|
|
|
|
import com.extjs.gxt.ui.client.store.ListStore;
|
|
|
|
import com.extjs.gxt.ui.client.store.Record;
|
2014-05-16 17:44:31 +02:00
|
|
|
import com.extjs.gxt.ui.client.store.Store;
|
|
|
|
import com.extjs.gxt.ui.client.store.StoreEvent;
|
2013-02-08 10:56:27 +01:00
|
|
|
import com.extjs.gxt.ui.client.widget.ContentPanel;
|
|
|
|
import com.extjs.gxt.ui.client.widget.LayoutContainer;
|
|
|
|
import com.extjs.gxt.ui.client.widget.form.NumberField;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.Grid;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.GroupingView;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.filters.DateFilter;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.filters.GridFilters;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.filters.NumericFilter;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.filters.StringFilter;
|
|
|
|
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
|
2015-10-22 18:52:12 +02:00
|
|
|
import com.google.gwt.core.shared.GWT;
|
2013-12-03 14:22:12 +01:00
|
|
|
import com.google.gwt.i18n.client.DateTimeFormat;
|
2013-02-08 10:56:27 +01:00
|
|
|
import com.google.gwt.i18n.client.NumberFormat;
|
2015-10-22 18:52:12 +02:00
|
|
|
import com.google.gwt.user.client.Random;
|
2013-02-08 10:56:27 +01:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
/**
|
2015-11-17 18:14:45 +01:00
|
|
|
* The Class GxtGridFilterGroupPanel.
|
2013-02-08 10:56:27 +01:00
|
|
|
*
|
2015-11-17 18:14:45 +01:00
|
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
|
|
* Nov 17, 2015
|
2013-02-08 10:56:27 +01:00
|
|
|
*/
|
|
|
|
public class GxtGridFilterGroupPanel extends LayoutContainer {
|
|
|
|
|
|
|
|
private ContentPanel cp = new ContentPanel();
|
|
|
|
// private ListStore<FileModel> store = ListStoreModel.getInstance().getStore();
|
|
|
|
private GroupingStore<FileGridModel> store = GroupingStoreModel.getInstance().getStore();
|
2015-12-14 16:58:05 +01:00
|
|
|
private FileGridModel currentItemSelected = null;
|
2013-02-08 10:56:27 +01:00
|
|
|
private FileModel currentFolderView = null;
|
|
|
|
private GroupingView view = new GroupingView();
|
2016-09-15 16:42:41 +02:00
|
|
|
private boolean groupingEnabled = false;
|
2013-03-25 12:34:50 +01:00
|
|
|
private NumberFormat number = ConstantsExplorer.numberFormatterKB;
|
2013-06-14 15:04:21 +02:00
|
|
|
private final Grid<FileGridModel> grid;
|
2013-02-08 10:56:27 +01:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Instantiates a new gxt grid filter group panel.
|
|
|
|
*
|
|
|
|
* @param group the group
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public GxtGridFilterGroupPanel(boolean group) {
|
2015-10-22 18:52:12 +02:00
|
|
|
// setLayout(new FitLayout());
|
|
|
|
setId("GxtGridFilterGroupPanel "+Random.nextInt());
|
2016-09-15 16:42:41 +02:00
|
|
|
ColumnConfig icon = new ColumnConfig(FileModel.ICON, "", 25);
|
2015-11-17 18:14:45 +01:00
|
|
|
icon.setSortable(false);
|
2016-09-15 16:42:41 +02:00
|
|
|
ColumnConfig name = new ColumnConfig(FileGridModel.NAME, FileGridModel.NAME, 300);
|
|
|
|
ColumnConfig type = new ColumnConfig(FileGridModel.TYPE, FileGridModel.TYPE, 50);
|
|
|
|
ColumnConfig lastUpdate = new ColumnConfig(FileGridModel.LASTMODIFIED, "Last Update", 100);
|
2013-12-12 11:59:20 +01:00
|
|
|
lastUpdate.setDateTimeFormat(DateTimeFormat.getFormat("dd MMM hh:mm aaa yyyy"));
|
2016-09-15 16:42:41 +02:00
|
|
|
ColumnConfig category = new ColumnConfig(FileModel.SHORTCUTCATEGORY, FileModel.SHORTCUTCATEGORY, 100);
|
|
|
|
ColumnConfig size = new ColumnConfig(FileGridModel.SIZE, FileGridModel.SIZE, 50);
|
|
|
|
ColumnConfig ownerFullName = new ColumnConfig(FileGridModel.OWNERFULLNAME, FileGridModel.OWNER, 100);
|
|
|
|
|
|
|
|
size.setEditor(new CellEditor(new NumberField()));
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
ColumnModel cm = null;
|
2015-11-17 18:14:45 +01:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(group)
|
2013-11-15 12:30:34 +01:00
|
|
|
cm = new ColumnModel(Arrays.asList(icon, name, ownerFullName, type, lastUpdate, size, category));
|
2013-02-08 10:56:27 +01:00
|
|
|
else
|
2013-11-15 12:30:34 +01:00
|
|
|
cm = new ColumnModel(Arrays.asList(icon, name, ownerFullName, type, lastUpdate, size));
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
final ColumnModel columnModel = cm;
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
cp.setBodyBorder(true);
|
|
|
|
cp.setHeaderVisible(false);
|
|
|
|
cp.setLayout(new FitLayout());
|
|
|
|
|
2013-06-14 15:04:21 +02:00
|
|
|
grid = new Grid<FileGridModel>(store, columnModel);
|
2013-02-08 10:56:27 +01:00
|
|
|
grid.getView().setAutoFill(true);
|
2015-11-17 18:14:45 +01:00
|
|
|
|
2016-09-15 16:42:41 +02:00
|
|
|
view.setShowGroupedColumn(false);
|
|
|
|
view.setForceFit(true);
|
2013-02-08 10:56:27 +01:00
|
|
|
grid.setView(view);
|
2016-09-15 16:42:41 +02:00
|
|
|
view.setEmptyText(FileGridModel.EMPTY);
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(group){
|
2016-09-15 16:42:41 +02:00
|
|
|
store.groupBy(FileGridModel.SHORTCUTCATEGORY);
|
2013-02-08 10:56:27 +01:00
|
|
|
groupingEnabled = true;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
GridCellRenderer<FileGridModel> folderRender = new GridCellRenderer<FileGridModel>() {
|
2013-02-08 10:56:27 +01:00
|
|
|
@Override
|
|
|
|
public String render(FileGridModel model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<FileGridModel> store, Grid<FileGridModel> grid) {
|
2016-09-15 16:42:41 +02:00
|
|
|
String val = model.get(property);
|
2013-02-08 10:56:27 +01:00
|
|
|
String color = "black";
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-07-14 15:48:27 +02:00
|
|
|
if(val==null || val.isEmpty())
|
|
|
|
return "";
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-07-14 15:48:27 +02:00
|
|
|
return "<span qtitle='" + columnModel.getColumnById(property).getHeader() + "' qtip='" + val + "' style='color:" + color + "'>" + val + "</span>";
|
2016-09-15 16:42:41 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2015-11-24 16:26:01 +01:00
|
|
|
GridCellRenderer<FileGridModel> kbRender = new GridCellRenderer<FileGridModel>() {
|
|
|
|
@Override
|
2013-02-08 10:56:27 +01:00
|
|
|
public String render(FileGridModel model, String property, ColumnData config,
|
|
|
|
int rowIndex, int colIndex, ListStore<FileGridModel> store, Grid<FileGridModel> grid) {
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
long value = (Long) model.get(property);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(value!=-1){
|
|
|
|
String color = "black";
|
|
|
|
double kb = value/1024;
|
|
|
|
if(kb<1)
|
|
|
|
kb=1;
|
|
|
|
return "<span style='color:"+color+"'>" + number.format(kb) + "</span>";
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
return "";
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
size.setRenderer(kbRender);
|
|
|
|
type.setRenderer(folderRender);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
//setAlphanumericStoreSorter(grid);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
GridFilters filters = new GridFilters();
|
|
|
|
filters.setLocal(true);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
StringFilter nameFilter = new StringFilter(FileGridModel.NAME);
|
|
|
|
StringFilter authorFilter = new StringFilter(FileGridModel.TYPE);
|
|
|
|
DateFilter dateFilter = new DateFilter(FileGridModel.LASTMODIFIED);
|
|
|
|
NumericFilter sizeFilter = new NumericFilter(FileGridModel.SIZE);
|
2013-02-08 10:56:27 +01:00
|
|
|
|
|
|
|
filters.addFilter(nameFilter);
|
|
|
|
filters.addFilter(authorFilter);
|
|
|
|
filters.addFilter(dateFilter);
|
|
|
|
filters.addFilter(sizeFilter);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
// grid.setStyleAttribute("borderTop", "none");
|
2016-09-15 16:42:41 +02:00
|
|
|
grid.setAutoExpandColumn(FileGridModel.NAME);
|
2013-02-08 10:56:27 +01:00
|
|
|
grid.setBorders(false);
|
|
|
|
grid.setStripeRows(true);
|
|
|
|
grid.setColumnLines(true);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
grid.getView().setShowDirtyCells(false);
|
|
|
|
grid.addPlugin(filters);
|
2014-01-15 12:50:21 +01:00
|
|
|
grid.getSelectionModel().setSelectionMode(SelectionMode.MULTI);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
grid.getSelectionModel().addSelectionChangedListener(new SelectionChangedListener<FileGridModel>() {
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
@Override
|
|
|
|
public void selectionChanged(SelectionChangedEvent<FileGridModel> se) {
|
|
|
|
System.out.println("selection grid change");
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
ModelData target = se.getSelectedItem();
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(target!=null){
|
2015-12-14 16:58:05 +01:00
|
|
|
currentItemSelected = (FileGridModel) target;
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
boolean isMultiselection = false;
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
if(se.getSelection()!=null && se.getSelection().size()>1)
|
|
|
|
isMultiselection = true;
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
AppController.getEventBus().fireEvent(new GridElementSelectedEvent(target, isMultiselection));
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
|
|
|
else{
|
2015-12-14 16:58:05 +01:00
|
|
|
currentItemSelected = null;
|
2013-02-08 10:56:27 +01:00
|
|
|
AppController.getEventBus().fireEvent(new GridElementUnSelectedEvent());
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
|
|
|
});
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
grid.addListener(Events.RowDoubleClick, new Listener<BaseEvent>() {
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
@Override
|
|
|
|
public void handleEvent(BaseEvent be) {
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
FileGridModel fileModel = grid.getSelectionModel().getSelectedItem();
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(fileModel!=null)
|
|
|
|
fireEventByFileModelType(fileModel);
|
|
|
|
// if(fileModel.isDirectory())
|
|
|
|
// AppController.getEventBus().fireEvent(new DoubleClickElementSelectedEvent(fileModel));
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
});
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
grid.setContextMenu(null); //add context menu null - ignore browse event right click
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
grid.addListener(Events.OnContextMenu, new Listener<GridEvent<FileGridModel>>(){
|
|
|
|
@Override
|
2016-09-15 16:42:41 +02:00
|
|
|
public void handleEvent(GridEvent<FileGridModel> be)
|
2013-02-08 10:56:27 +01:00
|
|
|
{
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(be.isRightClick())
|
|
|
|
{
|
|
|
|
if(grid.getSelectionModel().getSelectedItem()!=null){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
if(grid.getSelectionModel().getSelection().size()>1){
|
|
|
|
new InfoDisplay("Info", "The context menu is not available if multi-select is active");
|
|
|
|
return;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
FileGridModel fileGridModel = grid.getSelectionModel().getSelectedItem();
|
|
|
|
AppController.getEventBus().fireEvent(new OpenContextMenuTreeEvent(fileGridModel, be.getClientX(), be.getClientY()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-14 14:40:25 +01:00
|
|
|
new GridDragSource(grid);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
cp.add(grid);
|
|
|
|
add(cp);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
addDataChangedStoreListener();
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Disable grouping.
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public void disableGrouping() {
|
|
|
|
GroupingStore<FileGridModel> groupingStore = null;
|
|
|
|
if (this.getStore() instanceof GroupingStore) {
|
2016-09-15 16:42:41 +02:00
|
|
|
groupingStore = this.getStore();
|
2013-02-08 10:56:27 +01:00
|
|
|
if (groupingStore != null) {
|
|
|
|
groupingStore.clearGrouping();
|
|
|
|
}
|
|
|
|
this.groupingEnabled = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Enable grouping.
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public void enableGrouping() {
|
|
|
|
GroupingStore<FileGridModel> groupingStore = null;
|
|
|
|
if (this.getStore() instanceof GroupingStore) {
|
2016-09-15 16:42:41 +02:00
|
|
|
groupingStore = this.getStore();
|
2013-02-08 10:56:27 +01:00
|
|
|
if (groupingStore != null) {
|
2016-09-15 16:42:41 +02:00
|
|
|
groupingStore.groupBy(FileGridModel.SHORTCUTCATEGORY);
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
|
|
|
this.groupingEnabled = true;
|
|
|
|
}
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Fire event by file model type.
|
|
|
|
*
|
|
|
|
* @param target the target
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
private void fireEventByFileModelType(FileModel target){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(target.isDirectory()){
|
|
|
|
AppController.getEventBus().fireEvent(new DoubleClickElementSelectedEvent(target));
|
|
|
|
return;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
switch(target.getGXTFolderItemType()){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
case EXTERNAL_IMAGE:
|
|
|
|
case IMAGE_DOCUMENT:
|
2014-09-03 15:51:58 +02:00
|
|
|
AppController.getEventBus().fireEvent(new ImagePreviewEvent(target,0, 0));
|
2013-02-08 10:56:27 +01:00
|
|
|
break;
|
2016-09-15 16:42:41 +02:00
|
|
|
case EXTERNAL_FILE:
|
|
|
|
case EXTERNAL_PDF_FILE:
|
2014-09-03 15:51:58 +02:00
|
|
|
case PDF_DOCUMENT:
|
2016-09-15 16:42:41 +02:00
|
|
|
case DOCUMENT:
|
|
|
|
case URL_DOCUMENT:
|
|
|
|
case EXTERNAL_RESOURCE_LINK:
|
2016-09-21 18:10:02 +02:00
|
|
|
|
|
|
|
AppController.getEventBus().fireEvent(new FileDownloadEvent(target.getIdentifier(), target.getName(), DownloadType.SHOW, (target.isDirectory() || target.isVreFolder())));
|
2013-02-08 10:56:27 +01:00
|
|
|
break;
|
2016-09-15 16:42:41 +02:00
|
|
|
case EXTERNAL_URL:
|
2014-09-03 15:51:58 +02:00
|
|
|
AppController.getEventBus().fireEvent(new OpenUrlEvent(target));
|
2013-02-08 10:56:27 +01:00
|
|
|
break;
|
2016-09-15 16:42:41 +02:00
|
|
|
case REPORT_TEMPLATE:
|
|
|
|
case REPORT:
|
2013-02-08 10:56:27 +01:00
|
|
|
AppController.getEventBus().fireEvent(new OpenReportsEvent(target));
|
|
|
|
break;
|
2016-09-15 16:42:41 +02:00
|
|
|
case QUERY:
|
|
|
|
case TIME_SERIES:
|
|
|
|
case METADATA:
|
|
|
|
case WORKFLOW_REPORT:
|
|
|
|
case WORKFLOW_TEMPLATE:
|
2013-02-08 10:56:27 +01:00
|
|
|
break;
|
|
|
|
default:
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Reset store.
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
private void resetStore(){
|
|
|
|
store.removeAll();
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Update store.
|
|
|
|
*
|
|
|
|
* @param result the result
|
|
|
|
* @return true, if successful
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public boolean updateStore(List<FileGridModel> result){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
resetStore();
|
2013-09-09 17:37:49 +02:00
|
|
|
if(result!= null && result.size()>0){
|
2013-02-08 10:56:27 +01:00
|
|
|
for(FileGridModel file: result)
|
|
|
|
file.setIcon();
|
|
|
|
store.add(result);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Adds the to store.
|
|
|
|
*
|
|
|
|
* @param result the result
|
|
|
|
* @return true, if successful
|
|
|
|
*/
|
2015-10-05 18:34:15 +02:00
|
|
|
public boolean addToStore(FileGridModel result){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-10-05 18:34:15 +02:00
|
|
|
if(result!= null){
|
|
|
|
result.setIcon();
|
|
|
|
store.add(result);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Gets the selected item.
|
|
|
|
*
|
|
|
|
* @return the selected item
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public FileGridModel getSelectedItem(){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-12-14 16:58:05 +01:00
|
|
|
return currentItemSelected;
|
2015-10-29 16:19:45 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Gets the selected items.
|
|
|
|
*
|
|
|
|
* @return the selected items
|
|
|
|
*/
|
2015-10-29 16:19:45 +01:00
|
|
|
public List<FileGridModel> getSelectedItems(){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-10-29 16:19:45 +01:00
|
|
|
return grid.getSelectionModel().getSelection();
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Gets the ids selected items.
|
|
|
|
*
|
|
|
|
* @return the ids selected items
|
|
|
|
*/
|
2014-01-15 12:50:21 +01:00
|
|
|
public List<String> getIdsSelectedItems(){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
if(grid.getSelectionModel().getSelection()!=null){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
List<String> ids = new ArrayList<String>();
|
|
|
|
for (FileModel file : grid.getSelectionModel().getSelection()) {
|
|
|
|
ids.add(file.getIdentifier());
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-01-15 12:50:21 +01:00
|
|
|
return ids;
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
/**
|
2015-11-17 18:14:45 +01:00
|
|
|
* Delete item.
|
|
|
|
*
|
2013-02-08 10:56:27 +01:00
|
|
|
* @param identifier (MANDATORY)
|
2015-11-17 18:14:45 +01:00
|
|
|
* @return true, if successful
|
2013-02-08 10:56:27 +01:00
|
|
|
*/
|
|
|
|
public boolean deleteItem(String identifier) {
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
FileGridModel fileTarget = getFileGridModelByIdentifier(identifier);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(fileTarget!=null){
|
2016-09-15 16:42:41 +02:00
|
|
|
Record record = store.getRecord(fileTarget);
|
2013-02-08 10:56:27 +01:00
|
|
|
store.remove((FileGridModel) record.getModel());
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
System.out.println("Delete Error: file target with " + identifier + " identifier not exist in store" );
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2015-11-17 18:14:45 +01:00
|
|
|
* Rename item.
|
|
|
|
*
|
2013-02-08 10:56:27 +01:00
|
|
|
* @param fileTarget (MANDATORY)
|
|
|
|
* @param newName (MANDATORY)
|
|
|
|
* @param extension OPTIONAL - string or null
|
2015-11-17 18:14:45 +01:00
|
|
|
* @return true, if successful
|
2013-02-08 10:56:27 +01:00
|
|
|
*/
|
|
|
|
private boolean renameItem(FileGridModel fileTarget, String newName, String extension) {
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(fileTarget!=null){
|
2016-09-15 16:42:41 +02:00
|
|
|
Record record = store.getRecord(fileTarget);
|
2013-02-08 10:56:27 +01:00
|
|
|
if(record!=null){
|
|
|
|
if(extension!= null)
|
2016-09-15 16:42:41 +02:00
|
|
|
record.set(FileGridModel.NAME, newName+extension);
|
2013-02-08 10:56:27 +01:00
|
|
|
else
|
2016-09-15 16:42:41 +02:00
|
|
|
record.set(FileGridModel.NAME, newName);
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
System.out.println("Record Error: file target with " + fileTarget.getIdentifier() + " identifier not exist in store" );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
System.out.println("Rename Error: file target with is null" );
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Gets the current folder view.
|
|
|
|
*
|
|
|
|
* @return the current folder view
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public FileModel getCurrentFolderView() {
|
|
|
|
return currentFolderView;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Sets the current folder view.
|
|
|
|
*
|
|
|
|
* @param currentFolderView the new current folder view
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public void setCurrentFolderView(FileModel currentFolderView) {
|
|
|
|
this.currentFolderView = currentFolderView;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Rename item.
|
|
|
|
*
|
|
|
|
* @param itemIdentifier the item identifier
|
|
|
|
* @param newName the new name
|
|
|
|
* @param extension the extension
|
|
|
|
* @return true, if successful
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public boolean renameItem(String itemIdentifier, String newName, String extension) {
|
|
|
|
|
|
|
|
if(itemIdentifier!=null){
|
|
|
|
FileGridModel fileTarget = getFileGridModelByIdentifier(itemIdentifier);
|
|
|
|
if(fileTarget!=null){
|
|
|
|
Record record = store.getRecord(fileTarget);
|
|
|
|
if(record!=null){
|
|
|
|
if(extension!= null)
|
2016-09-15 16:42:41 +02:00
|
|
|
record.set(FileGridModel.NAME, newName+extension);
|
2013-02-08 10:56:27 +01:00
|
|
|
else
|
2016-09-15 16:42:41 +02:00
|
|
|
record.set(FileGridModel.NAME, newName);
|
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
System.out.println("Record Error: file target not exist in store" );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
System.out.println("Rename Error: file target is null" );
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
return false;
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Gets the file grid model by identifier.
|
|
|
|
*
|
|
|
|
* @param id the id
|
|
|
|
* @return the file grid model by identifier
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public FileGridModel getFileGridModelByIdentifier(String id){
|
2016-09-15 16:42:41 +02:00
|
|
|
return store.findModel(FileGridModel.IDENTIFIER, id);
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-06-14 15:04:21 +02:00
|
|
|
/**
|
2015-11-17 18:14:45 +01:00
|
|
|
* Select item by file model id.
|
|
|
|
*
|
|
|
|
* @param id the id
|
|
|
|
* @return true, if successful
|
2013-06-14 15:04:21 +02:00
|
|
|
*/
|
|
|
|
public boolean selectItemByFileModelId(String id){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-06-14 15:04:21 +02:00
|
|
|
if(id!=null && !id.isEmpty()){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-06-14 15:04:21 +02:00
|
|
|
FileGridModel fileModel = getFileGridModelByIdentifier(id);
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-06-14 15:04:21 +02:00
|
|
|
if(fileModel!=null){
|
|
|
|
grid.getSelectionModel().select(fileModel, true);
|
|
|
|
return true;
|
2016-09-15 16:42:41 +02:00
|
|
|
}
|
2013-06-14 15:04:21 +02:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-06-14 15:04:21 +02:00
|
|
|
return false;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Gets the store.
|
|
|
|
*
|
|
|
|
* @return the store
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public GroupingStore<FileGridModel> getStore(){
|
|
|
|
return store;
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Sets the border as on search.
|
|
|
|
*
|
|
|
|
* @param bool the new border as on search
|
|
|
|
*/
|
2013-02-08 10:56:27 +01:00
|
|
|
public void setBorderAsOnSearch(boolean bool){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(this.cp.getElement("body")!=null){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
if(bool){
|
|
|
|
this.cp.getElement("body").getStyle().setBorderColor("#32CD32");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
this.cp.getElement("body").getStyle().setBorderColor("#99BBE8");
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-11-17 18:14:45 +01:00
|
|
|
/**
|
|
|
|
* Adds the data changed store listener.
|
|
|
|
*/
|
2014-05-16 17:44:31 +02:00
|
|
|
private void addDataChangedStoreListener(){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
store.addListener(Store.Add, new Listener<StoreEvent<ModelData>>(){
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void handleEvent(StoreEvent<ModelData> be) {
|
|
|
|
AppController.getEventBus().fireEvent(new StoreGridChangedEvent(storeSize()));
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
}
|
|
|
|
});
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
store.addListener(Store.Remove, new Listener<StoreEvent<ModelData>>(){
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void handleEvent(StoreEvent<ModelData> be) {
|
|
|
|
AppController.getEventBus().fireEvent(new StoreGridChangedEvent(storeSize()));
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
}
|
|
|
|
});
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
store.addListener(Store.Clear, new Listener<StoreEvent<ModelData>>(){
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void handleEvent(StoreEvent<ModelData> be) {
|
|
|
|
AppController.getEventBus().fireEvent(new StoreGridChangedEvent(storeSize()));
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
/**
|
2015-11-17 18:14:45 +01:00
|
|
|
* Store size.
|
|
|
|
*
|
2014-05-16 17:44:31 +02:00
|
|
|
* @return -1 if store is null. The size otherwise
|
|
|
|
*/
|
|
|
|
private int storeSize(){
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
if(store!=null && store.getModels()!=null){
|
|
|
|
return store.getModels().size();
|
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2014-05-16 17:44:31 +02:00
|
|
|
return -1;
|
|
|
|
}
|
2015-10-22 18:52:12 +02:00
|
|
|
|
|
|
|
/**
|
2015-11-17 18:14:45 +01:00
|
|
|
* Refresh size.
|
|
|
|
*
|
|
|
|
* @param width the width
|
|
|
|
* @param height the height
|
2015-10-22 18:52:12 +02:00
|
|
|
*/
|
|
|
|
public void refreshSize(String width, String height) {
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2015-10-22 18:52:12 +02:00
|
|
|
// if(this.isRendered()){
|
|
|
|
// GWT.log("refresh size grid "+height);
|
|
|
|
// this.setHeight(height);
|
|
|
|
// }
|
|
|
|
GWT.log("refresh size grid "+width +"; heigth: "+height);
|
|
|
|
this.setSize(width, height);
|
|
|
|
cp.setSize(width, height);
|
2015-10-28 12:33:34 +01:00
|
|
|
// grid.setSize(width, height);
|
2015-10-22 18:52:12 +02:00
|
|
|
}
|
2016-09-15 16:42:41 +02:00
|
|
|
|
2013-02-08 10:56:27 +01:00
|
|
|
}
|