207 lines
6.2 KiB
Java
207 lines
6.2 KiB
Java
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.workarea;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.WorkAreaEvent;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.MainDataPanel;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.ToolsPanel;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportBashEdit;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportBlackBox;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportREdit;
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
|
import com.google.gwt.core.client.Scheduler;
|
|
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
|
import com.google.gwt.event.shared.EventBus;
|
|
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;
|
|
|
|
/**
|
|
*
|
|
* @author Giancarlo Panichi
|
|
*
|
|
*
|
|
*/
|
|
public class WorkAreaPanel extends SimpleContainer {
|
|
|
|
private EventBus eventBus;
|
|
private static MainDataPanel mainDataPanel;
|
|
private static ToolsPanel toolsPanel;
|
|
private static BorderLayoutContainer mainPanelLayout;
|
|
|
|
public WorkAreaPanel(EventBus eventBus) {
|
|
super();
|
|
this.eventBus = eventBus;
|
|
init();
|
|
create();
|
|
bindToEvents();
|
|
}
|
|
|
|
private void init() {
|
|
forceLayoutOnResize = true;
|
|
setBorders(false);
|
|
}
|
|
|
|
private void create() {
|
|
Log.debug("WorkAreaPanel created");
|
|
// addStyleName(StatAlgoImporterResources.INSTANCE.saiStyles().getWorkAreaPanel());
|
|
// Image logo = new Image(StatAlgoImporterResources.INSTANCE.saiLogo());
|
|
// logo.addStyleName(StatAlgoImporterResources.INSTANCE.saiStyles().getLogo());
|
|
// add(logo);
|
|
}
|
|
|
|
private void bindToEvents() {
|
|
eventBus.addHandler(WorkAreaEvent.TYPE, new WorkAreaEvent.WorkAreaEventHandler() {
|
|
|
|
@Override
|
|
public void onWorkArea(WorkAreaEvent event) {
|
|
Log.debug("Work Area Panel Catch WorkAreaEvent: " + event);
|
|
doProjectStatusCommand(event);
|
|
|
|
}
|
|
});
|
|
Log.debug("Work Area Panel bind to event do!");
|
|
|
|
}
|
|
|
|
private void doProjectStatusCommand(WorkAreaEvent event) {
|
|
if (event.getWorkAreaEventType() == null) {
|
|
return;
|
|
}
|
|
switch (event.getWorkAreaEventType()) {
|
|
case WORK_AREA_SETUP:
|
|
setupWorkAreaPanel(event.getProject());
|
|
break;
|
|
default:
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private void setupWorkAreaPanel(Project project) {
|
|
if (project != null) {
|
|
if (project.getProjectConfig() == null || project.getProjectConfig().getProjectSupport() == null) {
|
|
Log.debug("Work Area Panel Set R Area! ");
|
|
createRArea(project);
|
|
} else {
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBlackBox) {
|
|
Log.debug("Work Area Panel Set BlackBox Area! ");
|
|
createBlackBoxArea(project);
|
|
} else {
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBashEdit) {
|
|
Log.debug("Work Area Panel Set BashEdit Area! ");
|
|
createBashArea(project);
|
|
} else {
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) {
|
|
Log.debug("Work Area Panel Set R Area! ");
|
|
createRArea(project);
|
|
} else {
|
|
Log.debug("Work Area Panel Set Default R Area! ");
|
|
createRArea(project);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
forceLayout();
|
|
fireProjectStatusOpenEvent(project);
|
|
} else {
|
|
Log.debug("Work Area Panel: project is null! ");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private void createBlackBoxArea(Project project) {
|
|
toolsPanel = new ToolsPanel(eventBus);
|
|
clear();
|
|
add(toolsPanel);
|
|
}
|
|
|
|
private void createRArea(Project project) {
|
|
// Main Panel
|
|
mainPanelLayout = new BorderLayoutContainer();
|
|
// mainPanelLayout.setId("mainPanelLayout");
|
|
mainPanelLayout.setBorders(false);
|
|
mainPanelLayout.setResize(true);
|
|
|
|
// Main
|
|
mainDataPanel = new MainDataPanel(eventBus);
|
|
MarginData mainData = new MarginData(new Margins(2));
|
|
mainPanelLayout.setCenterWidget(mainDataPanel, mainData);
|
|
|
|
// Right
|
|
toolsPanel = new ToolsPanel(eventBus);
|
|
BorderLayoutData eastData = new BorderLayoutData(500);
|
|
eastData.setCollapsible(true);
|
|
eastData.setSplit(false);
|
|
eastData.setFloatable(false);
|
|
eastData.setCollapseMini(true);
|
|
eastData.setMargins(new Margins(0, 5, 0, 5));
|
|
eastData.setCollapseHidden(false);
|
|
|
|
mainPanelLayout.setEastWidget(toolsPanel, eastData);
|
|
toolsPanel.enable();
|
|
toolsPanel.collapse();
|
|
|
|
clear();
|
|
add(mainPanelLayout);
|
|
|
|
}
|
|
|
|
private void createBashArea(Project project) {
|
|
// Main Panel
|
|
mainPanelLayout = new BorderLayoutContainer();
|
|
// mainPanelLayout.setId("mainPanelLayout");
|
|
mainPanelLayout.setBorders(false);
|
|
mainPanelLayout.setResize(true);
|
|
|
|
// Main
|
|
mainDataPanel = new MainDataPanel(eventBus);
|
|
MarginData mainData = new MarginData(new Margins(2));
|
|
mainPanelLayout.setCenterWidget(mainDataPanel, mainData);
|
|
|
|
// Right
|
|
toolsPanel = new ToolsPanel(eventBus);
|
|
BorderLayoutData eastData = new BorderLayoutData(500);
|
|
eastData.setCollapsible(true);
|
|
eastData.setSplit(false);
|
|
eastData.setFloatable(false);
|
|
eastData.setCollapseMini(true);
|
|
eastData.setMargins(new Margins(0, 5, 0, 5));
|
|
eastData.setCollapseHidden(false);
|
|
|
|
mainPanelLayout.setEastWidget(toolsPanel, eastData);
|
|
toolsPanel.enable();
|
|
toolsPanel.collapse();
|
|
clear();
|
|
add(mainPanelLayout);
|
|
|
|
}
|
|
|
|
private void fireProjectStatusOpenEvent(final Project project) {
|
|
try {
|
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
|
|
|
@Override
|
|
public void execute() {
|
|
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(ProjectStatusEventType.OPEN,
|
|
project);
|
|
Log.debug("Work Area Panel ProjectStatusEvent fire! " + projectStatusEvent);
|
|
eventBus.fireEvent(projectStatusEvent);
|
|
|
|
}
|
|
});
|
|
|
|
} catch (Throwable e) {
|
|
Log.error(e.getLocalizedMessage(), e);
|
|
}
|
|
|
|
}
|
|
|
|
}
|