use of com.twinsoft.convertigo.eclipse.editors.jscript.JScriptEditorInput in project convertigo by convertigo.
the class TransactionWriteVariableAction method run.
public void run() {
Display display = Display.getDefault();
Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT);
Shell shell = getParentShell();
shell.setCursor(waitCursor);
try {
ProjectExplorerView explorerView = getProjectExplorerView();
if (explorerView != null) {
TreeObject treeObject = explorerView.getFirstSelectedTreeObject();
String variable = (String) ((VariableTreeObject) treeObject).getObject();
JavelinTransaction transaction = (JavelinTransaction) treeObject.getParent().getParent().getObject();
JavelinConnector javelinConnector = (JavelinConnector) transaction.getParent();
IEditorPart wpart = getConnectorEditor(javelinConnector);
if ((wpart != null) && (wpart instanceof ConnectorEditor)) {
getActivePage().activate(wpart);
ConnectorEditor connectorEditor = (ConnectorEditor) wpart;
ConnectorEditorPart connectorEditorPart = connectorEditor.getConnectorEditorPart();
AbstractConnectorComposite connectorComposite = connectorEditorPart.getConnectorComposite();
if ((connectorComposite != null) && (connectorComposite instanceof JavelinConnectorComposite)) {
Javelin javelin = ((JavelinConnectorComposite) connectorComposite).getJavelin();
ScreenClass currentScreenClass = ((JavelinConnector) connectorEditorPart.getConnector()).getCurrentScreenClass();
ConvertigoPlugin.logDebug("Analyzing screen class '" + currentScreenClass.getName() + "'...");
String normalizedScreenClassName = StringUtils.normalize(currentScreenClass.getName());
int i;
String handlerName = "on" + normalizedScreenClassName + JavelinTransaction.EVENT_ENTRY_HANDLER;
ConvertigoPlugin.logDebug("Handlers:\n" + transaction.handlers);
ConvertigoPlugin.logDebug("Searching for handler '" + handlerName + "'...");
if ((i = transaction.handlers.indexOf(handlerName)) == -1) {
display.beep();
ConvertigoPlugin.logDebug("No handler found for the current screen class!");
} else {
ConvertigoPlugin.logDebug("Handler found!");
// Delimit the function
int bof, eof;
bof = transaction.handlers.indexOf('{', i) + 1;
eof = transaction.handlers.indexOf("function", bof);
if (eof == -1) {
eof = transaction.handlers.lastIndexOf('}') - 1;
} else {
eof = transaction.handlers.lastIndexOf('}', eof) - 1;
}
String function = transaction.handlers.substring(bof, eof);
int c = javelin.getCurrentColumn();
int l = javelin.getCurrentLine();
String line1 = "\tjavelin.moveCursor(" + c + ", " + l + ");\n";
// We must remove the default value of the variable if any
String variableName = variable.toString();
int ii;
if ((ii = variableName.indexOf(' ')) != -1) {
variableName = variableName.substring(0, ii);
}
String line2 = "\tjavelin.send(" + variableName + ");\n";
// Delimit the marker for generated input variables code
String code = "";
int idxMarker = function.indexOf("\t// begin-of-variables");
if (idxMarker == -1) {
code = "\n\t// begin-of-variables: DO NOT EDIT OR MODIFY\n";
code += line1 + line2;
code += "\t// end-of-variables\n";
function = code + function;
} else {
idxMarker = function.indexOf("\t// end-of-variables");
// Update previous definition if any
int idxPreviousDefinition = function.indexOf(line2);
if (idxPreviousDefinition != -1) {
int i1 = function.lastIndexOf("moveCursor(", idxPreviousDefinition) + 11;
// Search for moveCursor only inside the variables block
if (i1 < idxMarker) {
int i2 = function.indexOf(')', i1);
function = function.substring(0, i1) + c + ", " + l + function.substring(i2);
}
} else // Add definition otherwise
{
code += line1 + line2;
}
function = function.substring(0, idxMarker) + code + function.substring(idxMarker);
}
transaction.handlers = transaction.handlers.substring(0, bof) + function + transaction.handlers.substring(eof);
transaction.hasChanged = true;
ConvertigoPlugin.logDebug("Code added:\n" + code);
explorerView.updateDatabaseObject(transaction);
// Update the opened handlers editor if any
JScriptEditorInput jsinput = ConvertigoPlugin.getDefault().getJScriptEditorInput(transaction);
if (jsinput != null) {
jsinput.reload();
}
}
javelin.requestFocus();
}
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to write variable from Javelin!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
use of com.twinsoft.convertigo.eclipse.editors.jscript.JScriptEditorInput in project convertigo by convertigo.
the class ConvertigoPartListener method partClosed.
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener#partClosed(org.eclipse.ui.IWorkbenchPart)
*/
public void partClosed(IWorkbenchPart part) {
if (part instanceof ConnectorEditor) {
// close editor properly
((ConnectorEditor) part).close();
}
if (part instanceof SequenceEditor) {
// close editor properly
((SequenceEditor) part).close();
}
if (part instanceof ProjectExplorerView) {
// close view properly
((ProjectExplorerView) part).close();
}
if (part instanceof SourcePickerView) {
// close view properly
((SourcePickerView) part).close();
}
if (part instanceof ConsoleView) {
ConvertigoPlugin convertigoPlugin = ConvertigoPlugin.getDefault();
boolean shuttingDown = convertigoPlugin.isShuttingDown();
if (shuttingDown) {
IConsole[] tabConsoles = ConsolePlugin.getDefault().getConsoleManager().getConsoles();
String openedConsoles = "";
for (IConsole console : tabConsoles) {
if (console instanceof MessageConsole) {
if ((console.equals(convertigoPlugin.engineConsole)) && (openedConsoles.indexOf("engine") == -1))
openedConsoles += (openedConsoles.equals("") ? "" : ",") + "engine";
else if ((console.equals(convertigoPlugin.stdoutConsole)) && (openedConsoles.indexOf("stdout") == -1))
openedConsoles += (openedConsoles.equals("") ? "" : ",") + "stdout";
}
}
ConvertigoPlugin.setProperty(ConvertigoPlugin.PREFERENCE_OPENED_CONSOLES, openedConsoles);
}
}
if (part instanceof EditorPart) {
IEditorInput input = ((EditorPart) part).getEditorInput();
if (input instanceof com.twinsoft.convertigo.eclipse.editors.mobile.ApplicationComponentEditorInput) {
try {
com.twinsoft.convertigo.eclipse.editors.mobile.ApplicationComponentEditorInput acei = GenericUtils.cast(input);
MobileBuilder mb = acei.getApplication().getProject().getMobileBuilder();
mb.removeMobileEventListener((com.twinsoft.convertigo.eclipse.editors.mobile.ApplicationComponentEditor) part);
mb.setAutoBuild(true);
} catch (Exception e) {
e.printStackTrace();
}
}
if (input instanceof com.twinsoft.convertigo.eclipse.editors.ngx.ApplicationComponentEditorInput) {
try {
com.twinsoft.convertigo.eclipse.editors.ngx.ApplicationComponentEditorInput acei = GenericUtils.cast(input);
MobileBuilder mb = acei.getApplication().getProject().getMobileBuilder();
mb.removeMobileEventListener((com.twinsoft.convertigo.eclipse.editors.ngx.ApplicationComponentEditor) part);
mb.setAutoBuild(true);
} catch (Exception e) {
e.printStackTrace();
}
}
if (input instanceof JScriptEditorInput) {
try {
((JScriptEditorInput) input).getFile().getParent().delete(true, null);
} catch (Exception e) {
e.printStackTrace();
}
} else if (input instanceof com.twinsoft.convertigo.eclipse.editors.mobile.ComponentFileEditorInput) {
try {
((com.twinsoft.convertigo.eclipse.editors.mobile.ComponentFileEditorInput) input).getFile().delete(true, null);
} catch (Exception e) {
e.printStackTrace();
}
} else if (input instanceof com.twinsoft.convertigo.eclipse.editors.ngx.ComponentFileEditorInput) {
try {
((com.twinsoft.convertigo.eclipse.editors.ngx.ComponentFileEditorInput) input).getFile().delete(true, null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
use of com.twinsoft.convertigo.eclipse.editors.jscript.JScriptEditorInput in project convertigo by convertigo.
the class DatabaseObjectDeleteAction method run.
public void run() {
Display display = Display.getDefault();
Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT);
Shell shell = getParentShell();
shell.setCursor(waitCursor);
try {
treeNodesToUpdate = new ArrayList<>();
ProjectExplorerView explorerView = getProjectExplorerView();
if (explorerView != null) {
TreeObject[] selectedTreeObjects = explorerView.getSelectedTreeObjects();
if (selectedTreeObjects != null) {
Collection<DatabaseObjectTreeObject> treeObjects = new HashSet<>(selectedTreeObjects.length);
for (TreeObject t : Arrays.asList(selectedTreeObjects)) {
if (t instanceof DatabaseObjectTreeObject) {
treeObjects.add((DatabaseObjectTreeObject) t);
}
}
;
if (treeObjects.size() > 1) {
for (DatabaseObjectTreeObject t : new ArrayList<>(treeObjects)) {
TreeObject parent = t.getParent();
while (parent != null) {
if (treeObjects.contains(parent)) {
treeObjects.remove(t);
parent = null;
} else {
parent = parent.getParent();
}
}
}
;
}
if (treeObjects.size() > 1) {
List<DatabaseObjectTreeObject> list = new ArrayList<>(treeObjects);
Collections.sort(list, new Comparator<DatabaseObjectTreeObject>() {
@Override
public int compare(DatabaseObjectTreeObject o1, DatabaseObjectTreeObject o2) {
if (o1 instanceof ProjectTreeObject) {
if (o2 instanceof ProjectTreeObject) {
return o1.getName().compareTo(o2.getName());
}
return -1;
} else if (o2 instanceof ProjectTreeObject) {
return 1;
}
return o1.getName().compareTo(o2.getName());
}
});
treeObjects = list;
}
MultipleDeletionDialog dialog = new MultipleDeletionDialog(shell, "Object Deletion", treeObjects.size() != 1);
for (DatabaseObjectTreeObject treeObject : treeObjects) {
String message = java.text.MessageFormat.format("Do you really want to delete the {0} \"{1}\" and all its sub-objects?", treeObject instanceof ProjectTreeObject ? "project" : "object", treeObject.getName());
if (treeObject instanceof ProjectTreeObject) {
message += "\nProject location: " + ((Project) treeObject.getObject()).getDirPath();
dialog.setToggle("Delete project content on disk (cannot be undone)", false);
} else {
dialog.removeToggle();
}
if (!dialog.shouldBeDeleted(message)) {
continue;
}
try {
if (treeObject instanceof ProjectTreeObject) {
((ProjectTreeObject) treeObject).closeAllEditors();
} else if (treeObject instanceof SequenceTreeObject) {
((ProjectTreeObject) ((SequenceTreeObject) treeObject).getParent().getParent()).closeSequenceEditors((Sequence) treeObject.getObject());
} else if (treeObject instanceof ConnectorTreeObject) {
((ProjectTreeObject) ((ConnectorTreeObject) treeObject).getParent().getParent()).closeConnectorEditors((Connector) treeObject.getObject());
} else if (treeObject instanceof StepTreeObject) {
// We close the editor linked with the SimpleStep (=SequenceJsStep)
if (treeObject.getObject() instanceof SimpleStep) {
boolean find = false;
SimpleStep simpleStep = (SimpleStep) treeObject.getObject();
IWorkbenchPage page = this.getActivePage();
IEditorReference[] editors = page.getEditorReferences();
int _i = 0;
while (find != true && _i < editors.length) {
IEditorReference editor = editors[_i];
IEditorInput input = editor.getEditorInput();
if (input instanceof JScriptEditorInput) {
if (simpleStep.equals(((JScriptEditorInput) input).getDatabaseObject())) {
find = true;
IEditorPart editorPart = page.findEditor(input);
if (editorPart != null) {
page.activate(editorPart);
page.closeEditor(editorPart, false);
}
}
}
++_i;
}
}
} else if (treeObject instanceof MobileComponentTreeObject) {
((MobileComponentTreeObject) treeObject).closeAllEditors(false);
}
if (treeObject instanceof ProjectTreeObject) {
explorerView.removeProjectTreeObject(treeObject);
final Project project = (Project) treeObject.getObject();
Job rmProject = new Job("Remove '" + project.getName() + "' project") {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
delete(project, dialog.getToggleState());
} catch (Exception e) {
ConvertigoPlugin.logException(e, "Unable to delete the '" + project.getName() + "' project.");
return new MultiStatus(ConvertigoPlugin.PLUGIN_UNIQUE_ID, IStatus.ERROR, "Failed to remove the '" + project.getName() + "' project.", e);
}
return Status.OK_STATUS;
}
};
rmProject.schedule();
} else {
delete(treeObject);
// prevents treeObject and its childs to receive further TreeObjectEvents
if (treeObject instanceof TreeObjectListener) {
explorerView.removeTreeObjectListener(treeObject);
}
treeObject.removeAllChildren();
}
explorerView.fireTreeObjectRemoved(new TreeObjectEvent(treeObject));
} catch (Exception e) {
ConvertigoPlugin.logException(e, "Unable to delete the current selected object.");
}
}
;
// Updating the tree and the properties panel
Enumeration<DatabaseObjectTreeObject> enumeration = Collections.enumeration(treeNodesToUpdate);
DatabaseObjectTreeObject parentTreeObject;
while (enumeration.hasMoreElements()) {
parentTreeObject = enumeration.nextElement();
if (parentTreeObject != null) {
explorerView.reloadTreeObject(parentTreeObject);
explorerView.setSelectedTreeObject(parentTreeObject);
}
}
// Refresh tree to show potential 'broken' steps
explorerView.refreshTree();
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to delete object!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
use of com.twinsoft.convertigo.eclipse.editors.jscript.JScriptEditorInput in project convertigo by convertigo.
the class ProjectTreeObject method closeAllEditors.
public void closeAllEditors() {
Project project = getObject();
IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage activePage = workbenchWindow != null ? workbenchWindow.getActivePage() : null;
if (activePage != null) {
IEditorReference[] editorRefs = activePage.getEditorReferences();
for (int i = 0; i < editorRefs.length; i++) {
IEditorReference editorRef = (IEditorReference) editorRefs[i];
try {
IEditorInput editorInput = editorRef.getEditorInput();
if (editorInput != null) {
// close connector editor
if (editorInput instanceof ConnectorEditorInput) {
if (((ConnectorEditorInput) editorInput).is(project)) {
closeEditor(activePage, editorRef);
}
} else // close sequence editors
if (editorInput instanceof SequenceEditorInput) {
if (((SequenceEditorInput) editorInput).is(project)) {
closeEditor(activePage, editorRef);
}
} else // close js editors
if (editorInput instanceof JScriptEditorInput) {
DatabaseObject dbo = ((JScriptEditorInput) editorInput).getJScriptContainer().getDatabaseObject();
if (dbo != null && project.equals(dbo.getProject())) {
closeEditor(activePage, editorRef);
}
} else // close trace editors
if (editorInput instanceof TraceFileEditorInput) {
if (((TraceFileEditorInput) editorInput).getConnector().getProject().equals(project)) {
closeEditor(activePage, editorRef);
}
} else // close other file editors
if (editorInput instanceof FileEditorInput) {
IPath fullpath = ((FileEditorInput) editorInput).getFile().getFullPath();
if (fullpath.toString().replaceFirst("/(.*?)/.*", "$1").equals(project.getName())) {
closeEditor(activePage, editorRef);
}
} else if (editorInput instanceof com.twinsoft.convertigo.eclipse.editors.mobile.ApplicationComponentEditorInput) {
com.twinsoft.convertigo.eclipse.editors.mobile.ApplicationComponentEditorInput acei = GenericUtils.cast(editorInput);
if (acei.getApplication().getProject().equals(project)) {
closeEditor(activePage, editorRef);
}
} else if (editorInput instanceof com.twinsoft.convertigo.eclipse.editors.ngx.ApplicationComponentEditorInput) {
com.twinsoft.convertigo.eclipse.editors.ngx.ApplicationComponentEditorInput acei = GenericUtils.cast(editorInput);
if (acei.getApplication().getProject().equals(project)) {
closeEditor(activePage, editorRef);
}
}
}
} catch (PartInitException e) {
ConvertigoPlugin.logException(e, "Error while retrieving the editor '" + editorRef.getName() + "'");
}
}
}
}
Aggregations