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);
}
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);
}
}
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);
}
Aggregations