2012-12-14 5 views
0

그래서 하나 개의 슈퍼 클래스, 복합 확장하고 UIBinder를 사용하여 블록 각각 다른 가지고, 레이아웃두 번

class Block extends Composite 
내가 그 일에 대한 두 개의 서브 클래스를 생성 할

을 만드는 데 추가해야 할 아이콘 집합입니다. 예 : InactiveBlock 및 ActiveBlock.

내 문제는 두 블록 (아이콘 및 일부 단추, 레이블)의 레이아웃을 UIBinder를 통해 만들어서 해당 UIBinder (및 이벤트)를 추가하여 메인 블록.

분명히 나는 ​​

나는이 작업을 수행 할 수있는 방법을
class ActiveBlock extends Block, Composite 
    add(initWidget(UIBinder.create(this))); 

같은 일을 할 수없는 이유는 무엇입니까?

+0

두 개의 별도 위젯, 활성 블록 하나와 비활성 블록 하나를 만들 수 있습니다. – NickD

+0

아이콘을 위젯에 전달해야하므로 블록을 설정할 수 있습니다. 그런 다음 두 개의 블록 위젯을 만들고 아이콘을 전달할 수 있습니다. – NickD

+0

문제는 비활성 및 활성 블록 모두에서 유사점이 있습니다. 둘 다 이벤트와 동일한 아이콘을가집니다. 나는 많은 중복 코드로 끝날 것이다. –

답변

1

내가 그것을 입력 매개 변수로 생성자 메서드 가진 부울와 하나의 클래스 만들 것 (내 질문은 충분히 명확하지 않은 경우 PS, 나는 정교한 수 있도록 말씀 마세요) (활성/비활성).

이벤트 핸들러, 이미지 등 모든 공통 필드와 메소드를 정의 할 수 있습니다. 다음 생성자 메소드를 사용하여 요소 및 핸들러를 기본 위젯에 추가하십시오. 무언가가 모든 인스턴스에 추가 될 것입니다. 인스턴스가 활성 상태인지 아닌지에 따라 다릅니다.

이 경우에는 중복 코드로 끝나지 않고 여전히 uibinder를 사용하는 이점이 있으며 결과적으로 코드는 읽기에 충분할 정도로 간단 해집니다.