data-miner-manager/src/main/java/org/gcube/portlets/user/dataminermanager/client/computations/ComputationsPanel.java

168 lines
4.4 KiB
Java

/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.computations;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.events.ComputationDataEvent;
import org.gcube.portlets.user.dataminermanager.client.events.DataMinerWorkAreaEvent;
import org.gcube.portlets.user.dataminermanager.client.events.RefreshDataMinerWorkAreaEvent;
import com.allen_sauer.gwt.log.client.Log;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.FramedPanel;
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;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ComputationsPanel extends FramedPanel {
private ComputationsExecutedPanel computationsExecutedPanel;
private ComputationsViewerPanel computationsViewerPanel;
public ComputationsPanel() {
super();
init();
create();
bind();
}
private void init() {
setBodyStyle("backgroundColor:white;");
setBorders(false);
setBodyBorder(false);
setHeadingText("Computations");
setHeaderVisible(true);
}
private void bind() {
EventBusProvider.INSTANCE.addHandler(ComputationDataEvent.getType(),
new ComputationDataEvent.ComputationDataEventHandler() {
@Override
public void onComputationData(ComputationDataEvent event) {
Log.debug("Catch ComputationDataEvent: " + event);
expandsComputationsViewer();
}
});
EventBusProvider.INSTANCE.addHandler(DataMinerWorkAreaEvent.TYPE,
new DataMinerWorkAreaEvent.DataMinerWorkAreaEventHandler() {
@Override
public void onChange(DataMinerWorkAreaEvent event) {
manageDataMinerWorkAreaEvents(event);
}
});
EventBusProvider.INSTANCE
.addHandler(
RefreshDataMinerWorkAreaEvent.TYPE,
new RefreshDataMinerWorkAreaEvent.RefreshDataMinerWorkAreaEventHandler() {
@Override
public void onRefresh(
RefreshDataMinerWorkAreaEvent event) {
Log.debug("Catch RefreshDataMinerWorkAreaEvent: "
+ event);
manageRefreshDataMinerWorkAreaEvents(event);
}
});
}
private void manageDataMinerWorkAreaEvents(DataMinerWorkAreaEvent event) {
Log.debug("ComputationsPanel recieved DataMinerWorkAreaEvent: " + event);
if (event == null) {
Log.error("DataMinerWorkAreaEvent null");
return;
}
switch (event.getDataMinerWorkAreaRegionType()) {
case Computations:
collapseComputationsViewer();
break;
case DataSets:
break;
default:
break;
}
}
private void manageRefreshDataMinerWorkAreaEvents(
RefreshDataMinerWorkAreaEvent event) {
Log.debug("ComputationsPanel recieved RefreshDataMinerWorkAreaEvent: " + event);
if (event == null) {
Log.error("RefreshDataMinerWorkAreaEvent null");
return;
}
switch (event.getDataMinerWorkAreaElementType()) {
case Computations:
collapseComputationsViewer();
break;
case InputDataSets:
break;
case OutputDataSets:
break;
default:
break;
}
}
private void collapseComputationsViewer() {
if (computationsViewerPanel.isExpanded()) {
computationsViewerPanel.collapse();
}
forceLayout();
}
private void expandsComputationsViewer() {
if (computationsViewerPanel.isCollapsed()) {
computationsViewerPanel.expand();
}
forceLayout();
}
private void create() {
computationsExecutedPanel = new ComputationsExecutedPanel();
computationsViewerPanel = new ComputationsViewerPanel();
MarginData centerData = new MarginData(0);
BorderLayoutData southData = new BorderLayoutData(0.5);
southData.setMargins(new Margins(0));
southData.setCollapsible(true);
southData.setSplit(true);
southData.setFloatable(false);
southData.setCollapseMini(false);
southData.setMargins(new Margins(5, 0, 0, 0));
southData.setCollapseHidden(false);
southData.setCollapsed(true);
BorderLayoutContainer borderLayoutContainer = new BorderLayoutContainer();
borderLayoutContainer.setCenterWidget(computationsExecutedPanel,
centerData);
borderLayoutContainer
.setSouthWidget(computationsViewerPanel, southData);
add(borderLayoutContainer, new MarginData(new Margins(0)));
forceLayout();
}
}