2011-04-09 4 views
1

http://www.eclipse.org/articles/Article-Decorators/decorators.html을 참조했으며 SDK 데코레이터와 충돌하는 사용자 정의 데코레이터를 사용하는 것은 나쁜 습관임을 이해합니다.플랫폼 SDK가 제공하는 문제 데코레이터를 오버라이드/중지하는 방법

비록 예외가 있습니다. 프로젝트에서 나는 하나의 물리적 리소스 파일 아래 다양한 모델 요소에 대한 정보를 저장합니다. 모델 요소는 프로젝트 탐색기에서 별도의 노드로 표시됩니다. 이러한 노드를 컴파일 할 때 오류가있는 정확한 요소를 나타내는 줄 번호가있는 리소스의 오류를 표시하고 오류가 있음을 반영하여 프로젝트를 수행하려고합니다. 그러나 Project explorer에서 동시에 해당 리소스에 저장된 모든 노드에 문제 마커가있는 것은 아닙니다. 오류가 발생한 노드 만 문제 마커를 가져야합니다.

BOTTOM_LEFT 위치 (경량과 비 사용)에서 맞춤 꾸미기를 설정하려고했지만 SDK 문제 오버레이 쇼가 항상 발생합니다.

다른 방법으로이 작업을 수행 할 수 있습니까?

다음은 예입니다.

emf 모델을 저장하는 nodes.xml 파일이 있습니다. nodel.xml은 다음과 같습니다.

<xml> 
<rootnode name="root"> 
    <childnode name="child1"/> 
    <childnode name="child2"/> 
    <rootnode name="subroot"> 
    <childnode name="subchild1"/> 
    <childnode name="subchild2"/> 
    </rootnode> 
</rootnode> 
</xml> 

위의 모든 노드는 프로젝트 탐색기에서 프로젝트의 트리 구조의 다른 노드로 나타납니다. 유효성 검사의 일부로 각 노드 루트, child1, child2 등을 별도로 확인합니다. child1에 대한 유효성 검사가 실패하는 경우 3 행의 nodes.xml 파일에서 Problem View에 오류가 표시되도록 문제 마커를 추가하려고하지만 프로젝트 탐색기에서 bottom_left 오버레이가 child1, root 및 project 노드에만 표시되도록하고 싶습니다. child2, subroot 등과 같은 다른 노드에서.

희망이 나는 습득하려는 것을 설명합니다.

답변

1

나는 당신이 취하는 접근 방식이 올바른 것이라고 생각하지 않습니다. 바닐라 자바 ​​컴파일러가 생각한다고해도 세상에서 문제가되지 않기 때문에 일부 Java 파일에서 문제를 제거하려는 것 같습니다.

대신 org.eclipse.core.resources.IResourceChangeListener을 작업 영역에 등록해야합니다. org.eclipse.core.resources.IResourceChangeEvent.POST_BUILD 플래그로 통지되도록 설정하십시오. 이와 같이 :

ResourcesPlugin.getWorkspace.addResourceChangeListener(myListener, POST_BUILD); 

플러그인을 시작할 때이 작업을 수행해야합니다. 이렇게하면 작업 공간에있는 모든 프로젝트를 빌드 한 후에 알림이 표시됩니다. 당신이 관심 팝이다 프로젝트, 당신은 자바 문제 마커을 모두 삭제할 수 있습니다 경우 :

interestingProject.deleteMarkers(
    IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, 
    true, IResource.DEPTH_INFINITE); 

이 자바 컴파일러가 추가하는 모든 Java 마커를 제거합니다. 그런 다음 필요에 따라 다시 추가 할 수 있습니다.

위의 작업은 빠르지 않으며 중간 크기 프로젝트의 모든 파일을 검사하는 데 몇 초 정도 걸릴 것입니다. 정확히 어떤 파일을 지울 지에 대해 훨씬 더 지능적 일 수는 있지만 더 많은 코드와 API에 대한 깊은 지식이 필요합니다. 위의 발췌 문장은 당신을 시작할 수있을만큼 충분해야합니다.

+0

Andrew, 그건 내가 원하는 것만은 아니다. 여기에 샘플을 보내 드리겠습니다. – aarati

관련 문제