/** * */ package org.gcube.portlets.user.td.client; import java.util.ArrayList; import org.gcube.portlets.user.td.client.template.TemplateApplyDialog; import org.gcube.portlets.user.td.client.template.TemplateDeleteDialog; import org.gcube.portlets.user.td.client.template.TemplateOpenDialog; import org.gcube.portlets.user.td.columnwidget.client.batch.ReplaceBatchDialog; import org.gcube.portlets.user.td.columnwidget.client.replace.ReplaceDialog; import org.gcube.portlets.user.td.csvexportwidget.client.CSVExportWizardTD; import org.gcube.portlets.user.td.csvimportwidget.client.CSVImportWizardTD; import org.gcube.portlets.user.td.expressionwidget.client.ColumnFilterDialog; import org.gcube.portlets.user.td.expressionwidget.client.MultiColumnFilterDialog; import org.gcube.portlets.user.td.extractcodelistwidget.client.ExtractCodelistWizardTD; import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; import org.gcube.portlets.user.td.openwidget.client.TDOpen; import org.gcube.portlets.user.td.sdmxexportwidget.client.SDMXExportWizardTD; import org.gcube.portlets.user.td.sdmximportwidget.client.SDMXImportWizardTD; import org.gcube.portlets.user.td.sharewidget.client.TRShare; import org.gcube.portlets.user.td.tablewidget.client.CloneTabularResource; import org.gcube.portlets.user.td.tablewidget.client.history.HistoryDiscard; import org.gcube.portlets.user.td.tablewidget.client.rows.DeleteRows; import org.gcube.portlets.user.td.tablewidget.client.rows.EditRowDialog; import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; import org.gcube.portlets.user.td.taskswidget.client.TdTaskController; import org.gcube.portlets.user.td.widgetcommonevent.client.event.ChangeTableRequestEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.GridContextMenuItemEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.GridHeaderColumnMenuItemEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.RibbonEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.TasksMonitorEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.UIStateEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.WidgetRequestEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.type.RibbonType; import org.gcube.portlets.user.td.widgetcommonevent.client.type.TaskType; import org.gcube.portlets.user.td.widgetcommonevent.client.type.UIStateType; import org.gcube.portlets.user.td.widgetcommonevent.client.type.WidgetRequestType; import org.gcube.portlets.user.td.widgetcommonevent.shared.CellData; import org.gcube.portlets.user.td.widgetcommonevent.shared.GridHeaderOperationId; import org.gcube.portlets.user.td.widgetcommonevent.shared.GridOperationId; import org.gcube.portlets.user.td.widgetcommonevent.shared.RequestProperties; import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; import org.gcube.portlets.user.td.widgetcommonevent.shared.grid.model.RowRaw; import org.gcube.portlets.user.td.wizardwidget.client.WizardListener; import org.gcube.portlets.user.tdtemplate.client.TdTemplateController; import org.gcube.portlets.user.tdwx.client.TabularDataX; import org.gcube.portlets.user.tdwx.shared.model.TableId; import org.gcube.portlets.widgets.sessionchecker.client.CheckSession; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.RunAsyncCallback; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.web.bindery.event.shared.EventBus; import com.google.web.bindery.event.shared.SimpleEventBus; import com.sencha.gxt.widget.core.client.ContentPanel; import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton; import com.sencha.gxt.widget.core.client.box.ConfirmMessageBox; import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData; import com.sencha.gxt.widget.core.client.event.HideEvent; import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler; import com.sencha.gxt.widget.core.client.info.Info; //import org.gcube.portlets.user.tdtemplate.client.TdTemplateController; /** * * @author "Giancarlo Panichi" g.panichi@isti.cnr.it * */ public class TabularDataController { // implements HasCloseHandlers, HasOpenHandlers { protected SimpleEventBus eventBus; protected TabularDataX tabularData; protected UIStateType uiState = UIStateType.START; private boolean taskManagerInit = false; protected TdTaskController tdTaskController; protected ContentPanel toolBoxPanel; protected BorderLayoutData westData; /** * Tabular Resource Id */ protected TRId trId; /** * Grid TableId */ protected TableId tableOpening; public TabularDataController() { eventBus = new SimpleEventBus(); callHello(); checkSession(); bindToEvents(); } protected void checkSession() { // if you do not need to something when the session expire CheckSession.getInstance().startPolling(); } protected void sessionExpiredShow() { CheckSession.showLogoutDialog(); } /** * @return the eventBus */ public EventBus getEventBus() { return eventBus; } public void setTabularData(TabularDataX tabularData) { this.tabularData = tabularData; } public ContentPanel getToolBoxPanel() { return toolBoxPanel; } public void setToolBoxPanel(ContentPanel toolBoxPanel) { this.toolBoxPanel = toolBoxPanel; } public BorderLayoutData getWestData() { return westData; } public void setWestData(BorderLayoutData westData) { this.westData = westData; } protected void callHello() { TDGWTServiceAsync.INSTANCE.hello(new AsyncCallback() { @Override public void onFailure(Throwable caught) { Log.info("No valid user found: " + caught.getMessage()); if (caught instanceof TDGWTSessionExpiredException) { UtilsGXT3.alert("Error", "No user found"); sessionExpiredShowDelayed(); } else { UtilsGXT3.alert("Error", "No user found"); } } @Override public void onSuccess(String result) { Log.info("Hello: " + result); } }); } protected void sessionExpiredShowDelayed() { Timer timeoutTimer = new Timer() { public void run() { sessionExpiredShow(); } }; int TIMEOUT = 5; // 3 second timeout timeoutTimer.schedule(TIMEOUT * 1000); // timeout is in milliseconds } // Bind Controller to events on bus protected void bindToEvents() { eventBus.addHandler(SessionExpiredEvent.TYPE, new SessionExpiredEvent.SessionExpiredEventHandler() { @Override public void onSessionExpired(SessionExpiredEvent event) { Log.debug("Catch Event SessionExpiredEvent"); doSessionExpiredCommand(event); } }); eventBus.addHandler( GridHeaderColumnMenuItemEvent.TYPE, new GridHeaderColumnMenuItemEvent.GridHeaderColumnMenuItemEventHandler() { public void onGridHeaderColumnMenuItemEvent( GridHeaderColumnMenuItemEvent event) { Log.debug("Catch Event HeaderColumnMenuItemEvent"); doGridHeaderColumnMenuCommand(event); } }); eventBus.addHandler(GridContextMenuItemEvent.TYPE, new GridContextMenuItemEvent.GridContextMenuItemEventHandler() { public void onGridContextMenuItemEvent( GridContextMenuItemEvent event) { Log.debug("Catch Event ContextMenuItemEvent"); doGridContextMenuCommand(event); } }); eventBus.addHandler(ChangeTableRequestEvent.TYPE, new ChangeTableRequestEvent.ChangeTableRequestEventHandler() { public void onChangeTableRequestEvent( ChangeTableRequestEvent event) { Log.debug("Catch Event ChangeTableRequestEvent"); doChangeTableRequestEventCommand(event); } }); eventBus.addHandler(RibbonEvent.TYPE, new RibbonEvent.RibbonEventHandler() { public void onRibbon(RibbonEvent event) { doRibbonCommand(event); } }); eventBus.addHandler(TasksMonitorEvent.TYPE, new TasksMonitorEvent.TasksMonitorEventHandler() { public void onTasksMonitorEvent(TasksMonitorEvent event) { Log.debug("Catch Event HeaderColumnMenuItemEvent"); doTasksMonitorCommand(event); } }); eventBus.addHandler(WidgetRequestEvent.TYPE, new WidgetRequestEvent.WidgetRequestEventHandler() { @Override public void onWidgetRequest(WidgetRequestEvent event) { Log.debug("Catch Event HeaderColumnMenuItemEvent"); doWidgetRequestCommand(event); } }); eventBus.fireEvent(new UIStateEvent(UIStateType.START)); } // Resume state of user interface protected void resumeUIState() { try { UIStateEvent uiStateEvent; switch (uiState) { case START: eventBus.fireEvent(new UIStateEvent(UIStateType.START)); break; case TABLECURATION: uiStateEvent = new UIStateEvent(UIStateType.TABLECURATION); uiStateEvent.setTrId(trId); eventBus.fireEvent(uiStateEvent); break; case TABLEUPDATE: uiStateEvent = new UIStateEvent(UIStateType.TABLEUPDATE); uiStateEvent.setTrId(trId); eventBus.fireEvent(uiStateEvent); break; case TR_CLOSE: eventBus.fireEvent(new UIStateEvent(UIStateType.TR_CLOSE)); break; case TR_OPEN: uiStateEvent = new UIStateEvent(UIStateType.TR_OPEN); uiStateEvent.setTrId(trId); eventBus.fireEvent(uiStateEvent); break; case TR_READONLY: uiStateEvent = new UIStateEvent(UIStateType.TR_READONLY); uiStateEvent.setTrId(trId); eventBus.fireEvent(uiStateEvent); break; case WIZARD_OPEN: break; default: break; } } catch (Exception e) { Log.debug("Resume :" + e.getLocalizedMessage()); } } // Open Table protected void openTable(TRId tabularResourceId) { Log.debug("openTable: " + tabularResourceId); trId = tabularResourceId; tableOpening = new TableId(Constants.TDX_DATASOURCE_FACTORY_ID, trId.getTableId()); tabularData.openTable(tableOpening); uiState = UIStateType.TR_OPEN; UIStateEvent uiStateEvent = new UIStateEvent(UIStateType.TR_OPEN); uiStateEvent.setTrId(tabularResourceId); eventBus.fireEvent(uiStateEvent); } // Update Table protected void updateTable(TRId tabularResourceId) { Log.debug("updateTable: " + tabularResourceId); trId = tabularResourceId; tableOpening = new TableId(Constants.TDX_DATASOURCE_FACTORY_ID, trId.getTableId()); tabularData.openTable(tableOpening); uiState = UIStateType.TABLEUPDATE; UIStateEvent uiStateEvent = new UIStateEvent(UIStateType.TABLEUPDATE); uiStateEvent.setTrId(tabularResourceId); eventBus.fireEvent(uiStateEvent); } // Update Table For Curation protected void updateTableForCuration(TRId tabularResourceId) { Log.debug("updateTableForCuration: " + tabularResourceId); trId = tabularResourceId; tableOpening = new TableId(Constants.TDX_DATASOURCE_FACTORY_ID, trId.getTableId()); tabularData.openTable(tableOpening); uiState = UIStateType.TABLECURATION; UIStateEvent uiStateEvent = new UIStateEvent(UIStateType.TABLECURATION); uiStateEvent.setTrId(tabularResourceId); eventBus.fireEvent(uiStateEvent); } // Close Tabular Resource protected void closeTabularResource() { switch (uiState) { case START: break; case TABLECURATION: case TABLEUPDATE: case TR_OPEN: case TR_READONLY: Log.debug("CloseTabularResource Open"); tabularData.closeTable(); trId = null; tableOpening = null; uiState = UIStateType.TR_CLOSE; Log.debug("fireEvent TR_CLOSE"); try { eventBus.fireEvent(new UIStateEvent(UIStateType.TR_CLOSE)); } catch (Exception e) { Log.debug("Bus Error: " + e.getMessage()); } break; case TR_CLOSE: break; case WIZARD_OPEN: break; default: break; } } protected void deleteTabularResource() { final ConfirmMessageBox mb = new ConfirmMessageBox("Confirm", "Are you sure you want to delete the taular resource?"); mb.addHideHandler(new HideHandler() { public void onHide(HideEvent event) { if (mb.getHideButton() == mb.getButtonById(PredefinedButton.YES .name())) { Log.debug("Remove TR:" + trId); TDGWTServiceAsync.INSTANCE.removeTabularResource(trId, new AsyncCallback() { public void onFailure(Throwable caught) { UtilsGXT3.alert("Error on Delete", caught.getLocalizedMessage()); } public void onSuccess(Void result) { closeTabularResource(); } }); mb.hide(); } else if (mb.getHideButton() == mb .getButtonById(PredefinedButton.NO.name())) { mb.hide(); } } }); mb.setWidth(300); mb.show(); } protected void openWizard() { eventBus.fireEvent(new UIStateEvent(UIStateType.WIZARD_OPEN)); } public void doRibbonCommand(RibbonEvent event) { RibbonType type = event.getRibbonType(); Log.trace("doRibbonEvent ribbonType: " + type); try { switch (type) { case OPEN: openTabularResource(); break; case CLONE: cloneTabularResource(); break; case CLOSE: closeTabularResource(); break; case DELETE: deleteTabularResource(); break; case PROPERTIES: break; case IMPORTSDMX: openSDMXImportWizard(); break; case IMPORTCSV: openCSVImportWizard(); break; case IMPORTJSON: break; case EXPORTSDMX: openSDMXExportWizard(); break; case EXPORTCSV: openCSVExportWizard(); break; case EXPORTJSON: break; case TEMPLATEOPEN: openTemplateOpen(); break; case TEMPLATENEW: openTemplateNew(); break; case TEMPLATEDELETE: openTemplateDelete(); break; case SHARE: openShareWindow(); break; case TIMELINE: openTasksManagerWizard(); break; case HISTORY: break; case UNDO: callDiscard(); break; case DISCARDALL: break; case HELP: break; case RULENEW: break; case RULEMANAGE: break; case DUPLICATEDETECTION: openDuplicatesRows(); break; case TEMPLATEAPPLY: openTemplateApply(); break; case TABLETYPE: openTableType(); break; case COLUMNLABEL: openColumnLabel(); break; case COLUMNTYPE: openColumnType(); break; case COLUMNADD: break; case COLUMNDELETE: openColumnDelete(); break; case DENORMALIZE: break; case NORMALIZE: break; case EXTRACTCODELIST: openExtractCodelistWizard(); break; case GENERATESUMMARY: break; case TABLEFILTER: break; case TABLEUNION: break; case TABLEGROUPBY: break; case TABLEAGGREAGETE: break; case ROWADD: doRowAdd(); break; case ROWDELETE: doRowsDelete(); break; case DUPLICATEDELETE: openDuplicatesRows(); break; case ANNOTATIONADD: break; case COLUMNFILTER: openMultiColumnFilter(); break; case COLUMNBATCHREPLACE: break; case ANALYSETABLEFILTER: break; case ANALYSETABLEUNION: break; case ANALYSETABLEGROUPBY: break; case ANALYSETABLEAGGREAGETE: break; case ANALYSEROWADD: break; case ANALYSEROWDELETE: break; case ANALYSEDUPLICATEDELETE: break; case ANALYSEANNOTATIONADD: break; case ANALYSECOLUMNFILTER: break; case ANALYSECOLUMNEDIT: break; case CHARTPIE: break; case CHARTBAR: break; case CHARTCURVE: break; case CHARTBULLS: break; case RSTUDIO: break; case STATISTICAL: break; case SPREAD: break; case GIS: break; default: break; } } catch (Exception e) { Log.error("doRibbonCommand Error : " + e.getLocalizedMessage() + " \n " + e.getMessage()); } } protected void doTasksMonitorCommand(TasksMonitorEvent event) { TaskType taskType = event.getTaskType(); Log.debug("Received TaskMonitorEvent: " + taskType); switch (taskType) { case OPENTABLE: // openTable(event.getTrId()); break; default: break; } } //TODO protected void doWidgetRequestCommand(WidgetRequestEvent event){ WidgetRequestType widgetRequestType=event.getWidgetRequestType(); switch(widgetRequestType){ case CHANGECOLUMNTYPEPANEL: break; case CHANGETABLETYPEPANEL: break; case CURATIONBYREPLACEBATCHDIALOG: openBatchReplace(event.getTrId(),event.getRequestProperties()); break; case DELETECOLUMNPANEL: break; case DUPLICATESROWSPANEL: break; case LABELCOLUNPANEL: break; case VALIDATIONSTASKSPANEL: break; default: break; } } protected void openBatchReplace(TRId trId, RequestProperties requestProperties){ Log.debug("Request Open Batch Replace Dialog: "+trId+" "+requestProperties); if (trId != null) { ReplaceBatchDialog dialog = new ReplaceBatchDialog(trId, requestProperties, eventBus); dialog.show(); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No tabular resource present"); } } protected void openSDMXImportWizard() { GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { openWizard(); SDMXImportWizardTD importWizard = new SDMXImportWizardTD( "SDMX Import", eventBus); importWizard.addListener(new WizardListener() { public void completed(TRId tabularResourceId) { openTable(tabularResourceId); } public void aborted() { resumeUIState(); } public void failed(Throwable throwable, String reason, String details) { UtilsGXT3.alert(reason, details); resumeUIState(); } }); importWizard.show(); } public void onFailure(Throwable reason) { asyncCodeLoadingFailed(reason); } }); } protected void openCSVExportWizard() { GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { openWizard(); CSVExportWizardTD exportWizard = new CSVExportWizardTD( "CSV Export", eventBus); exportWizard.addListener(new WizardListener() { public void failed(Throwable throwable, String reason, String details) { UtilsGXT3.alert(reason, details); resumeUIState(); } public void completed(TRId id) { resumeUIState(); } public void aborted() { resumeUIState(); } }); exportWizard.show(); } public void onFailure(Throwable reason) { asyncCodeLoadingFailed(reason); } }); } protected void openSDMXExportWizard() { GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { openWizard(); SDMXExportWizardTD exportWizard = new SDMXExportWizardTD( "SDMX Export", eventBus); exportWizard.addListener(new WizardListener() { public void failed(Throwable throwable, String reason, String details) { UtilsGXT3.alert(reason, details); resumeUIState(); } public void completed(TRId id) { resumeUIState(); } public void aborted() { resumeUIState(); } }); exportWizard.show(); } public void onFailure(Throwable reason) { asyncCodeLoadingFailed(reason); } }); } protected void openExtractCodelistWizard() { GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { openWizard(); ExtractCodelistWizardTD extractCodelistWizard = new ExtractCodelistWizardTD( "Extract Codelist", eventBus); extractCodelistWizard.addListener(new WizardListener() { public void failed(Throwable throwable, String reason, String details) { UtilsGXT3.alert(reason, details); resumeUIState(); } public void completed(TRId id) { openTable(id); } public void aborted() { resumeUIState(); } }); extractCodelistWizard.show(); } public void onFailure(Throwable reason) { asyncCodeLoadingFailed(reason); } }); } /** * */ protected void openTabularResource() { Log.info("Open Tabular Resources"); GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { openWizard(); TDOpen tdOpen = new TDOpen("Open Tabular Resource", eventBus); tdOpen.addListener(new WizardListener() { public void aborted() { resumeUIState(); } public void failed(Throwable throwable, String reason, String details) { UtilsGXT3.alert(reason, details); resumeUIState(); } public void completed(TRId tabularResourceId) { openTable(tabularResourceId); } }); Log.info("TDOpen add Listener"); tdOpen.show(); } public void onFailure(Throwable reason) { asyncCodeLoadingFailed(reason); } }); } protected void openCSVImportWizard() { GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { openWizard(); CSVImportWizardTD importWizard = new CSVImportWizardTD( "CSV Import", eventBus); importWizard.addListener(new WizardListener() { public void failed(Throwable throwable, String reason, String details) { UtilsGXT3.alert(reason, details); resumeUIState(); } public void completed(TRId id) { openTable(id); } public void aborted() { resumeUIState(); } }); importWizard.show(); } public void onFailure(Throwable reason) { asyncCodeLoadingFailed(reason); } }); } protected com.extjs.gxt.ui.client.widget.Window tdTaskMainWindow; protected void openTasksManagerWizard() { initTaskManager(); tdTaskMainWindow.setPosition((Window.getClientWidth() / 2) - 200, (Window.getClientHeight() / 2) - 300); tdTaskController.updateTasks(true); tdTaskMainWindow.show(); } protected void initTaskManager() { if (!taskManagerInit) { taskManagerInit = true; tdTaskController = TdTaskController.getInstance(); TdTaskController.bindCommonBus(eventBus); tdTaskMainWindow = tdTaskController.getWindowTaskMonitor(); } else { } } protected void openTemplateNew() { TdTemplateController tdTemplateController = new TdTemplateController(); TdTemplateController.bindCommonBus(eventBus); tdTemplateController.getWindowTemplatePanel().show(); } protected void openTemplateDelete() { TemplateDeleteDialog tdDialog = new TemplateDeleteDialog(eventBus); tdDialog.show(); } protected void openTemplateOpen() { Log.debug("Template Open call"); TemplateOpenDialog tdDialog = new TemplateOpenDialog(eventBus); tdDialog.show(); } protected void openShareWindow() { Log.debug("Open Share Window"); @SuppressWarnings("unused") TRShare trShare = new TRShare(trId, eventBus); } protected void callDiscard() { HistoryDiscard historyDiscard = new HistoryDiscard(eventBus); historyDiscard.discard(); } protected void openTemplateApply() { Log.debug("Template Apply call"); if (trId != null) { TemplateApplyDialog taDialog = new TemplateApplyDialog(trId, eventBus); taDialog.show(); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No current tabular resource present"); } } protected void openMultiColumnFilter() { Log.debug("Request Open Multi Column Filter Dialog"); if (trId != null) { MultiColumnFilterDialog mcfDialog = new MultiColumnFilterDialog( trId, eventBus); mcfDialog.show(); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No current tabular resource present"); } } protected void openColumnFilter(String columnName) { Log.debug("Request Open Column Filter Dialog"); if (trId != null) { ColumnFilterDialog cfDialog = new ColumnFilterDialog(trId, columnName, eventBus); cfDialog.show(); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No current tabular resource present"); } } protected void openColumnType() { openColumnType(null); } protected void openColumnType(String columnName) { Log.debug("Request Open Change Column Tab"); if (trId != null) { WidgetRequestEvent e = new WidgetRequestEvent( WidgetRequestType.CHANGECOLUMNTYPEPANEL); e.setTrId(trId); e.setColumnName(columnName); eventBus.fireEvent(e); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No current tabular resource present"); } } protected void cloneTabularResource() { CloneTabularResource cloneTR = new CloneTabularResource(trId, eventBus); cloneTR.cloneTR(); } protected void openColumnBatchReplace() { openColumnDelete(null); } protected void openColumnBatchReplace(String columnName) { Log.debug("Request Open Batch Replace Dialog"); if (trId != null) { ReplaceBatchDialog dialog = new ReplaceBatchDialog(trId, columnName, eventBus); dialog.show(); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No tabular resource present"); } }; protected void openColumnDelete() { openColumnDelete(null); } protected void openColumnDelete(String columnName) { Log.debug("Request Delete Column Tab"); if (trId != null) { WidgetRequestEvent e = new WidgetRequestEvent( WidgetRequestType.DELETECOLUMNPANEL); e.setTrId(trId); e.setColumnName(columnName); eventBus.fireEvent(e); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No tabular resource present"); } } protected void openColumnLabel() { openColumnLabel(null); } protected void openColumnLabel(String columnName) { Log.debug("Request Column Label Tab"); if (trId != null) { WidgetRequestEvent e = new WidgetRequestEvent( WidgetRequestType.LABELCOLUNPANEL); e.setTrId(trId); e.setColumnName(columnName); eventBus.fireEvent(e); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No tabular resource present"); } } protected void openTableType() { Log.debug("Request Change Table Type Tab"); if (trId != null) { WidgetRequestEvent e = new WidgetRequestEvent( WidgetRequestType.CHANGETABLETYPEPANEL); e.setTrId(trId); eventBus.fireEvent(e); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No tabular resource present"); } } protected void openDuplicatesRows() { Log.debug("Request Duplicates Rows Tab"); if (trId != null) { WidgetRequestEvent e = new WidgetRequestEvent( WidgetRequestType.DUPLICATESROWSPANEL); e.setTrId(trId); eventBus.fireEvent(e); } else { Log.error("TRId is null"); UtilsGXT3.alert("Error", "No tabular resource present"); } } protected void doChangeTableRequestEventCommand( ChangeTableRequestEvent event) { Log.debug("Change Table Request: " + event); switch (event.getWhy()) { case TABLECURATION: updateTableForCuration(event.getTrId()); break; case TABLEUPDATED: updateTable(event.getTrId()); break; default: break; } }; protected void doRowAdd() { onRowAdd(); } protected void doRowsDelete() { ArrayList rows = tabularData.getGridPanel().getSelectedRowsId(); onRowsDelete(rows); } /** * Delete Rows * * @param rows */ private void onRowsDelete(ArrayList rows) { if (rows == null || rows.size() == 0) { UtilsGXT3.alert("No rows selected", "No rows selected"); } else { DeleteRows deleteRows = new DeleteRows(trId, rows, eventBus); deleteRows.delete(); } } /** * Replace Row * * @param cellData */ private void onReplace(CellData cellData) { if (cellData == null) { UtilsGXT3.alert("No cell selected", "No cell selected"); } else { ReplaceDialog replaceDialog = new ReplaceDialog(cellData, trId, eventBus); replaceDialog.show(); } } /** * Edit Row * * @param rowRaw */ private void onRowEdit(RowRaw rowRaw) { if (rowRaw == null) { UtilsGXT3.alert("No rows selected", "No rows selected"); } else { EditRowDialog editRowDialog = new EditRowDialog(trId, rowRaw, eventBus); editRowDialog.show(); } } /** * Add Row */ private void onRowAdd() { EditRowDialog editRowDialog = new EditRowDialog(trId, eventBus); editRowDialog.show(); } protected void doGridContextMenuCommand(GridContextMenuItemEvent event) { Log.debug("GridContextMenu Fire Event", "OperationId: " + event.getGridOperationId()); GridOperationId gridOperationId = event.getGridOperationId(); ArrayList rows = event.getRows(); RowRaw rowRaw = event.getRowRaw(); CellData cellData = event.getCellData(); switch (gridOperationId) { case ROWADD: onRowAdd(); break; case ROWEDIT: onRowEdit(rowRaw); break; case ROWDELETE: onRowsDelete(rows); break; case REPLACE: onReplace(cellData); default: break; } } protected void doSessionExpiredCommand(SessionExpiredEvent event) { Log.debug("Session Expired Event: " + event.getSessionExpiredType()); sessionExpiredShow(); } protected void doGridHeaderColumnMenuCommand( GridHeaderColumnMenuItemEvent event) { Log.debug("GridHeaderColumnMenu Fire Event", "OperationId: " + event.getOperationId() + " Column: \n" + event.getColumnSelected()); String opId = event.getOperationId(); String columnName = tabularData.getColumnId(event.getColumnSelected()); Log.debug("GridColumnName: " + columnName); if (opId.compareTo(GridHeaderOperationId.COLUMNLABEL.toString()) == 0) { openColumnLabel(columnName); } else { if (opId.compareTo(GridHeaderOperationId.COLUMNADD.toString()) == 0) { } else { if (opId.compareTo(GridHeaderOperationId.COLUMNBATCHREPLACE .toString()) == 0) { openColumnBatchReplace(columnName); } else { if (opId.compareTo(GridHeaderOperationId.COLUMNDELETE .toString()) == 0) { openColumnDelete(columnName); } else { if (opId.compareTo(GridHeaderOperationId.COLUMNTYPE .toString()) == 0) { openColumnType(columnName); } else { if (opId.compareTo(GridHeaderOperationId.COLUMNFILTER .toString()) == 0) { openColumnFilter(columnName); } else { if (opId.compareTo(GridHeaderOperationId.ANNOTATIONADD .toString()) == 0) { } else { if (opId.compareTo(GridHeaderOperationId.DUPLICATEDETECTION .toString()) == 0) { } else { } } } } } } } } } protected void asyncCodeLoadingFailed(Throwable reason) { Log.error("Async code loading failed", reason); Info.display("Async code loading failed", "Please retry to lunch the operation"); } /** * {@inheritDoc} * * @Override public HandlerRegistration addCloseHandler(CloseHandler * handler) { //return eventBus.addHandler(CloseEvent.getType(), * handler); } * * /** {@inheritDoc} * @Override public HandlerRegistration addOpenHandler(OpenHandler * handler) { //return eventBus.addHandler(OpenEvent.getType(), * handler); } */ /** * {@inheritDoc} * * @Override public void fireEvent(GwtEvent event) { * eventBus.fireEvent(event); } */ }