2011-10-07 7 views
0

스윙은 동작을 사용하여 기능을 공유하고 메뉴 항목 및 토바 버튼과 같은 여러 GUI 구성 요소에 상태를 나타냅니다. XUL은 Command 프레임 워크에서 비슷한 접근 방식을 사용합니다.GWT의 응용 프로그램 명령 처리

GWT에서 유사한 요구 사항을 처리하기위한 일반적인/최선의 방법은 무엇입니까? 나는 특히 메뉴 항목이나 버튼의 사용 여부를 표시하는 데 관심이 있습니다.

답변

1

Command 클래스를 사용합니다. GWT MenuItems는 그들과 관련된 명령을 가질 수 있습니다. 여기에 몇 가지 관련 코드 조각은 다음과 같습니다 당신이 printCommand이 printCommand.execute를 호출하여 간단하게 수행 될 수 있습니다

Command printCommand = new Command() { 
     @Override 
     public void execute() { 
     myEventBus.fireEvent(new PrintEvent()); 
     } 
    }; 

MenuItem print = new MenuItem(); 

print.setCommand(printCommand); 

고지(). 예를 들어, ClickHandler가 printCommand.execute()를 호출하는 인쇄 단추를 가질 수 있으므로 위 코드의 메뉴 항목과 똑같은 결과를 가져옵니다.

이제 Swing에서 Action과 The Widget 사이에 교묘 한 상호 작용이있어 Action을 활성화 또는 비활성화하여 모든 위젯을 동시에 활성화 또는 비활성화 할 수 있음을 알고 있습니다. 커맨드는 너무 단단히 묶여 있지 않으며, 스윙에서 한 종류의 원 스톱 활성화/비활성화 기능을 사용하는 것과 같은 GWT에는 아무것도 없다고 생각합니다. 그런 말로 명령을 확장하여 명령과 함께 명령을 실행하는 위젯을 등록 할 수 있으며, 명령에 호출되면 위젯 목록을 통해 필요한대로 활성화 및 비활성화 할 수있는 사용 가능 메쉬가 있습니다.

+0

예, 스윙 구성 요소는 자신을 동작의 PropertyListeners로 등록하므로 동작 상태의 변경 내용을 반영 할 수 있습니다. 당신의 접근 방식, 내가 올바르게 이해했다면 (커프에서 벗어난 것을 알 수 있습니다 :)), Command 컬렉션과 명령 이름과 위젯을 사용하여 Command를 위젯에 매핑하는 다른 맵 유형 구조를 유지하는 ActionManager의 일부 유형을 설정해야합니다 ids. – user697750

+0

솔루션의 비용과 GUI의 복잡성의 균형을 맞추십시오. 같은 행동을 12 개의 다른 위젯이 공유한다면 그것은 합리적입니다. 그러나 액션이 하나 또는 두 개의 위젯을 통해서만 액세스 할 수 있다면 활성화/비활성화 호출을 하드 코딩 할 수 있습니다. 하지만 ... 미래의 응용 프로그램에서이 기능을 계속해서 사용하기를 원한다면 ... 이번에는 위젯 몇 개만 사용해도 될만한 가치가 있을지 모릅니다. –

관련 문제