Updated OperationMonitor

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-monitor-widget@99337 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2014-08-28 18:12:34 +00:00 committed by Giancarlo Panichi
parent e4fe8efe0e
commit 7ea82a3f6a
10 changed files with 360 additions and 88 deletions

16
MonitorWidgetTD.launch Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="MonitorWidgetTD.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/tabular-data-monitor-widget"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -startupUrl MonitorWidgetTD.html -logLevel INFO -codeServerPort 9997 -port 8888"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="tabular-data-monitor-widget"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m -Dgwt.nowarn.legacy.tools"/>
</launchConfiguration>

View File

@ -289,4 +289,5 @@
</dependency> </dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
<packaging>war</packaging>
</project> </project>

View File

@ -6,23 +6,31 @@ import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpire
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorSession; import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorSession;
import org.gcube.portlets.user.td.monitorwidget.client.details.MonitorDetailPanel; import org.gcube.portlets.user.td.monitorwidget.client.details.MonitorDetailPanel;
import org.gcube.portlets.user.td.monitorwidget.client.resources.ResourceBundle;
import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
import com.google.web.bindery.event.shared.EventBus; import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.FramedPanel; import com.sencha.gxt.widget.core.client.FramedPanel;
import com.sencha.gxt.widget.core.client.ProgressBar; import com.sencha.gxt.widget.core.client.ProgressBar;
import com.sencha.gxt.widget.core.client.Window; import com.sencha.gxt.widget.core.client.Window;
import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.button.ToolButton; import com.sencha.gxt.widget.core.client.button.ToolButton;
import com.sencha.gxt.widget.core.client.container.FlowLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
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;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack;
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.SelectEvent; 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.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.form.FieldSet;
/** /**
* AddColumnProgressDialog is a Dialog that show progress of AddColumn * AddColumnProgressDialog is a Dialog that show progress of AddColumn
@ -34,12 +42,16 @@ import com.sencha.gxt.widget.core.client.form.FieldSet;
public class MonitorDialog extends Window implements MonitorUpdaterListener { public class MonitorDialog extends Window implements MonitorUpdaterListener {
public static final int STATUS_POLLING_DELAY = 1000; public static final int STATUS_POLLING_DELAY = 1000;
private static final String WIDTH = "400px"; private static final String WIDTH = "520px";
private static final String HEIGHT = "120px"; private static final String HEIGHT = "378px";
private static final String PANELWIDTH = "500px";
private static final String PANELHEIGHT = "308px";
private EventBus eventBus; private EventBus eventBus;
private String taskId; private String taskId;
private MonitorUpdater progressUpdater; private MonitorUpdater progressUpdater;
private TextButton ok; private TextButton btnOk;
private TextButton btnBackground;
private TextButton btnAbort;
private TRId trId; private TRId trId;
private String reason; private String reason;
private String details; private String details;
@ -69,24 +81,32 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
setBodyBorder(false); setBodyBorder(false);
setResizable(true); setResizable(true);
setModal(true); setModal(true);
setClosable(false);
setHeadingText("Progress"); setHeadingText("Progress");
} }
protected void create(){ protected void create(){
FramedPanel panel = new FramedPanel(); FramedPanel panel = new FramedPanel();
panel.setWidth(PANELWIDTH);
panel.setHeight(PANELHEIGHT);
panel.setHeaderVisible(false); panel.setHeaderVisible(false);
panel.setBodyBorder(false); panel.setBodyBorder(false);
VerticalLayoutContainer v = new VerticalLayoutContainer(); VerticalLayoutContainer v = new VerticalLayoutContainer();
/*FlowLayoutContainer progressDetailContainer = new FlowLayoutContainer();
ProgressBar progressBar = new ProgressBar(); progressDetailContainer.setScrollMode(ScrollMode.AUTO);
MarginData layoutData = new MarginData(new Margins(5, 5, 5, 5));*/
FieldSet detailsSet = new FieldSet();
ProgressBar progressBar = new ProgressBar();
progressBar.setWidth("498px");
/*FieldSet detailsSet = new FieldSet();
detailsSet.setHeadingText("Details"); detailsSet.setHeadingText("Details");
detailsSet.setCollapsible(true); detailsSet.setCollapsible(true);*/
monitorDetailPanel=new MonitorDetailPanel(eventBus); monitorDetailPanel=new MonitorDetailPanel(eventBus);
detailsSet.add(monitorDetailPanel); //detailsSet.add(monitorDetailPanel);
/*TextField /*TextField
@ -101,33 +121,107 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
RootPanel.get().add(v); RootPanel.get().add(v);
*/ */
ok = new TextButton("OK"); btnOk = new TextButton("Ok");
ok.addSelectHandler(new SelectHandler() { btnOk.setWidth("70px");
//btnOk.setIcon(ResourceBundle.INSTANCE.ok());
//btnOk.setIconAlign(IconAlign.RIGHT);
btnOk.setTitle("Ok");
btnOk.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) { public void onSelect(SelectEvent event) {
updateInvocation(); updateInvocation();
} }
}); });
v.add(progressBar,
new VerticalLayoutData(1, 1, new Margins(5, 5, 5, 5)));
v.add(detailsSet,new VerticalLayoutData(1, 1, new Margins(5, 5, 5, 5))); btnBackground = new TextButton("Background");
btnBackground.setWidth("70px");
//btnOk.setIcon(ResourceBundle.INSTANCE.ok());
//btnOk.setIconAlign(IconAlign.RIGHT);
btnBackground.setTitle("Background");
btnBackground.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) {
startBackground();
}
});
btnAbort = new TextButton("Abort");
btnAbort.setWidth("70px");
//btnOk.setIcon(ResourceBundle.INSTANCE.ok());
//btnOk.setIconAlign(IconAlign.RIGHT);
btnAbort.setTitle("Abort");
btnAbort.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) {
startAbort();
}
});
HBoxLayoutContainer flowButton = new HBoxLayoutContainer();
flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
flowButton.setPack(BoxLayoutPack.CENTER);
flowButton.add(btnOk, new BoxLayoutData(new Margins(0, 4, 0, 4)));
flowButton.add(btnBackground, new BoxLayoutData(new Margins(0, 4, 0, 4)));
flowButton.add(btnAbort, new BoxLayoutData(new Margins(0, 4, 0, 4)));
v.add(progressBar,
new VerticalLayoutData(1, -1, new Margins(5, 5, 5, 5)));
v.add(monitorDetailPanel,new VerticalLayoutData(1, -1, new Margins(5, 5, 5, 5)));
v.add(flowButton, new VerticalLayoutData(1, 36,
new Margins(5, 5, 5, 5)));
/*progressDetailContainer.add(progressBar, layoutData);
progressDetailContainer.add(monitorDetailPanel, layoutData);*/
panel.add(v); panel.add(v);
panel.addButton(ok);
add(panel); add(panel);
//panel.addButton(btnOk);
/*
OperationMonitorSession operationMonitorSession = new OperationMonitorSession( OperationMonitorSession operationMonitorSession = new OperationMonitorSession(
taskId); taskId);
progressUpdater = new MonitorUpdater(operationMonitorSession); progressUpdater = new MonitorUpdater(operationMonitorSession);
progressUpdater.addListener(new MonitorBarUpdater(progressBar)); progressUpdater.addListener(new MonitorBarUpdater(progressBar));
progressUpdater.addListener(this); progressUpdater.addListener(this);
progressUpdater.scheduleRepeating(STATUS_POLLING_DELAY); progressUpdater.scheduleRepeating(STATUS_POLLING_DELAY);*/
show(); show();
ok.setVisible(false); //ok.setVisible(false);
}
protected void startAbort() {
// TODO Auto-generated method stub
close();
}
protected void startBackground() {
// TODO Auto-generated method stub
close();
} }
public void addProgressDialogListener(MonitorDialogListener listener) { public void addProgressDialogListener(MonitorDialogListener listener) {
@ -143,6 +237,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
if(monitorDetailPanel!=null){ if(monitorDetailPanel!=null){
monitorDetailPanel.update(operationMonitor); monitorDetailPanel.update(operationMonitor);
} }
forceLayout();
} }
@ -151,7 +246,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
if(monitorDetailPanel!=null){ if(monitorDetailPanel!=null){
monitorDetailPanel.update(operationMonitor); monitorDetailPanel.update(operationMonitor);
} }
forceLayout();
} }
@Override @Override
@ -169,15 +264,17 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
public void monitorFailed(Throwable caught, String reason, String details, OperationMonitor operationMonitor) { public void monitorFailed(Throwable caught, String reason, String details, OperationMonitor operationMonitor) {
if(monitorDetailPanel!=null){ if(monitorDetailPanel!=null){
monitorDetailPanel.update(operationMonitor); monitorDetailPanel.update(operationMonitor);
} }
forceLayout();
if (caught instanceof TDGWTSessionExpiredException) { if (caught instanceof TDGWTSessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent( eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER)); SessionExpiredType.EXPIREDONSERVER));
} else { } else {
fireOperationFailed(caught,reason,details); fireOperationFailed(caught,reason,details);
hide(); hide();
} }
} }
public void updateInvocation() { public void updateInvocation() {
@ -198,8 +295,8 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
this.trId = trId; this.trId = trId;
this.reason = reason; this.reason = reason;
this.details = details; this.details = details;
ok.setVisible(true); btnOk.setVisible(true);
forceLayout();
} }
@Override @Override
@ -207,6 +304,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
if(monitorDetailPanel!=null){ if(monitorDetailPanel!=null){
monitorDetailPanel.update(operationMonitor); monitorDetailPanel.update(operationMonitor);
} }
forceLayout();
} }
@ -215,7 +313,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
if(monitorDetailPanel!=null){ if(monitorDetailPanel!=null){
monitorDetailPanel.update(operationMonitor); monitorDetailPanel.update(operationMonitor);
} }
forceLayout();
} }
@ -263,7 +361,7 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
*/ */
@Override @Override
protected void initTools() { protected void initTools() {
if (backgroundBtnEnabled) { /*if (backgroundBtnEnabled) {
backgroundBtn = new ToolButton(ToolButton.CLOSE); backgroundBtn = new ToolButton(ToolButton.CLOSE);
backgroundBtn.setToolTip("Put in the background"); backgroundBtn.setToolTip("Put in the background");
backgroundBtn.addSelectHandler(new SelectHandler() { backgroundBtn.addSelectHandler(new SelectHandler() {
@ -275,16 +373,17 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
}); });
header.addTool(backgroundBtn); header.addTool(backgroundBtn);
} }*/
super.initTools(); super.initTools();
/*
closeBtn.addSelectHandler(new SelectHandler() { closeBtn.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) { public void onSelect(SelectEvent event) {
close(); close();
} }
}); });*/
} }
@ -293,6 +392,11 @@ public class MonitorDialog extends Window implements MonitorUpdaterListener {
} }
public void updateOperationMonitor(OperationMonitor operationMonitor){
if(monitorDetailPanel!=null){
monitorDetailPanel.update(operationMonitor);
}
forceLayout();
}
} }

View File

@ -1,19 +1,64 @@
package org.gcube.portlets.user.td.monitorwidget.client; package org.gcube.portlets.user.td.monitorwidget.client;
import java.util.ArrayList;
import java.util.Date;
import org.gcube.portlets.user.td.gwtservice.shared.UIOperationsId;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.task.JobS;
import org.gcube.portlets.user.td.gwtservice.shared.task.State;
import org.gcube.portlets.user.td.gwtservice.shared.task.TaskS;
import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsJobS;
import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerState;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.EntryPoint;
import com.google.web.bindery.event.shared.SimpleEventBus; import com.google.web.bindery.event.shared.SimpleEventBus;
/** /**
* *
* @author "Giancarlo Panichi" * @author "Giancarlo Panichi" email: <a
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a> * href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
* *
*/ */
public class MonitorWidgetEntry implements EntryPoint { public class MonitorWidgetEntry implements EntryPoint {
public void onModuleLoad() { public void onModuleLoad() {
SimpleEventBus eventBus=new SimpleEventBus(); Log.debug("Test MonitorWidget");
MonitorDialog monitorWidget= new MonitorDialog("taskId",eventBus); SimpleEventBus eventBus = new SimpleEventBus();
MonitorDialog monitorWidget = new MonitorDialog("1", eventBus);
monitorWidget.show(); monitorWidget.show();
OperationMonitor operationMonitor = new OperationMonitor("1",
UIOperationsId.EditRow);
operationMonitor.setTask(createTaskForTest());
monitorWidget.updateOperationMonitor(operationMonitor);
}
private TaskS createTaskForTest() {
ArrayList<ValidationsJobS> validationsJobs = new ArrayList<ValidationsJobS>();
ValidationsJobS validationJobS = new ValidationsJobS("1",
WorkerState.IN_PROGRESS, 0.5f, "Row Validate", null,
"Validation in progress");
validationsJobs.add(validationJobS);
ArrayList<JobS> jobs = new ArrayList<JobS>();
JobS job1 = new JobS("1", 0.8f, "Edit Row Job for Human",
"Edit Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
jobs.add(job1);
JobS job2 = new JobS("2", 0.3f, "Add Row Job for Human",
"Add Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
jobs.add(job2);
JobS job3 = new JobS("3", 0.72f, "Delete Job for Human",
"Delete Row Job", WorkerState.IN_PROGRESS, null, validationsJobs);
jobs.add(job3);
TaskS task = new TaskS("1", 0.3f, State.IN_PROGRESS, null, "default",
new Date(), null, jobs);
return task;
} }
} }

View File

@ -5,6 +5,8 @@ import java.util.List;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor; import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsTasksMetadata; import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsTasksMetadata;
import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerState;
import org.gcube.portlets.user.td.gwtservice.shared.task.WorkerStateParser;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorBaseDto; import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorBaseDto;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorFolderDto; import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorFolderDto;
import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeDataGenerator; import org.gcube.portlets.user.td.monitorwidget.client.details.tree.MonitorTreeDataGenerator;
@ -22,7 +24,7 @@ import com.google.web.bindery.event.shared.EventBus;
import com.sencha.gxt.cell.core.client.ProgressBarCell; import com.sencha.gxt.cell.core.client.ProgressBarCell;
import com.sencha.gxt.core.client.ToStringValueProvider; import com.sencha.gxt.core.client.ToStringValueProvider;
import com.sencha.gxt.core.client.ValueProvider; import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode; import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.data.shared.IconProvider; import com.sencha.gxt.data.shared.IconProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider; import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.TreeStore; import com.sencha.gxt.data.shared.TreeStore;
@ -45,8 +47,10 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
import com.sencha.gxt.widget.core.client.treegrid.TreeGrid; import com.sencha.gxt.widget.core.client.treegrid.TreeGrid;
public class MonitorDetailPanel extends FramedPanel { public class MonitorDetailPanel extends FramedPanel {
protected String WIDTH = "380px"; protected static final String WIDTH = "498px";
protected String HEIGHT = "200px"; protected static final String HEIGHT = "256px";
protected static final String GRIDHEIGHT = "212px";
protected MonitorDetailPanel thisPanel; protected MonitorDetailPanel thisPanel;
protected Menu contextMenu; protected Menu contextMenu;
@ -90,9 +94,9 @@ public class MonitorDetailPanel extends FramedPanel {
if (tree != null) { if (tree != null) {
remove(tree); remove(tree);
} }
if(operationMonitor!=null){
createTreeData(); createTreeData();
}
} }
protected void init() { protected void init() {
@ -110,7 +114,7 @@ public class MonitorDetailPanel extends FramedPanel {
protected void create() { protected void create() {
con = new VerticalLayoutContainer(); con = new VerticalLayoutContainer();
con.setScrollMode(ScrollMode.AUTO); //con.setScrollMode(ScrollMode.AUTO);
store = new TreeStore<MonitorBaseDto>(new KeyProvider()); store = new TreeStore<MonitorBaseDto>(new KeyProvider());
@ -136,34 +140,42 @@ public class MonitorDetailPanel extends FramedPanel {
} }
}); });
ColumnConfig<MonitorBaseDto, Double> cc2 = new ColumnConfig<MonitorBaseDto, Double>( ColumnConfig<MonitorBaseDto, String> cc2 = new ColumnConfig<MonitorBaseDto, String>(
new ValueProvider<MonitorBaseDto, Double>() { new ValueProvider<MonitorBaseDto, String>() {
@Override @Override
public Double getValue(MonitorBaseDto object) { public String getValue(MonitorBaseDto object) {
Double d = null; String state = null;
if (object instanceof MonitorValidationJobSDto) { if (object instanceof MonitorValidationJobSDto) {
Float f = ((MonitorValidationJobSDto) object).getProgress(); state = ((MonitorValidationJobSDto) object).getWorkerState().toString();
d = new Double(f);
} }
return d; if (object instanceof MonitorFolderDto) {
state = ((MonitorFolderDto) object).getState();
}
return state;
} }
@Override @Override
public void setValue(MonitorBaseDto object, Double value) { public void setValue(MonitorBaseDto object, String value) {
if (object instanceof MonitorValidationJobSDto) { if (object instanceof MonitorValidationJobSDto) {
WorkerState workerState=WorkerStateParser.parse(value);
((MonitorValidationJobSDto) object) ((MonitorValidationJobSDto) object)
.setProgress(value.floatValue()); .setWorkerState(workerState);
}
if (object instanceof MonitorFolderDto) {
((MonitorFolderDto) object)
.setState(value);
} }
} }
@Override @Override
public String getPath() { public String getPath() {
return "progress"; return "status";
} }
}, 140, "Progress"); }, 100, "Status");
cc2.setHeader("Progress"); cc2.setHeader("Status");
/*
ProgressBarCell progress = new ProgressBarCell() { ProgressBarCell progress = new ProgressBarCell() {
@Override @Override
public boolean handlesSelection() { public boolean handlesSelection() {
@ -173,10 +185,60 @@ public class MonitorDetailPanel extends FramedPanel {
progress.setProgressText("{0}% Complete"); progress.setProgressText("{0}% Complete");
progress.setWidth(140); progress.setWidth(140);
cc2.setCell(progress); cc2.setCell(progress);
*/
ColumnConfig<MonitorBaseDto, Double> cc3 = new ColumnConfig<MonitorBaseDto, Double>(
new ValueProvider<MonitorBaseDto, Double>() {
@Override
public Double getValue(MonitorBaseDto object) {
Double d = null;
if (object instanceof MonitorValidationJobSDto) {
Float f = ((MonitorValidationJobSDto) object).getProgress();
d = new Double(f);
}
if (object instanceof MonitorFolderDto) {
Float f = ((MonitorFolderDto) object).getProgress();
d = new Double(f);
}
return d;
}
@Override
public void setValue(MonitorBaseDto object, Double value) {
if (object instanceof MonitorValidationJobSDto) {
((MonitorValidationJobSDto) object)
.setProgress(value.floatValue());
}
if (object instanceof MonitorFolderDto) {
((MonitorFolderDto) object)
.setProgress(value.floatValue());
}
}
@Override
public String getPath() {
return "progress";
}
}, 100, "Progress");
cc3.setHeader("Progress");
ProgressBarCell progress = new ProgressBarCell() {
@Override
public boolean handlesSelection() {
return true;
}
};
progress.setProgressText("{0}% Complete");
progress.setWidth(110);
cc3.setCell(progress);
List<ColumnConfig<MonitorBaseDto, ?>> l = new ArrayList<ColumnConfig<MonitorBaseDto, ?>>(); List<ColumnConfig<MonitorBaseDto, ?>> l = new ArrayList<ColumnConfig<MonitorBaseDto, ?>>();
l.add(cc1); l.add(cc1);
l.add(cc2); l.add(cc2);
l.add(cc3);
ColumnModel<MonitorBaseDto> cm = new ColumnModel<MonitorBaseDto>(l); ColumnModel<MonitorBaseDto> cm = new ColumnModel<MonitorBaseDto>(l);
tree = new TreeGrid<MonitorBaseDto>(store, cm, cc1); tree = new TreeGrid<MonitorBaseDto>(store, cm, cc1);
@ -185,6 +247,8 @@ public class MonitorDetailPanel extends FramedPanel {
tree.setLoadMask(true); tree.setLoadMask(true);
tree.setColumnResize(true); tree.setColumnResize(true);
tree.getView().setAutoExpandColumn(cc1); tree.getView().setAutoExpandColumn(cc1);
tree.setHeight(GRIDHEIGHT);
IconProvider<MonitorBaseDto> iconProvider = new IconProvider<MonitorBaseDto>() { IconProvider<MonitorBaseDto> iconProvider = new IconProvider<MonitorBaseDto>() {
@ -258,11 +322,11 @@ public class MonitorDetailPanel extends FramedPanel {
}); });
toolBar.add(btnCollapseAll); toolBar.add(btnCollapseAll);
con.add(toolBar, new VerticalLayoutData(1, -1)); con.add(toolBar, new VerticalLayoutData(1, -1,new Margins(0)));
con.add(tree, new VerticalLayoutData(1, -1)); con.add(tree, new VerticalLayoutData(1, -1, new Margins(0)));
add(con, new MarginData(0)); add(con, new MarginData(0));
forceLayout(); forceLayout();
} }
@ -279,6 +343,7 @@ public class MonitorDetailPanel extends FramedPanel {
public void update(OperationMonitor operationMonitor) { public void update(OperationMonitor operationMonitor) {
this.operationMonitor = operationMonitor; this.operationMonitor = operationMonitor;
draw(); draw();
} }

View File

@ -14,16 +14,21 @@ public class MonitorFolderDto extends MonitorBaseDto {
protected String description; protected String description;
protected ArrayList<MonitorBaseDto> childrens; protected ArrayList<MonitorBaseDto> childrens;
protected String type; protected String type;
protected String state;
protected float progress;
public MonitorFolderDto(){ public MonitorFolderDto(){
} }
public MonitorFolderDto(String type,String id,String description, ArrayList<MonitorBaseDto> childrens){ public MonitorFolderDto(String type,String id,String description, String state, float progress, ArrayList<MonitorBaseDto> childrens){
super(id); super(id);
this.type=type; this.type=type;
this.description=description; this.description=description;
this.state=state;
this.progress=progress;
this.childrens=childrens; this.childrens=childrens;
} }
@ -52,6 +57,22 @@ public class MonitorFolderDto extends MonitorBaseDto {
this.description = description; this.description = description;
} }
public float getProgress() {
return progress;
}
public void setProgress(float progress) {
this.progress = progress;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
@Override @Override
public String toString() { public String toString() {

View File

@ -25,7 +25,7 @@ public class MonitorTreeDataGenerator {
public MonitorTreeDataGenerator(OperationMonitor operationMonitor) { public MonitorTreeDataGenerator(OperationMonitor operationMonitor) {
Log.debug("MonitorTreeDataGenerator"); Log.debug("MonitorTreeDataGenerator");
ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>(); ArrayList<MonitorBaseDto> childrens = new ArrayList<MonitorBaseDto>();
if (operationMonitor.getTask() != null) { if (operationMonitor!=null && operationMonitor.getTask() != null) {
TaskS task = operationMonitor.getTask(); TaskS task = operationMonitor.getTask();
ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>(); ArrayList<MonitorBaseDto> jobs = new ArrayList<MonitorBaseDto>();
for (JobS job : task.getJobs()) { for (JobS job : task.getJobs()) {
@ -42,19 +42,23 @@ public class MonitorTreeDataGenerator {
} }
MonitorFolderDto foldJob = new MonitorFolderDto("job", MonitorFolderDto foldJob = new MonitorFolderDto("job",
task.getId() + "-" + job.getId(), job.getDescription(), task.getId() + "-" + job.getId(), job.getDescription(),
job.getWorkerState().toString(), job.getProgress(),
validations); validations);
jobs.add(foldJob); jobs.add(foldJob);
} }
MonitorFolderDto foldTask = new MonitorFolderDto("task", MonitorFolderDto foldTask = new MonitorFolderDto("task",
task.getId(), sdf.format(task.getStartTime()), jobs); task.getId(), sdf.format(task.getStartTime()), task
.getState().toString(), task.getProgress(), jobs);
childrens.add(foldTask); childrens.add(foldTask);
root = new MonitorFolderDto("root", "-1", "root", childrens); root = new MonitorFolderDto("root", "-1", "root", "root", 0,
childrens);
Log.debug("Generated root"); Log.debug("Generated root");
// printRecorsive(root); printRecorsive(root);
} else { } else {
root = new MonitorFolderDto("root", "-1", "root", childrens); root = new MonitorFolderDto("root", "-1", "root", "root", 0,
childrens);
Log.debug("Generated root without childrens"); Log.debug("Generated root without childrens");
} }
} }

View File

@ -1,31 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module rename-to='MonitorWidgetTD'> <module rename-to='MonitorWidgetTD'>
<!-- Inherit the core Web Toolkit stuff. --> <!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' /> <inherits name='com.google.gwt.user.User' />
<!-- We need the JUnit module in the main module, --> <!-- We need the JUnit module in the main module, -->
<!-- otherwise eclipse complains (Google plugin bug?) --> <!-- otherwise eclipse complains (Google plugin bug?) -->
<inherits name='com.google.gwt.junit.JUnit' /> <inherits name='com.google.gwt.junit.JUnit' />
<!-- Inherit the default GWT style sheet. You can change --> <!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting --> <!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. --> <!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.standard.Standard' /> <inherits name='com.google.gwt.user.theme.standard.Standard' />
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> --> <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> --> <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits --> <!-- Other module inherits -->
<inherits name='com.sencha.gxt.ui.GXT' /> <inherits name='com.sencha.gxt.ui.GXT' />
<inherits name="com.allen_sauer.gwt.log.gwt-log-TRACE" /> <inherits name="com.allen_sauer.gwt.log.gwt-log-TRACE" />
<inherits name='org.gcube.portlets.user.td.gwtservice.TDGWTService' /> <inherits name="com.google.gwt.resources.Resources" />
<inherits name='org.gcube.portlets.user.td.gwtservice.TDGWTService' />
<!-- Specify the app entry point class. -->
<!-- <entry-point class='org.gcube.portlets.user.monitorwidget.client.MonitorWidgetEntry' /> -->
<!-- Specify the app entry point class. -->
<entry-point
class='org.gcube.portlets.user.td.monitorwidget.client.MonitorWidgetEntry' />
<!-- Logger -->
<set-property name="log_DivLogger" value="ENABLED" />
<set-property name="log_ConsoleLogger" value="ENABLED" />
<set-property name="log_FirebugLogger" value="ENABLED" />
<set-property name="log_GWTLogger" value="ENABLED" />
<set-property name="log_SystemLogger" value="ENABLED" />
<!-- <set-property name="log_DivLogger" value="DISABLED" /> <set-property
name="log_ConsoleLogger" value="DISABLED" /> <set-property name="log_FirebugLogger"
value="DISABLED" /> <set-property name="log_GWTLogger" value="DISABLED" />
<set-property name="log_SystemLogger" value="DISABLED" /> -->
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
<!-- <source path='org.gcube.data.analysis.tabulardata.operation.worker'/> -->
</module> </module>

View File

@ -26,7 +26,7 @@
</servlet-mapping> </servlet-mapping>
<servlet-mapping> <servlet-mapping>
<servlet-name>jUnitHostImpl</servlet-name> <servlet-name>jUnitHostImpl</servlet-name>
<url-pattern>UnionWizardWidgets/junithost/*</url-pattern> <url-pattern>/MonitorWidgetTD/junithost/*</url-pattern>
</servlet-mapping> </servlet-mapping>