2009-06-16 9 views
5

me pregunto cómo hacer que un editor sólo Eclipse realmente leer .. Mi editor se extiende TextEditor, así que cuando me reimplementar método isEditable a volver siempre falso.cómo hacer leer único editor en Eclipse (Eclipse Plugin para el Desarrollo)

Es la manera más fácil, que evita que el usuario escriba o borre algo en el documento abierto en el editor. Pero aún puede cambiar el contenido del documento, por ejemplo, utilizando Buscar/Reemplazar. Y esto no se desea ...

¿Hay alguna otra manera fácil de lograr este objetivo?

+8

Niza oxymoron- "sólo lectura editor de" – RichardOD

+0

tienes razón: D 1 –

Respuesta

9

quería usar editor en lugar de espectador porque el editor ya estaba hecha, por lo que sólo utiliza un plug-in tercera parte ..

He encontrado mi solución - maybee no muy limpio, pero hace el trabajo y es bastante fácil de lo que gana

métodos theese he anulado:

@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

En los estilos SWT, especifique SWT.READ_ONLY. Esto debería rechazar todas las API que modifican el documento (con la excepción de setText(), espero ...)

Si no, por favor file a bug.

-1

¿Por qué está utilizando un editor de texto en lugar de usar un TextViewer?

+0

Porque estoy usin g un editor de terceros que muestre el código fuente generado en el editor de varias páginas –

+0

Pero cuando solo desee mostrar el código fuente, debería pensar en escribir su propio visor. Pero me puedo imaginar, que desea utilizar el resaltado del editor de terceros para mostrar el código. –

0

¿Has intentado crear tu propio SourceViewer? Algo como esto. No he probado el código yo mismo.

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; 
    } 
}