Search in sources :

Example 1 with ReconcilerStyledText

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;
}
Also used : CLabel(org.eclipse.swt.custom.CLabel) TalendJavaEditor(org.talend.designer.core.ui.editor.TalendJavaEditor) FieldDecoration(org.eclipse.jface.fieldassist.FieldDecoration) Node(org.talend.designer.core.ui.editor.nodes.Node) Process(org.talend.designer.core.ui.editor.process.Process) DecoratedField(org.eclipse.jface.fieldassist.DecoratedField) Font(org.eclipse.swt.graphics.Font) Control(org.eclipse.swt.widgets.Control) GridLayout(org.eclipse.swt.layout.GridLayout) ColorStyledText(org.talend.commons.ui.swt.colorstyledtext.ColorStyledText) GC(org.eclipse.swt.graphics.GC) FormAttachment(org.eclipse.swt.layout.FormAttachment) FormData(org.eclipse.swt.layout.FormData) FormLayout(org.eclipse.swt.layout.FormLayout) StyledText(org.eclipse.swt.custom.StyledText) ColorStyledText(org.talend.commons.ui.swt.colorstyledtext.ColorStyledText) ReconcilerStyledText(org.talend.designer.core.ui.viewer.ReconcilerStyledText) Composite(org.eclipse.swt.widgets.Composite) AbstractMultiPageTalendEditor(org.talend.designer.core.ui.AbstractMultiPageTalendEditor) FontData(org.eclipse.swt.graphics.FontData) Connection(org.talend.designer.core.ui.editor.connections.Connection) Point(org.eclipse.swt.graphics.Point) Point(org.eclipse.swt.graphics.Point) IControlCreator(org.eclipse.jface.fieldassist.IControlCreator) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) ReconcilerStyledText(org.talend.designer.core.ui.viewer.ReconcilerStyledText) Display(org.eclipse.swt.widgets.Display)

Aggregations

DecoratedField (org.eclipse.jface.fieldassist.DecoratedField)1 FieldDecoration (org.eclipse.jface.fieldassist.FieldDecoration)1 IControlCreator (org.eclipse.jface.fieldassist.IControlCreator)1 IPreferenceStore (org.eclipse.jface.preference.IPreferenceStore)1 CLabel (org.eclipse.swt.custom.CLabel)1 StyledText (org.eclipse.swt.custom.StyledText)1 Font (org.eclipse.swt.graphics.Font)1 FontData (org.eclipse.swt.graphics.FontData)1 GC (org.eclipse.swt.graphics.GC)1 Point (org.eclipse.swt.graphics.Point)1 FormAttachment (org.eclipse.swt.layout.FormAttachment)1 FormData (org.eclipse.swt.layout.FormData)1 FormLayout (org.eclipse.swt.layout.FormLayout)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 Composite (org.eclipse.swt.widgets.Composite)1 Control (org.eclipse.swt.widgets.Control)1 Display (org.eclipse.swt.widgets.Display)1 ColorStyledText (org.talend.commons.ui.swt.colorstyledtext.ColorStyledText)1 AbstractMultiPageTalendEditor (org.talend.designer.core.ui.AbstractMultiPageTalendEditor)1 TalendJavaEditor (org.talend.designer.core.ui.editor.TalendJavaEditor)1