Eclipse Jface에서 IdecorationContext API를 어떻게 사용합니까?
문제
사용하기위한 예가 있습니까? IDecorationContext
라벨 장식을 위해?
그것의 외모로 IDecorationContext
클래스는 일종의 상황에 맞는 장식 지원을 제공하는 것처럼 보이지만, 내 삶의 경우이 기능을 사용하여 샘플 코드를 찾을 수 없습니다 ...
실제로 장식 컨텍스트 기능을 사용한 사람이 있습니까? 그렇다면 어떤 사용 사례를 해결 했습니까?
추신: 이미지 장식을 객체 레이블에 적용하고 객체가 표시되는 위치에 따라 기본 아이콘 크기가 다양합니다 (예 : 테이블 및 트리 항목의 기존의 "작은"아이콘 및 콘텐츠 헤더의 큰 아이콘).
원래 아이콘에 적용되는 장식은 그에 따라 적절한 크기의 장식을 선택해야합니다.
IDecorationContext
내가 필요로하는 것에 대해 법안에 맞는 것 같지만, 문서는 오픈 소스 라이브러리의 사소한 기능에서 기대할 수있는 것만 큼 희소하며 찾을 수있는 예는 없습니다.
GOGLING "idecorationContext" 흥미로운 것을 밝히지 않았기 때문에 나는 다음 사람이 질문을받는 사람이 그들의 대답을 더 빨리 얻을 수 있기를 희망하는 Stackoverflow 군중의 지혜로 돌아갑니다.)
해결책
IdeCorationContext를 사용하지 않았지만 사용하는 것을 볼 수 있습니다. org.eclipse.jface.viewers.LabelDecorator
.
또한 논의됩니다 이 스레드 (대답이 없더라도 적어도 출발점을 줄 수 있습니다)
현재의 접근 방식은 ilightweightlebeldecorator를 사용하여 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) {
}
}
}
...
}