package com.laboki.eclipse.plugin.smartsave.listeners;
import org.eclipse.jface.text.source.IAnnotationModel;
import org.eclipse.jface.text.source.IAnnotationModelListener;
import org.eclipse.jface.text.source.SourceViewer;
import com.google.common.base.Optional;
import com.laboki.eclipse.plugin.smartsave.contexts.EditorContext;
public class AnnotationsListener extends BaseListener
implements
IAnnotationModelListener {
private final Optional<IAnnotationModel> model =
AnnotationsListener.getAnnotationModel();
@Override
public void
add() {
if (!this.model.isPresent()) return;
this.model.get().addAnnotationModelListener(this);
}
@Override
public void
remove() {
if (!this.model.isPresent()) return;
this.model.get().removeAnnotationModelListener(this);
}
@Override
public void
modelChanged(final IAnnotationModel model) {
BaseListener.scheduleSave();
}
private static Optional<IAnnotationModel>
getAnnotationModel() {
final Optional<SourceViewer> view =
EditorContext.getView(EditorContext.getEditor());
if (!view.isPresent()) return Optional.absent();
return Optional.fromNullable(view.get().getAnnotationModel());
}
}