2015-11-27 19:03:06 +01:00
|
|
|
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
2016-01-18 12:59:57 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.CommonMessages;
|
2015-12-21 18:02:22 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.codeparser.CodeParser;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.NewSelectedRowsVariableEvent;
|
2017-06-30 18:51:18 +02:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.NewCodeEvent;
|
2015-11-27 19:03:06 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
|
2017-07-21 12:53:03 +02:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.monitor.StatAlgoImporterMonitor;
|
2015-12-14 18:44:54 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.StatAlgoImporterResources;
|
2015-11-27 19:03:06 +01:00
|
|
|
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;
|
2017-06-30 18:51:18 +02:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeContentType;
|
2015-11-27 19:03:06 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
|
2015-12-21 18:02:22 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.IOType;
|
2016-01-18 12:59:57 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.InputOutputVariables;
|
2015-12-14 18:44:54 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
|
2017-06-30 18:51:18 +02:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportBashEdit;
|
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectSupportREdit;
|
2016-01-18 12:59:57 +01:00
|
|
|
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
|
2015-11-27 19:03:06 +01:00
|
|
|
|
|
|
|
import com.allen_sauer.gwt.log.client.Log;
|
2016-01-18 12:59:57 +01:00
|
|
|
import com.google.gwt.core.client.GWT;
|
2015-11-27 19:03:06 +01:00
|
|
|
import com.google.gwt.event.shared.EventBus;
|
|
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
2015-12-14 18:44:54 +01:00
|
|
|
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale;
|
|
|
|
import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
|
|
|
|
import com.sencha.gxt.core.client.util.Margins;
|
2015-11-27 19:03:06 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.ContentPanel;
|
2016-01-18 12:59:57 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton;
|
|
|
|
import com.sencha.gxt.widget.core.client.box.PromptMessageBox;
|
2015-12-14 18:44:54 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.button.TextButton;
|
|
|
|
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
|
2015-11-27 19:03:06 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
|
|
|
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
|
2016-01-18 12:59:57 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.event.DialogHideEvent;
|
|
|
|
import com.sencha.gxt.widget.core.client.event.DialogHideEvent.DialogHideHandler;
|
2015-12-14 18:44:54 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.event.SelectEvent;
|
|
|
|
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
|
2016-01-18 12:59:57 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.form.TextField;
|
|
|
|
import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem;
|
|
|
|
import com.sencha.gxt.widget.core.client.toolbar.SeparatorToolItem;
|
2015-12-14 18:44:54 +01:00
|
|
|
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
|
2015-11-27 19:03:06 +01:00
|
|
|
|
|
|
|
import edu.ycp.cs.dh.acegwt.client.ace.AceEditor;
|
2015-12-14 18:44:54 +01:00
|
|
|
import edu.ycp.cs.dh.acegwt.client.ace.AceEditorCursorPosition;
|
2015-11-27 19:03:06 +01:00
|
|
|
import edu.ycp.cs.dh.acegwt.client.ace.AceEditorMode;
|
|
|
|
import edu.ycp.cs.dh.acegwt.client.ace.AceEditorTheme;
|
2015-12-14 18:44:54 +01:00
|
|
|
import edu.ycp.cs.dh.acegwt.client.ace.AceSelection;
|
|
|
|
import edu.ycp.cs.dh.acegwt.client.ace.AceSelectionListener;
|
2015-11-27 19:03:06 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
2017-05-12 18:26:05 +02:00
|
|
|
* @author Giancarlo Panichi
|
|
|
|
*
|
2015-11-27 19:03:06 +01:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
public class CodeEditPanel extends ContentPanel {
|
|
|
|
|
|
|
|
private EventBus eventBus;
|
|
|
|
private AceEditor editor;
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
private TextButton btnSave;
|
|
|
|
private TextButton btnAddInput;
|
|
|
|
private TextButton btnAddOutput;
|
2016-01-18 12:59:57 +01:00
|
|
|
private Project project;
|
|
|
|
private TextField mainCodeField;
|
|
|
|
private CodeEditMessages msgs;
|
|
|
|
private CommonMessages msgsCommon;
|
2015-11-27 19:03:06 +01:00
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
public CodeEditPanel(Project project, EventBus eventBus) {
|
2015-11-27 19:03:06 +01:00
|
|
|
super();
|
|
|
|
Log.debug("CodeEditPanel");
|
|
|
|
this.eventBus = eventBus;
|
2016-01-18 12:59:57 +01:00
|
|
|
this.project = project;
|
|
|
|
this.msgs = GWT.create(CodeEditMessages.class);
|
|
|
|
this.msgsCommon = GWT.create(CommonMessages.class);
|
2015-11-27 19:03:06 +01:00
|
|
|
init();
|
2016-01-18 12:59:57 +01:00
|
|
|
create();
|
2015-11-27 19:03:06 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void init() {
|
|
|
|
forceLayoutOnResize = true;
|
|
|
|
setBodyBorder(false);
|
|
|
|
setBorders(false);
|
|
|
|
setHeaderVisible(false);
|
|
|
|
setResize(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-01-18 12:59:57 +01:00
|
|
|
private void create() {
|
|
|
|
btnSave = new TextButton(msgs.btnSaveText());
|
2015-12-22 17:55:55 +01:00
|
|
|
btnSave.setIcon(StatAlgoImporterResources.INSTANCE.save16());
|
2015-12-14 18:44:54 +01:00
|
|
|
btnSave.setScale(ButtonScale.SMALL);
|
|
|
|
btnSave.setIconAlign(IconAlign.LEFT);
|
2016-01-18 12:59:57 +01:00
|
|
|
btnSave.setToolTip(msgs.btnSaveToolTip());
|
2015-12-14 18:44:54 +01:00
|
|
|
btnSave.addSelectHandler(new SelectHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSelect(SelectEvent event) {
|
2015-12-18 17:55:57 +01:00
|
|
|
saveCode();
|
2015-12-14 18:44:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
});
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2016-01-18 12:59:57 +01:00
|
|
|
btnAddInput = new TextButton(msgs.btnAddInputText());
|
2015-12-14 18:44:54 +01:00
|
|
|
btnAddInput.setIcon(StatAlgoImporterResources.INSTANCE.add16());
|
|
|
|
btnAddInput.setScale(ButtonScale.SMALL);
|
|
|
|
btnAddInput.setIconAlign(IconAlign.LEFT);
|
2016-01-18 12:59:57 +01:00
|
|
|
btnAddInput.setToolTip(msgs.btnAddInputToolTip());
|
2015-12-14 18:44:54 +01:00
|
|
|
btnAddInput.addSelectHandler(new SelectHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSelect(SelectEvent event) {
|
2015-12-21 18:02:22 +01:00
|
|
|
saveVariable(IOType.INPUT);
|
2015-12-14 18:44:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
btnAddInput.disable();
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2016-01-18 12:59:57 +01:00
|
|
|
btnAddOutput = new TextButton(msgs.btnAddOutputText());
|
2015-12-14 18:44:54 +01:00
|
|
|
btnAddOutput.setIcon(StatAlgoImporterResources.INSTANCE.add16());
|
|
|
|
btnAddOutput.setScale(ButtonScale.SMALL);
|
|
|
|
btnAddOutput.setIconAlign(IconAlign.LEFT);
|
2016-01-18 12:59:57 +01:00
|
|
|
btnAddOutput.setToolTip(msgs.btnAddOutputToolTip());
|
2015-12-14 18:44:54 +01:00
|
|
|
btnAddOutput.addSelectHandler(new SelectHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSelect(SelectEvent event) {
|
2015-12-21 18:02:22 +01:00
|
|
|
saveVariable(IOType.OUTPUT);
|
2015-12-14 18:44:54 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
btnAddOutput.disable();
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2016-01-18 12:59:57 +01:00
|
|
|
mainCodeField = new TextField();
|
|
|
|
mainCodeField.setEmptyText("");
|
|
|
|
mainCodeField.setReadOnly(true);
|
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
ToolBar toolBar = new ToolBar();
|
2015-12-18 17:55:57 +01:00
|
|
|
toolBar.add(btnSave, new BoxLayoutData(new Margins(0)));
|
|
|
|
toolBar.add(btnAddInput, new BoxLayoutData(new Margins(0)));
|
|
|
|
toolBar.add(btnAddOutput, new BoxLayoutData(new Margins(0)));
|
2016-01-18 12:59:57 +01:00
|
|
|
toolBar.add(new SeparatorToolItem());
|
|
|
|
toolBar.add(new LabelToolItem(msgs.mainCodeFiledLabel()));
|
|
|
|
toolBar.add(mainCodeField, new BoxLayoutData(new Margins(0)));
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-11-27 19:03:06 +01:00
|
|
|
editor = new AceEditor();
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-11-27 19:03:06 +01:00
|
|
|
VerticalLayoutContainer v = new VerticalLayoutContainer();
|
2015-12-18 17:55:57 +01:00
|
|
|
v.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
|
2015-12-14 18:44:54 +01:00
|
|
|
v.add(editor, new VerticalLayoutData(1, 1, new Margins(0)));
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-11-27 19:03:06 +01:00
|
|
|
add(v);
|
|
|
|
editor.startEditor();
|
2015-12-04 18:45:47 +01:00
|
|
|
editor.setShowPrintMargin(false);
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
if (project != null && project.getMainCode() != null && project.getMainCode().getItemDescription() != null) {
|
2016-01-18 12:59:57 +01:00
|
|
|
if (project.getMainCode().getItemDescription().getName() != null) {
|
2017-06-30 18:51:18 +02:00
|
|
|
mainCodeField.setValue(project.getMainCode().getItemDescription().getName());
|
2016-01-18 12:59:57 +01:00
|
|
|
} else {
|
|
|
|
mainCodeField.setValue("");
|
|
|
|
}
|
2015-12-14 18:44:54 +01:00
|
|
|
loadCode();
|
|
|
|
}
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
editor.getSelection().addSelectionListener(new AceSelectionListener() {
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
@Override
|
|
|
|
public void onChangeSelection(AceSelection selection) {
|
2015-12-18 17:55:57 +01:00
|
|
|
if (selection != null && !selection.isEmpty()) {
|
2015-12-14 18:44:54 +01:00
|
|
|
btnAddInput.enable();
|
|
|
|
btnAddOutput.enable();
|
|
|
|
} else {
|
|
|
|
btnAddInput.disable();
|
|
|
|
btnAddOutput.disable();
|
|
|
|
}
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
}
|
|
|
|
});
|
2015-12-18 17:55:57 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-12-21 18:02:22 +01:00
|
|
|
private void saveVariable(IOType ioType) {
|
|
|
|
String parameter = getSelectedText();
|
|
|
|
Log.debug("Save Variable: " + ioType + ", " + parameter);
|
|
|
|
if (parameter == null) {
|
|
|
|
Log.debug("No text selected");
|
2017-06-30 18:51:18 +02:00
|
|
|
UtilsGXT3.alert(msgsCommon.attention(), msgs.attentionSelectParameterInTheCode());
|
2015-12-21 18:02:22 +01:00
|
|
|
} else {
|
2016-01-18 12:59:57 +01:00
|
|
|
createInputOutputVariable(parameter, ioType);
|
2015-12-21 18:02:22 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-01-18 12:59:57 +01:00
|
|
|
private void createInputOutputVariable(String parameter, IOType ioType) {
|
2015-12-21 18:02:22 +01:00
|
|
|
CodeParser codeParser = new CodeParser();
|
2017-06-30 18:51:18 +02:00
|
|
|
InputOutputVariables selectedRowsVariable = codeParser.parse(parameter, ioType);
|
2015-12-21 18:02:22 +01:00
|
|
|
if (selectedRowsVariable == null) {
|
|
|
|
Log.debug("No valid selection, change selection and try again!");
|
2017-06-30 18:51:18 +02:00
|
|
|
UtilsGXT3.alert(msgsCommon.attention(), msgs.attentionNoValidSelectedRow());
|
2015-12-21 18:02:22 +01:00
|
|
|
} else {
|
2017-06-30 18:51:18 +02:00
|
|
|
if (selectedRowsVariable.getDefaultValue() == null || selectedRowsVariable.getDefaultValue().isEmpty()
|
2016-09-12 11:05:32 +02:00
|
|
|
|| selectedRowsVariable.getDefaultValue().trim().isEmpty()) {
|
|
|
|
Log.debug("No valid selection, omitted a valid default value, change selection and try again!");
|
2017-06-30 18:51:18 +02:00
|
|
|
UtilsGXT3.alert(msgsCommon.attention(), msgs.attentionNoValidSelectedRowOmittedDefaultValue());
|
2016-09-12 11:05:32 +02:00
|
|
|
} else {
|
|
|
|
NewSelectedRowsVariableEvent newSelectedRowsVariableEvent = new NewSelectedRowsVariableEvent(
|
|
|
|
selectedRowsVariable);
|
|
|
|
eventBus.fireEvent(newSelectedRowsVariableEvent);
|
|
|
|
Log.debug("Fire: " + newSelectedRowsVariableEvent);
|
|
|
|
}
|
2015-12-21 18:02:22 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-07-21 12:53:03 +02:00
|
|
|
private void saveCode() {
|
2017-06-30 18:51:18 +02:00
|
|
|
if (project != null) {
|
|
|
|
if (project.getProjectConfig() != null) {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() != null) {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) {
|
|
|
|
if (project.getMainCode() != null && project.getMainCode().getItemDescription() != null) {
|
|
|
|
|
2017-07-21 12:53:03 +02:00
|
|
|
saveCodeOnServer();
|
2017-06-30 18:51:18 +02:00
|
|
|
} else {
|
2017-07-21 12:53:03 +02:00
|
|
|
saveNewCode();
|
2015-12-18 17:55:57 +01:00
|
|
|
}
|
2017-06-30 18:51:18 +02:00
|
|
|
} else {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBashEdit) {
|
|
|
|
ProjectSupportBashEdit projectSupportBashEdit = (ProjectSupportBashEdit) project
|
|
|
|
.getProjectConfig().getProjectSupport();
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
if (projectSupportBashEdit != null && projectSupportBashEdit.getBinaryItem() != null) {
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2017-07-21 12:53:03 +02:00
|
|
|
saveCodeOnServer();
|
2017-06-30 18:51:18 +02:00
|
|
|
|
|
|
|
} else {
|
2017-07-21 12:53:03 +02:00
|
|
|
saveNewCode();
|
2017-06-30 18:51:18 +02:00
|
|
|
}
|
|
|
|
} else {
|
2017-07-21 12:53:03 +02:00
|
|
|
saveNewCode();
|
2017-06-30 18:51:18 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
Log.error("Error in Project configuration: project support is null");
|
|
|
|
UtilsGXT3.alert(msgsCommon.error(), "Error in Project configuration: project support is null");
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
Log.error("Error in Project configuration: project configuration is null");
|
|
|
|
UtilsGXT3.alert(msgsCommon.error(), "Error in Project configuration: project configuration is null");
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
Log.error("Error in Project configuration: project is null");
|
|
|
|
UtilsGXT3.alert(msgsCommon.error(), "Error in Project configuration: project is null");
|
2016-01-18 12:59:57 +01:00
|
|
|
}
|
2015-11-27 19:03:06 +01:00
|
|
|
}
|
|
|
|
|
2017-07-21 12:53:03 +02:00
|
|
|
private void saveCodeOnServer() {
|
|
|
|
final StatAlgoImporterMonitor monitor = new StatAlgoImporterMonitor();
|
|
|
|
|
|
|
|
String code = editor.getText();
|
|
|
|
StatAlgoImporterServiceAsync.INSTANCE.saveCode(code, new AsyncCallback<Void>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
monitor.hide();
|
|
|
|
if (caught instanceof StatAlgoImporterSessionExpiredException) {
|
|
|
|
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
|
|
|
|
} else {
|
|
|
|
Log.error("Error on save code: " + caught.getLocalizedMessage());
|
|
|
|
UtilsGXT3.alert(msgsCommon.error(), caught.getLocalizedMessage());
|
|
|
|
}
|
|
|
|
caught.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSuccess(Void result) {
|
|
|
|
monitor.hide();
|
|
|
|
Log.debug("Code is saved!");
|
|
|
|
UtilsGXT3.info(msgs.codeSavedHead(), msgs.codeSaved());
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2015-11-27 19:03:06 +01:00
|
|
|
private void loadCode() {
|
2017-06-30 18:51:18 +02:00
|
|
|
StatAlgoImporterServiceAsync.INSTANCE.getCode(new AsyncCallback<ArrayList<CodeData>>() {
|
2015-11-27 19:03:06 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
if (caught instanceof StatAlgoImporterSessionExpiredException) {
|
|
|
|
eventBus.fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
|
|
|
|
} else {
|
|
|
|
Log.error("Error retrieving code: " + caught.getLocalizedMessage());
|
|
|
|
UtilsGXT3.alert(msgsCommon.error(), caught.getLocalizedMessage());
|
|
|
|
}
|
|
|
|
caught.printStackTrace();
|
2015-11-27 19:03:06 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
}
|
2015-11-27 19:03:06 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
public void onSuccess(ArrayList<CodeData> result) {
|
|
|
|
Log.debug("loaded " + result.size() + " code lines");
|
|
|
|
String text = new String();
|
|
|
|
if (result != null && result.size() > 0) {
|
2015-12-04 18:45:47 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
for (CodeData codeData : result) {
|
|
|
|
// Log.debug("Read: " + codeData);
|
|
|
|
text += codeData.getCodeLine() + "\r\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
2017-07-21 12:53:03 +02:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
}
|
2015-12-04 18:45:47 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
if (project != null) {
|
|
|
|
if (project.getProjectConfig() != null && project.getProjectConfig().getProjectSupport() != null) {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) {
|
2015-12-04 18:45:47 +01:00
|
|
|
editor.setShowPrintMargin(false);
|
|
|
|
editor.setMode(AceEditorMode.R);
|
|
|
|
editor.setTheme(AceEditorTheme.ECLIPSE);
|
|
|
|
editor.setText(text);
|
|
|
|
} else {
|
2017-06-30 18:51:18 +02:00
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBashEdit) {
|
|
|
|
editor.setShowPrintMargin(false);
|
|
|
|
editor.setMode(AceEditorMode.SH);
|
|
|
|
editor.setTheme(AceEditorTheme.ECLIPSE);
|
|
|
|
editor.setText(text);
|
|
|
|
} else {
|
|
|
|
editor.setShowPrintMargin(false);
|
|
|
|
editor.setMode(AceEditorMode.R);
|
|
|
|
editor.setTheme(AceEditorTheme.ECLIPSE);
|
|
|
|
editor.setText(text);
|
|
|
|
}
|
2015-11-27 19:03:06 +01:00
|
|
|
}
|
2017-06-30 18:51:18 +02:00
|
|
|
} else {
|
|
|
|
editor.setShowPrintMargin(false);
|
|
|
|
editor.setMode(AceEditorMode.R);
|
|
|
|
editor.setTheme(AceEditorTheme.ECLIPSE);
|
|
|
|
editor.setText(text);
|
2015-11-27 19:03:06 +01:00
|
|
|
}
|
2017-06-30 18:51:18 +02:00
|
|
|
} else {
|
|
|
|
editor.setShowPrintMargin(false);
|
|
|
|
editor.setMode(AceEditorMode.R);
|
|
|
|
editor.setTheme(AceEditorTheme.ECLIPSE);
|
|
|
|
editor.setText(text);
|
|
|
|
}
|
|
|
|
|
|
|
|
forceLayout();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2015-11-27 19:03:06 +01:00
|
|
|
}
|
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
public void codeUpdate(Project project) {
|
2016-01-18 12:59:57 +01:00
|
|
|
this.project = project;
|
2017-06-30 18:51:18 +02:00
|
|
|
if (project != null) {
|
|
|
|
if (project.getProjectConfig() != null) {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() != null) {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) {
|
|
|
|
if (project.getMainCode() != null && project.getMainCode().getItemDescription() != null) {
|
|
|
|
if (project.getMainCode().getItemDescription().getName() != null) {
|
|
|
|
mainCodeField.setValue(project.getMainCode().getItemDescription().getName());
|
|
|
|
} else {
|
|
|
|
mainCodeField.setValue("");
|
|
|
|
}
|
|
|
|
loadCode();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBashEdit) {
|
|
|
|
ProjectSupportBashEdit projectSupportBashEdit = (ProjectSupportBashEdit) project
|
|
|
|
.getProjectConfig().getProjectSupport();
|
|
|
|
if (projectSupportBashEdit != null && projectSupportBashEdit.getBinaryItem() != null) {
|
|
|
|
if (projectSupportBashEdit.getBinaryItem().getName() != null) {
|
|
|
|
mainCodeField.setValue(projectSupportBashEdit.getBinaryItem().getName());
|
|
|
|
} else {
|
|
|
|
mainCodeField.setValue("");
|
|
|
|
}
|
|
|
|
loadCode();
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
editor.setText("");
|
|
|
|
mainCodeField.setValue("");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
editor.setText("");
|
|
|
|
mainCodeField.setValue("");
|
|
|
|
}
|
2016-01-18 12:59:57 +01:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
editor.setText("");
|
|
|
|
mainCodeField.setValue("");
|
2015-12-14 18:44:54 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-07-21 12:53:03 +02:00
|
|
|
private String getSelectedText() {
|
2015-12-14 18:44:54 +01:00
|
|
|
String selectedText = null;
|
2015-12-18 17:55:57 +01:00
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
AceSelection editorSelection = editor.getSelection();
|
|
|
|
if (!editorSelection.isEmpty()) {
|
|
|
|
AceEditorCursorPosition startPosition;
|
|
|
|
AceEditorCursorPosition endPosition;
|
|
|
|
if (editorSelection.isBackwards()) {
|
|
|
|
startPosition = editorSelection.getSelectionLead();
|
|
|
|
endPosition = editorSelection.getSelectionAnchor();
|
2017-06-30 18:51:18 +02:00
|
|
|
editorSelection.select(startPosition.getRow(), startPosition.getColumn(), endPosition.getRow(),
|
2015-12-14 18:44:54 +01:00
|
|
|
endPosition.getColumn());
|
|
|
|
} else {
|
|
|
|
startPosition = editorSelection.getSelectionAnchor();
|
|
|
|
endPosition = editorSelection.getSelectionLead();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (editorSelection.isMultiLine()) {
|
|
|
|
String tempTest;
|
2015-12-21 18:02:22 +01:00
|
|
|
for (int i = startPosition.getRow(); i < endPosition.getRow(); i++) {
|
2015-12-14 18:44:54 +01:00
|
|
|
if (i == startPosition.getRow()) {
|
|
|
|
tempTest = editor.getLine(i);
|
|
|
|
tempTest.substring(startPosition.getColumn());
|
|
|
|
selectedText = tempTest;
|
|
|
|
} else {
|
|
|
|
if (i == endPosition.getRow()) {
|
|
|
|
tempTest = editor.getLine(i);
|
2015-12-21 18:02:22 +01:00
|
|
|
tempTest.substring(0, endPosition.getColumn());
|
2015-12-14 18:44:54 +01:00
|
|
|
selectedText += tempTest;
|
|
|
|
} else {
|
|
|
|
selectedText += editor.getLine(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
2015-12-18 17:55:57 +01:00
|
|
|
String tempTest;
|
2015-12-14 18:44:54 +01:00
|
|
|
tempTest = editor.getLine(startPosition.getRow());
|
2017-06-30 18:51:18 +02:00
|
|
|
selectedText = tempTest.substring(startPosition.getColumn(), endPosition.getColumn());
|
2015-12-14 18:44:54 +01:00
|
|
|
}
|
|
|
|
}
|
2015-11-27 19:03:06 +01:00
|
|
|
|
2015-12-14 18:44:54 +01:00
|
|
|
Log.debug("Selected Text: " + selectedText);
|
|
|
|
return selectedText;
|
2015-11-27 19:03:06 +01:00
|
|
|
}
|
|
|
|
|
2017-07-21 12:53:03 +02:00
|
|
|
private void saveNewCode() {
|
2017-06-30 18:51:18 +02:00
|
|
|
final PromptMessageBox messageBox = new PromptMessageBox("Code", "File name:");
|
2016-01-18 12:59:57 +01:00
|
|
|
// First option: Listening for the hide event and then figuring which
|
|
|
|
// button was pressed.
|
|
|
|
messageBox.addDialogHideHandler(new DialogHideHandler() {
|
|
|
|
@Override
|
|
|
|
public void onDialogHide(DialogHideEvent event) {
|
|
|
|
if (event.getHideButton() == PredefinedButton.OK) {
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Second option: Listen for a button click
|
2017-06-30 18:51:18 +02:00
|
|
|
messageBox.getButton(PredefinedButton.OK).addSelectHandler(new SelectHandler() {
|
|
|
|
@Override
|
|
|
|
public void onSelect(SelectEvent event) {
|
|
|
|
String fileName = messageBox.getTextField().getCurrentValue();
|
|
|
|
if (fileName != null && !fileName.isEmpty()) {
|
2017-07-21 12:53:03 +02:00
|
|
|
saveNewCodeOnServer(fileName);
|
2017-06-30 18:51:18 +02:00
|
|
|
} else {
|
|
|
|
Log.debug("Attention invalid file name for Code!");
|
|
|
|
UtilsGXT3.alert(msgsCommon.attention(), msgs.attentionInvalidFileNameForMainCode());
|
|
|
|
}
|
2016-01-18 12:59:57 +01:00
|
|
|
|
2017-06-30 18:51:18 +02:00
|
|
|
}
|
|
|
|
});
|
2016-01-18 12:59:57 +01:00
|
|
|
messageBox.show();
|
|
|
|
}
|
2016-09-12 11:05:32 +02:00
|
|
|
|
2017-07-21 12:53:03 +02:00
|
|
|
private void saveNewCodeOnServer(String fileName) {
|
2016-09-12 11:05:32 +02:00
|
|
|
ItemDescription file = new ItemDescription();
|
2016-01-18 12:59:57 +01:00
|
|
|
file.setName(fileName);
|
|
|
|
String code = editor.getText();
|
2017-06-30 18:51:18 +02:00
|
|
|
CodeContentType codeType;
|
|
|
|
if (project != null) {
|
|
|
|
if (project.getProjectConfig() != null) {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() != null) {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportBashEdit) {
|
|
|
|
codeType = CodeContentType.Binary;
|
|
|
|
} else {
|
|
|
|
if (project.getProjectConfig().getProjectSupport() instanceof ProjectSupportREdit) {
|
|
|
|
codeType = CodeContentType.Main;
|
|
|
|
} else {
|
|
|
|
codeType = CodeContentType.Main;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
codeType = CodeContentType.Main;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
codeType = CodeContentType.Main;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
codeType = CodeContentType.Main;
|
|
|
|
}
|
|
|
|
|
|
|
|
NewCodeEvent saveNewCodeEvent = new NewCodeEvent(codeType, file, code);
|
|
|
|
eventBus.fireEvent(saveNewCodeEvent);
|
|
|
|
Log.debug("Fired: " + saveNewCodeEvent);
|
2016-09-12 11:05:32 +02:00
|
|
|
|
2016-01-18 12:59:57 +01:00
|
|
|
}
|
2016-09-12 11:05:32 +02:00
|
|
|
|
2015-11-27 19:03:06 +01:00
|
|
|
}
|