From 4cbf2563c5b52d7dc469543c46d481aed3fc3f3a Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Tue, 24 Jun 2014 16:09:00 +0000 Subject: [PATCH] Minor Update git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-table-widget@97733 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/resources/ResourceBundle.java | 6 + .../tablewidget/client/resources/plaster.png | Bin 0 -> 1060 bytes .../client/resources/plaster_32.png | Bin 0 -> 3173 bytes .../validation/ValidationsTasksPanel.java | 227 +++++++++++++++++- .../tablewidget/client/resources/plaster.png | Bin 0 -> 1060 bytes .../client/resources/plaster_32.png | Bin 0 -> 3173 bytes 6 files changed, 220 insertions(+), 13 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/plaster.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/plaster_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/plaster.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/plaster_32.png diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java index 552a0d3..16a1147 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java @@ -125,5 +125,11 @@ public interface ResourceBundle extends ClientBundle { @Source("expandall_32.png") ImageResource expandAll32(); + @Source("plaster_32.png") + ImageResource plaster32(); + + @Source("plaster.png") + ImageResource plaster(); + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/plaster.png b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/plaster.png new file mode 100644 index 0000000000000000000000000000000000000000..5e16f17851e68ebeddf348dd613e420c29ccf696 GIT binary patch literal 1060 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 LNkvXXu0mjfN?#6k literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTasksPanel.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTasksPanel.java index 7b4d4ac..726651f 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTasksPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTasksPanel.java @@ -4,11 +4,14 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import org.gcube.portlets.user.td.columnwidget.client.progress.ResumeDialogListener; +import org.gcube.portlets.user.td.columnwidget.client.progress.TaskResumeProgressDialog; import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; import org.gcube.portlets.user.td.gwtservice.shared.Constants; import org.gcube.portlets.user.td.gwtservice.shared.OperationsId; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; import org.gcube.portlets.user.td.gwtservice.shared.task.InvocationS; +import org.gcube.portlets.user.td.gwtservice.shared.task.TaskResumeSession; import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsTasksMetadata; import org.gcube.portlets.user.td.tablewidget.client.custom.ValidationCell; import org.gcube.portlets.user.td.tablewidget.client.resources.ResourceBundle; @@ -17,8 +20,11 @@ import org.gcube.portlets.user.td.tablewidget.client.validation.tree.BaseDto; import org.gcube.portlets.user.td.tablewidget.client.validation.tree.FolderDto; import org.gcube.portlets.user.td.tablewidget.client.validation.tree.TreeDataGenerator; import org.gcube.portlets.user.td.tablewidget.client.validation.tree.ValidationDto; +import org.gcube.portlets.user.td.widgetcommonevent.client.event.ChangeTableRequestEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.WidgetRequestEvent; +import org.gcube.portlets.user.td.widgetcommonevent.client.type.ChangeTableRequestType; +import org.gcube.portlets.user.td.widgetcommonevent.client.type.ChangeTableWhy; import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; import org.gcube.portlets.user.td.widgetcommonevent.client.type.WidgetRequestType; import org.gcube.portlets.user.td.widgetcommonevent.shared.RequestProperties; @@ -27,6 +33,8 @@ import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.Cell.Context; +import com.google.gwt.event.logical.shared.SelectionEvent; +import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.safehtml.shared.SafeHtmlUtils; @@ -43,6 +51,8 @@ import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; +import com.sencha.gxt.widget.core.client.event.BeforeShowContextMenuEvent; +import com.sencha.gxt.widget.core.client.event.BeforeShowContextMenuEvent.BeforeShowContextMenuHandler; import com.sencha.gxt.widget.core.client.event.CollapseItemEvent; import com.sencha.gxt.widget.core.client.event.CollapseItemEvent.CollapseItemHandler; import com.sencha.gxt.widget.core.client.event.ExpandItemEvent; @@ -51,6 +61,9 @@ import com.sencha.gxt.widget.core.client.event.SelectEvent; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; +import com.sencha.gxt.widget.core.client.menu.Item; +import com.sencha.gxt.widget.core.client.menu.Menu; +import com.sencha.gxt.widget.core.client.menu.MenuItem; import com.sencha.gxt.widget.core.client.toolbar.ToolBar; import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; @@ -60,15 +73,20 @@ import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; * href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it * */ -public class ValidationsTasksPanel extends FramedPanel { +public class ValidationsTasksPanel extends FramedPanel implements ResumeDialogListener { protected String WIDTH = "298px"; protected String HEIGHT = "520px"; - + protected ValidationsTasksPanel thisPanel; + + protected Menu contextMenu; + protected MenuItem resumeItem; + protected MenuItem resolveItem; + protected TRId trId; protected VerticalLayoutContainer con; protected EventBus eventBus; protected ValidationsTasksMetadata validationsTasksMetadata; - + protected TreeDataGenerator gen; protected TreeStore store; protected TreeGrid tree; @@ -141,6 +159,7 @@ public class ValidationsTasksPanel extends FramedPanel { super(); Log.debug("ValidationsTasksPanel"); this.eventBus = eventBus; + this.thisPanel=this; forceLayoutOnResize = true; retrieveCurrentTR(); @@ -151,6 +170,7 @@ public class ValidationsTasksPanel extends FramedPanel { Log.debug("ValidationsTasksPanel: " + trId); this.trId = trId; this.eventBus = eventBus; + this.thisPanel=this; forceLayoutOnResize = true; draw(); } @@ -247,8 +267,8 @@ public class ValidationsTasksPanel extends FramedPanel { validationButton.setTrueIcon(ResourceBundle.INSTANCE.ok()); validationButton.setFalseIcon(ResourceBundle.INSTANCE.error()); validationButton.setTrueTitle("Valid"); - validationButton.setFalseTitle("Resolve"); - validationButton.addSelectHandler(new SelectHandler() { + validationButton.setFalseTitle("Error"); + /*validationButton.addSelectHandler(new SelectHandler() { @Override public void onSelect(SelectEvent event) { @@ -257,7 +277,7 @@ public class ValidationsTasksPanel extends FramedPanel { requestSolution(context); } - }); + });*/ cc3.setCell(validationButton); @@ -319,7 +339,10 @@ public class ValidationsTasksPanel extends FramedPanel { } }); - + + createContextMenu(); + + ToolBar toolBar = new ToolBar(); TextButton btnExpandAll = new TextButton(); @@ -361,8 +384,11 @@ public class ValidationsTasksPanel extends FramedPanel { protected void requestSolution(Context context) { String key = (String) context.getKey(); BaseDto d = store.findModelWithKey(key); - - String title = ""; + requestResolve(d); + } + + protected void requestResolve(BaseDto d){ + //String title = ""; if (d != null) { Log.debug(d.toString()); if (d instanceof ValidationDto) { @@ -371,11 +397,11 @@ public class ValidationsTasksPanel extends FramedPanel { + v.getDescription() + ", " + v.getValid() + ", " + v.getInvocation() + "]"); if (v.getValid()) { - + } else { if (v.getInvocation() != null) { InvocationS invocationS = v.getInvocation(); - title = invocationS.toString(); + //title = invocationS.toString(); Long op = invocationS.getOperationId(); if (op.compareTo(OperationsId.ChangeToDimensionColumn .toLong()) == 0) { @@ -387,12 +413,14 @@ public class ValidationsTasksPanel extends FramedPanel { invocationS.getRefColumn()); map.put(Constants.REQUEST_PROPERTIES_COLUMNID, invocationS.getColumnId()); - map.put(Constants.REQUEST_PROPERTIES_TASKID, invocationS.getTaskId()); + map.put(Constants.REQUEST_PROPERTIES_TASKID, + invocationS.getTaskId()); RequestProperties props = new RequestProperties(map); widgetRequestEvent.setRequestProperties(props); eventBus.fireEvent(widgetRequestEvent); } else { - UtilsGXT3.info("Invocation Info", title); + //UtilsGXT3.info("Invocation Info", title); + } } } @@ -401,6 +429,124 @@ public class ValidationsTasksPanel extends FramedPanel { } } + + protected void requestResume(BaseDto selected){ + if (selected instanceof ValidationDto) { + ValidationDto v = (ValidationDto) selected; + Log.debug("ValidationDto: [" + v.getId() + ", " + + v.getDescription() + ", " + v.getValid() + ", " + + v.getInvocation() + "]"); + if (v.getInvocation() != null) { + if (v.getValid()) { + UtilsGXT3.info("Resume", "Is valid, resume not applicable"); + } else { + InvocationS invocationS = v.getInvocation(); + String taskId=invocationS.getTaskId(); + if(taskId==null || taskId.isEmpty()){ + UtilsGXT3.alert("Resume", "TaskId is null, resume not applicable"); + } else { + TaskResumeSession taskResumeSession=new TaskResumeSession(trId,taskId); + startTaskResume(taskResumeSession); + } + } + } else { + UtilsGXT3.alert("Resume", "Invocation is null, resume not applicable"); + } + } + + } + + + + protected void createContextMenu() { + contextMenu = new Menu(); + + resumeItem = new MenuItem(); + resumeItem.setText("Resume"); + resumeItem.setIcon(ResourceBundle.INSTANCE.refresh()); + resumeItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + BaseDto selected = tree.getSelectionModel().getSelectedItem(); + Log.debug(selected.toString()); + requestResume(selected); + } + }); + + + + resolveItem = new MenuItem(); + resolveItem.setText("Resolve"); + resolveItem.setIcon(ResourceBundle.INSTANCE.plaster()); + resolveItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + BaseDto selected = tree.getSelectionModel() + .getSelectedItem(); + Log.debug(selected.toString()); + requestResolve(selected); + + } + + }); + contextMenu.add(resumeItem); + contextMenu.setVisible(false); + tree.setContextMenu(contextMenu); + + tree.addBeforeShowContextMenuHandler(new BeforeShowContextMenuHandler() { + + @Override + public void onBeforeShowContextMenu(BeforeShowContextMenuEvent event) { + Menu contextMenu=event.getMenu(); + + BaseDto selected = tree.getSelectionModel() + .getSelectedItem(); + if (selected instanceof ValidationDto) { + ValidationDto v = (ValidationDto) selected; + Log.debug("ValidationDto: [" + v.getId() + ", " + + v.getDescription() + ", " + v.getValid() + ", " + + v.getInvocation() + "]"); + if (v.getInvocation() != null) { + if (v.getValid()) { + contextMenu.clear(); + contextMenu.add(resumeItem); + contextMenu.setVisible(true); + tree.setContextMenu(contextMenu); + } else { + InvocationS invocationS = v.getInvocation(); + Long op = invocationS.getOperationId(); + if (op.compareTo(OperationsId.ChangeToDimensionColumn + .toLong()) == 0) { + contextMenu.clear(); + contextMenu.add(resolveItem); + contextMenu.add(resumeItem); + contextMenu.setVisible(true); + tree.setContextMenu(contextMenu); + } else { + contextMenu.clear(); + contextMenu.add(resumeItem); + contextMenu.setVisible(true); + tree.setContextMenu(contextMenu); + } + } + } else { + contextMenu.clear(); + contextMenu.setVisible(false); + tree.setContextMenu(contextMenu); + } + + } else { + contextMenu.clear(); + contextMenu.setVisible(false); + tree.setContextMenu(contextMenu); + + } + + } + }); + } protected void retrieveValidations() { @@ -476,4 +622,59 @@ public class ValidationsTasksPanel extends FramedPanel { } } + protected void startTaskResume(TaskResumeSession taskResumeSession){ + Log.debug(taskResumeSession.toString()); + TDGWTServiceAsync.INSTANCE.startTaskResume(taskResumeSession, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + eventBus.fireEvent(new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + Log.debug(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error in Resume", + caught.getLocalizedMessage()); + } + + } + + @Override + public void onSuccess(Void result) { + TaskResumeProgressDialog taskResumeProgressDialog=new TaskResumeProgressDialog(eventBus); + taskResumeProgressDialog.addResumeDialogListener(thisPanel); + taskResumeProgressDialog.show(); + + } + + }); + } + + @Override + public void resumeComplete(TRId trId) { + ChangeTableWhy why = ChangeTableWhy.TABLEUPDATED; + ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent( + ChangeTableRequestType.TASKRESUME, trId, why); + eventBus.fireEvent(changeTableRequestEvent); + + } + + @Override + public void resumeFailed(Throwable caught, String reason) { + UtilsGXT3.alert("Error in Resume", reason); + + } + + @Override + public void resumeStopped(TRId trId, String reason, String details) { + ChangeTableWhy why = ChangeTableWhy.TABLECURATION; + ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent( + ChangeTableRequestType.TASKRESUME, trId, why); + eventBus.fireEvent(changeTableRequestEvent); + + } + + + + } diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/plaster.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/plaster.png new file mode 100644 index 0000000000000000000000000000000000000000..5e16f17851e68ebeddf348dd613e420c29ccf696 GIT binary patch literal 1060 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 LNkvXXu0mjfN?#6k literal 0 HcmV?d00001