2016-04-06 18:28:32 +02:00
|
|
|
package org.gcube.portlets.user.dataminermanager.client;
|
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
|
2016-04-26 18:27:28 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.computations.ComputationsPanel;
|
2016-04-06 18:28:32 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.dataspace.DataSpacePanel;
|
2016-05-10 17:58:09 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.events.DataMinerWorkAreaRequestEvent;
|
2016-04-27 18:41:39 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.events.MenuSwitchEvent;
|
2016-04-22 15:49:49 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.experiments.ExperimentPanel;
|
2016-04-06 18:28:32 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.resources.Resources;
|
2016-05-17 18:42:32 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.type.DataMinerWorkAreaRegionType;
|
2016-05-10 17:58:09 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.type.DataMinerWorkAreaRequestEventType;
|
2016-07-13 11:07:49 +02:00
|
|
|
import org.gcube.portlets.user.dataminermanager.client.type.MenuType;
|
2016-04-06 18:28:32 +02:00
|
|
|
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
|
|
|
import com.google.gwt.core.client.EntryPoint;
|
|
|
|
import com.google.gwt.core.client.GWT;
|
|
|
|
import com.google.gwt.core.client.Scheduler;
|
|
|
|
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
|
|
|
import com.google.gwt.user.client.ui.RootPanel;
|
|
|
|
import com.sencha.gxt.core.client.util.Margins;
|
|
|
|
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
|
|
|
|
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData;
|
|
|
|
import com.sencha.gxt.widget.core.client.container.MarginData;
|
|
|
|
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
|
|
|
|
import com.sencha.gxt.widget.core.client.container.Viewport;
|
2016-05-10 17:58:09 +02:00
|
|
|
|
2016-04-06 18:28:32 +02:00
|
|
|
/**
|
|
|
|
* Entry point classes define <code>onModuleLoad()</code>.
|
|
|
|
*/
|
|
|
|
public class DataMinerManager implements EntryPoint {
|
|
|
|
public static final Resources resources = GWT.create(Resources.class);
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-06 18:28:32 +02:00
|
|
|
private static final String SM_DIV = "contentDiv";
|
|
|
|
private DataMinerManagerController dataMinerManagerController;
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
private Header header;
|
2016-05-12 19:20:39 +02:00
|
|
|
private HomePanel homePanel;
|
2016-04-26 18:27:28 +02:00
|
|
|
private DataSpacePanel dataSpacePanel;
|
|
|
|
private ExperimentPanel experimentPanel;
|
|
|
|
private ComputationsPanel computationsPanel;
|
2016-04-06 18:28:32 +02:00
|
|
|
|
|
|
|
private SimpleContainer previousPanel;
|
|
|
|
private SimpleContainer centerPanel;
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-06 18:28:32 +02:00
|
|
|
/**
|
|
|
|
* {@inheritDoc}
|
|
|
|
*/
|
|
|
|
public void onModuleLoad() {
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Install an UncaughtExceptionHandler which will produce
|
|
|
|
* <code>FATAL</code> log messages
|
|
|
|
*/
|
|
|
|
Log.setUncaughtExceptionHandler();
|
|
|
|
|
|
|
|
// use deferred command to catch initialization exceptions in
|
|
|
|
// onModuleLoad2
|
|
|
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
|
|
|
public void execute() {
|
2016-11-25 16:10:40 +01:00
|
|
|
//loadScope();
|
|
|
|
loadMainPanel();
|
2016-04-06 18:28:32 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-11-25 16:10:40 +01:00
|
|
|
/*private void loadScope() {
|
2016-04-14 15:19:46 +02:00
|
|
|
ClientScopeHelper.getService().setScope(Location.getHref(),
|
|
|
|
new AsyncCallback<Boolean>() {
|
|
|
|
@Override
|
|
|
|
public void onSuccess(Boolean result) {
|
2016-04-26 18:27:28 +02:00
|
|
|
if (result) {
|
|
|
|
loadMainPanel();
|
|
|
|
} else {
|
|
|
|
UtilsGXT3
|
|
|
|
.info("Attention",
|
|
|
|
"ClientScopeHelper has returned a false value!");
|
|
|
|
}
|
2016-04-14 15:19:46 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-04-26 18:27:28 +02:00
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
UtilsGXT3.alert("Error", "Error setting scope: "
|
|
|
|
+ caught.getLocalizedMessage());
|
2016-04-14 15:19:46 +02:00
|
|
|
caught.printStackTrace();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2016-11-25 16:10:40 +01:00
|
|
|
}*/
|
2016-04-14 15:19:46 +02:00
|
|
|
|
|
|
|
private void loadMainPanel() {
|
2016-04-06 18:28:32 +02:00
|
|
|
dataMinerManagerController = new DataMinerManagerController();
|
2016-05-12 19:20:39 +02:00
|
|
|
homePanel = new HomePanel();
|
2016-04-22 15:49:49 +02:00
|
|
|
dataSpacePanel = new DataSpacePanel();
|
|
|
|
experimentPanel = new ExperimentPanel();
|
2016-04-26 18:27:28 +02:00
|
|
|
computationsPanel = new ComputationsPanel();
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
bind();
|
2016-04-06 18:28:32 +02:00
|
|
|
|
|
|
|
// Layout
|
2016-04-27 18:41:39 +02:00
|
|
|
BorderLayoutContainer mainPanelLayout = new BorderLayoutContainer();
|
2016-04-06 18:28:32 +02:00
|
|
|
mainPanelLayout.setId("mainPanelLayout");
|
|
|
|
mainPanelLayout.setBorders(false);
|
|
|
|
mainPanelLayout.setResize(true);
|
|
|
|
mainPanelLayout.getElement().getStyle().setBackgroundColor("#FFFFFF");
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
// Center
|
2016-04-06 18:28:32 +02:00
|
|
|
centerPanel = new SimpleContainer();
|
2016-04-07 20:13:35 +02:00
|
|
|
MarginData mainData = new MarginData(new Margins(0));
|
2016-04-06 18:28:32 +02:00
|
|
|
mainPanelLayout.setCenterWidget(centerPanel, mainData);
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-06 18:28:32 +02:00
|
|
|
// Menu
|
2016-07-13 11:07:49 +02:00
|
|
|
header = new Header();
|
2016-04-06 18:28:32 +02:00
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
BorderLayoutData menuData = new BorderLayoutData(40);
|
2016-04-06 18:28:32 +02:00
|
|
|
menuData.setMargins(new Margins(5));
|
|
|
|
menuData.setCollapsible(false);
|
|
|
|
menuData.setSplit(false);
|
|
|
|
|
|
|
|
mainPanelLayout.setNorthWidget(header, menuData);
|
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
//
|
2016-07-13 11:07:49 +02:00
|
|
|
|
|
|
|
if (dataMinerManagerController.getOperatorId() != null
|
|
|
|
&& !dataMinerManagerController.getOperatorId().isEmpty()){
|
|
|
|
header.setMenu(MenuType.EXPERIMENT);
|
|
|
|
centerPanel.add(experimentPanel);
|
|
|
|
previousPanel = experimentPanel;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
centerPanel.add(homePanel);
|
|
|
|
previousPanel = homePanel;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
bindWindow(mainPanelLayout);
|
2016-04-07 20:13:35 +02:00
|
|
|
mainPanelLayout.forceLayout();
|
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
}
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
private void bind() {
|
|
|
|
EventBusProvider.INSTANCE.addHandler(MenuSwitchEvent.TYPE,
|
|
|
|
new MenuSwitchEvent.MenuSwitchEventHandler() {
|
2016-04-06 18:28:32 +02:00
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
@Override
|
|
|
|
public void onSelect(MenuSwitchEvent event) {
|
|
|
|
Log.debug("Catch MenuSwitchEvent");
|
|
|
|
menuSwitch(event);
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
2016-04-06 18:28:32 +02:00
|
|
|
}
|
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param mainWidget
|
|
|
|
*/
|
|
|
|
private void bindWindow(BorderLayoutContainer mainWidget) {
|
2016-04-06 18:28:32 +02:00
|
|
|
try {
|
|
|
|
RootPanel root = RootPanel.get(SM_DIV);
|
|
|
|
Log.info("Root Panel: " + root);
|
|
|
|
if (root == null) {
|
|
|
|
Log.info("Div with id " + SM_DIV
|
|
|
|
+ " not found, starting in dev mode");
|
|
|
|
Viewport viewport = new Viewport();
|
|
|
|
viewport.setWidget(mainWidget);
|
|
|
|
viewport.onResize();
|
|
|
|
RootPanel.get().add(viewport);
|
|
|
|
} else {
|
|
|
|
Log.info("Application div with id " + SM_DIV
|
|
|
|
+ " found, starting in portal mode");
|
|
|
|
PortalViewport viewport = new PortalViewport();
|
|
|
|
Log.info("Created Viewport");
|
|
|
|
viewport.setEnableScroll(false);
|
|
|
|
viewport.setWidget(mainWidget);
|
|
|
|
Log.info("Set Widget");
|
|
|
|
Log.info("getOffsetWidth(): " + viewport.getOffsetWidth());
|
|
|
|
Log.info("getOffsetHeight(): " + viewport.getOffsetHeight());
|
|
|
|
viewport.onResize();
|
|
|
|
root.add(viewport);
|
|
|
|
Log.info("Added viewport to root");
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
Log.error("Error in attach viewport:" + e.getLocalizedMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
2016-04-27 18:41:39 +02:00
|
|
|
* @param event
|
2016-04-06 18:28:32 +02:00
|
|
|
*/
|
2016-07-13 11:07:49 +02:00
|
|
|
private void menuSwitch(MenuSwitchEvent event) {
|
|
|
|
if (event == null || event.getMenuType() == null) {
|
2016-04-27 18:41:39 +02:00
|
|
|
return;
|
|
|
|
}
|
2016-07-13 11:07:49 +02:00
|
|
|
|
|
|
|
switch (event.getMenuType()) {
|
2016-04-27 18:41:39 +02:00
|
|
|
case COMPUTATIONS:
|
|
|
|
switchPanel(computationsPanel);
|
2016-05-17 18:42:32 +02:00
|
|
|
fireDataMinerWorkAreareRequestUpdate(DataMinerWorkAreaRegionType.Computations);
|
2016-04-27 18:41:39 +02:00
|
|
|
break;
|
|
|
|
case DATA_SPACE:
|
|
|
|
switchPanel(dataSpacePanel);
|
2016-05-17 18:42:32 +02:00
|
|
|
fireDataMinerWorkAreareRequestUpdate(DataMinerWorkAreaRegionType.DataSets);
|
2016-04-27 18:41:39 +02:00
|
|
|
break;
|
|
|
|
case EXPERIMENT:
|
|
|
|
switchPanel(experimentPanel);
|
|
|
|
break;
|
|
|
|
case HOME:
|
2016-05-12 19:20:39 +02:00
|
|
|
switchPanel(homePanel);
|
2016-04-27 18:41:39 +02:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-27 18:41:39 +02:00
|
|
|
}
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-06 18:28:32 +02:00
|
|
|
}
|
2016-07-13 11:07:49 +02:00
|
|
|
|
|
|
|
private void fireDataMinerWorkAreareRequestUpdate(
|
|
|
|
DataMinerWorkAreaRegionType dataMinerWorkAreaRegionType) {
|
2016-05-10 17:58:09 +02:00
|
|
|
DataMinerWorkAreaRequestEvent event = new DataMinerWorkAreaRequestEvent(
|
2016-07-13 11:07:49 +02:00
|
|
|
DataMinerWorkAreaRequestEventType.UPDATE,
|
|
|
|
dataMinerWorkAreaRegionType);
|
2016-05-10 17:58:09 +02:00
|
|
|
EventBusProvider.INSTANCE.fireEvent(event);
|
|
|
|
}
|
2016-07-13 11:07:49 +02:00
|
|
|
|
2016-04-06 18:28:32 +02:00
|
|
|
/**
|
|
|
|
*
|
2016-04-27 18:41:39 +02:00
|
|
|
* @param panel
|
2016-04-06 18:28:32 +02:00
|
|
|
*/
|
2016-04-27 18:41:39 +02:00
|
|
|
private void switchPanel(SimpleContainer panel) {
|
2016-04-06 18:28:32 +02:00
|
|
|
centerPanel.remove(previousPanel);
|
2016-04-27 18:41:39 +02:00
|
|
|
centerPanel.add(panel);
|
2016-04-06 18:28:32 +02:00
|
|
|
centerPanel.forceLayout();
|
2016-04-27 18:41:39 +02:00
|
|
|
previousPanel = panel;
|
2016-04-06 18:28:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|