2013-06-27 2 views
0

내가 GEF (그래픽 편집 프레임 워크)를 기반 편집기 작업 및 이클립스 속성보기를 사용하고 있습니다. 내 문제는이보기에서 속성을 변경할 때 편집기가이 변경을 인식하지 못하고 저장하라는 제안을하지 않는다는 것입니다. 어떻게 해결할 수 있습니까? 에디터의 명령 스택 외부 편집을 수행 할 때GEF 편집기 탭 팸플릿보기

+0

당신은 수동으로 다른 편집기를 사용하여 파일을 편집 할 수 있습니다? 파일을 편집 할 수 있는지 확인하고 다른 편집기를 사용하여 파일을 저장할 수 있는지 확인하십시오. 권한 문제 일 수 있습니다. –

+0

실제로 속성보기에서 속성을 편집 할 때 모델에서 변경 사항을 인식합니다. 예를 들어 구성 요소의 이름을 편집 할 수는 있지만 편집자는 저장하라는 제안을하지 않습니다. –

+0

실제로 편집기를 코딩하고 있습니까? 변경 속성보기에서 수없는 경우 편집기 저장할 수 있습니까? – user1125516

답변

0

이 일반적으로 발생합니다. 사실, 더러운 플래그 (당신이 참조하는 저장 제안은) 그 자체 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 사용하여 수행된다.

+0

대단히 감사합니다! –

+0

여러분을 환영합니다! 대답을 유용하게 찾은 경우 올바른 것으로 표시 할 수 있습니까? –