Search in sources :

Example 26 with IDocumentListener

use of org.eclipse.jface.text.IDocumentListener in project erlide_eclipse by erlang.

the class ErlangConsolePage method createControl.

/**
 * @wbp.parser.entryPoint
 */
@Override
public void createControl(final Composite parent) {
    setBackgroundColors();
    composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout(1, false));
    final SashForm sashForm = new SashForm(composite, SWT.VERTICAL);
    sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    consoleOutputViewer = new SourceViewer(sashForm, null, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.READ_ONLY);
    consoleOutputText = consoleOutputViewer.getTextWidget();
    consoleOutputText.setFont(JFaceResources.getTextFont());
    bgcolor = DebugUIPlugin.getPreferenceColor(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR);
    consoleOutputText.setBackground(bgcolor);
    DebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(event -> {
        if (event.getProperty().equals(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR)) {
            final Color color = DebugUIPlugin.getPreferenceColor(IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR);
            consoleOutputText.setBackground(color);
            consoleInputText.setBackground(color);
        }
    });
    consoleOutputText.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(final KeyEvent e) {
            if (e.stateMask == 0 && e.character != '\0') {
                consoleInputText.setFocus();
                consoleInputText.append("" + e.character);
                consoleInputText.setCaretOffset(consoleInputText.getText().length());
            }
            e.doit = true;
        }
    });
    final IPreferenceStore store = ErlideUIPlugin.getDefault().getPreferenceStore();
    final IColorManager colorManager = new ColorManager();
    consoleOutputViewer.setDocument(fDoc);
    consoleOutputViewer.configure(new ErlangConsoleSourceViewerConfiguration(store, colorManager, backend));
    consoleInputViewer = new SourceViewer(sashForm, null, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
    consoleInputText = consoleInputViewer.getTextWidget();
    consoleInputViewer.setDocument(new Document());
    consoleInputViewer.configure(new ErlangConsoleSourceViewerConfiguration(store, colorManager, backend));
    sashForm.setWeights(new int[] { 2, 1 });
    final Label helpLabel = new Label(composite, SWT.NONE);
    helpLabel.setText("To send the input to the console: press Enter at the end of an expression." + "Ctrl/Cmd-arrows navigate the input history.");
    helpLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    final ModifyListener modifyListener = e -> {
        final String consoleText = ErlangConsolePage.trimInput(consoleInputText.getText());
        final boolean atEndOfInput = consoleText.endsWith(".") && consoleInputText.getCaretOffset() >= consoleText.length();
        if (atEndOfInput) {
            final boolean inputComplete = isInputComplete();
            if (inputComplete) {
                consoleInputText.setBackground(bgColor_Ok);
            }
        } else {
            consoleInputText.setBackground(bgcolor);
        }
    };
    // consoleInput.addModifyListener(modifyListener);
    consoleInputText.addCaretListener(event -> modifyListener.modifyText(null));
    consoleInputText.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(final KeyEvent e) {
            final boolean ctrlOrCommandPressed = (e.stateMask & SWT.MOD1) == SWT.MOD1;
            final String conText = ErlangConsolePage.trimInput(consoleInputText.getText());
            final boolean atEndOfInput = consoleInputText.getCaretOffset() >= conText.length() && conText.endsWith(".");
            e.doit = true;
            if (e.keyCode == 13 && (ctrlOrCommandPressed || atEndOfInput)) {
                final boolean inputComplete = isInputComplete();
                if (inputComplete) {
                    sendInput();
                }
            } else if (ctrlOrCommandPressed && e.keyCode == SWT.SPACE) {
                consoleInputViewer.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
            } else if (ctrlOrCommandPressed && e.keyCode == SWT.ARROW_UP) {
                e.doit = false;
                history.prev();
                final String s = history.get();
                if (s != null) {
                    consoleInputText.setText(s);
                    consoleInputText.setSelection(consoleInputText.getText().length());
                }
            } else if (ctrlOrCommandPressed && e.keyCode == SWT.ARROW_DOWN) {
                e.doit = false;
                history.next();
                final String s = history.get();
                if (s != null) {
                    consoleInputText.setText(s);
                    consoleInputText.setSelection(consoleInputText.getText().length());
                }
            }
        }
    });
    consoleInputText.setFont(consoleOutputText.getFont());
    consoleInputText.setBackground(consoleOutputText.getBackground());
    consoleInputText.setWordWrap(true);
    consoleInputText.setFocus();
    // end layout
    final IDocumentListener documentListener = new IDocumentListener() {

        @Override
        public void documentAboutToBeChanged(final DocumentEvent event) {
        }

        @Override
        public void documentChanged(final DocumentEvent event) {
            final int end = consoleOutputViewer.getDocument().getLength();
            consoleOutputViewer.setSelectedRange(end, end);
            consoleOutputViewer.revealRange(end, 0);
        }
    };
    addDocumentListener(documentListener);
    // $NON-NLS-1$
    final String id = "#ContextMenu";
    // if (getConsole().getType() != null) {
    // id = getConsole().getType() + "." + id; //$NON-NLS-1$
    // }
    // $NON-NLS-1$
    fMenuManager = new MenuManager("#ContextMenu", id);
    fMenuManager.setRemoveAllWhenShown(true);
    fMenuManager.addMenuListener(this::contextMenuAboutToShow);
    final Menu menu = fMenuManager.createContextMenu(getControl());
    getControl().setMenu(menu);
    createActions();
    configureToolBar(getSite().getActionBars().getToolBarManager());
    getSite().registerContextMenu(id, fMenuManager, consoleOutputViewer);
    getSite().setSelectionProvider(consoleOutputViewer);
    consoleOutputViewer.getSelectionProvider().addSelectionChangedListener(selectionChangedListener);
}
Also used : IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) SashForm(org.eclipse.swt.custom.SashForm) IColorManager(org.erlide.ui.util.IColorManager) StyledText(org.eclipse.swt.custom.StyledText) IAction(org.eclipse.jface.action.IAction) Page(org.eclipse.ui.part.Page) IToolBarManager(org.eclipse.jface.action.IToolBarManager) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer) Nullable(org.eclipse.jdt.annotation.Nullable) PropertyChangeEvent(org.eclipse.jface.util.PropertyChangeEvent) Composite(org.eclipse.swt.widgets.Composite) IConsoleView(org.eclipse.ui.console.IConsoleView) Map(java.util.Map) KeyEvent(org.eclipse.swt.events.KeyEvent) Widget(org.eclipse.swt.widgets.Widget) IBackendShell(org.erlide.runtime.shell.IBackendShell) KeyAdapter(org.eclipse.swt.events.KeyAdapter) IAdaptable(org.eclipse.core.runtime.IAdaptable) IUpdate(org.eclipse.ui.texteditor.IUpdate) Separator(org.eclipse.jface.action.Separator) IDebugPreferenceConstants(org.eclipse.debug.internal.ui.preferences.IDebugPreferenceConstants) PlatformUI(org.eclipse.ui.PlatformUI) MenuManager(org.eclipse.jface.action.MenuManager) IFindReplaceTarget(org.eclipse.jface.text.IFindReplaceTarget) Display(org.eclipse.swt.widgets.Display) DocumentEvent(org.eclipse.jface.text.DocumentEvent) OtpErlangList(com.ericsson.otp.erlang.OtpErlangList) List(java.util.List) SWT(org.eclipse.swt.SWT) ParserException(org.erlide.engine.services.parsing.ParserException) Label(org.eclipse.swt.widgets.Label) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) IConsoleHelpContextIds(org.eclipse.ui.internal.console.IConsoleHelpContextIds) StringUtils(org.erlide.util.StringUtils) HashMap(java.util.HashMap) JFaceResources(org.eclipse.jface.resource.JFaceResources) RuntimeHelper(org.erlide.engine.services.parsing.RuntimeHelper) ArrayList(java.util.ArrayList) ConsoleResourceBundleMessages(org.eclipse.ui.internal.console.ConsoleResourceBundleMessages) FindReplaceAction(org.eclipse.ui.texteditor.FindReplaceAction) Document(org.eclipse.jface.text.Document) IDocument(org.eclipse.jface.text.IDocument) IDocumentListener(org.eclipse.jface.text.IDocumentListener) ResourceBundle(java.util.ResourceBundle) RGB(org.eclipse.swt.graphics.RGB) IPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener) GridData(org.eclipse.swt.layout.GridData) IWorkbenchActionConstants(org.eclipse.ui.IWorkbenchActionConstants) ErlideUIPlugin(org.erlide.ui.internal.ErlideUIPlugin) IConsoleConstants(org.eclipse.ui.console.IConsoleConstants) OtpErlangObject(com.ericsson.otp.erlang.OtpErlangObject) DebugUIPlugin(org.eclipse.debug.internal.ui.DebugUIPlugin) IActionBars(org.eclipse.ui.IActionBars) SourceViewer(org.eclipse.jface.text.source.SourceViewer) IBackend(org.erlide.backend.api.IBackend) Color(org.eclipse.swt.graphics.Color) IMenuManager(org.eclipse.jface.action.IMenuManager) ModifyListener(org.eclipse.swt.events.ModifyListener) ActionFactory(org.eclipse.ui.actions.ActionFactory) Menu(org.eclipse.swt.widgets.Menu) ColorManager(org.erlide.ui.util.ColorManager) Control(org.eclipse.swt.widgets.Control) GridLayout(org.eclipse.swt.layout.GridLayout) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer) SourceViewer(org.eclipse.jface.text.source.SourceViewer) Composite(org.eclipse.swt.widgets.Composite) ModifyListener(org.eclipse.swt.events.ModifyListener) Color(org.eclipse.swt.graphics.Color) KeyAdapter(org.eclipse.swt.events.KeyAdapter) IColorManager(org.erlide.ui.util.IColorManager) IDocumentListener(org.eclipse.jface.text.IDocumentListener) Label(org.eclipse.swt.widgets.Label) Document(org.eclipse.jface.text.Document) IDocument(org.eclipse.jface.text.IDocument) DocumentEvent(org.eclipse.jface.text.DocumentEvent) KeyEvent(org.eclipse.swt.events.KeyEvent) SashForm(org.eclipse.swt.custom.SashForm) GridLayout(org.eclipse.swt.layout.GridLayout) GridData(org.eclipse.swt.layout.GridData) MenuManager(org.eclipse.jface.action.MenuManager) IMenuManager(org.eclipse.jface.action.IMenuManager) Menu(org.eclipse.swt.widgets.Menu) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) IColorManager(org.erlide.ui.util.IColorManager) ColorManager(org.erlide.ui.util.ColorManager)

Example 27 with IDocumentListener

use of org.eclipse.jface.text.IDocumentListener in project tmdm-studio-se by Talend.

the class XMLSourceViewer method installValidator.

private void installValidator() {
    if (document != null) {
        final XMLValidator validator = new XMLValidator(document, annotationModel);
        IDocumentListener validateListener = new IDocumentListener() {

            public void documentChanged(DocumentEvent event) {
                validator.validate(document);
            }

            public void documentAboutToBeChanged(DocumentEvent event) {
            }
        };
        document.addDocumentListener(validateListener);
    }
}
Also used : IDocumentListener(org.eclipse.jface.text.IDocumentListener) DocumentEvent(org.eclipse.jface.text.DocumentEvent) XMLValidator(com.amalto.workbench.widgets.xmlviewer.validator.XMLValidator)

Example 28 with IDocumentListener

use of org.eclipse.jface.text.IDocumentListener in project tmdm-studio-se by Talend.

the class ElementFKInfoFormatViewer method installValidator.

private void installValidator() {
    IDocumentListener validateListener = new IDocumentListener() {

        public void documentChanged(DocumentEvent event) {
            Set<Annotation> updatedAnnotations = getAnnotationer().updateAnnotations(annotationModel, event);
            if (propertyChangeListener != null) {
                // $NON-NLS-1$ //$NON-NLS-2$
                propertyChangeListener.propertyChange(new PropertyChangeEvent("", "", null, updatedAnnotations.size() == 0));
            }
        }

        public void documentAboutToBeChanged(DocumentEvent event) {
        }
    };
    document.addDocumentListener(validateListener);
}
Also used : PropertyChangeEvent(org.eclipse.jface.util.PropertyChangeEvent) IDocumentListener(org.eclipse.jface.text.IDocumentListener) DocumentEvent(org.eclipse.jface.text.DocumentEvent) Annotation(org.eclipse.jface.text.source.Annotation)

Aggregations

IDocumentListener (org.eclipse.jface.text.IDocumentListener)28 DocumentEvent (org.eclipse.jface.text.DocumentEvent)27 IDocument (org.eclipse.jface.text.IDocument)11 ArrayList (java.util.ArrayList)6 Document (org.eclipse.jface.text.Document)5 IDocumentExtension3 (org.eclipse.jface.text.IDocumentExtension3)4 IDocumentPartitioner (org.eclipse.jface.text.IDocumentPartitioner)4 FastPartitioner (org.eclipse.jface.text.rules.FastPartitioner)4 Composite (org.eclipse.swt.widgets.Composite)4 List (java.util.List)3 SourceViewer (org.eclipse.jface.text.source.SourceViewer)3 PropertyChangeEvent (org.eclipse.jface.util.PropertyChangeEvent)3 StyledText (org.eclipse.swt.custom.StyledText)3 RGB (org.eclipse.swt.graphics.RGB)3 HashMap (java.util.HashMap)2 Map (java.util.Map)2 IFile (org.eclipse.core.resources.IFile)2 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)2 IStatus (org.eclipse.core.runtime.IStatus)2 BadLocationException (org.eclipse.jface.text.BadLocationException)2