Aliens approaching our Planet

Office 12 - oder 2007 Microsoft Office System - wirft seine Schatten voraus. Zum ersten Mal wird der breiten (Developer-) Öffentlichkeit die neue Version des Office Paketes vorgestellt. Wo? In Redmond, auf dem Microsoft Campus. Ich spreche - bzw. schreibe - von der ODC, der Office System Developer Conference.

Integration der eigenen Anwendung in Office ist inzwischen hoffähig geworden. Macht ja auch Sinn, die Daten und Informationen dorthin zu bringen, wo die Anwender arbeiten. Nur waren die Tools bisher noch ganz schön limitiert.

In Office 2007 gibt es keine Menüs mehr! Punkt. Cool. Endlich weniger Konfusionen. Platz gemacht haben die über 1000 Befehle einer neuen Struktur namens Ribbons (ich bin gespannt auf die deutsche Übersetzung...). Ribbons bringen eine kontextsensitive Präsentation der verfügbaren Befehle. Eine Art tabbed Dialog. Somit ist nur noch das zu sehen, was auch gerade Sinn macht im aktuellen Kontext.

Können wir das als Programmierer nutzen für eigene Erweiterungen? Klar. Das Stichwort ist RibbonExtensibility. Selbiges basiert auf XML. Was sonst. Die Ribbons werden also in XML deklariert. Die Office Programme wiederum interpretieren das XML und extrahieren daraus die Information, die nötig sind, Ribbon Chunks (funktionelle Gruppen) und darin Galleries (visuelle Repräsentationen des zu erwarteneden Ergebnisses) und Befehle zu erzeugen.

So könnte ein Ribbon XML File aussehen:

<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="MyCompany" label="Jens' Enterprise">
<group id="HRGroup" label="Employees">
<gallery id="galleryEmployees" label="Employees"
              size="large" columns="1" getImage="getImage"
              showLabel="false" onAction="GetEmployeeDetail"
              getItemImage="getItemImage" getItemCount="getItemCount"
              getItemLabel="getItemLabel">
     </gallery>
    </group>
</tab>
   <tab id="tabInsert">
<group id="InsertEmployeeData" label="Insert Data">
<button id="InsertButton" label="Insert Employee Data"
size="large" onaction="EmployeeActionHandler">

     </group>
</tab>
  </tabs>
</ribbon>
</customUI>

Integration in diese Art von Interface bedeutet für den Entwickler, welcher den UI Guidelines folgen möchte, seine geplante Funktionalität aufzuteilen. Funktionelle Gruppen zu definieren. Alles, was eingefügt werden kann, gehört in den Tab "Insert" usw. Die Anwender werde es danken. Und wenn wir nur ein eigenes Interface anzeigen und all den "Rest" von Excel oder Word weglassen wollen? Auch kein Problem. In der Deklaration des/der eigenen Ribbon(s) einfach StartFromScratch auf True setzen. Das führt dazu, daß beim Laden des eigenen UIs das komplette Standard UI verschwindet. Machen Sie das mal bei der Menüstruktur von Office 2003...