Как сделать редактор только для чтения в Eclipse (Eclipse Plugin Development)

StackOverflow https://stackoverflow.com/questions/1001322

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Другие советы

Вы пытались создать свой собственный 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;
    }
}

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top