Skip to content

GXE Structure

Christine White edited this page Sep 5, 2013 · 2 revisions

GXE is intended to support metadata profiles or additional metadata schemas. This section describes how to configure GXE for this as well as how to alter the behavior of the editor for existing metadata schemas. For general introduction and additional topics, see Geoportal XML Editor. After reading this topic, you can work through the GXE Crash Course to become familiar with customizing the GXE Editor.

Core Geoportal XML Editor Definition Structure

The files that define the core structure for the editor are located within the [webapp]/WEB-INF/classes/gpt/gxe directory. These files provide a foundation for reuse when defining the content of an editor. Although it is not mandatory to extend an editor from these files, the editors that ship with the Geoportal Server all extend from this core.

  • [webapp]/WEB-INF/classes/gpt/gxe/editor.xml This is the base editor from which all other editors extend.

The ui Subdirectory

The directory at [webapp]/WEB-INF/classes/gpt/gxe/core/ui contains a collection of reusable files associated with the binding of editor components to the user interface. Below is a description of files found in the ui directory.

  • [webapp]/WEB-INF/classes/gpt/gxe/core/ui A collection of reusable files associated with the binding of editor components to the user interface.
  • [webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputText.xml seful for binding an input text box to the value of a target XML node (element text or attribute). The default definition will render an HTML <input> tag of type text with a size of 60 and max length of 2048. A JavaScript object of type gxe.control.InputText will be instantiated to process the component.
<h:input xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
   h:tag="input" h:type="text" h:size="60" h:maxlength="2048"
   g:jsClass="gxe.control.InputText"/>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputTextArea.xml Useful for binding an input text area box to the value of a target XML node (element text). The default definition will render an HTML &lt;textarea&gt; tag of type text with 46 columns and 3 rows. A JavaScript object of type gxe.control.InputTextArea will be instantiated to process the component.
<h:textarea xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
   h:tag="textarea" h:cols="46" h:rows="3"
   g:jsClass="gxe.control.InputTextArea"/>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputSelectOne.xml Useful for binding a select dropdown to the value of a target XML node (element text or attribute). The default definition will render an HTML &lt;select&gt; tag. A JavaScript object of type gxe.control.InputSelectOne will be instantiated to process the component. The selectable options are provided by the definition component extending this file.
<h:select xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
   h:tag="select" g:jsClass="gxe.control.InputSelectOne">
  <g:options g:overridable="true"/>
</h:select>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputSelectMany.xml Useful for binding a multiple checkbox control to the values associated with a repeatable XML target node (element text). The default definition will render an HTML <ul> tag with a CSS class named gxeSelectMany. A JavaScript object of type gxe.control.InputSelectMany will be instantiated to process the component. The selectable options are provided by the definition component extending this file, and will be rendered as checkboxes within HTML &lt;li&gt; tag.
<h:ul xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
   h:tag="ul" h:class="gxeSelectMany"
   g:jsClass="gxe.control.InputSelectMany">
  <g:options g:overridable="true"/>
</h:ul>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputDelimitedTextArea.xml Useful for binding an input text area box (comma delimited by default) to the values associated with a repeatable XML target node (element text). The default definition will render an HTML &lt;textarea&gt; tag of type text with 60 columns and 10 rows. A JavaScript object of type gxe.control.InputDelimitedTextArea will be instantiated to process the component.

The xml Subdirectory

The directory at [webapp]/WEB-INF/classes/gpt/gxe/core/xml contains a collection of reusable files associated with the binding of editor components to the targeted XML mapping. Below is a description of files found in the xml directory.

  • [webapp]/WEB-INF/classes/gpt/gxe/core/xml/Element.xml Useful for binding a user interface component to a complex target XML element type (i.e. an element that has an attribute or children). This definition component extends from $base/core/ui/Section.xml (i.e., inherits structure and behavior). The qualified name for the component will be overridden as g:element. The JavaScript object (g:jsClass) instantiated to process the component will be overridden as gxe.control.Element.
<g:element xmlns:g="http://www.esri.com/geoportal/gxe"
xmlns:h="http://www.esri.com/geoportal/gxe/html"
g:jsClass="gxe.control.Element"
g:extends="$base/core/ui/Section.xml"/>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/xml/ElementTextOnly.xml Useful for binding a user interface component to a simple target XML element type (i.e., an element that has text content but no attribute or children). This definition component adds an input text box to the body of the underlying section. The input component is flagged as overridable and can be replaced if required by a component that extends this component.
<g:element xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
   g:extends="$base/core/xml/Element.xml">
  <g:body>
    <g:input g:overridable="true" g:extends="$base/core/ui/InputText.xml"/>
  </g:body>
</g:element>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/xml/Attribute.xml Useful for binding a user interface component to a target XML attribute. This definition component adds an input text box to the body of the underlying section. The input component is flagged as overridable and can be replaced if required by a component that extends this component.
<g:attribute xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
  g:jsClass="gxe.control.Attribute"
  g:extends="$base/core/ui/Section.xml">
  <g:body>
    <g:input g:overridable="true" g:extends="$base/core/ui/InputText.xml"/>
  </g:body>
</g:attribute>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/xml/ElementChoice.xml Useful for binding an exclusive user interface choice component to a list of target XML element. A section will be added to the user interface (HTML &lt;div&gt; tag with a CSS class named gxeTabs, processed by a JavaScript object of type gxe.control.ElementChoice). A header will be added to the section (HTML &lt;div&gt; tag with a CSS class named gxeTabsHeader). An array of tabs will be added to the header (HTML &lt;ul&gt; tag with a CSS class named gxeTabArray, processed by a JavaScript object of type gxe.control.TabArray). A body will be added to the section (HTML &lt;div&gt; tag with a CSS class named gxeTabsBody, processed by a JavaScript object of type gxe.control.ElementChoiceBody). A radio button will be generated for each child declared within the body. Only one of these children will be selected at any given time, and only that element will be serialized within the resultant XML document.
<g:elementChoice xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
   h:tag="div" h:class="gxeTabs"
   g:label="$i18n.catalog.gxe.general.choose"
   g:labelNone="$i18n.catalog.gxe.general.choose.none"
   g:jsClass="gxe.control.ElementChoice">
  <g:header g:extensible="true" h:tag="div" h:class="gxeTabsHeader">
    <g:label g:extensible="true" h:tag="label"
       h:class="gxeElementChoiceCaption"/>
    <g:tabArray h:tag="ul" h:class="gxeTabArray"
       g:jsClass="gxe.control.TabArray"/>
  </g:header>
  <g:body g:extensible="true" h:tag="div" h:class="gxeTabsBody"
     g:jsClass="gxe.control.ElementChoiceBody"/>
</g:elementchoice>
  • [webapp]/WEB-INF/classes/gpt/gxe/core/xml/TextNode.xml Useful for binding a user interface component to text content of a complex target XML type (i.e., an element that has text content but no attribute or children). This definition component adds an input text box to the body of the underlying section. The input component is flagged as overridable and can be replaced if required by a component that extends this component.
<g:textNode xmlns:g="http://www.esri.com/geoportal/gxe"
   xmlns:h="http://www.esri.com/geoportal/gxe/html"
   g:extends="$base/core/ui/Section.xml">
  <g:body>
    <g:input g:overridable="true" g:extends="$base/core/ui/InputText.xml"/>
  </g:body>
</g:textnode>

Back to Geoportal XML Editor
Clone this wiki locally