/* * @see org.eclipse.jface.text.source.AnnotationPainter#findAnnotationModel(org.eclipse.jface.text.source.ISourceViewer) */ protected IAnnotationModel findAnnotationModel(ISourceViewer sourceViewer) { if (sourceViewer instanceof ProjectionViewer) { ProjectionViewer projectionViewer = (ProjectionViewer) sourceViewer; return projectionViewer.getProjectionAnnotationModel(); } return null; }
/** * Implements the contract of {@link * org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)} by forwarding the adapter * requests to the given viewer. * * @param viewer the viewer * @param required the required class of the adapter * @return the adapter or <code>null</code> */ public Object getAdapter(ISourceViewer viewer, Class required) { if (ProjectionAnnotationModel.class.equals(required)) { if (viewer instanceof ProjectionViewer) { ProjectionViewer projectionViewer = (ProjectionViewer) viewer; return projectionViewer.getProjectionAnnotationModel(); } } return null; }
/** Removes the projection ruler column and the painter from the projection viewer. */ protected void doDisableProjection() { if (fPainter != null) { fViewer.removePainter(fPainter); fPainter.dispose(); fPainter = null; } if (fColumn != null) { fViewer.removeVerticalRulerColumn(fColumn); fColumn = null; } }
/** * Enables projection mode. If not yet done, installs the projection ruler column in the viewer's * vertical ruler and installs a painter that indicate the locations of collapsed regions. */ protected void doEnableProjection() { if (fPainter == null) { fPainter = new ProjectionAnnotationsPainter(fViewer, fAnnotationAccess); fPainter.addDrawingStrategy(PROJECTION, getDrawingStrategy()); fPainter.addAnnotationType(ProjectionAnnotation.TYPE, PROJECTION); fPainter.setAnnotationTypeColor( ProjectionAnnotation.TYPE, fSharedTextColors.getColor(getColor())); fViewer.addPainter(fPainter); } if (fColumn == null) { fColumn = new ProjectionRulerColumn(9, fAnnotationAccess); fColumn.addAnnotationType(ProjectionAnnotation.TYPE); fColumn.setHover(createProjectionAnnotationHover()); fViewer.addVerticalRulerColumn(fColumn); } fColumn.setModel(fViewer.getVisualAnnotationModel()); }
/** Disposes this projection support. */ public void dispose() { if (fProjectionListener != null) { fViewer.removeProjectionListener(fProjectionListener); fProjectionListener = null; } }
/** Installs this projection support on its viewer. */ public void install() { fViewer.setProjectionSummary(createProjectionSummary()); fProjectionListener = new ProjectionListener(); fViewer.addProjectionListener(fProjectionListener); }