Domanda

Mi chiedo come creare un editor di eclissi di sola lettura. Il mio editor estende TextEditor , quindi quando reimplemento il metodo è modificabile per restituire sempre false .

È il modo più semplice, che impedisce all'utente di digitare o eliminare qualsiasi cosa nel documento aperto nell'editor. Tuttavia, puoi comunque modificare il contenuto del documento, ad esempio, utilizzando trova / sostituisci. E questo non è desiderato ..

Esiste un altro modo sdolcinato per raggiungere questo obiettivo?

È stato utile?

Soluzione

Volevo usare l'editor anziché il visualizzatore perché l'editor era già stato creato, quindi ho appena usato un plugin di terze parti ..

Ho trovato la mia soluzione: forse non è molto pulita ma fa il lavoro ed è abbastanza facile, quindi vince

Ho scavalcato questi metodi:

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

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

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

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

Altri suggerimenti

Hai provato a creare il tuo SourceViewer? Qualcosa come questo. Non ho provato il codice da solo.

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

Negli stili SWT, specifica SWT.READ_ONLY . Questo dovrebbe rifiutare tutte le API che modificano il documento (ad eccezione di setText (), spero ...)

In caso contrario, segnala un bug .

Perché stai usando un TextEditor invece di usare un TextViewer ?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top