10

I need to prevent TextViewer making new lines after I press Enter key in case of preventNewLines flag is enabled.

I have this piece of code:

TextViewer myTextViewer = new TextViewer (myGroup, SWT.V_SCROLL 
                                          | SWT.FULL_SELECTION 
                                          | SWT.BORDER | SWT.WRAP);
myTextViewer.setDocument(new Document(myText));
StyledText myStyledText = myTextViewer.getTextWidget();

myStyledText.addTraverseListener(new TraverseListener() {
     @Override
     public void keyTraversed(TraverseEvent e) {
         if (e.detail == SWT.TRAVERSE_RETURN) {
            if (preventNewLines) 
               e.doit = false;
         }
     }
});

But it makes new lines anyway... What am I doing wrong? Could anybody please post me the correct code how to prevent it?

EDIT: OK, I've found the answer by luck, I hope it helps to someone else, maybe...

myStyledText.addVerifyKeyListener(new VerifyKeyListener() {

    @Override
    public void verifyKey(VerifyEvent e) {
        if (preventNewLines && 
            (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR)) {
           e.doit = false;
        }
    }
});
HQCasanova
  • 1,158
  • 1
  • 10
  • 15
uniquepito
  • 833
  • 2
  • 9
  • 17

1 Answers1

0

This has been answered here https://stackoverflow.com/a/7589098/18445

@Override
public boolean isNavigationEvent(ColumnViewer viewer, Event event) {
    return event.keyCode == SWT.CR || event.keyCode == SWT.KEYPAD_CR;
}
Community
  • 1
  • 1
j.davies
  • 2,321
  • 1
  • 19
  • 24