2009-06-16 19 views
5

mi chiedo come fare un editor di solo un'eclisse veramente leggere .. Il mio editore si estende TextEditor, così quando ho reimplementare metodo IsEditable per tornare sempre false.Come rendere sola lettura redattore in Eclipse (Eclipse Plugin Development)

È il modo più semplice, che impedisce all'utente di digitare o eliminare qualcosa nel documento aperto nell'editor. Ma puoi ancora modificare il contenuto del documento, ad esempio utilizzando Trova/Sostituisci. E questo non è desiderato ..

C'è qualche altro modo di aesy come raggiungere questo obiettivo?

+8

Nizza oxymoron- "sola lettura editore" – RichardOD

+0

Hai ragione: D +1 –

risposta

9

ho voluto usare il redattore invece di spettatore, perché l'editor è stato già fatto, quindi ho solo usato un plugin 3a parte ..

ho trovato la mia soluzione - probabilmente qualche camera non molto pulita, ma fa il lavoro e è abbastanza facile in modo che vince

ho sovrascritto metodi 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

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

In caso contrario, per favore file a bug.

-1

Perché si utilizza un TextEditor invece di utilizzare un TextViewer?

+0

Perché sto usin g un editor di terze parti per visualizzare il codice sorgente generato nell'editor di più pagine –

+0

Tuttavia, quando si desidera visualizzare solo il codice sorgente, è necessario pensare a scrivere il proprio visualizzatore. Ma posso immaginare che tu voglia usare l'evidenziazione dell'editor di terze parti per mostrare il codice. –

0

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