下面列出了怎么用org.eclipse.jface.text.source.IVerticalRuler的API类实例代码及写法,或者点击链接到github查看源代码。
private void refreshLineNumberColumn(){
Display.getDefault().asyncExec(() ->{
IVerticalRuler ruler= getVerticalRuler();
// The following sequence mimics what happens during the setInput method.
// For now, this is the only known way to get the LineNumberColumn to update its visible status.
// called at the end of org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(Composite)
if (ruler instanceof CompositeRuler) {
updateContributedRulerColumns((CompositeRuler) ruler);
}
// called at the end of AbstractDecoratedTextEditor.doSetInput(IEditorInput)
RulerColumnDescriptor lineNumberColumnDescriptor= RulerColumnRegistry.getDefault().getColumnDescriptor(LineNumberColumn.ID);
if (lineNumberColumnDescriptor != null) {
IColumnSupport columnSupport= (IColumnSupport)getAdapter(IColumnSupport.class);
columnSupport.setColumnVisible(lineNumberColumnDescriptor, isLineNumberRulerVisible() || isPrefQuickDiffAlwaysOn());
}
// force redraw of the ruler`s content.
IVerticalRuler verticalRuler = getVerticalRuler();
if (verticalRuler != null) {
verticalRuler.update();
}
});
}
private OverrideIndicatorAnnotation findOverrideIndicatorAnnotation() {
IDocument document = getDocument();
IVerticalRuler verticalRuler = getVerticalRuler();
int lineOfLastMouseButtonActivity = verticalRuler.getLineOfLastMouseButtonActivity();
IAnnotationModelExtension2 annotationModel = (IAnnotationModelExtension2) verticalRuler.getModel();
if (annotationModel != null) {
Iterator<?> iterator = ImmutableSet.<Object>of().iterator();
try {
IRegion line = document.getLineInformation(lineOfLastMouseButtonActivity);
iterator = annotationModel.getAnnotationIterator(line.getOffset(), line.getLength() + 1, true, true);
} catch (BadLocationException e) {
}
while (iterator.hasNext()) {
Annotation annotation = (Annotation) iterator.next();
if (annotation instanceof OverrideIndicatorAnnotation) {
return (OverrideIndicatorAnnotation) annotation;
}
}
}
return null;
}
@Override
protected ISourceViewer createTypeScriptSourceViewer(Composite parent, IVerticalRuler verticalRuler,
IOverviewRuler overviewRuler, boolean isOverviewRulerVisible, int styles, IPreferenceStore store) {
return new AdaptedSourceViewer(parent, verticalRuler, overviewRuler, isOverviewRulerVisible, styles,
store) {
@Override
protected void handleDispose() {
super.handleDispose();
// dispose the compilation unit adapter
dispose();
fEditor.remove(this);
if (fEditor.isEmpty()) {
fEditor = null;
fSite = null;
}
fSourceViewer.remove(this);
if (fSourceViewer.isEmpty())
fSourceViewer = null;
}
};
}
@Override
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout compositeLayout = new GridLayout(1, false);
compositeLayout.marginHeight = 0;
compositeLayout.marginWidth = 0;
compositeLayout.horizontalSpacing = 0;
compositeLayout.verticalSpacing = 0;
composite.setLayout(compositeLayout);
topPanel = new Composite(composite, SWT.NONE);
topPanel.setLayout(new StackLayout());
topPanel.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
Composite editorComposite = new Composite(composite, SWT.NONE);
editorComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
FillLayout fillLayout = new FillLayout(SWT.VERTICAL);
fillLayout.marginHeight = 0;
fillLayout.marginWidth = 0;
fillLayout.spacing = 0;
editorComposite.setLayout(fillLayout);
ISourceViewer result = doCreateSourceViewer(editorComposite, ruler, styles);
return result;
}
protected ISourceViewer createSourceViewer( Composite parent,
IVerticalRuler ruler, int styles )
{
fAnnotationAccess = getAnnotationAccess( );
fOverviewRuler = createOverviewRuler( getSharedColors( ) );
ProjectionViewer viewer = new ProjectionViewer( parent,
ruler,
getOverviewRuler( ),
isOverviewRulerVisible( ),
styles );
ProjectionSupport fProjectionSupport = new ProjectionSupport( viewer,
getAnnotationAccess( ),
getSharedColors( ) );
fProjectionSupport.addSummarizableAnnotationType( "org.eclipse.ui.workbench.texteditor.error" ); //$NON-NLS-1$
fProjectionSupport.addSummarizableAnnotationType( "org.eclipse.ui.workbench.texteditor.warning" ); //$NON-NLS-1$
fProjectionSupport.install( );
// Ensures source viewer decoration support has been created and
// configured.
getSourceViewerDecorationSupport( viewer );
return viewer;
}
public PythonSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
super(parent, ruler, null, false, styles, new PyAbstractIndentGuidePreferencesProvider() {
@Override
public int getTabWidth() {
return DefaultIndentPrefs.get(null).getTabWidth();
}
});
StyledText text = this.getTextWidget();
text.addBidiSegmentListener(new BidiSegmentListener() {
@Override
public void lineGetSegments(BidiSegmentEvent event) {
try {
event.segments = getBidiLineSegments(event.lineOffset);
} catch (BadLocationException x) {
// ignore
}
}
});
updateViewerFont();
updateViewerColors();
getPreferenceStore().addPropertyChangeListener(propertyChangeListener);
}
@Override
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
if (log.isDebugEnabled())
log.debug("Creating Xtext source viewer.");
// overwrite superclass implementation to allow folding
fAnnotationAccess = createAnnotationAccess();
fOverviewRuler = createOverviewRuler(getSharedColors());
ISourceViewer projectionViewer = sourceViewerFactory.createSourceViewer(parent, ruler, getOverviewRuler(),
isOverviewRulerVisible(), styles);
getSourceViewerDecorationSupport(projectionViewer);
return projectionViewer;
}
@Override
public XtextSourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler,
IOverviewRuler overviewRuler, boolean showsAnnotationOverview, int styles) {
XtextSourceViewer result = new XtextSourceViewer(parent, ruler, overviewRuler, showsAnnotationOverview, styles);
membersInjector.injectMembers(result);
return result;
}
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
fOverviewRuler = createOverviewRuler(getSharedColors());
ISourceViewer viewer = new ProjectionViewer(parent,
ruler, getOverviewRuler(), isOverviewRulerVisible(), styles);
// ensure decoration support has been created and configured.
getSourceViewerDecorationSupport(viewer);
return viewer;
}
/**
* {@inheritDoc}
*/
@Override
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
final ISourceViewer viewer = super.createSourceViewer(parent, ruler, styles);
if (isIndenGuidesSupported()) {
IndentGuidesPainter.installToViewer(viewer, new IndentGuidesModel(this));
}
viewer.addTextInputListener(new TextInputListener());
return viewer;
}
@Override
public XtextSourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler,
IOverviewRuler overviewRuler, boolean showsAnnotationOverview, int styles) {
RichStringAwareSourceViewer result = new RichStringAwareSourceViewer(parent, ruler, overviewRuler, showsAnnotationOverview, styles);
result.merger = merger;
return result;
}
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles)
{
ProjectionViewer viewer = new ProjectionViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(),
styles);
// ensure decoration support has been created and configured.
// @see org.eclipse.ui.texteditor.ExtendedTextEditor#createSourceViewer
getSourceViewerDecorationSupport(viewer);
return viewer;
}
protected final ISourceViewer createSourceViewer(Composite parent, IVerticalRuler verticalRuler, int styles) {
IPreferenceStore store = getPreferenceStore();
ISourceViewer viewer = createTypeScriptSourceViewer(parent, verticalRuler, getOverviewRuler(),
isOverviewRulerVisible(), styles, store);
// JavaUIHelp.setHelp(this, viewer.getTextWidget(),
// IJavaHelpContextIds.JAVA_EDITOR);
TypeScriptSourceViewer TypeScriptSourceViewer = null;
if (viewer instanceof TypeScriptSourceViewer)
TypeScriptSourceViewer = (TypeScriptSourceViewer) viewer;
/*
* This is a performance optimization to reduce the computation of the
* text presentation triggered by {@link #setVisibleDocument(IDocument)}
*/
if (TypeScriptSourceViewer != null && isFoldingEnabled()
&& (store == null || !store.getBoolean(PreferenceConstants.EDITOR_SHOW_SEGMENTS))) {
// TypeScriptSourceViewer.prepareDelayedProjection();
}
// // do not even install projection support until folding is actually
// // enabled
// if (isFoldingEnabled()) {
// installProjectionSupport(TypeScriptSourceViewer);
// }
// fProjectionModelUpdater =
// JavaScriptPlugin.getDefault().getFoldingStructureProviderRegistry()
// .getCurrentFoldingProvider();
// if (fProjectionModelUpdater != null) {
// fProjectionModelUpdater.install(this, projectionViewer);
// }
// ensure source viewer decoration support has been created and
// configured
getSourceViewerDecorationSupport(viewer);
return viewer;
}
@Override
protected ISourceViewer createSourceViewer(Composite parent, final IVerticalRuler ruler, int styles)
{
fAnnotationAccess = getAnnotationAccess();
fOverviewRuler = createOverviewRuler(getSharedColors());
// Need to make it a projection viewer now that we have folding...
CommonProjectionViewer viewer = new CommonProjectionViewer(parent, ruler, getOverviewRuler(),
isOverviewRulerVisible(), styles)
{
@SuppressWarnings("rawtypes")
@Override
public Object getAdapter(Class adapter)
{
if (AbstractThemeableEditor.class == adapter || ITextEditor.class == adapter)
{
return AbstractThemeableEditor.this;
}
return super.getAdapter(adapter);
}
};
// ensure decoration support has been created and configured.
getSourceViewerDecorationSupport(viewer);
fThemeableEditorColorsExtension.createBackgroundPainter(viewer);
return viewer;
}
@Override
public XtextSourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler,
IOverviewRuler overviewRuler, boolean showsAnnotationOverview, int styles) {
final SARLSourceViewer result = new SARLSourceViewer(parent, ruler, overviewRuler, showsAnnotationOverview, styles);
try {
final Field field = RichStringAwareSourceViewer.class.getDeclaredField("merger"); //$NON-NLS-1$
field.setAccessible(true);
field.set(result, this.merger);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException exception) {
Exceptions.sneakyThrow(exception);
}
this.memberInjector.injectMembers(result);
return result;
}
/**
* Creates the vertical ruler to be used by this editor.
*
* @return the vertical ruler
*/
protected IVerticalRuler createVerticalRuler( )
{
CompositeRuler ruler = createCompositeRuler( );
ruler.addDecorator( 0, createLineNumberRulerColumn( ) );
return ruler;
}
/**
* Creates the source viewer to be used by this editor.
*
* @param parent
* the parent control
* @return the source viewer
*/
protected SourceViewer createSourceViewer( Composite parent )
{
IVerticalRuler ruler = createVerticalRuler( );
Composite composite = new Composite( parent, SWT.BORDER
| SWT.LEFT_TO_RIGHT );
composite.setLayoutData( new GridData( GridData.FILL_BOTH ) );
composite.setLayout( UIUtil.createGridLayoutWithoutMargin( ) );
int styles = SWT.V_SCROLL
| SWT.H_SCROLL
| SWT.MULTI
| SWT.BORDER
| SWT.FULL_SELECTION;
SourceViewer viewer = new SourceViewer( composite, ruler, styles );
viewer.configure( sourceViewerConfiguration );
updateStyledTextColors( viewer.getTextWidget( ) );
JSEditorInput editorInput = new JSEditorInput( expression,
getEncoding( ) );
JSDocumentProvider documentProvider = new JSDocumentProvider( );
try
{
documentProvider.connect( editorInput );
}
catch ( CoreException e )
{
ExceptionHandler.handle( e );
}
viewer.setDocument( documentProvider.getDocument( editorInput ),
ruler == null ? null : ruler.getModel( ) );
return viewer;
}
/**
* Creates the vertical ruler to be used by this editor.
*
* @return the vertical ruler
*/
private IVerticalRuler createVerticalRuler( )
{
IVerticalRuler ruler = createCompositeRuler( );
if ( ruler instanceof CompositeRuler )
{
CompositeRuler compositeRuler = (CompositeRuler) ruler;
compositeRuler.addDecorator( 0, createLineNumberRulerColumn( ) );
}
return ruler;
}
public BaseSourceViewer(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler,
boolean showAnnotationsOverview, int styles, IVerticalIndentGuidePreferencesProvider verticalIndentPrefs) {
super(parent, verticalRuler, overviewRuler, showAnnotationsOverview, styles);
verticalLinesPainter = new VerticalIndentGuidesPainter(
getIndentGuide(verticalIndentPrefs));
StyledText styledText = this.getTextWidget();
verticalLinesPainter.setStyledText(styledText);
styledText.addPaintListener(verticalLinesPainter);
styledText.setLeftMargin(Math.max(styledText.getLeftMargin(), 2));
}
@Override
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
IOverviewRuler overviewRuler = getOverviewRuler();
PySourceViewer viewer = new PySourceViewer(parent, ruler, overviewRuler, isOverviewRulerVisible(), styles,
this);
//ensure decoration support has been created and configured.
getSourceViewerDecorationSupport(viewer);
return viewer;
}
public PySourceViewer(Composite parent, IVerticalRuler ruler, IOverviewRuler overviewRuler,
boolean showsAnnotationOverview, int styles, final PyEditProjection projection) {
super(parent, ruler, overviewRuler, showsAnnotationOverview, styles,
new PyAbstractIndentGuidePreferencesProvider() {
@Override
public int getTabWidth() {
return ((PyEdit) projection).getIndentPrefs().getTabWidth();
}
});
this.projection = new WeakReference<PyEdit>((PyEdit) projection);
}
@Override
protected final ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
LangSourceViewer viewer = doCreateSourceViewer(parent, ruler, styles);
assertInstance(viewer, SourceViewer.class);
assertInstance(viewer, ISourceViewerExt.class);
return viewer;
}
protected LangSourceViewer doCreateSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
LangSourceViewer viewer =
new LangSourceViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(), styles);
// ensure decoration support has been created and configured.
getSourceViewerDecorationSupport(viewer);
return viewer;
}
public TMViewer(Composite parent, IVerticalRuler ruler, int styles) {
super(parent, ruler, styles);
init();
}
public TMViewer(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler,
boolean showAnnotationsOverview, int styles) {
super(parent, verticalRuler, overviewRuler, showAnnotationsOverview, styles);
init();
}
XtextSourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, IOverviewRuler overviewRuler,
boolean showsAnnotationOverview, int styles);
public XtextSourceViewer(Composite parent, IVerticalRuler ruler, IOverviewRuler overviewRuler,
boolean showsAnnotationOverview, int styles) {
super(parent, ruler, overviewRuler, showsAnnotationOverview, styles);
}
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
setViewer(super.createSourceViewer(parent, ruler, styles));
SootPlugin.getDefault().addEditorViewer(getViewer());
return getViewer();
}
/**
* Create, configure and return the SourceViewer.
*
* @see org.eclipse.ui.texteditor.AbstractTextEditor#createSourceViewer(org.eclipse.swt.widgets.Composite, org.eclipse.jface.text.source.IVerticalRuler, int)
*/
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
ProjectionViewer viewer = new ProjectionViewer(parent, ruler, getOverviewRuler(), true, styles);
getSourceViewerDecorationSupport(viewer);
return viewer;
}
protected ISourceViewer createSourceViewer(final Composite parent, final IVerticalRuler ruler, final int styles) {
return new SourceViewer(parent, ruler, styles);
}