Pregunta

Me pregunto cómo hacer un editor de eclipse realmente de solo lectura. Mi editor extiende TextEditor , así que cuando vuelvo a implementar el método es editable para devolver siempre falso .

Es la forma más fácil, que evita que el usuario escriba o elimine cualquier cosa en el documento abierto en el editor. Pero aún puede cambiar el contenido del documento, por ejemplo, utilizando buscar / reemplazar. Y esto no es deseado ..

¿Hay alguna otra forma sencilla de lograr este objetivo?

¿Fue útil?

Solución

Quería usar el editor en lugar del visor porque el editor ya estaba creado, así que solo usé un complemento de terceros ..

Encontré mi solución: puede que no esté muy limpia pero hace el trabajo y es bastante fácil por lo que gana

He anulado estos métodos:

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

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

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

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

Otros consejos

¿Ha intentado crear su 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;
    }
}

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 es así, envíe un error .

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top