2013-02-21 1 views
1

Eclipse RCP를 기반으로하는 응용 프로그램이 있으며 최종 사용자가 다양한 사용자 정의 대시 보드 (보기)를 작성할 수있는 사용자 정의 UI 빌더를 작성하고 싶습니다. 나는 UI 요소, 속성 요소 UI 빌더 등을 포함한 팔레트를 포함하는 것과 같은 몇 가지 UI 빌더 (비슷하게 WindowBuilder SWT)를 구현하고 싶습니다. 결과는 XML 파일에 저장되며, RCP 응용 프로그램이로드되고이 XML 파일에 View가 작성되어야합니다. 불행히도 어디에서 시작 해야할지 (캐치가 무엇인지), 사용자 정의 UI 빌더를 작성하는 예가 무엇인지 모르겠습니다.Eclipse RCP에서 사용자 정의 UI 작성기를 작성하는 방법

편집 : 이미 완성한 UI 작성기가 있으므로 완전한 초보자이지만 새로운 기능을 추가하고 싶습니다. XML 파일 저장/불러 오기는 해결할 필요가 없습니다. 귀찮게하는 것은 실제 UI 작성기입니다 (예 : 팔레트 UI 요소 만들기, 마우스를 사용하여 요소 복사 및 이동, 이동할 여러 요소 선택).

감사합니다. 조언.

답변

3

나는 비슷한 요구 사항을 가지고 있었지만 RCP를 사용하지 않았습니다. UI를 다시로드 할 때마다로드 될 XML에 작성된 UI의 구조를 저장하려고한다고 알고 있습니다. 따라서 XML을 사용하는 경우 UI를 나타내는 XML 표준 문서에 스키마 또는 XSD 템플릿을 사용해야합니다. UI, 샘플 : 버튼, 텍스트 필드, 라벨 등에서 사용할 수있는 요소를 정의하십시오. XML을 작성할 때마다 또는 XML을 읽을 때마다 가능한 한 표준이되어야하므로 잘 정의 된 템플릿이 필요합니다.

xsd와 잘 어울리지 않으면 xml을 먼저 정의한 다음 xsd 생성기를 사용할 수 있습니다. 온라인에서 많은 것이 있습니다.

예를 들어

:

<UIBuilder> 
<ownerProperties> 
<username>Marcelo Tataje</username> 
</ownerProperties> 
<ui> 
<header> 
<textlabel label="Welcome" /> 
</header> 
<menu> 
<button label="Home" name="btnHome">goHome()</button> 
<button label="Contacts" name="btnContacts">showContacts()</button> 
</menu> 
<mainFrame> 
<textfield label="Name:" name="txtName" canEdit=false /> 
<button label="Show name" name="btnProcess">processData()</button> 
</mainFrame> 
<footer></footer> 
</ui> 
<UIBuilder> 

을 그리고이에 따라, 당신은 스키마를 만들 수 있습니다

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="UIBuilder"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="ownerProperties"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element type="xs:string" name="username"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element name="ui"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="header"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="textlabel"> 
         <xs:complexType> 
         <xs:simpleContent> 
          <xs:extension base="xs:string"> 
          <xs:attribute type="xs:string" name="label"/> 
          </xs:extension> 
         </xs:simpleContent> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="menu"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="button" maxOccurs="unbounded" minOccurs="0"> 
         <xs:complexType> 
         <xs:simpleContent> 
          <xs:extension base="xs:string"> 
          <xs:attribute type="xs:string" name="label" use="optional"/> 
          <xs:attribute type="xs:string" name="name" use="optional"/> 
          </xs:extension> 
         </xs:simpleContent> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="mainFrame"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="textfield"> 
         <xs:complexType> 
         <xs:simpleContent> 
          <xs:extension base="xs:string"> 
          <xs:attribute type="xs:string" name="label"/> 
          <xs:attribute type="xs:string" name="name"/> 
          <xs:attribute type="xs:string" name="canEdit"/> 
          </xs:extension> 
         </xs:simpleContent> 
         </xs:complexType> 
        </xs:element> 
        <xs:element name="button"> 
         <xs:complexType> 
         <xs:simpleContent> 
          <xs:extension base="xs:string"> 
          <xs:attribute type="xs:string" name="label"/> 
          <xs:attribute type="xs:string" name="name"/> 
          </xs:extension> 
         </xs:simpleContent> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
       <xs:element type="xs:string" name="footer"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

을 나는 http://www.freeformatter.com/xsd-generator.html

을 사용 그리고를 만들 논리 처리를 만들기 위해 JAXB를 사용 잘 정의 된 형식의 XML 문서를 기반으로하는 UI

1

조각에 대한 코드를 작성할 수있을 때까지 큰 프로젝트를 decomposing으로 작게 시작합니다.

하단부터 시작하여 작업 할 수도 있고 위에서 시작하여 작업 할 수도 있습니다.

다음은 분해에 도움이되는 몇 가지 질문입니다.

프로젝트에서 지원하는 구성 요소 (게이지, 버튼, 텍스트 등)는 무엇입니까?

사용자가 몇 가지 다양한 구성 요소를 패널에 사용할 수 있습니까?

코딩과 관련하여 멀티 패널 편집기로 Eclipse RCP 프로젝트를 설정하십시오.