Come creare un editor di sola lettura in Eclipse (Eclipse Plugin Development)
-
05-07-2019 - |
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?
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 ?