<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tkr</id>
	<title>Apache OpenOffice Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tkr"/>
	<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/wiki/Special:Contributions/Tkr"/>
	<updated>2026-05-09T05:20:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=167169</id>
		<title>Documentation/DevGuide/Extensions/Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=167169"/>
		<updated>2010-05-12T10:30:58Z</updated>

		<summary type="html">&lt;p&gt;Tkr: remove deploymenthooks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Display Name&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Example}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;description xmlns=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot; &lt;br /&gt;
xmlns:d=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot;&lt;br /&gt;
xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;version value=&amp;quot;1.0&amp;quot; /&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;identifier value=&amp;quot;com.mycompany.extensions.my_extension&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;platform value=&amp;quot;windows_x86,solaris_sparc&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;OpenOffice.org-minimal-version value=&amp;quot;3.3&amp;quot; d:name=&amp;quot;OpenOffice.org 3.3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;update-information&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/license/update/lic3.update.xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/update-information&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;registration&amp;gt;&lt;br /&gt;
    &amp;lt;simple-license accept-by=&amp;quot;admin&amp;quot; suppress-on-update=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_de-DE.txt&amp;quot; lang=&amp;quot;de-DE&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-GB.txt&amp;quot; lang=&amp;quot;en-GB&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-NZ.txt&amp;quot; lang=&amp;quot;en-NZ&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-US.txt&amp;quot; lang=&amp;quot;en-US&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/simple-license&amp;gt;&lt;br /&gt;
  &amp;lt;/registration&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;publisher&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_de.html&amp;quot;&lt;br /&gt;
    lang=&amp;quot;de&amp;quot;&amp;gt;My OpenOffice de&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_en.html&amp;quot; &lt;br /&gt;
    lang=&amp;quot;en&amp;quot;&amp;gt;My OpenOffice en&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/publisher&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;release-notes&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/release-notes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;display-name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;de&amp;quot;&amp;gt;Meine tolle extensions&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;en&amp;quot;&amp;gt;My great extension&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/display-name&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;icon&amp;gt;&lt;br /&gt;
    &amp;lt;default xlink:href=&amp;quot;images/icon.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;high-contrast xlink:href=&amp;quot;images/icon_hc.png&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/icon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;extension-description&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/extension-description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; contains:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Versions |version]]&amp;#039;&amp;#039;&amp;#039; is 1.0. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|[go to XML description]]].&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Identifiers|identifier]]&amp;#039;&amp;#039;&amp;#039; is: &amp;#039;&amp;#039;com.mycompany.extensions.my_extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|[go to XML description]]]&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Target Platform|platforms]]&amp;#039;&amp;#039;&amp;#039; on which the extension can be installed only are Windows (x86 CPU) and Solaris (SPARC CPU). [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|[go to XML description]]]&lt;br /&gt;
* There is a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Dependencies|dependency]]&amp;#039;&amp;#039;&amp;#039; for OpenOffice.org 3.3 and higher. That is, the minimum version with which the extension works is 3.3.[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|[go to XML description]]]&lt;br /&gt;
* It supports the &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Online Update of Extensions|update]]&amp;#039;&amp;#039;&amp;#039; feature and update information can be obtained at the specified address. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|[go to XML description]]]&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Simple License|license]]&amp;#039;&amp;#039;&amp;#039; text is displayed displayed during installation. Different localizations of the license text are available. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|[go to XML description]]]&lt;br /&gt;
* There are two localized versions of a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Publisher Information|publisher name]]&amp;#039;&amp;#039;&amp;#039; and URL. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|[go to XML description]]]&lt;br /&gt;
* There are two links to &amp;#039;&amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;&amp;#039; in different languages. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|[go to XML description]]]&lt;br /&gt;
* There is a localized &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Display Name|display name]]&amp;#039;&amp;#039;&amp;#039;. That is, in an english version of OOo the Extension Manager will show the string: &amp;#039;&amp;#039;My great extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|[go to XML description]]]&lt;br /&gt;
* The extension contains &amp;#039;&amp;#039;&amp;#039;icons&amp;#039;&amp;#039;&amp;#039; which are used by the Extensions Manager when displaying the extension. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|[go to XML description]]]&lt;br /&gt;
* A localized [[Documentation/DevGuide/Extensions/Extension Description|&amp;#039;&amp;#039;&amp;#039;description&amp;#039;&amp;#039;&amp;#039;]] is displayed in the Extension Manager&amp;#039;s dialog. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|[go to XML description]]]&lt;br /&gt;
&lt;br /&gt;
Please note that the &amp;lt;publisher&amp;gt; and &amp;lt;release-notes&amp;gt; elements in a &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; are currently not used by the Extension Manager. However, when uploading the extension to the extensions repository (http://extensions.services.openoffice.org) then these elements are used for generating update information. When the Extension Manager looks for updates then it displays this information (OOo 2.4).&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_DeploymentHooks&amp;diff=167165</id>
		<title>Documentation/DevGuide/Extensions/Extension DeploymentHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_DeploymentHooks&amp;diff=167165"/>
		<updated>2010-05-12T10:29:55Z</updated>

		<summary type="html">&lt;p&gt;Tkr: add warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Icon&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Extension Identifiers&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension DeploymentHooks}}&lt;br /&gt;
&lt;br /&gt;
{{Documentation/Caution| The interface com.sun.star.deployment.XDeploymentHooks is currently not supported in any release.}}&lt;br /&gt;
&lt;br /&gt;
An extension may implement &amp;lt;idl&amp;gt;com.sun.star.deployment.XDeploymentHooks&amp;lt;/idl&amp;gt; to get a notification during the install and uninstall process. &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Description of XML Elements|XML description for description.xml]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=167160</id>
		<title>Documentation/DevGuide/Extensions/Description of XML Elements</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=167160"/>
		<updated>2010-05-12T10:23:22Z</updated>

		<summary type="html">&lt;p&gt;Tkr: remove deploymenthooks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/description.xml&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Description of XML Elements}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent element: document root&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|&amp;lt;identifier&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|&amp;lt;version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|&amp;lt;platform&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; is the root element of the &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; &lt;br /&gt;
|The default namespace of element description and all children must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information must also be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt;&lt;br /&gt;
|The xlink namespace must be defined as &lt;br /&gt;
http://www.w3.org/1999/xlink&lt;br /&gt;
|-&lt;br /&gt;
|other namespace definitions &lt;br /&gt;
|Other namespaces can be added as necessary &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/identifier&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;identifier&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The extension identifier. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Identifiers |Extension Identifiers]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A textual representation of the extension version. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/platform&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A token representing a particular platform. See [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]] for details.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration&amp;lt;/code&amp;gt;  ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The registration element currently only contains the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. If the &amp;lt;code&amp;gt;&amp;lt;registration&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have a child element.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The element contains the &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; elements, determines if all user must agree to the license, or just the person who installs it, and determines a default &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details. This element is disregarded for bundled extensions.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have at least one child element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;accept-by&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;Required.Value&amp;lt;/code&amp;gt; is either “user” or “admin”. “user” means that every user has to agree to the license. That is, the extension can only be installed as user extension but not as shared extension. If it has the value “admin” then it can be deployed as shared extension as well. In that case only the person who installs it has to agree to the license. Individual users will not be asked to accept the license. They can use the extension right away. In case the value is “user” and the extension is being installed as user extension then the user must always agree to the license. By using &amp;lt;code&amp;gt;suppress-if-required=“true“&amp;lt;/code&amp;gt; it is, however, possible to install an extension for all users, that is, as shared extension, even if  &amp;lt;code&amp;gt;accept-by=“user“&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;default-license-id&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;. &lt;br /&gt;
The attribute determines what &amp;lt;license-text&amp;gt; is used if no &amp;lt;license-text&amp;gt; element has a lang attribute whose value matches the locals of {{PRODUCTNAME}}. There must always be exactly one &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element with a license-id attribute whose value matches that of the default-license-id. The type is &amp;lt;code&amp;gt;xsd:IDREF&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-on-update&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. When the attribute is not provided then the value “false” is assumed. The value true indicates that the license for this extension will not be displayed during installation when the same extension (same id but probably different version) is already installed. This applies for the automatic update as well as for manually installing an extension. The version of the already installed extension does not matter. Suppressing the license can be useful during the online update, because otherwise the update operation could be interrupted by many license dialogs. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-if-required&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. Since 3.3. When the attribute is not provided then the value “false” is assumed. The value “true“ indicates that the license will not be displayed during installation if this is desired, which can be expressed by the unopkg switch &amp;lt;code&amp;gt;--suppress-license&amp;lt;/code&amp;gt; and is implicitely assumed for bundled extensions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license/license-text&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the license text, which language it uses, and if this element is the “default” &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the license file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;license-id&amp;lt;/code&amp;gt;&lt;br /&gt;
|Optional. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;.&lt;br /&gt;
One license-text element must have this attribute and the value must match the value of the default-license-id attribute of the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. The type is &amp;lt;code&amp;gt;xsd:ID&amp;lt;/code&amp;gt;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|&amp;lt;OpenOffice.org-minimal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-maximal-version|&amp;lt;OpenOffice.org-maximal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** others&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-minimal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should never be used with this element. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. String. The required underlying OpenOffice.org version (“2.1”, “2.2”, etc.), starting with OpenOffice.org 2.1. You should not specify a particular micro version, e.g. “2.2.1”, use “2.2” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-maximal-version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-maximal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value or older” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should always be defined as “2.3” for this element.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The required maximal underlying OpenOffice.org version (“3.0”, “3.1”, etc.). You must not specify a particular micro version, e.g. “3.1.1”, use “3.1” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;update-information&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The second, third, etc. element are regarded as fallback, that is, the elements provide URLs to mirrors. The Extension Manager will try to get update information by using a URL and only use a different URL if an error occurred. That is, if for example the first URL references an atom feed that does not contain any references at all, but is a valid feed, then the Extension Manager assumes that there are no update information available. Then URLs from other &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt; elements are not examined. Therefore the update information referenced by every URL must be identical.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information/src&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL which provides the update information directly or an atom feed which in turn references the update information. The URL can point directly to a file or it may invoke code, such as a servlet, cgi, etc, that returns the atom feed or the update information.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;publisher&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized publisher name]] together with a URL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;publisher name&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the web site of the publisher of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;release-notes&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children provide URLs to [[Documentation/DevGuide/Extensions/Localized XML Elements|localized release-notes]]. &lt;br /&gt;
&lt;br /&gt;
Currently this element and its children are not used by the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes/src&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The element contains a URL to the &amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the release notes of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;display-name&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized display name]]. The name will be used in the GUI instead of the file name.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;display name&amp;#039;&amp;#039; of the extension. The string length must be greater then null and must not only contain white space characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/default|&amp;lt;default&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/high-contrast|&amp;lt;high-contrast&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;default&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/high-contrast&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;high-contrast&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&amp;lt;extension-description&amp;gt; must have at least on [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]] child element. Every child references a localized description. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description/src&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the description text and which language it uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the description file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_DeploymentHooks&amp;diff=156653</id>
		<title>Documentation/DevGuide/Extensions/Extension DeploymentHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Extension_DeploymentHooks&amp;diff=156653"/>
		<updated>2010-02-08T07:57:13Z</updated>

		<summary type="html">&lt;p&gt;Tkr: Created page with &amp;#039;{{Documentation/DevGuide/ExtensionsTOC |ShowPrevNext=block |PrevPage=Documentation/DevGuide/Extensions/Icon |NextPage=Documentation/DevGuide/Extensions/Extension Identifiers }} {…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Icon&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Extension Identifiers&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Extension DeploymentHooks}}&lt;br /&gt;
&lt;br /&gt;
An extension may implement &amp;lt;idl&amp;gt;com.sun.star.deployment.XDeploymentHooks&amp;lt;/idl&amp;gt; to get a notification during the install and uninstall process. &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|XML description for description.xml]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=156652</id>
		<title>Documentation/DevGuide/Extensions/Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=156652"/>
		<updated>2010-02-08T07:42:10Z</updated>

		<summary type="html">&lt;p&gt;Tkr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Display Name&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Example}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;description xmlns=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot; &lt;br /&gt;
xmlns:d=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot;&lt;br /&gt;
xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;version value=&amp;quot;1.0&amp;quot; /&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;identifier value=&amp;quot;com.mycompany.extensions.my_extension&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;deploymentHooks service=&amp;quot;com.mycompany.extensions.my_extension&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;platform value=&amp;quot;windows_x86,solaris_sparc&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;OpenOffice.org-minimal-version value=&amp;quot;3.3&amp;quot; d:name=&amp;quot;OpenOffice.org 3.3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;update-information&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/license/update/lic3.update.xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/update-information&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;registration&amp;gt;&lt;br /&gt;
    &amp;lt;simple-license accept-by=&amp;quot;admin&amp;quot; suppress-on-update=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_de-DE.txt&amp;quot; lang=&amp;quot;de-DE&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-GB.txt&amp;quot; lang=&amp;quot;en-GB&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-NZ.txt&amp;quot; lang=&amp;quot;en-NZ&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-US.txt&amp;quot; lang=&amp;quot;en-US&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/simple-license&amp;gt;&lt;br /&gt;
  &amp;lt;/registration&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;publisher&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_de.html&amp;quot;&lt;br /&gt;
    lang=&amp;quot;de&amp;quot;&amp;gt;My OpenOffice de&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_en.html&amp;quot; &lt;br /&gt;
    lang=&amp;quot;en&amp;quot;&amp;gt;My OpenOffice en&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/publisher&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;release-notes&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/release-notes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;display-name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;de&amp;quot;&amp;gt;Meine tolle extensions&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;en&amp;quot;&amp;gt;My great extension&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/display-name&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;icon&amp;gt;&lt;br /&gt;
    &amp;lt;default xlink:href=&amp;quot;images/icon.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;high-contrast xlink:href=&amp;quot;images/icon_hc.png&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/icon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;extension-description&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/extension-description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; contains these information:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Versions |version]]&amp;#039;&amp;#039;&amp;#039; is 1.0. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|[go to XML description]]].&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Identifiers|identifier]]&amp;#039;&amp;#039;&amp;#039; is: &amp;#039;&amp;#039;com.mycompany.extensions.my_extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|[go to XML description]]]&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Target Platform|platforms]]&amp;#039;&amp;#039;&amp;#039; on which the extension can be installed only are Windows (x86 CPU) and Solaris (SPARC CPU). [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|[go to XML description]]]&lt;br /&gt;
* There is a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Dependencies|dependency]]&amp;#039;&amp;#039;&amp;#039; for OpenOffice.org 3.3 and higher. That is, the minimum version with which the extension works is 3.3.[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|[go to XML description]]]&lt;br /&gt;
* It supports the &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Online Update of Extensions|update]]&amp;#039;&amp;#039;&amp;#039; feature and update information can be obtained at the specified address. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|[go to XML description]]]&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Simple License|license]]&amp;#039;&amp;#039;&amp;#039; text is displayed displayed during installation. Different localizations of the license text are available. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|[go to XML description]]]&lt;br /&gt;
* There are two localized versions of a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Publisher Information|publisher name]]&amp;#039;&amp;#039;&amp;#039; and URL. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|[go to XML description]]]&lt;br /&gt;
* There are two links to &amp;#039;&amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;&amp;#039; in different languages. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|[go to XML description]]]&lt;br /&gt;
* There is a localized &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Display Name|display name]]&amp;#039;&amp;#039;&amp;#039;. That is, in an english version of OOo the Extension Manager will show the string: &amp;#039;&amp;#039;My great extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|[go to XML description]]]&lt;br /&gt;
* The extension contains &amp;#039;&amp;#039;&amp;#039;icons&amp;#039;&amp;#039;&amp;#039; which are used by the Extensions Manager when displaying the extension. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|[go to XML description]]]&lt;br /&gt;
* A localized [[Documentation/DevGuide/Extensions/Extension Description|&amp;#039;&amp;#039;&amp;#039;description&amp;#039;&amp;#039;&amp;#039;]] is displayed in the Extension Manager&amp;#039;s dialog. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|[go to XML description]]]&lt;br /&gt;
* [[Documentation/DevGuide/Extensions/Extension DeploymentHooks|&amp;#039;&amp;#039;&amp;#039;Deployment hooks&amp;#039;&amp;#039;&amp;#039;]] are entry points for extension programmers. These hooks are called after the extension was installed and right before the extension will uninstall. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|[go to XML description]]]&lt;br /&gt;
&lt;br /&gt;
Please note that the &amp;lt;publisher&amp;gt; and &amp;lt;release-notes&amp;gt; elements in a &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; are currently not used by the Extension Manager. However, when uploading the extension to the extensions repository (http://extensions.services.openoffice.org) then these elements are used for generating update information. When the Extension Manager looks for updates then it displays these information (OOo 2.4).&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=156651</id>
		<title>Documentation/DevGuide/Extensions/Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=156651"/>
		<updated>2010-02-08T07:40:13Z</updated>

		<summary type="html">&lt;p&gt;Tkr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Display Name&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Example}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;description xmlns=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot; &lt;br /&gt;
xmlns:d=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot;&lt;br /&gt;
xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;version value=&amp;quot;1.0&amp;quot; /&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;identifier value=&amp;quot;com.mycompany.extensions.my_extension&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;deploymentHooks service=&amp;quot;com.mycompany.extensions.my_extension&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;platform value=&amp;quot;windows_x86,solaris_sparc&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;OpenOffice.org-minimal-version value=&amp;quot;3.3&amp;quot; d:name=&amp;quot;OpenOffice.org 3.3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;update-information&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/license/update/lic3.update.xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/update-information&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;registration&amp;gt;&lt;br /&gt;
    &amp;lt;simple-license accept-by=&amp;quot;admin&amp;quot; suppress-on-update=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_de-DE.txt&amp;quot; lang=&amp;quot;de-DE&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-GB.txt&amp;quot; lang=&amp;quot;en-GB&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-NZ.txt&amp;quot; lang=&amp;quot;en-NZ&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-US.txt&amp;quot; lang=&amp;quot;en-US&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/simple-license&amp;gt;&lt;br /&gt;
  &amp;lt;/registration&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;publisher&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_de.html&amp;quot;&lt;br /&gt;
    lang=&amp;quot;de&amp;quot;&amp;gt;My OpenOffice de&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_en.html&amp;quot; &lt;br /&gt;
    lang=&amp;quot;en&amp;quot;&amp;gt;My OpenOffice en&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/publisher&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;release-notes&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/release-notes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;display-name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;de&amp;quot;&amp;gt;Meine tolle extensions&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;en&amp;quot;&amp;gt;My great extension&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/display-name&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;icon&amp;gt;&lt;br /&gt;
    &amp;lt;default xlink:href=&amp;quot;images/icon.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;high-contrast xlink:href=&amp;quot;images/icon_hc.png&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/icon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;extension-description&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/extension-description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; contains these information:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Versions |version]]&amp;#039;&amp;#039;&amp;#039; is 1.0. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|[go to XML description]]].&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Identifiers|identifier]]&amp;#039;&amp;#039;&amp;#039; is: &amp;#039;&amp;#039;com.mycompany.extensions.my_extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|[go to XML description]]]&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Target Platform|platforms]]&amp;#039;&amp;#039;&amp;#039; on which the extension can be installed only are Windows (x86 CPU) and Solaris (SPARC CPU). [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|[go to XML description]]]&lt;br /&gt;
* There is a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Dependencies|dependency]]&amp;#039;&amp;#039;&amp;#039; for OpenOffice.org 3.3 and higher. That is, the minimum version with which the extension works is 3.3.[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|[go to XML description]]]&lt;br /&gt;
* It supports the &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Online Update of Extensions|update]]&amp;#039;&amp;#039;&amp;#039; feature and update information can be obtained at the specified address. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|[go to XML description]]]&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Simple License|license]]&amp;#039;&amp;#039;&amp;#039; text is displayed displayed during installation. Different localizations of the license text are available. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|[go to XML description]]]&lt;br /&gt;
* There are two localized versions of a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Publisher Information|publisher name]]&amp;#039;&amp;#039;&amp;#039; and URL. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|[go to XML description]]]&lt;br /&gt;
* There are two links to &amp;#039;&amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;&amp;#039; in different languages. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|[go to XML description]]]&lt;br /&gt;
* There is a localized &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Display Name|display name]]&amp;#039;&amp;#039;&amp;#039;. That is, in an english version of OOo the Extension Manager will show the string: &amp;#039;&amp;#039;My great extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|[go to XML description]]]&lt;br /&gt;
* The extension contains &amp;#039;&amp;#039;&amp;#039;icons&amp;#039;&amp;#039;&amp;#039; which are used by the Extensions Manager when displaying the extension. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|[go to XML description]]]&lt;br /&gt;
* A localized [[Documentation/DevGuide/Extensions/Extension Description|&amp;#039;&amp;#039;&amp;#039;description&amp;#039;&amp;#039;&amp;#039;]] is displayed in the Extension Manager&amp;#039;s dialog. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|[go to XML description]]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Deployment hooks&amp;#039;&amp;#039;&amp;#039; are entry points for extension programmers. These hooks are called after the extension was installed and right before the extension will uninstall. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|[go to XML description]]]&lt;br /&gt;
&lt;br /&gt;
Please note that the &amp;lt;publisher&amp;gt; and &amp;lt;release-notes&amp;gt; elements in a &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; are currently not used by the Extension Manager. However, when uploading the extension to the extensions repository (http://extensions.services.openoffice.org) then these elements are used for generating update information. When the Extension Manager looks for updates then it displays these information (OOo 2.4).&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156650</id>
		<title>Documentation/DevGuide/Extensions/Description of XML Elements</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Description_of_XML_Elements&amp;diff=156650"/>
		<updated>2010-02-08T07:38:53Z</updated>

		<summary type="html">&lt;p&gt;Tkr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/description.xml&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Description of XML Elements}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent element: document root&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|&amp;lt;identifier&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|&amp;lt;version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|&amp;lt;platform&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/deploymentHooks|&amp;lt;deploymentHooks&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; is the root element of the &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; &lt;br /&gt;
|The default namespace of element description and all children must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information must also be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt;&lt;br /&gt;
|The xlink namespace must be defined as &lt;br /&gt;
http://www.w3.org/1999/xlink&lt;br /&gt;
|-&lt;br /&gt;
|other namespace definitions &lt;br /&gt;
|Other namespaces can be added as necessary &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/identifier&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;identifier&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The extension identifier. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Identifiers |Extension Identifiers]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A textual representation of the extension version. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Versions|Extension Versions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/platform&amp;lt;/code&amp;gt; ====&lt;br /&gt;
*Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*Children: none&lt;br /&gt;
*Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;platform&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A token representing a particular platform. See [[Documentation/DevGuide/Extensions/Target Platform|Target Platform]] for details.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Target Platform|Target Platform]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration&amp;lt;/code&amp;gt;  ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The registration element currently only contains the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. If the &amp;lt;code&amp;gt;&amp;lt;registration&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have a child element.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|&amp;lt;registration&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license/license-text|&amp;lt;license-text&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
The element contains the &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; elements, determines if all user must agree to the license, or just the person who installs it, and determines a default &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element exists, then it must have at least one child element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;accept-by&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;Required.Value&amp;lt;/code&amp;gt; is either “user” or “admin”. “user” means that every user has to agree to the license. That is, the extension can only be installed as user extension but not as shared extension. If it has the value “admin” then it can be deployed as shared extension as well. In that case only the person who installs it has to agree to the license. Individual users will not be asked to accept the license. They can use the extension right away. In case the value is “user” and the extension is being installed as user extension then the user must always agree to the license. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;default-license-id&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;. &lt;br /&gt;
The attribute determines what &amp;lt;license-text&amp;gt; is used if no &amp;lt;license-text&amp;gt; element has a lang attribute whose value matches the locals of {{PRODUCTNAME}}. There must always be exactly one &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt; element with a license-id attribute whose value matches that of the default-license-id. The type is &amp;lt;code&amp;gt;xsd:IDREF&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;suppress-on-update&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. When the attribute is not provided then the value “false” is assumed. The value true indicates that the license for this extension will not be displayed during installation when the same extension (same id but probably different version) is already installed. This applies for the automatic update as well as for manually installing an extension. The version of the already installed extension does not matter. Suppressing the license can be useful during the online update, because otherwise the update operation could be interrupted by many license dialogs. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/registration/simple-license/license-text&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration/simple-license|&amp;lt;simple-license&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the license text, which language it uses, and if this element is the “default” &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;. The mechanism for determining a &amp;quot;default&amp;quot; has changed in OOo 2.4. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;license-text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the license file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;license-id&amp;lt;/code&amp;gt;&lt;br /&gt;
|Optional. Since OOo 2.4 this attribute is &amp;#039;&amp;#039;&amp;#039;obsolete&amp;#039;&amp;#039;&amp;#039;. If the extension should work properly (regarding showing the proper license during installation) on versions prior 2.4 one must use this attribute. If one does not use this attribute then one should use the [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|OpenOffice.org-minimal-version]] dependency with a value of &amp;#039;2.4&amp;#039;.&lt;br /&gt;
One license-text element must have this attribute and the value must match the value of the default-license-id attribute of the &amp;lt;code&amp;gt;&amp;lt;simple-license&amp;gt;&amp;lt;/code&amp;gt; element. The type is &amp;lt;code&amp;gt;xsd:ID&amp;lt;/code&amp;gt;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Simple License|Simple License]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-minimal-version|&amp;lt;OpenOffice.org-minimal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies/OpenOffice.org-maximal-version|&amp;lt;OpenOffice.org-maximal-version&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
** others&lt;br /&gt;
* Since: OOo 2.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-minimal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should never be used with this element. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. String. The required underlying OpenOffice.org version (“2.1”, “2.2”, etc.), starting with OpenOffice.org 2.1. You cannot specify a particular corrective version, e.g. “2.2.1”, use “2.2” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/dependencies/OpenOffice.org-maximal-version&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|&amp;lt;dependencies&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;OpenOffice.org-maximal-version&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xmlns:dep&amp;lt;/code&amp;gt; &lt;br /&gt;
|The namespace for dependency information (inherited from &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt;) must be defined as&lt;br /&gt;
http://openoffice.org/extensions/description/2006&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:name&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. Descriptive string that will be displayed. Example : “OpenOffice.org value or older” (where value is the value of the attribute value). &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;dep:OpenOffice.org-minimal-version&amp;lt;/code&amp;gt; &lt;br /&gt;
|Optional. This attribute should always be defined as “2.3” for this element.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The required maximal underlying OpenOffice.org version (“3.0”, “3.1”, etc.). You cannot specify a particular corrective version, e.g. “3.1.1”, use “3.1” instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Dependencies|Dependencies]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;update-information&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The second, third, etc. element are regarded as fallback, that is, the elements provide URLs to mirrors. The Extension Manager will try to get update information by using a URL and only use a different URL if an error occurred. That is, if for example the first URL references an atom feed that does not contain any references at all, but is a valid feed, then the Extension Manager assumes that there are no update information available. Then URLs from other &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt; elements are not examined. Therefore the update information referenced by every URL must be identical.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/update-information/src&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|&amp;lt;update-information&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL which provides the update information directly or an atom feed which in turn references the update information. The URL can point directly to a file or it may invoke code, such as a servlet, cgi, etc, that returns the atom feed or the update information.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Online Update of Extensions|Online Update of Extensions]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;publisher&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized publisher name]] together with a URL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/publisher/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|&amp;lt;publisher&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;publisher name&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the web site of the publisher of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Publisher Information|Publisher Information]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;release-notes&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children provide URLs to [[Documentation/DevGuide/Extensions/Localized XML Elements|localized release-notes]]. &lt;br /&gt;
&lt;br /&gt;
Currently this element and its children are not used by the Extension Manager.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/release-notes/src&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|&amp;lt;release-notes&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The element contains a URL to the &amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a URL to the release notes of the extension. &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;display-name&amp;gt;&amp;lt;/code&amp;gt; must have at least one &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name/name|&amp;lt;name&amp;gt;]]&amp;lt;/code&amp;gt; child element. The children of this element provide a [[Documentation/DevGuide/Extensions/Localized XML Elements|localized display name]]. The name will be used in the GUI instead of the file name.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/display-name/name&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|&amp;lt;display-name&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: Text &lt;br /&gt;
* Since: OOo 2.4&lt;br /&gt;
&lt;br /&gt;
The text value of this element is the &amp;#039;&amp;#039;display name&amp;#039;&amp;#039; of the extension. The string length must be greater then null and must not only contain white space characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Display Name|Display Name]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: &lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/default|&amp;lt;default&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
**&amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon/high-contrast|&amp;lt;high-contrast&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Icon|Icon]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/default&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;default&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/icon/high-contrast&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|&amp;lt;icon&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
* Since: OOo 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;high-contrast&amp;gt;&amp;lt;/code&amp;gt; || &lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|The value is a relative URL to the icon file within the extension. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description&amp;lt;/code&amp;gt; ==== &lt;br /&gt;
Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children:&lt;br /&gt;
** &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&amp;lt;extension-description&amp;gt; must have at least on [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description/src|&amp;lt;src&amp;gt;]] child element. Every child references a localized description. See [[Documentation/DevGuide/Extensions/Localized XML Elements]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/extension-description/src&amp;lt;/code&amp;gt; ====  &lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|&amp;lt;extension-description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Child elements: none&lt;br /&gt;
* Since: OOo 3.1&lt;br /&gt;
&lt;br /&gt;
The element contains information about where to find the file containing the description text and which language it uses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;src&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. The value is a relative URL to the description file within the extension.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; &lt;br /&gt;
|Required. A language identifier according to RFC 3066. See also [[Documentation/DevGuide/Extensions/Localized XML Elements]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension Description|Extension Description]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Element &amp;lt;code&amp;gt;/description/deploymentHooks&amp;lt;/code&amp;gt; ====&lt;br /&gt;
* Parent: &amp;lt;code&amp;gt;[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description|&amp;lt;description&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Children: none&lt;br /&gt;
*Since: OOo 3.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=4 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-bgcolor=#EDEDED&lt;br /&gt;
|+ Attributes of &amp;lt;code&amp;gt;&amp;lt;deploymentHooks&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Attribute &lt;br /&gt;
!Description &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;service&amp;lt;/code&amp;gt;&lt;br /&gt;
|Required. The service identifier which implements the XDeploymentHooks interface. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;See also&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Extension DeploymentHooks|Extension DeploymentHooks]]&lt;br /&gt;
*[[Documentation/DevGuide/Extensions/Example|Example of description.xml]]&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=156649</id>
		<title>Documentation/DevGuide/Extensions/Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Documentation/DevGuide/Extensions/Example&amp;diff=156649"/>
		<updated>2010-02-08T07:31:23Z</updated>

		<summary type="html">&lt;p&gt;Tkr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation/DevGuide/ExtensionsTOC&lt;br /&gt;
|Extensions2b=block&lt;br /&gt;
|ShowPrevNext=block&lt;br /&gt;
|PrevPage=Documentation/DevGuide/Extensions/Localized XML Elements&lt;br /&gt;
|NextPage=Documentation/DevGuide/Extensions/Display Name&lt;br /&gt;
}}&lt;br /&gt;
{{Documentation/DevGuideLanguages|Documentation/DevGuide/Extensions/{{SUBPAGENAME}}}}&lt;br /&gt;
{{DISPLAYTITLE:Example}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;description xmlns=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot; &lt;br /&gt;
xmlns:d=&amp;quot;http://openoffice.org/extensions/description/2006&amp;quot;&lt;br /&gt;
xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;version value=&amp;quot;1.0&amp;quot; /&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;identifier value=&amp;quot;com.mycompany.extensions.my_extension&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;deploymentHooks service=&amp;quot;com.mycompany.extensions.my_extension&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;platform value=&amp;quot;windows_x86,solaris_sparc&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;dependencies&amp;gt;&lt;br /&gt;
    &amp;lt;OpenOffice.org-minimal-version value=&amp;quot;3.3&amp;quot; d:name=&amp;quot;OpenOffice.org 3.3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/dependencies&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;update-information&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/license/update/lic3.update.xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/update-information&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;registration&amp;gt;&lt;br /&gt;
    &amp;lt;simple-license accept-by=&amp;quot;admin&amp;quot; suppress-on-update=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_de-DE.txt&amp;quot; lang=&amp;quot;de-DE&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-GB.txt&amp;quot; lang=&amp;quot;en-GB&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-NZ.txt&amp;quot; lang=&amp;quot;en-NZ&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;license-text xlink:href=&amp;quot;registration/license_en-US.txt&amp;quot; lang=&amp;quot;en-US&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/simple-license&amp;gt;&lt;br /&gt;
  &amp;lt;/registration&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;publisher&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_de.html&amp;quot;&lt;br /&gt;
    lang=&amp;quot;de&amp;quot;&amp;gt;My OpenOffice de&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/publisher_en.html&amp;quot; &lt;br /&gt;
    lang=&amp;quot;en&amp;quot;&amp;gt;My OpenOffice en&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/publisher&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;release-notes&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/release-notes&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;display-name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;de&amp;quot;&amp;gt;Meine tolle extensions&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;name lang=&amp;quot;en&amp;quot;&amp;gt;My great extension&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;/display-name&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;icon&amp;gt;&lt;br /&gt;
    &amp;lt;default xlink:href=&amp;quot;images/icon.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;high-contrast xlink:href=&amp;quot;images/icon_hc.png&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/icon&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;extension-description&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_de.txt&amp;quot; lang=&amp;quot;de&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;src xlink:href=&amp;quot;description/desc_en.txt&amp;quot; lang=&amp;quot;en&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/extension-description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; contains these information:&lt;br /&gt;
&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Versions |version]]&amp;#039;&amp;#039;&amp;#039; is 1.0. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/version|[go to XML description]]].&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Extension Identifiers|identifier]]&amp;#039;&amp;#039;&amp;#039; is: &amp;#039;&amp;#039;com.mycompany.extensions.my_extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/identifier|[go to XML description]]]&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Target Platform|platforms]]&amp;#039;&amp;#039;&amp;#039; on which the extension can be installed only are Windows (x86 CPU) and Solaris (SPARC CPU). [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/platform|[go to XML description]]]&lt;br /&gt;
* There is a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Dependencies|dependency]]&amp;#039;&amp;#039;&amp;#039; for OpenOffice.org 3.3 and higher. That is, the minimum version with which the extension works is 3.3.[[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/dependencies|[go to XML description]]]&lt;br /&gt;
* It supports the &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Online Update of Extensions|update]]&amp;#039;&amp;#039;&amp;#039; feature and update information can be obtained at the specified address. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/update-information|[go to XML description]]]&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Simple License|license]]&amp;#039;&amp;#039;&amp;#039; text is displayed displayed during installation. Different localizations of the license text are available. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/registration|[go to XML description]]]&lt;br /&gt;
* There are two localized versions of a &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Publisher Information|publisher name]]&amp;#039;&amp;#039;&amp;#039; and URL. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/publisher|[go to XML description]]]&lt;br /&gt;
* There are two links to &amp;#039;&amp;#039;&amp;#039;release notes&amp;#039;&amp;#039;&amp;#039; in different languages. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/release-notes|[go to XML description]]]&lt;br /&gt;
* There is a localized &amp;#039;&amp;#039;&amp;#039;[[Documentation/DevGuide/Extensions/Display Name|display name]]&amp;#039;&amp;#039;&amp;#039;. That is, in an english version of OOo the Extension Manager will show the string: &amp;#039;&amp;#039;My great extension&amp;#039;&amp;#039;. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/display-name|[go to XML description]]]&lt;br /&gt;
* The extension contains &amp;#039;&amp;#039;&amp;#039;icons&amp;#039;&amp;#039;&amp;#039; which are used by the Extensions Manager when displaying the extension. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/icon|[go to XML description]]]&lt;br /&gt;
* A localized [[Documentation/DevGuide/Extensions/Extension Description|&amp;#039;&amp;#039;&amp;#039;description&amp;#039;&amp;#039;&amp;#039;]] is displayed in the Extension Manager&amp;#039;s dialog. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|[go to XML description]]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Deployment hooks&amp;#039;&amp;#039;&amp;#039; are entry points for extension programmers. These hooks are called after the extension was installed and right before the extension will uninstall. [[Documentation/DevGuide/Extensions/Description of XML Elements#Element /description/extension-description|[go to XML description]]]&lt;br /&gt;
&lt;br /&gt;
Please note that the &amp;lt;publisher&amp;gt; and &amp;lt;release-notes&amp;gt; elements in a &amp;#039;&amp;#039;description.xml&amp;#039;&amp;#039; are currently not used by the Extension Manager. However, when uploading the extension to the extensions repository (http://extensions.services.openoffice.org) then these elements are used for generating update information. When the Extension Manager looks for updates then it displays these information (OOo 2.4).&lt;br /&gt;
&lt;br /&gt;
{{PDL1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation/Developer&amp;#039;s Guide/Extensions]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=142273</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=142273"/>
		<updated>2009-10-07T09:13:05Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Planned Iteration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Basic&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
oColumnModel = createUnoService( &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
oColumn1 = createUnoService( &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;)&lt;br /&gt;
oColumn1.Title = &amp;quot;City&amp;quot;&lt;br /&gt;
&lt;br /&gt;
oColumn2 = createUnoService( &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;)&lt;br /&gt;
oColumn2.Title = &amp;quot;Country&amp;quot; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Basic&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
oColumnModel.addColumn( oColumn1 )&lt;br /&gt;
oColumnModel.addColumn( oColumn2 )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Basic&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
oDataModel = createUnoService( &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;)&lt;br /&gt;
&amp;#039;first parameter is for header title if row header exists, else put empty string&lt;br /&gt;
oDataModel.addRow ( &amp;quot;1&amp;quot;, Array( &amp;quot;Hamburg&amp;quot;, &amp;quot;Germany&amp;quot;) )&lt;br /&gt;
oDataModel.addRow ( &amp;quot;2&amp;quot;, Array(&amp;quot;Brisbane&amp;quot;, &amp;quot;Australia&amp;quot;) )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Basic&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
oModel = oDialogModel.createInstance( &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot; )&lt;br /&gt;
oModel.Name=&amp;quot;Grid1&amp;quot;&lt;br /&gt;
oModel.GridDataModel = oDataModel&lt;br /&gt;
oModel.ColumnModel = oColumnModel&lt;br /&gt;
oModel.ShowColumnHeader = True&lt;br /&gt;
oModel.ShowRowHeader = True&lt;br /&gt;
oDialogModel.insertByName(&amp;quot;Grid1&amp;quot;, oModel )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
The XGridColumnLisener supports methods to indicate operations on the column model of the grid control. The listener will be invoked by the column model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridColumnEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
The XMouseListener is currently not full implemented within the grid control. Only the methods &amp;#039;&amp;#039;mousePressed&amp;#039;&amp;#039; and &amp;#039;&amp;#039;mouseRelease&amp;#039;&amp;#039; are supported.&lt;br /&gt;
Use this listener to process mouse events e.g mouse clicks on a row. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XGridControl xGridControl = (XGridControl) UnoRuntime.queryInterface(XGridControl.class, objectGrid);&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    if (arg0.ClickCount &amp;gt;= 2) {&lt;br /&gt;
                      int pos = xGridControl.getItemIndexAtPoint(arg0.X, arg0.Y);&lt;br /&gt;
                      // put custom source code here.&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | done ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-10-16 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=141113</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=141113"/>
		<updated>2009-09-25T08:18:28Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Planned Iteration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
The XGridColumnLisener supports methods to indicate operations on the column model of the grid control. The listener will be invoked by the column model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridColumnEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
The XMouseListener is currently not full implemented within the grid control. Only the methods &amp;#039;&amp;#039;mousePressed&amp;#039;&amp;#039; and &amp;#039;&amp;#039;mouseRelease&amp;#039;&amp;#039; are supported.&lt;br /&gt;
Use this listener to process mouse events e.g mouse clicks on a row. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XGridControl xGridControl = (XGridControl) UnoRuntime.queryInterface(XGridControl.class, objectGrid);&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    if (arg0.ClickCount &amp;gt;= 2) {&lt;br /&gt;
                      int pos = xGridControl.getItemIndexAtPoint(arg0.X, arg0.Y);&lt;br /&gt;
                      // put custom source code here.&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 ||  || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136807</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136807"/>
		<updated>2009-08-06T07:52:23Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XMouseListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
The XGridColumnLisener supports methods to indicate operations on the column model of the grid control. The listener will be invoked by the column model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridColumnEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
The XMouseListener is currently not full implemented within the grid control. Only the methods &amp;#039;&amp;#039;mousePressed&amp;#039;&amp;#039; and &amp;#039;&amp;#039;mouseRelease&amp;#039;&amp;#039; are supported.&lt;br /&gt;
Use this listener to process mouse events e.g mouse clicks on a row. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XGridControl xGridControl = (XGridControl) UnoRuntime.queryInterface(XGridControl.class, objectGrid);&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    if (arg0.ClickCount &amp;gt;= 2) {&lt;br /&gt;
                      int pos = xGridControl.getItemIndexAtPoint(arg0.X, arg0.Y);&lt;br /&gt;
                      // put custom source code here.&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136806</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136806"/>
		<updated>2009-08-06T07:30:42Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XMouseListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
The XGridColumnLisener supports methods to indicate operations on the column model of the grid control. The listener will be invoked by the column model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridColumnEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
The XMouseListener is currently not full implemented within the grid control. Only the methods &amp;#039;&amp;#039;mousePressed&amp;#039;&amp;#039; and &amp;#039;&amp;#039;mouseRelease&amp;#039;&amp;#039; are supported.&lt;br /&gt;
Use this listener to process mouse events e.g mouse clicks on a row. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XGridControl xGridControl = (XGridControl) UnoRuntime.queryInterface(XGridControl.class, objectGrid);&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    if (arg0.ClickCount &amp;gt;= 2) {&lt;br /&gt;
                      int pos = xGridControl.getItemIndexAtPoint(arg0.X, arg0.Y);&lt;br /&gt;
                      // put custom source code here.&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136805</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136805"/>
		<updated>2009-08-06T07:21:06Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridColumnLisener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
The XGridColumnLisener supports methods to indicate operations on the column model of the grid control. The listener will be invoked by the column model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridColumnEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136803</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136803"/>
		<updated>2009-08-06T07:20:18Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridDataListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136802</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136802"/>
		<updated>2009-08-06T07:20:03Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridDataListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136801</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136801"/>
		<updated>2009-08-06T07:19:29Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridDataListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
The XGridDataListener supports methods to indicate operations on the data model of the grid control. The listener will be invoked by the data model.&lt;br /&gt;
Each event triggered by the listener uses an instance of GridDataEvent to give details. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136796</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136796"/>
		<updated>2009-08-06T06:59:38Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Abstract */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control. This Wiki page should help you to implement a UNO Grid Control within your own UNO application.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136795</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136795"/>
		<updated>2009-08-06T06:57:58Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XMouseListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow.addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136794</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136794"/>
		<updated>2009-08-06T06:57:12Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XMouseListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface(&lt;br /&gt;
                XControlContainer.class, dialog);&lt;br /&gt;
Object objectGrid = xControlCont.getControl(&amp;quot;Grid1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, objectGrid);&lt;br /&gt;
&lt;br /&gt;
xWindow .addMouseListener(new XMouseListener() {&lt;br /&gt;
&lt;br /&gt;
                public void mousePressed(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseReleased(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseEntered(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void mouseExited(MouseEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136792</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136792"/>
		<updated>2009-08-06T06:42:05Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;GridDataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136791</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136791"/>
		<updated>2009-08-06T06:38:53Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridColumnLisener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136790</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136790"/>
		<updated>2009-08-06T06:38:33Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridDataListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136789</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136789"/>
		<updated>2009-08-06T06:38:17Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridColumnLisener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            }())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
&lt;br /&gt;
Object columnModel =  this.m_factory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, this.context);&lt;br /&gt;
XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface( XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
xGridColumnModel.addColumnListener(new XGridColumnListener() {&lt;br /&gt;
&lt;br /&gt;
                public void columnAdded(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnRemoved(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void columnChanged(GridColumnEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136788</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136788"/>
		<updated>2009-08-06T06:34:19Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridDataListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            }())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136787</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136787"/>
		<updated>2009-08-06T06:33:58Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridDataListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
        xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            }())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136786</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136786"/>
		<updated>2009-08-06T06:33:25Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* XGridDataListener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
&lt;br /&gt;
Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, this.context);&lt;br /&gt;
        xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
xGridDataModel.addDataListener(new XGridDataListener() {&lt;br /&gt;
&lt;br /&gt;
                public void rowAdded(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void rowRemoved(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void dataChanged(GridDataEvent arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                public void disposing(EventObject arg0) {&lt;br /&gt;
                    throw new UnsupportedOperationException(&amp;quot;Not supported yet.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            }())&lt;br /&gt;
&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136785</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136785"/>
		<updated>2009-08-06T06:31:30Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Supported Listeners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== XGridDataListener ===&lt;br /&gt;
=== XGridColumnLisener ===&lt;br /&gt;
=== XMouseListener ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136784</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136784"/>
		<updated>2009-08-06T06:30:08Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Event Handling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
=== Supported Listeners ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136783</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136783"/>
		<updated>2009-08-06T06:27:22Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Event Handling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XMouseListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || mousePressed || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseReleased || ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseEntered || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| || mouseExited || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* exception handling&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136633</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136633"/>
		<updated>2009-08-04T09:21:52Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Known Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || fixed ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136632</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136632"/>
		<updated>2009-08-04T09:20:32Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Planned Iteration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136631</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136631"/>
		<updated>2009-08-04T09:19:47Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Planned Iteration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | QA ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || 2009-08-28 || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | in progress ||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136194</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136194"/>
		<updated>2009-07-29T12:35:21Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Knowing Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136191</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136191"/>
		<updated>2009-07-29T09:31:41Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Grid specification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
=== Key And Mouse Usage ===&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Action || Selection Modus || Description &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the mouse&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Mouse click in a cell || SINGLE / RANGE / MULTI || Single row selection.  &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + mouse click in a cell || MULTI  || Multiple rows selection possible, if row has been already selected, deselects it.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + mouse click in a cell || RANGE / MULTI  || Multiple rows selection, range is between current row and the chosen one. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | &amp;#039;&amp;#039;&amp;#039;Selection possibilities with the keyboard&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Ctrl + Alt || SINGLE / RANGE / MULTI  || Single row selection, if row has been already selected, deselects it. &lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + UP || RANGE / MULTI ||Multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + DOWN || RANGE / MULTI || Multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + HOME || RANGE / MULTI  || Multiple row selection, range is between current row and top one.&lt;br /&gt;
|-&lt;br /&gt;
|align=center | Shift + END || RANGE / MULTI  || Multiple row selection, range is between current row and bottom one&lt;br /&gt;
.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136190</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136190"/>
		<updated>2009-07-29T09:13:48Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create the grid model and assign the column and data model:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136189</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136189"/>
		<updated>2009-07-29T09:12:51Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Planned Iteration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136188</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136188"/>
		<updated>2009-07-29T09:12:24Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Planned Iteration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-07-31 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136187</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136187"/>
		<updated>2009-07-29T09:08:32Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Knowing Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136186</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136186"/>
		<updated>2009-07-29T09:08:18Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Milestone || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Planned Iteration==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136185</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136185"/>
		<updated>2009-07-29T08:58:30Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Knowing Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Milestone || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
|align=center | 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136184</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136184"/>
		<updated>2009-07-29T08:57:43Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Knowing Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Milestone || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || If text content of a cell doesn&amp;#039;t fit into the cell it&amp;#039;s overwrites the neighbour cell   || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136181</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136181"/>
		<updated>2009-07-29T08:16:50Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Knowing Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Milestone || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;SelectionModel&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;NONE&amp;#039;&amp;#039;. It&amp;#039;s still possible to navigate with the arrow keys through the grid but mouse actions were ignored. || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || All selection were removed by using left or right arrow keys. Usage of left or right arrow keys shouldn&amp;#039;t have an effect on selection || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136178</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136178"/>
		<updated>2009-07-29T07:58:21Z</updated>

		<summary type="html">&lt;p&gt;Tkr: (checkpoint save)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Milestone || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;TRUE&amp;#039;&amp;#039;. All data were drawn in a small rectangle in the upper left corner || - || new || &lt;br /&gt;
|-&lt;br /&gt;
| 1 || If the property UnoControlGridModel &amp;#039;&amp;#039;HScroll&amp;#039;&amp;#039; is set to &amp;#039;&amp;#039;FALSE&amp;#039;&amp;#039; and many columns were added. The office crashes if you slide with the scrollbar to the right end. || - || new ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136177</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136177"/>
		<updated>2009-07-29T07:41:44Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Knowing Issues */  (checkpoint save)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Milestone || Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Currently it&amp;#039;s not possible to grain the focus with the &amp;#039;&amp;#039;TAB&amp;#039;&amp;#039; key  || - || new ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || || || || &lt;br /&gt;
|-&lt;br /&gt;
| || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136176</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136176"/>
		<updated>2009-07-29T07:25:37Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Event Handling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Name || Method || Comments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridDataListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || rowAdded || &lt;br /&gt;
|-&lt;br /&gt;
| || rowRemoved || Invoked after a remove row call. If removedAll was called the GridDataEvent.Index contains &amp;#039;&amp;#039;-1&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| || dataChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridColumnListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || columnAdded|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnRemoved|| &lt;br /&gt;
|-&lt;br /&gt;
| || columnChanged|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XItemListener&amp;#039;&amp;#039;&amp;#039; || || &lt;br /&gt;
|-&lt;br /&gt;
| || itemStateChanged || Invoked after double click on a row. ItemEvent.ItemId contains the index of the row.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;XGridSelectionListener&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;Not yet implemented.&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| || selectionChanged ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
| || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || &lt;br /&gt;
|-&lt;br /&gt;
| || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136175</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136175"/>
		<updated>2009-07-29T07:09:25Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Knowing Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Description || Task ID || Status || Comments&lt;br /&gt;
|-&lt;br /&gt;
| || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || &lt;br /&gt;
|-&lt;br /&gt;
| || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136174</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136174"/>
		<updated>2009-07-29T06:59:46Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136173</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136173"/>
		<updated>2009-07-29T06:59:30Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Create new columns:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Add the columns to the column model of the grid control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Use the data model of the grid control to add rows:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136172</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136172"/>
		<updated>2009-07-29T06:57:37Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Event Handling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Create new columns:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the columns to the column model of the grid control:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the data model of the grid control to add rows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
== Knowing Issues ==&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136171</id>
		<title>API/UNO AWT/Grid Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=API/UNO_AWT/Grid_Control&amp;diff=136171"/>
		<updated>2009-07-29T06:56:59Z</updated>

		<summary type="html">&lt;p&gt;Tkr: /* Listener */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:UNO Grid Control}}&lt;br /&gt;
=Abstract=&lt;br /&gt;
OpenOffice.org hasn&amp;#039;t a Grid Control via UNO API today. The goal is to develop and implement an UNO Grid Control.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[Image:Overview_gridcontrol.png]]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Create new columns:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // #1 column&lt;br /&gt;
 Object column1Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 &lt;br /&gt;
 XGridColumn column1 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column1Obj);&lt;br /&gt;
&lt;br /&gt;
 column1.setTitle(&amp;quot;Column1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 // #2 column&lt;br /&gt;
 Object column2Obj = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.GridColumn&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumn column2 = (XGridColumn) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumn.class, column2Obj);&lt;br /&gt;
&lt;br /&gt;
 column2.setTitle(&amp;quot;Column2&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the columns to the column model of the grid control:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object columnModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridColumnModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridColumnModel xGridColumnModel = (XGridColumnModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridColumnModel.class, columnModel);&lt;br /&gt;
&lt;br /&gt;
 xGridColumnModel.addColumn(column1);&lt;br /&gt;
 xGridColumnModel.addColumn(column2);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the data model of the grid control to add rows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object dataModel = xMultiComponentFactory.createInstanceWithContext(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.DefaultGridDataModel&amp;quot;, m_xContext);&lt;br /&gt;
 XGridDataModel xGridDataModel = (XGridDataModel) UnoRuntime.queryInterface(&lt;br /&gt;
                XGridDataModel.class, dataModel);&lt;br /&gt;
&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;1&amp;quot;, new String[] {&amp;quot;1,1&amp;quot;,&amp;quot;1,2&amp;quot;} );&lt;br /&gt;
 xGridDataModel.addRow(&amp;quot;2&amp;quot;, new String[] {&amp;quot;2,1&amp;quot;,&amp;quot;2,2&amp;quot;} );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the grid model and assign the column and data model:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Object gridModel = xMultiServiceFactory.createInstance(&lt;br /&gt;
                &amp;quot;com.sun.star.awt.grid.UnoControlGridModel&amp;quot;);&lt;br /&gt;
 XPropertySet xPSetButton = (XPropertySet) UnoRuntime.queryInterface(&lt;br /&gt;
                XPropertySet.class, gridModel);&lt;br /&gt;
&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionX&amp;quot;, new Integer(50));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;PositionY&amp;quot;, new Integer(30));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Width&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Height&amp;quot;, new Integer(400));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;Name&amp;quot;, &amp;quot;GridControl&amp;quot;);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;TabIndex&amp;quot;, new Short((short) 0));&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;ColumnModel&amp;quot;, xGridColumnModel);&lt;br /&gt;
 xPSetButton.setPropertyValue(&amp;quot;DataModel&amp;quot;, xGridDataModel);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handling ==&lt;br /&gt;
&lt;br /&gt;
==Feature Set==&lt;br /&gt;
* Width for each column&lt;br /&gt;
* Height for each row&lt;br /&gt;
* Each cell has its own data type&lt;br /&gt;
* Column and row header&lt;br /&gt;
* Vertical and horizontal scrollbars&lt;br /&gt;
* Row selection ( Single, Multi, Range )&lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y&lt;br /&gt;
&lt;br /&gt;
==Milestones==&lt;br /&gt;
{| cellpadding=5 cellspacing=0 border=1 style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color: #DEDEDE;&amp;quot;&lt;br /&gt;
| Iteration || Due date || Status || Comment || Description || Components&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 1 || 2009-06-30 || style=&amp;quot;background-color: #C0FFC0;&amp;quot; align=center | in progress ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* UnoControl&lt;br /&gt;
* Selection&lt;br /&gt;
* Textdata only&lt;br /&gt;
* Eventhandling&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 2 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Scrollbar modi&lt;br /&gt;
* Column and row headers&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 3 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open ||  || &lt;br /&gt;
To do:&lt;br /&gt;
* modify column and row size &lt;br /&gt;
* Auto resizing&lt;br /&gt;
* A11y &lt;br /&gt;
||&lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center |4 || || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* different data types&lt;br /&gt;
* A11y &lt;br /&gt;
|| &lt;br /&gt;
* UNO&lt;br /&gt;
** IDL&lt;br /&gt;
** Impl.&lt;br /&gt;
*VCL&lt;br /&gt;
** Impl.&lt;br /&gt;
|-&lt;br /&gt;
| align=center | 5 ||  || style=&amp;quot;background-color: #FFFF00;&amp;quot; align=center | open||  ||&lt;br /&gt;
To do:&lt;br /&gt;
* Basic IDE&lt;br /&gt;
* Docs/Wiki |&lt;br /&gt;
|&lt;br /&gt;
* IDE&lt;br /&gt;
** Import/Export&lt;br /&gt;
**UI&lt;br /&gt;
* Doc&lt;br /&gt;
**Wiki&lt;br /&gt;
**SDK-Examples&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Grid specification==&lt;br /&gt;
&lt;br /&gt;
* Selection&lt;br /&gt;
** only row selection is possible&lt;br /&gt;
** selection possibilities with the mouse&lt;br /&gt;
*** mouse click in a cell: single row selection&lt;br /&gt;
*** Ctrl + mouse click in a cell: multiple rows selection possible, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + mouse click in a cell: multiple rows selection, range is between current row and the chosen one&lt;br /&gt;
** selection possibilities with the keyboard&lt;br /&gt;
*** Ctrl + Alt: single row selection, if row has been already selected, deselects it&lt;br /&gt;
*** Shift + UP: multiple rows selection above current row, if rows above the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + DOWN: multiple rows selection beneath current row, if rows beneath the current one have been already selected, they can be deselected one by one&lt;br /&gt;
*** Shift + HOME: multiple row selection, range is between current row and top one&lt;br /&gt;
*** Shift + END: multiple row selection, range is between current row and bottom one&lt;br /&gt;
&lt;br /&gt;
* Keys&lt;br /&gt;
* Resizing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;br /&gt;
[[Category:UNO AWT]]&lt;/div&gt;</summary>
		<author><name>Tkr</name></author>
	</entry>
</feed>