2010-01-08 5 views
7

레이블 장식에 IDecorationContext을 사용하는 예제가 있습니까?Eclipse JFace에서 IDecorationContext API를 사용하는 방법

이 사람이 실제로 사용 했 ... 그것의 모양으로

IDecorationContext 클래스는 문맥 장식 지원의 어떤 종류를 제공하는 것,하지만 내 인생,이 기능을 사용하는 샘플 코드를 찾을 수 없습니다 데코레이션 컨텍스트 기능이 있다면 어떤 유스 케이스가 해결 했습니까?


PS : 나는 테이블 - 및 트리 레이블과 객체가 표시되는 위치에 따라 기본 아이콘 크기가 다릅니다 (예를 들어 전통적인 "작은"아이콘을 반대 할 이미지 장식을 적용 할 수있는 방법을 찾고 항목 및 콘텐츠 머리글에 대한 더 큰 아이콘).

원래 아이콘에 적용된 장식은 그에 따라 적절한 크기의 장식을 선택해야합니다.

IDecorationContext은 내가 필요로하는 청구서에 적합하지만 문서는 오픈 소스 라이브러리의 부수적 인 기능에서 기대할 수있는 희박한 것으로 발견 될만한 예제가 없습니다.

중 하나 흥미로운 아무것도 공개하지 않았다 "IDecorationContext"에 대한 인터넷 검색, 그래서 질문을 받고 다음 사람이 더 빨리 자신의 답변을 얻을 수있을 것입니다 희망에 StackOverflow의 군중의 지혜로 전환,

답변

7

) 나는하지 않았다 IDecorationContext를 사용하지만, org.eclipse.jface.viewers.LabelDecorator에서 사용 된 것을 볼 수 있습니다.

그것은 또한 this thread (아무 대답이없는 경우에도, 즉 적어도 당신에게 출발점을 제공 할 수 있습니다)

내 현재의 접근 방식은 ILightweightLabelDecorator에를 사용하여 org.eclipse.ui.decorators을 확장하는 것입니다 설명되어

각각의 아이콘에 대체 오버레이를 추가하십시오.

public class ProjectLabelDecorator extends LabelProvider 
    implements ILightweightLabelDecorator { 

    ... 

    public void decorate(Object element, IDecoration decoration) { 
     if (element instanceof IFolder) { 
     IFolder folder = (IFolder) element; 
    try { 
      if (folder.getProject().hasNature("rttdt.nature")) { 
       if (ProjectNature.isTestcase(folder)) { 
        IDecorationContext context = 
         decoration.getDecorationContext(); 
        if (context instanceof DecorationContext) { 
         ((DecorationContext) context).putProperty(
         IDecoration.ENABLE_REPLACE, Boolean.TRUE); 
        } 
        decoration.addOverlay(fTestcaseOverlay, 
         IDecoration.REPLACE); 
       } 
     } catch (CoreException e) { 
     } 
     } 
    } 

    ... 
} 
+0

참고 : 이것은 2000 번째 답변입니다. – VonC

관련 문제