2009-06-16 8 views
5

Ich frage mich lesen machen, wie eine wirklich nur lesen Eclipse-Editor zu machen .. Mein Redakteur Texteditor erweitert, so, wenn ich Methode reimplementieren isEditable immer zurückzukehren falsch.Wie nur Editor in Eclipse (Eclipse Plugin Development)

Dies ist der einfachste Weg, der verhindert, dass Benutzer etwas in das im Editor geöffnete Dokument eingeben oder löschen. Sie können jedoch den Inhalt des Dokuments beispielsweise mit find/replace ändern. Und das ist nicht erwünscht.

Gibt es noch einen anderen Weg, wie man dieses Ziel erreichen kann?

+8

Nizza oxymoron- – RichardOD

+0

Du hast Recht "nur Editor lesen": D +1 –

Antwort

9

Ich wollte Editor statt Betrachter verwenden, da der Editor bereits gemacht wurde, so habe ich nur ein 3rd-Party-Plugin ..

ich meine Lösung gefunden - maybee nicht sehr sauber, aber macht den Job und ist recht einfach, so dass es

ich habe außer Kraft gesetzt theese Methoden gewinnt:

@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

Geben Sie in den SWT-Stilen SWT.READ_ONLY an. Dies sollte alle APIs ablehnen, die das Dokument modifizieren (mit Ausnahme von setText(), hoffe ich ...)

Wenn nicht, bitte file a bug.

-1

Warum verwenden Sie einen TextEditor statt TextViewer?

+0

Weil ich usin g ein 3rd-Party-Editor zum Anzeigen generierten Quellcodes im mehrseitigen Editor –

+0

Wenn Sie jedoch nur den Quellcode anzeigen möchten, sollten Sie darüber nachdenken, einen eigenen Viewer zu schreiben. Aber ich kann mir vorstellen, dass Sie die Hervorhebung des 3rd-Party-Editors verwenden möchten, um den Code anzuzeigen. –

0

Haben Sie versucht, einen eigenen SourceViewer zu erstellen? Etwas wie das. Ich habe den Code nicht selbst ausprobiert.

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