use of org.talend.designer.core.ui.editor.TalendJavaEditor in project tdi-studio-se by Talend.
the class JavaCodeProblemsChecker method retrieveDetailedProblems.
/**
* DOC amaumont Comment method "retrieveDetailedProblems".
*
* @return
*/
private List<DetailedProblem> retrieveDetailedProblems(final IAloneProcessNodeConfigurer nodeConfigurer) {
final ArrayList<DetailedProblem> iproblems = new ArrayList<DetailedProblem>();
final IWorkbench workbench = PlatformUI.getWorkbench();
Display display = workbench.getDisplay();
if (display != null) {
display.syncExec(new Runnable() {
public void run() {
IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
IEditorPart editorPart = page.getActiveEditor();
if (editorPart instanceof AbstractMultiPageTalendEditor) {
AbstractMultiPageTalendEditor multiPageTalendEditor = ((AbstractMultiPageTalendEditor) editorPart);
AbstractTalendEditor talendEditor = multiPageTalendEditor.getTalendEditor();
TalendJavaEditor codeEditor = (TalendJavaEditor) multiPageTalendEditor.getCodeEditor();
org.eclipse.jdt.core.ICompilationUnit compilationUnit = (org.eclipse.jdt.core.ICompilationUnit) codeEditor.getUnit();
IProcess process = talendEditor.getProcess();
if (AbstractProcessProvider.isExtensionProcessForJoblet(process)) {
// joblet
return;
}
String selectedNodeName = multiPageTalendEditor.getSelectedNodeName();
if (selectedNodeName == null) {
return;
}
String uniqueNodeName = null;
boolean found = false;
List<? extends INode> generatingNodes = process.getGeneratingNodes();
int generatingNodesListSize = generatingNodes.size();
for (int i = 0; i < generatingNodesListSize; i++) {
INode node = generatingNodes.get(i);
/* startsWith method used in case of virtual component such as 'tMap_1_TMAP_OUT' */
if (node.getUniqueName().equals(selectedNodeName) || node.getUniqueName().startsWith(selectedNodeName + "_")) {
//$NON-NLS-1$
uniqueNodeName = node.getUniqueName();
found = true;
break;
}
}
if (!found) {
// in case the component doesn't exist
return;
}
final String code = retrieveCode(process, uniqueNodeName, nodeConfigurer);
// System.out.println(code);
// create requestor for accumulating discovered problems
MyProblemRequestor problemRequestor = new MyProblemRequestor(code, iproblems, selectedNodeName);
// use working copy to hold source with error
org.eclipse.jdt.core.ICompilationUnit workingCopy = null;
try {
JavaProcessorUtilities.computeLibrariesPath(process.getNeededModules(false), process);
try {
WorkingCopyOwner workingCopyOwner = new WorkingCopyOwner() {
};
workingCopy = ((org.eclipse.jdt.core.ICompilationUnit) compilationUnit).getWorkingCopy(workingCopyOwner, problemRequestor, null);
problemRequestor.setReportProblems(true);
((IOpenable) workingCopy).getBuffer().setContents(code);
((org.eclipse.jdt.core.ICompilationUnit) workingCopy).reconcile(ICompilationUnit.NO_AST, true, null, null);
problemRequestor.setReportProblems(false);
} finally {
if (workingCopy != null) {
workingCopy.discardWorkingCopy();
}
}
} catch (JavaModelException e) {
ExceptionHandler.process(e);
} catch (CoreException e) {
ExceptionHandler.process(e);
}
}
}
});
}
return iproblems;
}
use of org.talend.designer.core.ui.editor.TalendJavaEditor in project tdi-studio-se by Talend.
the class AbstractLanguageMemoController method createControl.
/*
* (non-Javadoc)
*
* @see
* org.talend.designer.core.ui.editor.properties2.editors.AbstractElementPropertySectionController#createControl()
*/
@Override
public Control createControl(final Composite subComposite, final IElementParameter param, final int numInRow, final int nbInRow, final int top, final Control lastControl) {
this.curParameter = param;
this.paramFieldType = param.getFieldType();
int nbLines = param.getNbLines();
final String paramName = param.getName();
Control cLayout;
StyledText text;
FormData data;
viewer = null;
if (param.getNbLines() != 1) {
if (language.equals("java")) {
//$NON-NLS-1$
String context = param.getContext();
if (!param.isNoCheck() && context != null && (context.equals("begin") || context.equals("main") || context.equals("end"))) {
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
Composite a = new Composite(subComposite, SWT.NO_FOCUS);
a.setLayout(new FormLayout());
Composite b = new Composite(a, SWT.NO_FOCUS);
b.setLayout(new GridLayout());
data = new FormData();
data.left = new FormAttachment(0, 0);
data.top = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = new FormAttachment(100, 0);
b.setLayoutData(data);
Process process = null;
if (elem instanceof Node) {
process = (Process) ((Node) elem).getProcess();
} else if (elem instanceof Connection) {
process = (Process) ((Connection) elem).getSource().getProcess();
}
TalendJavaEditor javaEditor = ((AbstractMultiPageTalendEditor) process.getEditor()).getCodeEditor();
viewer = TalendJavaSourceViewer.createViewerForComponent(b, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP, javaEditor, null, elem.getElementName(), context);
text = viewer.getTextWidget();
IPreferenceStore preferenceStore = CorePlugin.getDefault().getPreferenceStore();
FontData fontData = PreferenceConverter.getFontData(preferenceStore, TalendDesignerPrefConstants.MEMO_TEXT_FONT);
Font font = new Font(text.getDisplay(), fontData);
addResourceDisposeListener(text, font);
text.setFont(font);
text.setData(PARAMETER_NAME, param.getName());
editionControlHelper.register(param.getName(), text);
cLayout = a;
} else {
Composite a = new Composite(subComposite, SWT.NO_FOCUS);
a.setLayout(new FormLayout());
Composite b = new Composite(a, SWT.NO_FOCUS);
b.setLayout(new GridLayout());
data = new FormData();
data.left = new FormAttachment(0, 0);
data.top = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = new FormAttachment(100, 0);
b.setLayoutData(data);
if (isNeedToAddCodeGenerateButton()) {
addCodeGenerateButton(b);
}
Process process = null;
if (elem instanceof Node) {
process = (Process) ((Node) elem).getProcess();
} else if (elem instanceof Connection) {
Connection connection = (Connection) elem;
process = (Process) connection.getSource().getProcess();
// see bug 0001645
if (connection.getLineStyle().equals(EConnectionType.RUN_IF) || connection.getLineStyle().equals(EConnectionType.ROUTE_WHEN) || connection.getLineStyle().equals(EConnectionType.ROUTE_CATCH)) {
viewer = TalendJavaSourceViewer.createViewerForIfConnection(b);
}
}
if (viewer == null) {
viewer = TalendJavaSourceViewer.createViewer(b, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP, false);
}
text = viewer.getTextWidget();
IPreferenceStore preferenceStore = CorePlugin.getDefault().getPreferenceStore();
FontData fontData = PreferenceConverter.getFontData(preferenceStore, TalendDesignerPrefConstants.MEMO_TEXT_FONT);
Font font = new Font(text.getDisplay(), fontData);
addResourceDisposeListener(text, font);
text.setFont(font);
text.setData(PARAMETER_NAME, param.getName());
editionControlHelper.register(param.getName(), text);
cLayout = a;
}
} else {
Composite a = new Composite(subComposite, SWT.NO_FOCUS);
a.setLayout(new FormLayout());
Composite b = new Composite(a, SWT.NO_FOCUS);
b.setLayout(new GridLayout());
data = new FormData();
data.left = new FormAttachment(0, 0);
data.top = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = new FormAttachment(100, 0);
b.setLayoutData(data);
if (isNeedToAddCodeGenerateButton()) {
addCodeGenerateButton(b);
}
text = viewer.getTextWidget();
IPreferenceStore preferenceStore = CorePlugin.getDefault().getPreferenceStore();
FontData fontData = PreferenceConverter.getFontData(preferenceStore, TalendDesignerPrefConstants.MEMO_TEXT_FONT);
Font font = new Font(text.getDisplay(), fontData);
addResourceDisposeListener(text, font);
text.setFont(font);
Process process = null;
if (elem instanceof Node) {
process = (Process) ((Node) elem).getProcess();
} else if (elem instanceof Connection) {
process = (Process) ((Connection) elem).getSource().getProcess();
}
text.setData(PARAMETER_NAME, param.getName());
editionControlHelper.register(param.getName(), text);
cLayout = a;
}
} else {
IControlCreator txtCtrl = new IControlCreator() {
@Override
public Control createControl(final Composite parent, final int style) {
final StyledText control = new ColorStyledText(parent, style, CorePlugin.getDefault().getPreferenceStore(), language);
Display display = Display.getCurrent();
if (display == null) {
display = Display.getDefault();
}
if (display != null) {
display.syncExec(new Runnable() {
@Override
public void run() {
IPreferenceStore preferenceStore = CorePlugin.getDefault().getPreferenceStore();
FontData fontData = PreferenceConverter.getFontData(preferenceStore, TalendDesignerPrefConstants.MEMO_TEXT_FONT);
Font font = new Font(parent.getDisplay(), fontData);
addResourceDisposeListener(control, font);
control.setFont(font);
}
});
}
return control;
}
};
DecoratedField dField = null;
dField = new DecoratedField(subComposite, SWT.BORDER | SWT.WRAP, txtCtrl);
cLayout = dField.getLayoutControl();
text = (StyledText) dField.getControl();
data = (FormData) text.getLayoutData();
editionControlHelper.register(param.getName(), text);
if (param.isRequired()) {
FieldDecoration decoration = FieldDecorationRegistry.getDefault().getFieldDecoration(FieldDecorationRegistry.DEC_REQUIRED);
dField.addFieldDecoration(decoration, SWT.RIGHT | SWT.TOP, false);
}
}
if (getAdditionalHeightSize() != 0) {
nbLines += this.getAdditionalHeightSize() / text.getLineHeight();
}
data.height = text.getLineHeight() * nbLines;
text.getParent().setSize(subComposite.getSize().x, text.getLineHeight() * nbLines);
cLayout.setBackground(subComposite.getBackground());
// for bug 7580
if (!(text instanceof ReconcilerStyledText)) {
text.setEnabled(!param.isReadOnly());
} else {
text.setEditable(!param.isReadOnly());
}
if (elem instanceof Node) {
text.setToolTipText(VARIABLE_TOOLTIP + param.getVariableName());
}
addDragAndDropTarget(text);
// IDocument document = viewer.getDocument();
// if (document != null) {
// Process pro = null;
// if (elem instanceof Node) {
// pro = (Process) ((Node) elem).getProcess();
// } else if (elem instanceof Connection) {
// pro = (Process) ((Connection) elem).getSource().getProcess();
// }
// final Process process = pro;
// document.addDocumentListener(new IDocumentListener() {
//
// public void documentChanged(DocumentEvent event) {
// if (!process.isReadOnly())
// ContextParameterExtractor.saveContext(paramName, elem, viewer.getTextWidget().getText(), process);
// }
//
// public void documentAboutToBeChanged(DocumentEvent event) {
// // nothing to do
// }
// });
//
// }
CLabel labelLabel = getWidgetFactory().createCLabel(subComposite, param.getDisplayName());
data = new FormData();
if (lastControl != null) {
data.left = new FormAttachment(lastControl, 0);
} else {
data.left = new FormAttachment((((numInRow - 1) * MAX_PERCENT) / nbInRow), 0);
}
data.top = new FormAttachment(0, top);
labelLabel.setLayoutData(data);
if (numInRow != 1) {
labelLabel.setAlignment(SWT.RIGHT);
}
// *********************
data = new FormData();
int currentLabelWidth = STANDARD_LABEL_WIDTH;
GC gc = new GC(labelLabel);
Point labelSize = gc.stringExtent(param.getDisplayName());
gc.dispose();
if ((labelSize.x + ITabbedPropertyConstants.HSPACE) > currentLabelWidth) {
currentLabelWidth = labelSize.x + ITabbedPropertyConstants.HSPACE;
}
if (numInRow == 1) {
if (lastControl != null) {
data.left = new FormAttachment(lastControl, currentLabelWidth);
} else {
data.left = new FormAttachment(0, currentLabelWidth);
}
} else {
data.left = new FormAttachment(labelLabel, 0, SWT.RIGHT);
}
data.right = new FormAttachment((numInRow * MAX_PERCENT) / nbInRow, 0);
data.top = new FormAttachment(0, top);
cLayout.setLayoutData(data);
// **********************
hashCurControls.put(param.getName(), text);
Point initialSize = cLayout.computeSize(SWT.DEFAULT, SWT.DEFAULT);
dynamicProperty.setCurRowSize(initialSize.y + ITabbedPropertyConstants.VSPACE);
return null;
}
Aggregations