249 lines
7.6 KiB
Java
249 lines
7.6 KiB
Java
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.explorer;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.MainCodeDescription;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.StatAlgoImporterResources;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
|
|
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanel;
|
|
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
|
|
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
|
|
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.event.shared.EventBus;
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale;
|
|
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.widget.core.client.ContentPanel;
|
|
import com.sencha.gxt.widget.core.client.button.TextButton;
|
|
import com.sencha.gxt.widget.core.client.container.AccordionLayoutContainer.AccordionLayoutAppearance;
|
|
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
|
|
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.SelectEvent;
|
|
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
|
|
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
|
|
|
|
/**
|
|
*
|
|
* @author giancarlo email: <a
|
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
|
*
|
|
*/
|
|
public class ExplorerProjectPanel extends ContentPanel {
|
|
|
|
private EventBus eventBus;
|
|
private Item selectedItem;
|
|
private TextButton btnSetMain;
|
|
|
|
public ExplorerProjectPanel(EventBus eventBus) {
|
|
super();
|
|
Log.debug("ExplorerProjectPanel");
|
|
this.eventBus = eventBus;
|
|
|
|
// msgs = GWT.create(ServiceCategoryMessages.class);
|
|
init();
|
|
bindToEvents();
|
|
|
|
}
|
|
|
|
public ExplorerProjectPanel(EventBus eventBus,
|
|
AccordionLayoutAppearance appearance) {
|
|
super(appearance);
|
|
Log.debug("ExplorerProjectPanel");
|
|
this.eventBus = eventBus;
|
|
|
|
// msgs = GWT.create(ServiceCategoryMessages.class);
|
|
init();
|
|
bindToEvents();
|
|
|
|
}
|
|
|
|
private void init() {
|
|
setId("ExplorerProjectPanel");
|
|
forceLayoutOnResize = true;
|
|
setBodyBorder(true);
|
|
setBorders(true);
|
|
setHeaderVisible(true);
|
|
setResize(true);
|
|
setAnimCollapse(false);
|
|
setHeadingText("Project Explorer");
|
|
;
|
|
|
|
}
|
|
|
|
private void bindToEvents() {
|
|
eventBus.addHandler(UIStateEvent.TYPE,
|
|
new UIStateEvent.UIStateHandler() {
|
|
|
|
public void onUIState(UIStateEvent event) {
|
|
manageUIStateEvents(event);
|
|
|
|
}
|
|
});
|
|
|
|
eventBus.addHandler(ProjectStatusEvent.TYPE,
|
|
new ProjectStatusEvent.ProjectStatusEventHandler() {
|
|
|
|
@Override
|
|
public void onProjectStatus(ProjectStatusEvent event) {
|
|
manageProjectStatusEvents(event);
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
private void manageUIStateEvents(UIStateEvent event) {
|
|
Log.debug("InputVariablePanel recieved event from UI: "
|
|
+ event.toString());
|
|
switch (event.getUiStateType()) {
|
|
case START:
|
|
break;
|
|
case WAITING:
|
|
break;
|
|
default:
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
private void manageProjectStatusEvents(ProjectStatusEvent event) {
|
|
Log.debug("InputVariablePanel recieved event ProjectStatus: "
|
|
+ event.toString());
|
|
switch (event.getProjectStatusEventType()) {
|
|
case OPEN:
|
|
create(event);
|
|
break;
|
|
case UPDATE:
|
|
create(event);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void create(ProjectStatusEvent event) {
|
|
try {
|
|
|
|
WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
|
|
event.getProjectFolderId(), false);
|
|
|
|
WorskpaceExplorerSelectNotificationListener listener = new WorskpaceExplorerSelectNotificationListener() {
|
|
@Override
|
|
public void onSelectedItem(Item item) {
|
|
Log.debug("Listener Selected Item " + item);
|
|
selectedItem = item;
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onFailed(Throwable throwable) {
|
|
Log.error(throwable.getLocalizedMessage());
|
|
throwable.printStackTrace();
|
|
}
|
|
|
|
@Override
|
|
public void onAborted() {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onNotValidSelection() {
|
|
selectedItem = null;
|
|
}
|
|
};
|
|
|
|
wsResourcesExplorerPanel
|
|
.addWorkspaceExplorerSelectNotificationListener(listener);
|
|
|
|
btnSetMain = new TextButton("Set Main");
|
|
btnSetMain.setIcon(StatAlgoImporterResources.INSTANCE.add16());
|
|
btnSetMain.setScale(ButtonScale.SMALL);
|
|
btnSetMain.setIconAlign(IconAlign.LEFT);
|
|
btnSetMain.setToolTip("Set main code");
|
|
btnSetMain.addSelectHandler(new SelectHandler() {
|
|
|
|
@Override
|
|
public void onSelect(SelectEvent event) {
|
|
setMainCode(event);
|
|
}
|
|
|
|
});
|
|
|
|
ToolBar toolBar = new ToolBar();
|
|
toolBar.add(btnSetMain, new BoxLayoutData(new Margins(0)));
|
|
|
|
VerticalLayoutContainer v = new VerticalLayoutContainer();
|
|
|
|
v.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
|
|
v.add(wsResourcesExplorerPanel, new VerticalLayoutData(1, 1,
|
|
new Margins(0)));
|
|
add(v, new MarginData(new Margins(0)));
|
|
wsResourcesExplorerPanel.ensureDebugId("wsResourceExplorerPanel");
|
|
forceLayout();
|
|
|
|
} catch (Exception e) {
|
|
Log.error("Error opening wsResourceExplorerPanel");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private void setMainCode(SelectEvent event) {
|
|
Log.debug("Set Main Code");
|
|
if (selectedItem != null&& selectedItem.getType().compareTo(ItemType.EXTERNAL_FILE)==0) {
|
|
loadData();
|
|
} else {
|
|
UtilsGXT3.info("Attention", "Select a valid file to be used as main!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void loadData() {
|
|
StatAlgoImporterServiceAsync.INSTANCE.setMainCode(selectedItem.getId(), new AsyncCallback<Void>(){
|
|
|
|
@Override
|
|
public void onFailure(Throwable caught) {
|
|
if (caught instanceof StatAlgoImporterSessionExpiredException) {
|
|
eventBus.fireEvent(new SessionExpiredEvent(
|
|
SessionExpiredType.EXPIREDONSERVER));
|
|
} else {
|
|
Log.error("Error setting main code: "
|
|
+ caught.getLocalizedMessage());
|
|
UtilsGXT3.alert("Error",
|
|
caught.getLocalizedMessage());
|
|
}
|
|
caught.printStackTrace();
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onSuccess(Void result) {
|
|
MainCodeDescription mainCodeDescription=new MainCodeDescription(selectedItem.getId(), selectedItem.getName(), selectedItem.getOwner(), selectedItem.getPath());
|
|
MainCodeSetEvent mainCodeSetEvent=new MainCodeSetEvent(mainCodeDescription);
|
|
eventBus.fireEvent(mainCodeSetEvent);
|
|
Log.debug("Fired: "+mainCodeSetEvent);
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|