2013-11-25 17:12:01 +01:00
|
|
|
package org.gcube.portlets.user.reportgenerator.client.dialog;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.gcube.portlets.user.reportgenerator.client.ReportService;
|
|
|
|
import org.gcube.portlets.user.reportgenerator.client.ReportServiceAsync;
|
|
|
|
import org.gcube.portlets.user.reportgenerator.client.events.SelectedReportEvent;
|
|
|
|
import org.gcube.portlets.user.reportgenerator.shared.VMEReportBean;
|
|
|
|
import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier;
|
|
|
|
|
|
|
|
import com.extjs.gxt.ui.client.event.ButtonEvent;
|
|
|
|
import com.extjs.gxt.ui.client.event.SelectionListener;
|
|
|
|
import com.extjs.gxt.ui.client.store.GroupingStore;
|
2013-11-25 19:11:03 +01:00
|
|
|
import com.extjs.gxt.ui.client.store.ListStore;
|
2013-11-25 17:12:01 +01:00
|
|
|
import com.extjs.gxt.ui.client.store.Store;
|
|
|
|
import com.extjs.gxt.ui.client.widget.ContentPanel;
|
|
|
|
import com.extjs.gxt.ui.client.widget.Window;
|
|
|
|
import com.extjs.gxt.ui.client.widget.button.Button;
|
|
|
|
import com.extjs.gxt.ui.client.widget.form.StoreFilterField;
|
|
|
|
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
|
|
|
|
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.GroupingView;
|
|
|
|
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
|
|
|
|
import com.google.gwt.core.client.GWT;
|
|
|
|
import com.google.gwt.dom.client.Style.Unit;
|
|
|
|
import com.google.gwt.event.shared.HandlerManager;
|
|
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
|
|
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
|
|
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
|
|
|
|
|
|
|
public class ImportVMEReportDialog extends Window {
|
|
|
|
private static final int WIDTH = 600;
|
|
|
|
private static final int HEIGHT = 450;
|
|
|
|
|
|
|
|
private ReportServiceAsync reportService = (ReportServiceAsync) GWT.create(ReportService.class);
|
|
|
|
private ContentPanel mainPanel = new ContentPanel();
|
|
|
|
private HandlerManager eventBus;
|
|
|
|
private HorizontalPanel hp = new HorizontalPanel();
|
|
|
|
private StoreFilterField<VMEReportBean> filter;
|
2013-11-25 19:11:03 +01:00
|
|
|
private VMETypeIdentifier type;
|
2013-11-25 17:12:01 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param eventBus the bus to fire events into
|
|
|
|
*/
|
2013-11-26 18:37:13 +01:00
|
|
|
public ImportVMEReportDialog(final HandlerManager eventBus, VMETypeIdentifier type, final boolean isAssociation) {
|
2013-11-25 17:12:01 +01:00
|
|
|
this.eventBus = eventBus;
|
2013-11-25 19:11:03 +01:00
|
|
|
this.type = type;
|
2013-11-26 18:37:13 +01:00
|
|
|
setModal(true);
|
2013-11-25 17:12:01 +01:00
|
|
|
mainPanel.setHeaderVisible(false);
|
|
|
|
setWidth(WIDTH);
|
|
|
|
setHeight(HEIGHT);
|
|
|
|
|
|
|
|
mainPanel.setWidth(WIDTH-10);
|
|
|
|
mainPanel.setHeight(HEIGHT-50);
|
|
|
|
|
|
|
|
filter = new StoreFilterField<VMEReportBean>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected boolean doSelect(Store<VMEReportBean> store, VMEReportBean parent, VMEReportBean record, String property, String filter) {
|
|
|
|
String name = record.getName();
|
|
|
|
name = name.toLowerCase();
|
|
|
|
if (name.contains(filter.toLowerCase())) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
};
|
2013-12-06 16:57:55 +01:00
|
|
|
filter.setEmptyText("Filter by Title");
|
2013-11-25 17:12:01 +01:00
|
|
|
filter.setWidth("250px");
|
|
|
|
hp.add(filter);
|
|
|
|
hp.setPixelSize(250, 20);
|
|
|
|
hp.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
|
|
|
|
|
|
|
|
|
|
|
add(hp);
|
|
|
|
add(mainPanel);
|
|
|
|
showLoading();
|
2013-11-26 18:37:13 +01:00
|
|
|
if (type == VMETypeIdentifier.Vme) {
|
|
|
|
setHeading("Select the VME");
|
2013-11-25 19:11:03 +01:00
|
|
|
reportService.listVMEReports(new AsyncCallback<ArrayList<VMEReportBean>>() {
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
mainPanel.unmask();
|
|
|
|
}
|
2013-11-25 17:12:01 +01:00
|
|
|
|
2013-11-25 19:11:03 +01:00
|
|
|
@Override
|
|
|
|
public void onSuccess(ArrayList<VMEReportBean> reports) {
|
|
|
|
mainPanel.unmask();
|
|
|
|
showAvailableReports(reports);
|
2013-11-25 17:12:01 +01:00
|
|
|
}
|
2013-11-26 18:37:13 +01:00
|
|
|
});
|
|
|
|
}
|
2013-11-25 19:11:03 +01:00
|
|
|
else {
|
2013-11-26 18:37:13 +01:00
|
|
|
setHeading("Select the " + type.getId());
|
2013-11-25 19:11:03 +01:00
|
|
|
reportService.listVMEReportRefByType(type, new AsyncCallback<ArrayList<VMEReportBean>>() {
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
mainPanel.unmask();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSuccess(ArrayList<VMEReportBean> refReports) {
|
|
|
|
mainPanel.unmask();
|
2013-11-26 18:37:13 +01:00
|
|
|
showAvailableReferenceReports(refReports, isAssociation);
|
2013-11-25 19:11:03 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param reports
|
|
|
|
*/
|
2013-11-26 18:37:13 +01:00
|
|
|
public void showAvailableReferenceReports(List<VMEReportBean> reports, boolean isAssociation) {
|
2013-11-25 19:11:03 +01:00
|
|
|
|
|
|
|
ColumnModel cm = null;
|
|
|
|
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
|
|
|
|
ColumnConfig column = new ColumnConfig();
|
|
|
|
column.setId("id");
|
|
|
|
column.setHeader("ID");
|
|
|
|
column.setHidden(false);
|
|
|
|
column.setWidth(50);
|
|
|
|
column.setRowHeader(true);
|
|
|
|
configs.add(column);
|
|
|
|
|
|
|
|
column = new ColumnConfig();
|
|
|
|
column.setId("name");
|
2013-12-04 23:21:12 +01:00
|
|
|
column.setHeader("Indentifier");
|
2013-11-25 19:11:03 +01:00
|
|
|
column.setWidth(150);
|
|
|
|
configs.add(column);
|
2013-11-26 18:37:13 +01:00
|
|
|
|
2013-11-25 19:11:03 +01:00
|
|
|
cm = new ColumnModel(configs);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* load the grid data
|
|
|
|
*/
|
|
|
|
ListStore<VMEReportBean> store = new ListStore <VMEReportBean>();
|
|
|
|
store.add(reports);
|
|
|
|
|
|
|
|
filter.bind(store);
|
2013-12-04 23:21:12 +01:00
|
|
|
filter.setEmptyText("Filter by Identifier");
|
|
|
|
|
2013-11-25 19:11:03 +01:00
|
|
|
final Grid<VMEReportBean> grid = new Grid<VMEReportBean>(store, cm);
|
|
|
|
|
|
|
|
grid.getElement().getStyle().setBorderWidth(0, Unit.PX);
|
|
|
|
grid.setAutoExpandColumn("name");
|
|
|
|
grid.setBorders(false);
|
|
|
|
grid.setStripeRows(true);
|
|
|
|
|
|
|
|
ContentPanel gridPanel = new ContentPanel(new FitLayout());
|
|
|
|
gridPanel.setHeaderVisible(false);
|
|
|
|
gridPanel.add(grid);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gridPanel.addButton(new Button("Cancel", new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
hide();
|
|
|
|
}
|
|
|
|
}));
|
|
|
|
|
2013-11-26 18:37:13 +01:00
|
|
|
if (isAssociation) {
|
|
|
|
gridPanel.addButton(new Button("Associate Selected", new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
hide();
|
2013-12-04 23:21:12 +01:00
|
|
|
eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), grid.getSelectionModel().getSelectedItem().getName(), type, true));
|
2013-11-26 18:37:13 +01:00
|
|
|
}
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
gridPanel.addButton(new Button("Edit Selected", new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
hide();
|
2013-12-04 23:21:12 +01:00
|
|
|
eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), grid.getSelectionModel().getSelectedItem().getName(), type, false));
|
2013-11-26 18:37:13 +01:00
|
|
|
}
|
|
|
|
}));
|
|
|
|
}
|
2013-11-25 19:11:03 +01:00
|
|
|
mainPanel.add(gridPanel);
|
|
|
|
mainPanel.setLayout(new FitLayout());
|
|
|
|
mainPanel.layout();
|
2013-11-25 17:12:01 +01:00
|
|
|
}
|
|
|
|
/**
|
|
|
|
* view for collections step
|
|
|
|
* @param vDesc
|
|
|
|
*/
|
2013-11-25 19:11:03 +01:00
|
|
|
public void showAvailableReports(List<VMEReportBean> reports) {
|
2013-11-25 17:12:01 +01:00
|
|
|
|
|
|
|
ColumnModel cm = null;
|
|
|
|
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
|
|
|
|
|
|
|
|
|
|
|
|
ColumnConfig column = new ColumnConfig();
|
2013-12-04 23:21:12 +01:00
|
|
|
|
2013-11-25 17:12:01 +01:00
|
|
|
column.setId("rfmo");
|
2013-12-06 16:57:55 +01:00
|
|
|
column.setHeader("Owner");
|
2013-12-04 23:21:12 +01:00
|
|
|
column.setWidth(50);
|
2013-11-25 17:12:01 +01:00
|
|
|
configs.add(column);
|
|
|
|
|
|
|
|
column = new ColumnConfig();
|
|
|
|
column.setId("name");
|
2013-12-06 16:57:55 +01:00
|
|
|
column.setHeader("VME Title");
|
2013-11-25 17:12:01 +01:00
|
|
|
column.setWidth(150);
|
|
|
|
configs.add(column);
|
|
|
|
|
|
|
|
column = new ColumnConfig();
|
2013-12-04 23:21:12 +01:00
|
|
|
column.setId("id");
|
|
|
|
column.setHeader("ID");
|
|
|
|
column.setWidth(30);
|
2013-11-25 17:12:01 +01:00
|
|
|
configs.add(column);
|
|
|
|
cm = new ColumnModel(configs);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* load the grid data
|
|
|
|
*/
|
|
|
|
GroupingStore<VMEReportBean> store = new GroupingStore<VMEReportBean>();
|
|
|
|
store.add(reports);
|
|
|
|
store.groupBy("rfmo");
|
2013-12-04 23:21:12 +01:00
|
|
|
|
|
|
|
|
2013-11-25 17:12:01 +01:00
|
|
|
|
|
|
|
filter.bind(store);
|
|
|
|
|
|
|
|
final Grid<VMEReportBean> grid = new Grid<VMEReportBean>(store, cm);
|
|
|
|
|
|
|
|
grid.getElement().getStyle().setBorderWidth(0, Unit.PX);
|
|
|
|
grid.setAutoExpandColumn("name");
|
2013-11-25 19:11:03 +01:00
|
|
|
grid.setBorders(false);
|
2013-11-25 17:12:01 +01:00
|
|
|
grid.setStripeRows(true);
|
|
|
|
|
|
|
|
|
|
|
|
GroupingView view = new GroupingView();
|
2013-12-04 23:21:12 +01:00
|
|
|
view.setShowGroupedColumn(true);
|
|
|
|
view.setStartCollapsed(true);
|
2013-11-25 17:12:01 +01:00
|
|
|
grid.setView(view);
|
|
|
|
view.setForceFit(true);
|
|
|
|
ContentPanel gridPanel = new ContentPanel(new FitLayout());
|
|
|
|
gridPanel.setHeaderVisible(false);
|
|
|
|
gridPanel.add(grid);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gridPanel.addButton(new Button("Cancel", new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
hide();
|
|
|
|
}
|
|
|
|
}));
|
|
|
|
|
|
|
|
gridPanel.addButton(new Button("Import Selected", new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
hide();
|
2013-12-04 23:21:12 +01:00
|
|
|
eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), grid.getSelectionModel().getSelectedItem().getName(), VMETypeIdentifier.Vme, false));
|
2013-11-25 17:12:01 +01:00
|
|
|
}
|
|
|
|
}));
|
|
|
|
mainPanel.add(gridPanel);
|
|
|
|
mainPanel.setLayout(new FitLayout());
|
|
|
|
mainPanel.layout();
|
2013-11-25 19:11:03 +01:00
|
|
|
}
|
2013-11-25 17:12:01 +01:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
private void showLoading() {
|
|
|
|
mainPanel.mask("Asking for available Reports, please wait ... ", "loading-indicator");
|
|
|
|
}
|
|
|
|
}
|