2009-06-16 7 views
5

Я интересно, как сделать действительно читать только затмение редактор .. Мой редактор расширяет TextEditor, поэтому, когда я переописать метод IsEditable всегда возвращать false.Как сделать читать только редактор в Eclipse (Eclipse Plugin Development)

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

Есть ли какой-либо другой способ азиса, как достичь этой цели?

+8

Nice oxymoron- «только для чтения редактор» – RichardOD

+0

Вы правы: D +1 –

ответ

9

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

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

Я перекрываться theese методы:

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

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

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

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

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

Если нет, пожалуйста, file a bug.

-1

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

+0

Потому что я нно g сторонним редактором для отображения сгенерированного исходного кода в многостраничном редакторе –

+0

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^