use of com.twinsoft.convertigo.eclipse.views.projectexplorer.model.VariableTreeObject in project convertigo by convertigo.
the class TransactionShowVariableAction 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();
String normalizedScreenClassName = StringUtils.normalize(currentScreenClass.getName());
int i;
String handlerName = "on" + normalizedScreenClassName + JavelinTransaction.EVENT_ENTRY_HANDLER;
if ((i = transaction.handlers.indexOf(handlerName)) == -1) {
display.beep();
ConvertigoPlugin.logWarning("Unable to show the position of the variable \"" + variable + "\": no handler found for the current screen class!");
} else {
ConvertigoPlugin.logDebug("Found handler: " + handlerName);
// Delimit the function
int bof, eof;
bof = transaction.handlers.indexOf('{', i) + 2;
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);
// Delimit the marker for generated input variables code
int idxMarker = function.indexOf("\t// begin-of-variables");
if (idxMarker == -1) {
// No variable marker, do nothing
display.beep();
ConvertigoPlugin.logWarning("Unable to show the position of the variable \"" + variable + "\": no variable marker found for the handler!");
return;
}
int idxMarker2 = function.indexOf("\t// end-of-variables", idxMarker);
String code = function.substring(idxMarker, idxMarker2);
String line = "\tjavelin.send(" + variable + ");\n";
int idxPosition = code.indexOf(line);
if (idxPosition == -1) {
ConvertigoPlugin.logDebug("No variable '" + variable + "' found into the handler!");
return;
}
idxPosition = code.lastIndexOf("moveCursor(", idxPosition) + 11;
int idxComa = code.indexOf(',', idxPosition);
int idxClosedParenthesis = code.indexOf(')', idxComa);
int x = Integer.parseInt(code.substring(idxPosition, idxComa).trim());
int y = Integer.parseInt(code.substring(idxComa + 1, idxClosedParenthesis).trim());
ConvertigoPlugin.logDebug("Variable position found: " + x + ", " + y);
javelin.moveCursor(x, y);
}
javelin.requestFocus();
}
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to show variable to Javelin!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
use of com.twinsoft.convertigo.eclipse.views.projectexplorer.model.VariableTreeObject 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();
}
}
Aggregations