Как сделать редактор только для чтения в Eclipse (Eclipse Plugin Development) - PullRequest
5 голосов
/ 16 июня 2009

Мне интересно, как сделать действительно доступный только для чтения редактор затмений .. Мой редактор расширяет TextEditor , поэтому при переопределении метода isEditable всегда возвращает false .

Это самый простой способ, который запрещает пользователю печатать или удалять что-либо в документе, открытом в редакторе. Но вы все равно можете изменить содержимое документа, например, с помощью поиска / замены. И это не желательно ..

Есть ли другой способ достижения этой цели?

Ответы [ 4 ]

9 голосов
/ 17 июня 2009

Я хотел использовать редактор вместо средства просмотра, потому что редактор уже был создан, поэтому я просто использовал сторонний плагин ..

Я нашел свое решение - возможно, не очень чистое, но делает работу и довольно легко, поэтому оно выигрывает

Я переопределил эти методы:

@Override
public boolean isEditable() {
    return false;
}

@Override
public boolean isEditorInputModifiable() {
    return false;
}

@Override
public boolean isEditorInputReadOnly() {
    return true;
}

@Override
public boolean isDirty() {
    return false;
}
0 голосов
/ 16 июня 2009

Почему вы используете TextEditor вместо TextViewer ?

0 голосов
/ 17 июня 2009

Вы пытались создать свой собственный SourceViewer? Что-то вроде этого. Я сам не пробовал код.

class ReadOnlyViewer extends SourceViewer
{
   protected StyledText createTextWidget(Composite parent, int styles) 
   {
    return new StyledText(parent, styles | SWT.READ_ONLY);
   }
}

class MyEditor extends TextEditor
{
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) 
     {
        fAnnotationAccess= getAnnotationAccess();
        fOverviewRuler= createOverviewRuler(getSharedColors());

        ISourceViewer viewer= new ReadOnlyViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(), styles);
        // ensure decoration support has been created and configured.
        getSourceViewerDecorationSupport(viewer);

        return viewer;
    }
}
0 голосов
/ 16 июня 2009

В стилях SWT укажите SWT.READ_ONLY . Это должно отклонить все API, которые изменяют документ (я надеюсь, за исключением setText () ...)

Если нет, сообщите об ошибке .

...