2012-06-18 43 views
7

Tôi đã hỏi question before about VerticalRulers, với gợi ý này tôi đã thêm Cột thứ hai vào VerticalRuler và cố gắng thêm Marker vào nó, nhưng Marker luôn xuất hiện trên cột tiêu chuẩn, nhưng không phải của tôi. Tôi đã thêm cột số thứ hai để minh họa sự cố của mình. Làm cách nào để thay đổi hành vi này? Cảm ơn vì bất kì sự giúp đỡ.Trình chỉnh sửa Eclipse: hiển thị điểm đánh dấu trên cột tùy chỉnh của thước dọc

@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

Hãy cho tôi biết, nếu câu trả lời của tôi không giúp bạn hoặc bạn vẫn gặp sự cố ... –

Trả lời

3

Bạn chỉ cần sử dụng một constructor khác nhau cho AnnotationRulerColumn:

AnnotationRulerColumn(int width, IAnnotationAccess annotationAccess) 

Bạn có thể sử dụng DefaultMarkerAnnotationAccess cho lập luận 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; 
} 

Tôi giả sử bạn có đã định nghĩa một loại chú thích h tên "MARKER" cho điểm đánh dấu của bạn. Nếu không, hãy đảm bảo sử dụng tên của loại chú thích, KHÔNG đánh dấu loại, cho column1.addAnnotationType("MARKER");. Bạn có thể xác định loại chú thích của riêng mình và ánh xạ nó tới loại điểm đánh dấu có điểm mở rộng Annotation Types.

Dấu/chú thích của bạn sau đó sẽ hiển thị trên thước kẻ dọc của riêng bạn.

+0

Xin lỗi vì đã trả lời muộn, nhưng tôi đã thất vọng vì vậy tôi đã làm việc khác 2 tuần trước. Hôm nay tôi đã thử lại và tôi rất vui vì nó hoạt động với DefaultMarkerAnnotationAccess. Vấn đề bây giờ là, nó tạo myMarker hai lần trong cột mới và trong cột ban đầu. – eactor

+0

Vấn đề là loại chú thích myMarker được kế thừa từ siêu kết nối "org.eclipse.ui.workbench.texteditor.warning" làm cho điểm đánh dấu xuất hiện trong cột standart ngoài – eactor

Các vấn đề liên quan