3
필자는 현재 파일을 입력으로 사용하여 적절한 데코레이터를 표시하는 데코레이터로 플러그인을 만들었습니다.파일 저장시 데코레이터를 업데이트하는 방법은 무엇입니까?
이것은 잘 동작하고 데코레이터가 처음으로로드 될 때 올바르게 표시됩니다.
그러나 파일이 변경되면 데코레이터가 업데이트되지 않습니다.
파일이 수정 될 때마다 데코레이터를 업데이트하려면 어떻게해야합니까? ie 파일 저장 이벤트에서 데코레이터를 업데이트하려면 어떻게해야합니까? 당신이 사용해야 할 것입니다 저장
IDecoratorManager decoratorManager = PlatformUI.getWorkbench().getDecoratorManager();
decoratorManager.update("decorator id");
파일에이 작업을 수행하려면 :
이
당신은 사용하여 특정 ID로 장식을 업데이트IDecoratorManager
을 요청할 수 있습니다 샘플 코드
public class Decorator implements ILightweightLabelDecorator {
private final ImageDescriptor OVERLAY1 = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/1.png");
private final ImageDescriptor OVERLAY2 = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/2.png");
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void addListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
// IResourceChangeEvent.POST_CHANGE
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
@Override
public void dispose() {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
@Override
public boolean isLabelProperty(Object element, String property) {
// TODO Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void removeListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object, org.eclipse.jface.viewers.IDecoration)
*/
@Override
public void decorate(Object element, IDecoration decoration) {
if (some_condition)
decoration.addOverlay(OVERLAY1);
else
decoration.addOverlay(OVERLAY2);
}
}
을 addResourceChangeListener (리스너)''addListener (ILabelProviderListener)'메소드에'ILightWeightDecorator' 메소드를 추가 했습니까? 청취자를 설치하는 다른 절차는 무엇이 될 수 있습니까? –
데코레이터 생성자에 추가 할 수 있습니다 (그리고 dispose 메서드에서 제거 할 수 있음). –