Welcome, Guest! Log In | Create Account

GUI Structure

From guitar

Jump to: navigation, search

Contents

What is it?

The GUI structure is a hierarchical tree view of the GUI. In this project, it is represented using XML. The XML schema is:

Image:Schema.JPG

The above graphic was generated using the formal description:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:annotation>
    <xs:documentation>
      This is the formal description of the GUI Structure used by GUITAR.
    </xs:documentation>
  </xs:annotation>

  <!-- definition of simple elements -->
  <xs:element name="Name" type="xs:string"/>
  <xs:element name="Value" type="xs:string"/>

  <!-- definition of attributes -->


  <!-- definition of complex types -->

  <xs:complexType name="singleAttributesType">
    <xs:sequence>
      <xs:element ref="Attributes" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <!-- definition of complex elements -->

  <xs:element name="Property">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Name" minOccurs ="1" maxOccurs="1"/>
        <xs:element ref="Value" minOccurs ="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Attributes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Property" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Container">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Attributes" minOccurs ="1" maxOccurs="1"/>
        <xs:element ref="Contents" minOccurs ="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="Contents">
    <xs:complexType>
      <xs:sequence minOccurs ="1" maxOccurs="unbounded">
        <xs:element name="Widget" type="singleAttributesType" minOccurs ="0" maxOccurs="unbounded"/>
        <xs:element ref="Container" minOccurs ="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="GUI">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Window" type="singleAttributesType" minOccurs ="1" maxOccurs="1"/>
        <xs:element ref="Container" minOccurs ="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="GUIStructure">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="GUI" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

An Example

In the future, we'll provide a small example and its corresponding GUI structure with a detailed explanation of how they are related.

GUI Structures for real GUIs tend to be large, which is why we have provided the following examples on an external site:

http://www.cs.umd.edu/~atif/Benchmarks/UMD2008a/crosswordsage-0.3.5.gui

http://www.cs.umd.edu/~atif/Benchmarks/UMD2008a/freemind-0.7.1.gui

Tools to View and Edit this representation

Because the GUI Representation uses XML, commonly available tools can be used to edit it.

Someone needs to work on a graphical editor for the GUI Representation. A good starting point is the GUI Director software.

Tools that use or generate this representation

The GUI Structure is generated by: GUI Ripper.

The GUI Structure is used by:

Code Generated from the .xsd representation

The .jar corresponding to this file is at: http://guitar.sourceforge.net/GUIStructure.jar

The documentation is available at: http://guitar.sourceforge.net/APIdocs/GUIStructure/