2012-06-18 13 views
7

Bir question before about VerticalRulers sordu, bu ipucu ile VerticalRuler'a ikinci bir Sütun ekledim ve buna bir İşaretçi eklemeye çalıştım, ancak İşaretçi her zaman standart Sütunta görünür, ancak benimkinde değil. Sorunumu göstermek için ikinci bir satır numarası sütunu ekledim. Bu davranışı nasıl değiştiririm? Herhangi bir yardım için teşekkürler.Eclipse düzenleyicisi: dikey cetvelin özel sütununda işaretçileri göster

@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

Cevabım size yardımcı olmazsa ya da hala sorunlarınız varsa ... –

cevap

3
sadece AnnotationRulerColumn için farklı bir yapıcı kullanmak zorunda

:

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; 
} 

bende sende varsayalım:

AnnotationRulerColumn(int width, IAnnotationAccess annotationAccess) 

Sen argüman IAnnotationAccess için DefaultMarkerAnnotationAccess kullanabilirsiniz ek açıklama türü tanımlanmış İşaretçiniz için "MARKER" adı. Değilse, column1.addAnnotationType("MARKER"); için ek açıklama türünün değil, işaret türünün adını kullandığınızdan emin olun. Kendi ek açıklama türünüzü tanımlayabilir ve Annotation Types uzantı noktasıyla bir işaretçi türüne eşleyebilirsiniz.

İşaretçiniz/ek açıklamanız kendi dikey cetvelinizde görünmelidir.

+0

Geç cevap verdiğim için özür dilerim, ama sadece hayal kırıklığına uğradım, bu yüzden son 2 haftada farklı işler yaptım. Bugün tekrar denedim ve DefaultMarkerAnnotationAccess ile çalıştığı için mutluyum. Sorun şu ki, myMarker'ı yeni Sütun'da ve orijinalinde iki kez oluşturuyor. – eactor

+0

Sorun, myMarker'ın "org.eclipse.ui.workbench.texteditor.warning" süper silgisinden miras alınan ek açıklama türü oldu. – eactor