Ich habe ein Plugin mit Decorator erstellt, das die aktuelle Datei als Eingabe nimmt und den entsprechenden Dekorator anzeigt.Wie update Decorator bei Datei speichern?
Dies funktioniert gut und Dekorateur wird ordnungsgemäß angezeigt, wenn die Sonnenfinsternis zum ersten Mal geladen wird.
Wenn jedoch die Datei geändert wird, wird der Decorator nicht aktualisiert.
Wie kann ich Decorator jedes Mal aktualisieren, wenn die Datei geändert wird? Wie kann ich den Decorator bei einem Ereignis zum Speichern einer Datei aktualisieren?
Dies ist der Beispielcode
public class Decorator implements ILightweightLabelDecorator {
private final ImageDescriptor OVERLAY1 = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/1.png");
private final ImageDescriptor OVERLAY2 = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/2.png");
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void addListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
// IResourceChangeEvent.POST_CHANGE
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
@Override
public void dispose() {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
@Override
public boolean isLabelProperty(Object element, String property) {
// TODO Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void removeListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object, org.eclipse.jface.viewers.IDecoration)
*/
@Override
public void decorate(Object element, IDecoration decoration) {
if (some_condition)
decoration.addOverlay(OVERLAY1);
else
decoration.addOverlay(OVERLAY2);
}
}
Wird es richtig sein Hörer einzurichten durch Zugabe von 'ResourcesPlugin.getWorkspace() addResourceChangeListener (Listener) 'zu' addListener (ILabelProviderListener) 'Methode von' ILightWeightDecorator'? Was kann eine andere Prozedur sein, um den Listener einzurichten? –
Sie könnten es im Decorator-Konstruktor hinzufügen (und in der Dispose-Methode entfernen). –