내가 GEF (그래픽 편집 프레임 워크)를 기반 편집기 작업 및 이클립스 속성보기를 사용하고 있습니다. 내 문제는이보기에서 속성을 변경할 때 편집기가이 변경을 인식하지 못하고 저장하라는 제안을하지 않는다는 것입니다. 어떻게 해결할 수 있습니까? 에디터의 명령 스택 외부 편집을 수행 할 때GEF 편집기 탭 팸플릿보기
답변
이 일반적으로 발생합니다. 사실, 더러운 플래그 (당신이 참조하는 저장 제안은) 그 자체 GEF 그래픽 편집기에 바인딩 org.eclipse.gef.commands.CommandStack
에 의해 제어됩니다. 실제로 (당신의 PropertySheetEntry
구현에
public class GEFAdvancedPropertySection extends AdvancedPropertySection {
public void setInput(IWorkbenchPart part, ISelection selection) {
CommandStack commandStack = (CommandStack) part.getAdapter(CommandStack.class);
if (cs != null)
page.setRootEntry(new GEFPropertySheetEntry(commandStack));
super.setInput(part, selection);
}
}
GEFPropertySheetEntry
의를 :
당신이 AdvancedPropertySection
을 확장하여 속성 시트 편집기를 구현하는 가정하면, 당신은 IWorkbenchPart
에서 CommandStack
어댑터를 취득하고 나중에 사용할 수 있도록 저장해야 위의 예) 저장시 CommandStack
에서 실행중인 org.eclipse.gef.commands.Command
을 통해 모델 변경을 실행해야합니다.
public class GEFPropertySheetEntry extends PropertySheetEntry {
protected CommandStack commandStack;
public GEFPropertySheetEntry(CommandStack commandStack) {
this.commandStack = commandStack;
}
protected void valueChanged(PropertySheetEntry entry) {
GEFCommand command = new GEFCommand();
// here you have to configure the command
// such that it can perform
// the expected model modifications
commandStack.execute(command);
}
}
트릭 원래 편집기 결합 얼룩으로 표시되는 CommandStack
통해 모델 수정을 수행하는 특정 GEFCommand
사용하여 수행된다.
대단히 감사합니다! –
여러분을 환영합니다! 대답을 유용하게 찾은 경우 올바른 것으로 표시 할 수 있습니까? –
당신은 수동으로 다른 편집기를 사용하여 파일을 편집 할 수 있습니다? 파일을 편집 할 수 있는지 확인하고 다른 편집기를 사용하여 파일을 저장할 수 있는지 확인하십시오. 권한 문제 일 수 있습니다. –
실제로 속성보기에서 속성을 편집 할 때 모델에서 변경 사항을 인식합니다. 예를 들어 구성 요소의 이름을 편집 할 수는 있지만 편집자는 저장하라는 제안을하지 않습니다. –
실제로 편집기를 코딩하고 있습니까? 변경 속성보기에서 수없는 경우 편집기 저장할 수 있습니까? – user1125516