Как сделать редактора только для чтения в Eclipse (Разработка плагинов Eclipse)

Насколько я понимаю, вы должны забыть о TCO: вместо того, чтобы спрашивать, находится ли рекурсивный вызов в хвостовой позиции, подумайте в терминах защищенной рекурсии . Этот ответ Я думаю, что это правильно. Вы также можете проверить пост Data and Codata из всегда интересного и интересного блога «Neighbourhood of Infinity». Наконец, проверьте зоопарк космической утечки .

РЕДАКТИРОВАТЬ : Извините, вышеизложенное не решает ваш вопрос о монадических действиях напрямую; Мне интересно увидеть другие ответы, такие как DanielWagner, которые конкретно касаются монады IO.

5
задан Martin Lazar 16 June 2009 в 12:58
поделиться

4 ответа

I wanted to use editor instead of viewer because the editor was already made, so I just used a 3rd party plugin..

I found my solution - maybee not very clean but does the job and is pretty easy so it wins

I've overriden theese methods:

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

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

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

@Override
public boolean isDirty() {
    return false;
}
9
ответ дан 14 December 2019 в 08:58
поделиться

Have you tried to create your own SourceViewer? Something like this. I haven't tried the code myself.

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
ответ дан 14 December 2019 в 08:58
поделиться

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

Если нет, пожалуйста, сообщите об ошибке .

-1
ответ дан 14 December 2019 в 08:58
поделиться

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

-1
ответ дан 14 December 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: