2012-06-18 35 views
7

我問了一個question before about VerticalRulers,這個提示我向VerticalRuler添加了第二個列,並試圖給它添加標記,但標記總是出現在標準列上,但是不在我的身上。我添加了第二個行號列來說明我的問題。我如何改變這種行爲?謝謝你的幫助。Eclipse編輯器:在垂直標尺的自定義列上顯示標記

@Override 
protected IVerticalRuler createVerticalRuler(){ 
    IVerticalRuler ruler = super.createVerticalRuler(); 
    ruler2 = (CompositeRuler) ruler; 
    column1 = new AnnotationRulerColumn(100); 
    ruler2.addDecorator(0, column1); 
    ruler2.addDecorator(2, createLineNumberRulerColumn()); 
    column1.addAnnotationType("MARKER"); 
    return ruler; 
} 
public String check_line(){ 
    IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); 
    IFileEditorInput input = (IFileEditorInput)editor.getEditorInput() ; 
    IFile file = input.getFile(); 
    IResource res = (IResource) file; 
    try{ 
     IMarker m = res.createMarker(IMarker.MARKER); 
     m.setAttribute(IMarker.LINE_NUMBER,2); 
     m.setAttribute(IMarker.MESSAGE, "lala"); 
     m.setAttribute(IMarker.TEXT, "test"); 
     m.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH); 
     m.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO); 
    } catch (CoreException e) { ... } 
    return "marker created"; 
} 

enter image description here

+0

讓我知道,如果我的回答沒有幫助你,或者你仍然有問題... –

回答

3

你只需要使用不同的構造函數AnnotationRulerColumn:

AnnotationRulerColumn(int width, IAnnotationAccess annotationAccess) 

可以使用DefaultMarkerAnnotationAccess的說法IAnnotationAccess

protected IVerticalRuler createVerticalRuler(){ 
    IVerticalRuler ruler = super.createVerticalRuler(); 
    CompositeRuler ruler2 = (CompositeRuler) ruler; 
    column1 = new AnnotationRulerColumn(100, new DefaultMarkerAnnotationAccess()); 
    ruler2.addDecorator(0, column1); 
    ruler2.addDecorator(2, createLineNumberRulerColumn()); 
    column1.addAnnotationType("MARKER"); 
    return ruler; 
} 

我假設你有定義了一個註釋類型wit h爲您的標記名稱「MARKER」。 如果不是,請確保爲column1.addAnnotationType("MARKER");使用註釋類型的名稱,而不是標記類型。您可以定義自己的註釋類型,並將其映射到擴展點爲Annotation Types的標記類型。

您的標記/註釋應該顯示在您自己的垂直標尺上。

+0

對不起,我遲到了,但我只是爲了沮喪,所以我做了兩個星期不同的工作。今天我再次嘗試,我很高興它能與DefaultMarkerAnnotationAccess一起使用。現在的問題是,它會在新列和原始列中創建兩次myMarker。 – eactor

+0

問題是註釋類型myMarker繼承自super clase「org.eclipse.ui.workbench.texteditor.warning」,它使標記出現在標準列中 – eactor

相關問題