use of org.talend.designer.core.ui.viewer.ReconcilerStyledText 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