-
TECHNISCHER HINTERGRUND
DER ERFINDUNG
-
1. Technisches Gebiet
der Erfindung
-
Die vorliegende Erfindung betrifft
die Gebiete der Vorrichtungen mit kleiner Basisfläche (small-footprint devices)
und graphische Benutzeroberflächen
(GUIs) und insbesondere ein System und ein Verfahren für das Erzeugen
einer graphischen Benutzeroberfläche
aus einem Filterausdrucksbaum.
-
2. Beschreibung des relevanten
Standes der Technik
-
Graphische Benutzeroberflächen (GUIs)
ermöglichen
es Benutzern, mit Softwareanwendungen in einer intuitiven Art und
Weise unter Verwendung von graphischen Komponenten oder Steuerungen,
wie z. B. Buttons, Eingabetextfeldern, Menüs usw. zu kommunizieren. Obgleich
graphische Benutzeroberflächen
häufig mit
Softwareanwendungen verknüpft
sind, die auf allgemeinen Recheneinrichtungen ablaufen, wie z. B.
Desktopcomputern, werden graphische Benutzeroberflächen in
anderen Typen von Recheneinrichtungen, wie z. B. Vorrichtungen mit
kleiner Basisfläche, üblicher.
-
Das Gebiet der "cleveren" Einrichtungen mit kleiner Basisfläche wächst und
verändert
sich schnell. Einrchtungen mit kleiner Basisfläche beinhalten in der Hand
haltbare Computer, persönliche
Datenassistenten (PDAs), Funktelefone, GPS-Empfänger (Global Positioning System),
Spielkonsolen, Set-Top-Boxen und viele weitere solche Einrichtungen.
Vorrichtungen mit kleiner Basisfläche werden zunehmend leistungsstark
und sind in der Lage, Softwareanwendungen ablaufen zu lassen oder
Dienste ablaufen zu lassen, die historisch mit allgemeinen Berechnungseinnchtungen,
wie z. B. Desktopcomputern, verknüpft waren. Beispielsweise sind
viele Vorrichtungen mit kleiner Basisfläche nun in der Lage, Webbrowseranwendungen
ablaufen zu lassen.
-
Während
Einrichtungen mit kleiner Stellfläche leistungsfähiger wurden
und die Softwareanwendungen, die auf Einrichtungen mit kleiner Stellfläche ablaufen,
komplexer wurden, wurde es immer wünschenswerter, Benutzern zu
ermöglichen,
leicht mit den Anwendungen über
graphische Benutzeroberflächen
zu kommunizieren. Einrichtungen mit kleiner Stellfläche können jedoch
sehr starke Ressourcenbeschränkungen
haben, wie z. B. die Speichermenge und die verfügbare Verarbeitungsleistung.
Somit ist es häufig
notwendig oder wünschenswert,
speziellen GUI-Code für
Software zu konstruieren, die in der Umgebung einer Einrichtung
mit kleiner Stellfläche
abläuft.
-
Der Quellcode, um graphische Benutzeroberflächen für verschiedene
Teile einer Softwareanwendung zu erzeugen, stellt häufig einen
signifikanten Teil der Codebasis für eine Anwendung dar. Die GUI-Erzeugung kann
das Durchführen
solcher prozeduralen Operationen, wie das Erzeugen von Benutzerschnittstellenkomponenten
oder Steuerungen, das Einstellen verschiedener Attribute der Benutzerschnittstellenkomponenten wie
gewünscht,
das geeignete Positionieren der Benutzerschnittstellenkomponenten
usw. beinhalten. Der resultierende Quellcode kann eine lange Ab folge
von Funktionsaufrufen oder anderen Programmoperationen aufweisen.
Beispielsweise kann der Prozeß der
Positionierung der Benutzerschnittstellenkomponenten viele Funktionsaufrufe
erfordern, um die Größen der
verschiedenen Aspekte der Benutzerschnittstellenkomponenten zu erhalten,
vermischt mit Code, um die Positionslogik durchzuführen, wie
z. B. das Einstellen der variablen Werte der Werte der Komponentenbreite
oder -höhe
usw.
-
In einer ressourcenbeschränkten Umgebung,
wie z. B. bei Einrichtungen mit kleiner Stellfläche, ist es häufig wünschenswert,
die Codegröße zu reduzieren,
beispielsweise um die Speicheranforderungen, um eine Softwareanwendung
ablaufen zu lassen, zu reduzieren. Ein Aspekt der Codegröße, der
möglicherweise
reduziert werden kann, ist die Größe des Codes für die GUI-Erzeugung.
Statt des Schreibens von angepaßtem Quellcode,
wie oben beschrieben wurde, für
das Erzeugen bestimmter graphischer Benutzeroberflächen, kann es
möglich
sein, ein allgemeines Verfahren für die Erzeugung einer graphischen
Benutzeroberfläche
bereitzustellen, das verwendet werden kann, um automatisch bestimmte
graphische Benutzeroberflächen
zu erzeugen.
-
Natürlich müssen, um graphische Benutzeroberflächen in
solch einer systematischen Art und Weise zu erzeugen, bestimmte
Regeln in den zu erzeugenden graphischen Benutzeroberflächen identifiziert
werden. Ein Typ der graphischen Benutzeroberfläche, der sich gut für die systematische
Erzeugung eignet, ist eine graphische Benutzeroberfläche für das Spezifizieren
eines Filterausdrucks. Anwendungsprogramme stellen graphische Benutzeroberflächen für Filterausdrücke zur
Verfügung,
um es Benutzern zu ermöglichen,
bestimmte Kriterien zu spezifizieren, die eingehalten werden sollten,
wenn eine Operation durchgeführt
wird. Beispielsweise kann eine E-Mail-Anwendung eine Filterausdrucks-GUI bereitstellen
für das
Spezifizieren von Kriterien von zu blokkenden E-Mail-Nachrichten.
Als ein einfaches Beispiel kann solch eine graphische Benutzeroberfläche einem
Benutzer erlauben, zu spezifizieren, daß E-Mail-Nachrichten mit einem
Betreffeld, das eine bestimmte Phrase enthält, oder mit einem Absenderfeld,
das einen bestimmten Namen enthält,
blockiert werden sollte oder automatisch zu einem Papierkorb-Ordner
bewegt werden sollte.
-
Anwendungen können graphische Benutzeroberflächen für einen
Filterausdruck verwenden für
irgendeinen von verschiedenen anderen Zwecken. Beispielsweise kann
eine Textverarbeitungsanwendung eine Filterausdrucks-GUI bereitstellen,
die es einem Benutzer ermöglicht,
verschiedene Dokumentenkriterien zu spezifizieren, die einzuhalten
sind, wenn eine Textsuche durchgeführt wird. Als ein weiteres
Beispiel können Anwendungen,
die Datenbanken durchsuchen, eine graphische Benutzeroberfläche bereitstellen
für das
Spezifizieren eines Filterausdrucks, der zu verwenden ist, wenn
eine Datenbanksuche oder -abfrage durchgeführt wird. Beispielsweise kann
eine Anwendung für
das Nachschlagen einer Telefonnummerinformation in einer Datenbank
eine GUI bereitstellen für
das Spezifizieren von Kriterien betreffend zu erhaltende und darzustellende
Telefonnummern.
-
Viele Typen von Filterausdrucks-GUIs
nutzen bestimmte Aspekte gemeinsam. Beispielsweise können die
graphischen Benutzeroberflächen
für sowohl
das Nachrichten-Blockierbeispiel als auch das Textsuche-Beispiel,
die oben erwähnt
wurden, Benutzerschnittstellenkomponenten beinhalten, die verwendet
werden, um Boolesche Ausdrücke
zusammen mit Benutzerschnittstellenkomponenten für die Spezifizierung von Termen
zu verwenden. Statt einer langen Reihe von State ments, die von einem
Programmierer codiert werden, um Benutzerschnittstellenkomponenten
zu erzeugen, die Komponenten zu positionieren usw., kann es möglich sein,
automatisch unter Verwendung eines systematischen Verfahrens eine
Filterausdrucks-GUI zu erzeugen. Wenn eine Anwendung mehrere Filterausdrucks-GUIs
verwendet, kann jede dieser GUIs unter Verwendung eines gemeinsamen
Codes erzeugt werden, was die Größe der Anwendung
reduzieren kann. Beispielsweise kann zusätzlich zu der Nachrichtenblockierfilterausdrucks-GUI,
die oben diskutiert wurde, eine E-Mail-Anwendung ebenso Benutzern
eine Filterausdrucks-GUI bereitstellen für das Durchführen von E-Mail-Nachrichtensuchen.
In diesem Beispiel können
beide Filterausdrucks-GUIs unter Verwendung eines gemeinsamen Quellcodes
erzeugt werden.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die oben ausgeführten Probleme können zu
einem großen
Teil gelöst
werden durch ein System und ein Verfahren für das Erzeugen einer graphischen
Benutzeroberfläche
aus einem Filterausdrucksbaum, wie hier beschrieben ist. Filterausdrücke können verwendet
werden für
irgendeinen von verschiedenen Zwecken von Anwendungsprogrammen.
Ein Anwendungsprogramm kann einen Filterausdrucksbaum erzeugen,
der einen Filterausdruck darstellt, z. B. durch Syntaxanalyse gespeicherter
Information betreffend den Filterausdruck und durch Verwendung der
Information, um eine Baumstruktur mit Knoten zu erzeugen, die Information aufweist,
die verschiedene Aspekte des Filterausdrucks spezifiziert.
-
Filterknoten des Filterausdrucksbaums
können
Information aufweisen, die ein Attribut, einen Vergleichsoperator
und einen Wert spezifizieren. Beispielsweise kann eine E-Mail-Anwendung
einen Filterausdrucksbaum erzeugen mit einem Blattknoten von "Absender enthält'John Doe'", wobei "Absender" das Attribut ist, "enthält" der Vergleichsoperator
ist und "John Doe" der Wert ist. Das
Attribut, der Vergleichsoperator und der Wert, die mit dem Blattknoten
verknüpft
sind, werden zusammen als "Ausdruckseinheit" bezeichnet.
-
Nicht-Blattknoten des Filterausdrucksbaumes
können
Information aufweisen, die einen Booleschen Operator, wie z. B. "UND", "ODER", "EXKLUSIV ODER", "NICHT" usw. spezifizieren.
Diese Booleschen Operatoren können
die Ausdruckseinheiten, die von den Blattknoten spezifiziert werden,
logisch verbinden, um einen kompletten Filterausdruck zu bilden.
Der (die) Nachfolgerknoten eines Nicht-Blattknotens kann (können) entweder
ein Blattknoten, der eine Ausdruckseinheit spezifiziert, oder ein
anderer Nicht-Blattknoten sein. Somit kann jeder Nicht-Blattknoten
außer
dem Wurzelknoten als eine Wurzel eines Unterbaums angesehen werden,
der einen Unterausdruck des Filterausdrucks spezifiziert.
-
Der Filterausdrucksbaum kann dann
verarbeitet werden, um automatisch eine graphische Benutzeroberfläche (GUI)
für den
Filterausdruck zu erzeugen. Die GUI kann Sätze von Benutzerschnittstellenkomponenten
oder -steuerungen aufweisen, wie z. B. Textfeldkomponenten/-steuerungen,
Auswahlkomponenten/-steuerungen usw., wobei jeder Satz zu einer
Ausdruckseinheit korrespondiert, die in dem Filterausdrucksbaum
enthalten ist. Jede Benutzerschnittstellenkomponentelsteuerung in
dem Satz kann einen Benutzer in die Lage versetzen, eine Information
betreffend einen Teil der Ausdruckseinheit zu spezifizieren. Beispielsweise
kann eine GUI einen Satz von Benutzerschnittstellenkomponenten (UI)
beinhalten mit einer ersten UI-Komponente, die es einem Benutzer
ermöglicht,
ein Attribut auszuwählen,
einer zweiten UI-Komponente, die es einem Benutzer ermöglicht,
einen Vergleichsoperator, der für
das Attribut geeignet ist, auszuwählen, und einer dritten UI-Komponente, die es
einem Benutzer ermöglicht,
einen Wert, der für
das Attribut geeignet ist, auszuwählen.
-
Ist der Baumwurzelknoten gegeben,
können
die Nachfolgerknoten rekursiv durchlaufen werden, wodurch Sätze von
Benutzerschnittstellenkomponenten/-steuerungen, die Ausdruckseinheiten
zu dem GUI als Baumblattknoten darstellen, erreicht werden. Die
UI-Komponenten/-Steuerungen für
jede Ausdruckseinheit können
mit geeigneten Werten entsprechend der Ausdruckseinheitsinformation
initialisiert werden. Beispielsweise kann für die "Absender enthält 'John Doe'"-Ausdruckseinheit,
die oben gegeben ist, die Attribut-UI-Komponente eine Auswahl-UI-Komponente
sein, die es einem Benutzer ermöglicht,
unter Einträgen,
wie z. B. "Absender", "Betreff", "Datum" usw. auszuwählen, und
die Auswahl-UI-Komponente kann derart initialisiert werden, daß der "Absender"-Eintrag ausgewählt wird.
-
Die Benutzerschnittstellenkomponenten/-steuerungen
können
zu einem Benutzerschnittstellen"Container" hinzugefügt werden,
d. h. zu einer Benutzerintertacestruktur oder -Objekt, wie z. B.
ein Benutzerinterfacepanel oder -fenster, das in der Lage ist, Benutzerintertacekomponenten/-steuerungen zu hosten
bzw. aufzunehmen. Wenn die UI-Komponenten/-Steuerungen zu dem UI-Container hinzugefügt werden,
können
die UI-Komponenten/-Steuerungen in irgendeiner gewünschten
Art und Weise positioniert werden, z. B. in horizontaler Richtung,
beginnend mit einer Attribut-UI-Komponente
auf der linken Seite, einer Vergleichsoperator-UI in der Mitte und
einer Wert-UI-Komponente
auf der rechten Seite.
-
Eine Hierarchie von UI-Containern
kann erzeugt werden. Das heißt,
daß, wenn
jeder Baum Blattknoten verarbeitet wird, ein getrennter UI-Container
für das
Aufnehmen der UI-Komponenten/-Steuerungen,
die die Ausdruckseinheit des Blattknotens darstellen, erzeugt werden
kann und ein Vorgänger-UI-Container
hinzugefügt
werden kann. Das Erzeugen eines getrennten UI-Containers für einen
Knoten in dieser Art kann das Erzeugen der GUI vereinfachen durch
das Ermöglichen,
daß die
UI-Komponenten/-Steuerungen unabhängig davon, wo der Knoten in
dem Filterausdrucksbaum liegt, auf einem UI-Container positioniert
werden kann. In einer alternativen Ausführungsform kann jedoch ein
einzelner UI-Container verwendet werden, um für die verschiedenen Knoten
die UI-Komponenten/-Steuerungen
aufzunehmen, und eine Positionierungsoffsetinformation kann verfolgt
werden, wenn der Baum durchquert wird, was es erlaubt, daß die UI-Komponenten/-Steuerungen
geeignet positioniert werden.
-
Da jeder Nicht-Blattknoten des Filterausdrucksbaums
während
der Durchquerung des Baums erreicht wird, kann eine Auswahl-UI-Komponente
oder -Steuerung, die es dem Benutzer erlaubt, einen Booleschen Operator
auszuwählen,
zu der GUI hinzugefügt
werden. Diese Auswahl-UI-Komponente/-Steuerung
kann derart initialisiert werden, daß ein Eintrag ausgewählt wird,
der der Booleschen Operatorinformation entspricht, die durch den
Nicht-Blattknoten spezifiziert wird. Ähnlich wie oben erörtert wurde,
kann diese Auswahl-UI-Komponente/-Steuerung zu ihrem eigenen getrennten
UI-Container hinzugefügt
werden oder ein einzelner UI-Container kann verwendet werden.
-
Information, die auf die Benutzerinterfacekomponenten
Bezug nimmt, kann in dem Filterausdrucksbaum gespeichert werden,
wenn die graphische Benutzeroberfläche erzeugt wird. Sobald die
GUI kreiert wurde, kann die Anwendung mit der graphischen Benutzeroberfläche in Wechselwirkung
treten durch Abfragen dieser Information.
-
KURZE BESCHREIBUNG DER
FIGUREN
-
Andere Ziele und Vorteile der Erfindung
werden deutlich durch Lesen der folgenden detaillierten Beschreibung
und unter Bezug auf die begleitenden Zeichnungen, in denen:
-
1 ein
Blockdiagramm ist, das eine Ausführungsform
eines Systems zeigt, das das Kreieren einer graphischen Benutzeroberfläche aus
einem Filterausdrucksbaum unterstützt,
-
2 ein
Diagramm ist, das ein Beispiel eines Filterausdrucksbaums darstellt,
-
3 eine
beispielhafte GUI zeigt, die aus einem Filterausdrucksbaum erzeugt
wurde,
-
4 ein
Flußdiagramm
ist, das eine Ausführungsform
eines Verfahrens für
das systematische Erzeugen einer GUI aus einem Filterausdrucksbaum
zeigt,
-
5 ein
Flußdiagramm
ist, das eine Ausführungsform
eines Prozesses für
das Bestimmen darstellt, ob ein Filterausdrucksbaumknoten Nachfolgerknoten
hat, und
-
6A–6B ein Flußdiagramm
sind, das eine Ausführungsform
eines Prozesses für
das Erzeugen von graphischen Benutzeroberflächenelementen darstellt, die
eine Ausdruckseinheit eines Filterausdrucksbaums repräsentieren.
-
Während
die Erfindung verschiedenen Modifikationen und alternativen Formen
zugänglich
ist, werden in den Figuren beispielhaft spezifische Ausführungsformen
hiervon gezeigt und hier im Detail beschrieben. Es sollte jedoch
verstanden werden, daß die
Zeichnungen und die detaillierte Beschreibung hierzu nicht dafür vorgesehen
sind, die Erfindung auf die bestimmte beschriebene Form zu begrenzen,
sondern im Gegenteil ist es die Absicht, alle Modifikationen, Äquivalente
und Alternativen abzudecken, die in den Geist und den Schutzbereich
der vorliegenden Erfindung fallen, wie er von den angefügten Ansprüchen definiert
wird.
-
DETAILLIERTE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
1 - Beispielhaftes System
-
1 ist
ein Blockdiagramm, das eine Ausführungsform
eines Systems 720 zeigt, die die Erzeugung einer graphischen
Benutzeroberfläche
(GUI) von einem Filterausdrucksbaum unterstützt. Das System 720 kann
in irgendeiner von verschiedenen Typen von Berechnungseinrichtungen,
wie z. B. Desktopcomputern oder Workstations, Einrichtungen mit
kleiner Basisfläche
usw. eingesetzt werden.
-
Wie in 1 gezeigt
ist, kann das System 720 einen Prozessor 710 beinhalten.
Der Prozessor 710 kann irgendeiner von verschiedenen Typen
sein, einschließlich
eines X86-Prozessors, z. B. eines Pentium Class, eines PowerPC-Prozessors,
einer CPU von der SPARC-Familie von RISC-Prozessoren, sowie auch andere.
In verschiedenen Ausführungsformen,
z. B. einer Ausführungsform,
in der das System 720 eine Einrchtung mit kleiner Basisfläche darstellt,
kann der Prozessor 710 ein weniger leistungsfähiger Prozessor
sein als die oben aufgelisteten oder kann ein Prozessor sein, der
speziell für
eine Einrichtung mit kleiner Basisfläche entwickelt wurde, wie z.
B. ein digitaler Signalprozessor (DSP). Der Prozessor 710 kann
verschiedene Taktgeschwindigkeiten haben, einschließlich Taktgeschwindigkeiten,
die ähnlich
denjenigen sind, die in Desktopcomputerklassenprozessoren gefunden
werden, sowie auch niedrigere Geschwindigkeiten, wie z. B. 16 MHz.
-
Das System 720 beinhaltet
ebenso einen Speicher 712, der mit dem Prozessor 710 verbunden
ist. Der Speicher 712 kann irgendeinen von verschiedenen
Speichertypen aufweisen, einschließlich DRAM, SRAM, EDO RAM usw.
oder einen nichtflüchtigen
Speicher, wie z. B. ein magnetisches Medium, z. B. eine Festplatte oder
ein optischer Speicher. Der Speicher 712 kann andere Speichertypen
sowie Kombinationen hiervon aufweisen. Für eine Ausführungsform, in der das System 720 eine
Einrichtung mit kleiner Basisfläche
zeigt, kann der Speicher 712 eine sehr kleine Speicherkapazität verglichen
mit der eines typischen Desktopcomputersystems haben.
-
Wie in 1 gezeigt
ist, kann der Speicher 712 ein Anwendungsprogramm 718 speichern.
Das Anwendungsprogramm 718 kann irgendeines von verschiedenen
Typen von Anwendungsprogrammen sein, die Filterausdrücke verwenden.
Beispielsweise kann das Anwendungsprogramm 718 eine E-Mail-Anwendung sein,
die Filterausdrücke
benutzt, um E-Mail-Nachrichten abzublocken oder zu durchsuchen,
das Anwendungsprogramm 718 kann ein Textverarbeitungsprogramm
sein, das einen Filterausdruck benutzt, um Dokumentsuchen durchzuführen, die
Anwendung 718 kann eine Anwendung sein, die in der Lage
ist, eine Datenbank zu durchsuchen oder abzufragen unter Verwendung
von Kriterien, die durch einen Filterausdruck spezifiziert werden
usw. Das Anwendungsprogramm kann konfiguriert sein, um automatisch
eine graphische Benutzeroberfläche
aus einem Baum, der einen Filterausdruck darstellt, zu erzeugen,
wie unten beschrieben wird.
-
Wie in 1 gezeigt
ist, kann das System 720 ebenso eine Anzeige 716 aufweisen.
Die Anzeige 716 kann irgendeine von verschiedenen Typen
sein, wie z. B. eine LCD- (Flüssigkristallanzeige),
eine CRT- (Kathodenstrahlröhre)
Anzeige usw. Es sei bemerkt, daß die
Anzeige für
eine typische Vorrichtung mit kleiner Basisfläche, wie z. B. ein Smart-Funktelefon,
klein sein kann verglichen mit der Anzeige eines Desktopcomputersystems.
-
1 stellt
eine GUI 722 dar, die auf der Anzeige 716 dargestellt
wird. Die GUI 722 kann eine GUI sein, die aus einem Filterausdrucksbaum
in Übereinstimmung
mit der vorliegenden Erfindung erzeugt wurde. Der Prozessor 710,
der Code und Daten von dem Speicher 712 ausführt, stellt
eine Einrichtung für
das Erzeugen und Anzeigen der GUI zur Verfügung.
-
Wie in 1 gezeigt
ist, kann das System 720 ebenso einen Eingabemechanismus 714 aufweisen. Der
Eingabemechanismus 714 kann irgendeiner von verschiedenen
Typen sein, wie er für
ein bestimmtes System geeignet ist. Beispielsweise kann der Eingabemechanismus
eine Tastatur, eine Maus, ein Trackball, ein Touchpad, ein Mikrofon,
ein Modem, ein Infrarotempfänger
usw. sein.
-
Wie oben erwähnt wurde, kann in verschiedenen
Ausführungsformen
das System 720 eine Einrichtung mit kleiner Basisfläche veranschaulichen.
So wie der Begriff hier verwendet wird, ist eine Einrichtung mit kleiner
Basisfläche
einer Hardwareeinrichtung, die Berechnungsressourcen, wie z. B.
einen Prozessor und einen Systemspeicher, hat, jedoch signifikant
höhere
Einschränkungen
an eine oder mehrere dieser Ressourcen hat als ein typischer Desktopcomputer.
Beispielsweise kann eine typische Einrichtung mit kleiner Basisfläche 2 MB
Speicher oder weniger haben, während
ein typisches Desktopsystem 64 MB oder mehr haben kann. Ebenso kann
eine typische Einrichtung mit kleiner Basisfläche signifikant weniger Verarbeitungsleistung
haben als ein typisches Desktopcomputersystem, entweder in Begriffen
des Prozessortyps oder der Prozessorgeschwindigkeit oder beidem.
Beispielsweise kann eine bestimmte persönliche Datenassistent-Einrichtung
einen 16 MHz-Prozessor
haben, während
ein typisches Desktopsystem eine Prozessorgeschwindigkeit von 100 MHz
oder höher
haben kann. Ebenso kann eine typische Einrichtung mit kleiner Basisfläche eine
Anzeigegröße haben,
die signifikant kleiner als der Anzeigeschirm eines Desktoprechensystems
ist. Beispielsweise ist der Anzeigeschirm eines in der Hand haltbaren
Computers typischerweise klein verglichen mit dem Anzeigeschirm eines
Desktopmonitors. Es sei bemerkt, daß die spezifischen Zahlen,
die oben angegeben wurden, nur beispielhaft sind und nur aus Gründen des
Vergleichs verwendet werden.
-
Einrichtungen mit kleiner Basisfläche haben
ebenso Einschränkungen
bei anderen Ressourcentypen verglichen mit typischen Desktoprechensystemen,
außer
dem Speicher, dem Prozessor und der Anzeigegrößenressourcen, die oben beschrieben
wurden. Beispielsweise kann eine typische Einrichtung mit kleiner
Basisfläche
keine Festplatte haben, kann keine Netzwerkverbindung haben oder
kann eine intermittierende Netzwerkverbindung haben oder kann eine
drahtlose Netzwerkverbindung haben usw.
-
Viele Einrichtungen mit kleiner Basisfläche sind
tragbar und/oder sind klein verglichen mit Desktopcomputem, wobei
dies jedoch nicht notwendigerweise so ist. Ebenso sind viele Einrichtungen
mit kleiner Basisfläche
hauptsächlich
oder ausschließlich
batteriebetrieben. Ebenso können
Einrichtungen mit kleiner Basisfläche typischerweise einen beschränkteren
oder engeren Bereich von Nutzungsmöglichkeiten haben als ein typisches
Desktopcomputersystem. Somit veranschaulicht in verschiedenen Ausführungsformen
das in 1 dargestellte
System irgendeines der folgenden Systeme, wobei es jedoch nicht
hierauf begrenzt ist: in der Hand haltbare Computer, tragbare Vorrichtungen
(z. B. Armbanduhrcomputer), persönliche
Datenassistenten (PDAs), "clevere" Funktelefone, Set-Top-Boxen,
Spielkonsolen, Einheiten des globalen Positionierungssystems (GPS),
elektronische Textbucheinrichtungen usw. Da sich neue Klassen von
Konsumentenvorrichtungen schnell abzeichnen, ist es nicht möglich, eine
umfassende Liste von Einrichtungen mit kleiner Basisfläche bereitzustellen.
Der Begriff "Einrichtung
mit kleiner Basisfläche" bzw. "Small-Footprint-Einrichtung" ist dafür vorgesehen,
solche Vorrichtungen zu bezeichnen, die vernünftig in den Geist und den
Schutzbereich des oben beschriebenen Begriffs aufgenommen werden
können.
-
Es sei bemerkt, daß in verschiedenen
Ausführungsformen
das System und das Verfahren, die hier beschrieben wurden, ebenso
in einem Allzweckcomputersystem, wie z. B. einem Desktop-PC oder einem Mainframe-Computer,
eingesetzt werden können.
-
2 - Filterausdrucksbaum
-
2 ist
ein Diagramm, das ein Beispiel eines Filterausdrucksbaumes darstellt.
Ein Filterausdrucksbaum ist eine Baumdatenstruktur, die einen Filterausdruck
darstellt. Ein Anwendungsprogramm kann einen Filterausdrucksbaum
in irgendeiner von verschiedenen Arten und Weisen konstruieren.
Beispielsweise kann eine Anwendung Informationen speichern, die
einen Filterausdruck spezifizieren können und einen Filterausdrucksbaum
konstruieren können
durch Syntaxanalyse dieser Informationen und durch Erzeugen einer
Baumdatenstruktur, die die Information darstellt. Information, die
einen Filterausdruck spezifiziert, kann in irgendeinem von verschiedenen
Formaten gespeichert werden und kann gespeichert werden unter Verwendung
von irgendeiner von verschiedenen beständigen oder nicht beständigen Speichermitteln.
Als ein Beispiel kann ein E-Mail-Anwendungsprogramm
Information in einem Textformat speichern, wie z. B.:
UND (UND
(ODER ("Absender" "enthält" "John Doe") ("Datum" "liegt vor" "11/10/99")) ("Betreff" "beginnt mit" "Verkaufszahlen")) ("Priorität" "ist" "niedrig")),
wobei diese
Information Ausdruckseinheiten spezifiziert, die logisch mit anderen
Ausdruckseinheiten über Boolesche
Verknüpfungen
in Bezug stehen. Wie in 2 gezeigt
ist, kann diese Information verwendet werden, um einen Filterausdrucksbaum
zu erzeugen, der eine hierarchische Beziehung zwischen verschiedenen Abschnitten
des Filterausdrucks spezifiziert. Es sei bemerkt, daß das oben
gezeigte Format nur beispielhaft ist und die Filterausdrucksinformation
in irgendeinem von verschiedenen anderen Formaten spezifiziert und
gespeichert werden kann, einschließlich Text- und Binärformaten.
-
Wie oben erörtert wurde, können Filterausdrücke für verschiedene
Zwecke von Anwendungsprogrammen verwendet werden. Beispielsweise
kann ein Textprozessoranwendungsprogramm beharrlich Information speichern,
die die zuletzt durchgeführte
Textsuche, die von einem Benutzer durchgeführt wurde, spezifiziert, und
kann aus der Information einen Filterausdrucksbaum konstruieren.
Es sei bemerkt, daß die
Filterausdrucksinformation ursprünglich
in einem Vorgabeformat gespeichert sein kann, z. B. als ein Teil
des Installationsprozesses für
eine Anwendung. Für
andere Typen von Anwendungsprogrammen oder für Anwendungsprogramme, die
innerhalb bestimmter Umgebungen ablaufen, kann es wünschenswert
sein, immer einen Filterausdrucksbaum aus solch einer Vorgabeinformation
zu konstruieren statt aus der gespeicherten Information, die in
Antwort auf eine Benutzerinformation modifiziert wurde. Die Filterausdrucksinformation
kann intern innerhalb eines Anwendungsprogramms gespeichert werden,
z. B. als Vorgabeinformation, die von dem Anwendungsquellcode spezifiziert
wird, oder extern zu einem Anwendungsprogramm, z. B. durch Speichern
der Information in einer Datei oder einer Datenbank.
-
Wie in 2 gezeigt
ist, kann jeder Blattknoten des konstruierten Filterausdrucksbaums
Information aufweisen, die ein Attribut, einen Vergleichsoperator
und einen Wert spezifiziert. Wie hier verwendet, ist ein Blattknoten
ein Knoten, der mit einer Verzweigung des Baums verbunden ist, der
ein Ende bildet und keine Verbindung zu weiteren Verzweigungen darstellt.
Beispielsweise spezifiziert, wie in 2 gezeigt
ist, einer der Blattknoten ein Attribut 300 des "Absenders", einen Vergleichsoperator 302 von "enthält" und einen Wert 304 von "John Doe". Das Attribut, der
Vergleichsoperator und der Wert, der mit einem Blattknoten verknüpft ist, werden
zusammen als "Ausdruckseinheit" bezeichnet.
-
Es sei bemerkt, daß in alternativen
Ausführungsformen
ein Filterausdrucksbaum sich in verschiedenen Aspekten von dem beispielhaften
Filterausdrucksbaum der 2 unterscheiden
kann. Beispielsweise können
statt des Speicherns der Elemente einer Ausdruckseinheit innerhalb
eines einzelnen Knotens getrennte Knoten verwendet werden, um das
Attribut, den Vergleichsoperator und die Wertinformation der Ausdruckseinheit
zu speichern.
-
Das Attribut einer Ausdruckseinheit
spezifiziert einen Aspekt der von dem Anwendungsprogramm zu filternden
Einheiten. Die möglichen
Attribute können
von einem bestimmten Typ des Anwendungsprogramms oder von dem bestimmten
Typ der von dem Anwendungsprogramm zu filternden Einheit abhängen. Beispielsweise
können
für einen
Filterausdruck, der an E-Mail-Nachrchten anzuwenden ist, Attribute
solche Aspekte der E-Mail-Nachrichten beinhalten, wie der Nachrichtenabsender,
der Nachrichtenbetreff, das Nachrichtendatum, die Nachrichtenpriorität usw.,
wie in 2 gezeigt ist.
Bestimmte Anwendungen können
irgendeinen von verschiedenen Typen von Attributen definieren und
verwenden, wenn gewünscht.
-
Der Vergleichsoperator einer Ausdruckseinheit
spezifiziert einen auf das Attribut der Ausdruckseinheit anzuwenden
Vergleichstyp. Die möglichen
Vergleichsoperatoren können
von dem bestimmten Attribut oder dem Typ des Attributs abhängen. Beispielsweise
können,
wenn das Attribut der Ausdruckseinheit ein "Datum"-Attribut ist, die möglichen Vergleichsoperatoren
solche Operatoren wie "liegt
vor", "ist", "liegt nach" usw. enthalten.
Als ein anderes Beispiel können,
wenn das Attribut der Ausdruckseinheit ein Text-Attribut ist, z.
B. der Nachrichtenabsender, der Nachrichtenbetreff etc., die möglichen
Vergleichsoperatoren solche Operatoren wie "beginnt mit", "enthält" usw. enthalten.
-
Der Wert einer Ausdruckseinheit spezifiziert
einen Wert, der bei der Bestimmung verwendet wird, ob ein System
das von einer Ausdruckseinheit spezifizierte Kriterium erfüllt. Die
möglichen
Werte können
von dem bestimmten Attribut oder dem Typ des Attributs abhängen. Wenn
beispielsweise das Ausdruckseinheitsattribut ein "Datum"-Attribut ist, können die
möglichen
Werte Daten sein. Wenn das Attribut der Ausdruckseinheit ein "Nachrichtenprioritäts"-Attribut ist, können die
möglichen
Werte Prioritätswerte
beinhalten, wie z. B. "niedrig", "normal", "hoch" usw. Wenn das Attribut
der Ausdruckseinheit ein textliches Attribut ist, z. B. "Nachrichtenbetreff", können die
möglichen
Werte irgendwelche Textwerte beinhalten.
-
Es wird bemerkt, daß in alternativen
Ausführungsformen
Teile eines Filterausdrucks unterschiedlich zu den Ausdruckseinheiten,
die oben beschrieben wurden, dargestellt werden können. Beispielsweise
kann es geeignet oder wünschenswert
sein, anstatt eine Ausdruckseinheit mit einem Attribut, einem Vergleichsoperator und
einem Wert darzustellen, eine Ausdruckseinheit einfach als ein Attribut
und ein Wertepaar darzustellen, z. B., wenn der Vergleichsoperator,
der angewendet wird, immer ein impliziter "ist"-Operator
ist.
-
Wie in 2 gezeigt
ist, können
die Ausdruckseinheiten, die von dem Filterausdrucksbaumblattknoten spezifiziert
werden, logisch miteinander über
Boolesche Verknüpfungen
verbunden sein, die durch die Nicht-Blattknoten des Filterausdrucksbaums
spezifiziert werden. Somit bilden die Ausdruckseinheiten zusammen
mit den Booleschen Operatoren, die sich diesen anschließen, einen
vollständigen
Filterausdruck.
-
3 - Beispielhafte GUI, die aus dem Filterausdrucksbaum
erzeugt ist
-
3 stellt
eine beispielhafte GUI dar, die von einem Filterausdrucksbaum erzeugt
wird. Die in 3 gezeigte
GUI entspricht dem Filterausdrucksbaum von 2.
-
Wie gezeigt, kann die GUI unterschiedliche
Typen von Benutzerschnittstellenkomponenten oder -steuerungen beinhalten,
wie es für
die Darstellung bestimmter Ausdruckseinheiten geeignet ist. Beispielsweise können die
Benutzerschnittstellenkomponenten oder -steuerungen, die den Attribut-
und Vergleichsoperatorabschnitten der Ausdruckseinheiten entsprechen,
Auswahlbenutzerschnittstellenkomponenten oder -steuerungen sein,
d. h. Benutzerschnittstellenkomponenten, die es einem Benutzer erlauben,
eine von verschiedenen Auswahlmöglichkeiten
auszuwählen.
Beispielsweise kann in der GUI der 3 in
Antwort auf einen Benutzer, der auf die Benutzerschnittstellenkomponenten
entsprechend der Ausdruckseinheitsattribute klickt, d. h. die linke
Spalte der Benutzerschnittstellenkomponenten, eine auswählbare Liste
von Attributen angezeigt werden, wie z. B. "Absender", "Datum", "Betreff" usw.
-
Die GUI kann ebenso andere Typen
von Benutzerschnittstellenkomponenten aufweisen. Beispielsweise
beinhaltet die GUI der 3 Textfeldbenutzerschnittstellenkomponenten,
die einen Benutzer in die Lage versetzen, Freitext für Werte
von textlichen Attributen einzugeben, und beinhaltet eine Datenauswahlbenutzerschnittstellenkomponente,
die einen Benutzer in die Lage versetzt, einen Wert für ein "Datum"-Attribut auszuwählen.
-
Wie unten beschrieben wird, können GUIs
für das
Spezifizieren von Filterausdrücken,
wie z. B. die GUI, die in 3 dargestellt
ist, systematisch aus einem Filterausdruckbaum erzeugt werden.
-
4 - Erzeugen einer GUI aus einem Filterausdrucksbaum
-
4 ist
ein Flußdiagramm,
das eine Ausführungsform
eines Verfahrens für
das systematische Erzeugen einer GUI aus einem Filterausdrucksbaum
darstellt. Das in 4 gezeigte
Verfahren arbeitet auf bestimmten Filterausdrucksbaumknoten, beginnend
mit dem Wurzelknoten, und kann rekursiv an nachfolgende Knoten angewendet
werden, wie unten diskutiert wird. Das Verfahren der 4 kann von irgendeinem von
verschiedenen Anwendungsprogrammen ausgeführt werden.
-
Das Verfahren von 4 wird in Begriffen der Benutzerschnittstellen-"Container" beschrieben. Ein
Benutzerschnittstellencontainer ist ein Benutzerschnittstellenobjekt
oder eine Benutzerschnittstellenstruktur auf bzw. in der Benutzerschnittstellenkomponente,
wie z. B. die in 3 gezeigten
Komponenten, gehostet sein können.
Beispielsweise kann in einer unter Verwendung der Programmiersprache
JavaTM implementierten Ausführungsform
ein Benutzerschnittstellencontainer eine JavaTM Abstract
Window Toolkit (AWT) Benutzerschnittstellenkomponente sein, wie
z. B. eine java.awt.Panel-Benutzerschnittstellenkomponente. In anderen Ausführungsformen
kann ein Benutzerschnittstellencontainer irgendeines von verschiedenen
anderen Typen von Benutzerschnittstellenobjekten oder -strukturen
sein, die in der Lage sind, Benutzerschnittstellenkomponenten oder – steuerungen
zu hosten, wie z. B. Fenster, Panels usw.
-
Ein Benutzerschnittstellencontainer
kann zu dem Verfahren von 4 geleitet
werden. Wie unten beschrieben wird, können die GUI-Komponenten kreiert
und in dem Container positioniert werden. Wenn die Rekursion notwendig
ist, können
die nachfolgenden Benutzerschnittstellencontainer erzeugt und in
dem vorherigen Container plaziert werden. Solch eine Verwendung
von ineinander gestapelten bzw. verschachtelten Benutzerschnittstellencontainern
kann dem Verfahren von 4 ermöglichen,
rekursiv angewendet zu werden, so daß Benutzerschnittstellenkomponenten,
die immer in den Container ausgegeben werden, in derselben Art und
Weise zu dem Verfahren weitergeleitet werden, ungeachtet dessen,
wo die Knoten in dem Filterausdrucksbaum liegen.
-
Es sei bemerkt, daß in einer
alternativen Ausführungsform
die Verwendung von verschachtelten Benutzerschnittstellencontainern
weggelassen werden kann. Beispielsweise kann die Information betreffend
die gegenwärtigen
Positionsoffsetwerte zu dem Verfahren geleitet werden, was es dem
Verfahren ermöglicht,
die Benutzerschnittstellenkomponenten korrekt auf einem einzelnen
Benutzerschnittstellencontainer zu positionieren.
-
In Schritt 100 von 4 wird der Filterausdrucksbaumknoten überprüft, um zu
bestimmen, ob er nachfolgende Knoten hat. Die nachfolgenden Knoten
eines gegebenen Knotens sind diejenigen Knoten (sofern es welche
gibt), die direkt unterhalb des gegebenen Knotens in der Baumhierarchie
verbunden sind. Eine Ausführungsform
von Schritt 100 wird unten mehr im Detail illustriert.
-
Wenn der Knoten nachfolgende Knoten
hat, dann weist der Knoten Boolesche Operatorinformationen auf,
die die nachfolgenden Knoten des Knotens logisch verknüpfen, wie
oben diskutiert wurde. In Schritt 102 kann ein Benutzerschnittstellencontainer
für den
gegenwärtigen
Knoten erzeugt und zu dem Benutzerschnittstellencontainer, der in
das Verfahren geleitet wird, hinzugefügt werden. Abhängig von
einer bestimmten Ausführungsform
kann der Benutzerschnittstellencontainer für den gegenwärtigen Knoten
implizit als Teil des Erzeugungsprozesses zu dem Benutzerschnittstellencontainer
hinzugefügt
werden, der in das Verfahren eingeleitet wurde, oder er kann explizit
hinzugefügt
werden, z. B. mit einer zusätzlichen
Funktion oder einem Verfahrensaufruf.
-
In Schritt 300 kann eine
Benutzerschnittstellenkomponente, die dem Booleschen Operator des
Knotens entspricht, erzeugt werden und zu dem Benutzerschnittstellencontainer
für den
gegenwärtigen
Knoten hinzugefügt
werden. Beispielsweise kann eine Auswahl-Benutzerschnittstellenkomponente,
die es einem Benutzer erlaubt, aus Booleschen Operatoreinträgen, wie
z. B. "UND", "ODER", "EXKLUSIVODER", "NICHT" usw., auszuwählen, hinzugefügt werden,
oder es können
Optionsfeldbenutzerschnittstellenkomponenten entsprechend dieser
Operatoren hinzugefügt
werden. Der Wert der Booleschen Operator-UI-Komponente kann eingestellt
werden, um dem Booleschen Operator zu entsprechen, der von der Knoteninformation
spezifiziert wird.
-
In Schritt 104 kann das
Verfahren rekursiv auf jeden Nachfolgerknoten angewendet werden,
wobei der Benutzerschnittstellencontainer für den gegenwärtigen Knoten,
der in Schritt r erzeugt wurde, als der Parameter für das Benutzerschnittstellencontainerverfahren
zu dem nachfolgenden Knoten eingereicht wird.
-
Wenn der Knoten keine nachfolgenden
Knoten hat, dann ist der Knoten ein Blattknoten und weist somit
Information auf, die eine Ausdruckseinheit spezifiziert. In Schritt 106 kann
ein Benutzerschnittstellencontainer für den gegenwärtigen Knoten,
d. h. für
die Benutzerschnittstellenkomponenten, die die Ausdruckseinheit
darstellen, aus dem Benutzerschnittstellencontainer, der in das
Verfahren eingereicht wird, erzeugt werden.
-
In Schritt 110 kann eine
Benutzerschnittstellenkomponente entsprechend dem "Attribut"-Abschnitt der Ausdruckseinheit des Knotens
zu dem Benutzerschnittstellencontainer für den gegenwärtigen Knoten
hinzugefügt
werden. Eine Ausführungsform
von Schritt 110 wird unten erörtert.
-
In Schritt 112 kann eine
Benutzerschnittstellenkomponente entsprechend dem "Vergleichsoperator"-Abschnitt der Ausdruckseinheit
des Knotens zu dem Benutzerschnittstellencontainer für den gegenwärtigen Knoten
hinzugefügt
werden. Eine Ausführungsform
von Schritt 112 wird unten erörtert.
-
In Schritt 114 kann eine
Benutzerschnittstellenkomponente entsprechend dem "Wert"-Abschnitt der Ausdruckseinheit des Knotens
zu dem Benutzerschnittstellencontainer für den gegenwärtigen Knoten
hinzugefügt
werden. Eine Ausführungsform
von Schritt 114 wird unten erörtert.
-
Wenn die Benutzerschnittstellenkomponenten
in den oben beschriebenen Schritten hinzugefügt werden, können die
Komponenten auf irgendeine geeignete Weise positioniert werden.
Beispielsweise können Komponenten
derart positioniert werden, daß sie
wie im Beispiel von 3 erscheinen,
d. h. in horizontaler Richtung mit der Attributskomponente auf der
linken Seite, der Vergleichsoperator in der Mitte und der Wertkomponente
auf der rechten Seite.
-
Wie oben erwähnt wurde, stellt 4 eine Ausführungsform
eines Verfahrens für
das systematische Erzeugen einer GUI aus einem Filterausdrucksbaum
dar und verschiedene Schritte von 4 können hinzugefügt, weggelassen,
kombiniert, verändert,
in anderen Reihenfolgen durchgeführt
werden usw. Beispielsweise kann es in einigen Situationen nicht
geeignet oder wünschenswert
sein, es Benutzern zu ermöglichen,
auszuwählen,
welche Booleschen Operatoren in einem Filterausdruck zu verwenden
sind. In solch einem Fall kann die GUI markiert werden, so daß sie feststehende
Boolesche Operatoren anzeigt, anstatt Benutzerschnittstellenkomponenten
hinzuzufügen,
die es einem Benutzer erlauben, bestimmte Boolesche Operatoren zu
spezifizieren.
-
In verschiedenen Ausführungsformen
kann die Verwendung eines Verfahrens, wie es oben beschrieben wurde,
um automatisch eine GUI zu erzeugen, mit Vorteil die Größe eines
Anwendungsprogramms verringern. Beispielsweise kann, wie oben beschrieben
wurde, speziell angepaß ter
Quellcode, um eine GUI zu erzeugen, Prozeduroperationen für das Erzeugen
von Benutzerschnittstellenkomponenten oder -steuerungen, für das Einstellen
verschiedener Attribute der Benutzerschnittstellenkomponenten wie
gewünscht,
für das
geeignete Positionieren der Benutzerschnittstellenkomponenten usw.
aufweisen. Ein Verfahren für
das Erzeugen einer GUI von einem Filterausdrucksbaum kann es ermöglichen,
daß diese
Operationstypen algorithmisch durchgeführt werden, wie oben beschrieben
wurde. Zusätzlich
kann der Quellcode, der das Verfahren implementiert, verwendbar
sein, um mehrere Filterausdrucks-GUIs innerhalb eines Anwendungsprogramms
zu erzeugen.
-
5 - Bestimmung von nachfolgenden Knoten
-
Schritt 100 von 4 kann in irgendeiner von
verschiedenen Arten und Weisen verwirklicht werden. 5 stellt eine Ausführungsform von Schritt 100 dar.
In 5 wird der Filterausdrucksbaumknoten überprüft, um zu
sehen, ob er einem Booleschen Operator entspricht. Wenn dies der
Fall ist, dann ist der Knoten kein Blattknoten und hat somit nachfolgende
Knoten.
-
In Schritt 120 wird der
Knoten überprüft, um zu
bestimmen, ob er ein Boolescher "UND"-Operatorknoten ist. Schritt 120 kann
auf irgendeine von verschiedenen Weisen durchgeführt werden, abhängig von
einem bestimmten Typ der Anwendung oder der Anwendungsimplementierung.
Beispielsweise kann ein E-Mail-Programm, das unter Verwendung der
JavaTM-Programmiersprache implementiert
ist, die Standard javax.mailsearch.SearchTerms-Klassen verwenden,
um die Filterausdrucksbaumknoten darzustellen. In diesem Beispiel kann
der Schritt r über
eine Anweisung durchgeführt
werden, wie z. B.:
-
-
Wenn der Knoten als ein Boolescher-UND-Operatorknoten
bestimmt wird, dann werden in Schritt 122 die nachfolgenden
Knoten des Knotens erhalten. Die nachfolgenden Knoten können dann
wie oben beschrieben durchlaufen werden.
-
Anderenfalls wird in Schritt 124 der
Knoten überprüft, um zu
bestimmen, ob er ein Boolescher-ODER-Operatorknoten ist, ähnlich wie
oben für
Schritt 120 beschrieben worden ist. Wenn der Knoten als
Boolescher-ODER-Operatorknoten bestimmt wird, dann werden in Schritt 106 die
nachfolgenden Knoten des Knotens erhalten. Die nachfolgenden Knoten
können
dann wie oben beschrieben durchlaufen werden.
-
Anderenfalls wird in Schritt 125 der
Knoten überprüft, um zu
bestimmen, ob er ein Boolescher-EXKLUSIVODER-Operatorknoten ist, ähnlich wie
oben für
Schritt 120 beschrieben wurde. Wenn der Knoten als Boolescher-EXKLUSIVODER-Operatorknoten
bestimmt wird, dann werden in Schritt 127 die nachfolgenden
Knoten des Knotens erhalten. Die nachfolgenden Knoten können dann
wie oben beschrieben durchlaufen werden.
-
Anderenfalls wird in Schritt 128 der
Knoten überprüft, um zu
bestimmen, ob er ein Boolescher-NICHT-Operatorknoten ist, ähnlich wie
oben für
Schritt 120 beschrieben wurde. Wenn der Knoten als ein
Boolescher-NICHT-Operatorknoten bestimmt wird, dann wird in Schritt 130 der
nachfolgende Knoten des Knotens erhalten. (Man bemerke, daß NICHT-Knoten
einen einzelnen nachfolgenden Knoten haben können.) Der nachfolgende Knoten
kann dann wie oben beschrieben durchlaufen werden.
-
Wenn der Knoten kein Boolescher-UND-,
-ODER- oder -NICHT-Knoten ist, dann kann der Knoten ein Blattknoten
sein, wie in 5 gezeigt
ist.
-
6 - GUI-Komponentenerzeugung für Ausdruckseinheiten
-
Wie oben unter Bezug auf die Schritte 110–114 von 4 beschreben wurde, können die
GUI-Komponenten, die die Ausdruckseinheit darstellen, erzeugt werden.
Die 6A und 6B (gemeinsam als 6 bezeichnet) stellen eine
Ausführungsform
der Schritte 110–114 detaillierter
dar. Der Prozeß von 6 kann für jede Ausdruckseinheit eines
Filterausdrucksbaums wiederholt werden. Obgleich 6 als eine Anwendung gezeigt ist, die
eine GUI für
einen E-Mail-Filterausdruck
erzeugt, kann die Idee, die hinter 6 steht,
leicht auf andere Typen von Filterausdrücken angewendet werden.
-
In Schritt 200 wird eine
Auswahl-Benutzerschnittstellenkomponente, die den "Attribut"-Teil einer Ausdruckseinheit
darstellt, kreiert. Verschiedene Attribute können zu dieser Auswahlkomponente
hinzugefügt
werden, wie es geeignet ist. Beispielsweise, wie in 6 gezeigt ist, können für einen E-Mail-Filterausdruck
Attribute hinzugefügt
werden, wie z. B. "Betreff", "Absender", "Datum", "Priorität" usw. Schritt 200 kann
implementiert werden unter Verwendung von irgendeinem von verschiedenen
Typen von Auswahl-Benutzerschnittstellenkomponenten. Beispielsweise
kann in einer Ausführungsform,
die unter Verwendung der JavaTM-Programmiersprache
implementiert wurde, Schritt 200 implementiert werden mit
einem Quellcode, wie z. B.:
-
-
In Schritt 202 wird die
Auswahl-Benutzerschnittstellenkomponente, die das Ausdruckseinheitsattribut darstellt,
auf das geeignete Attribut, wie es von der Knoteninformation spezifiziert
wird, eingestellt. Beispielsweise kann in einer Ausführungsform,
in der die Knoten unter Verwendung von javax.mail.search.SearchTerms-Klassen
dargestellt werden, Schritt 202 ähnlich erscheinen zu:
-
-
In den Schritten 204–212 wird
eine Auswahl-Benutzerschnittstellenkomponente kreiert, die den "Vergleichsoperator"-Teil einer Ausdruckseinheit
darstellt. Die Auswahlmöglichkeiten,
die in dieser Auswahl-Benutzerschnittstellenkomponente plaziert
sind, können
von dem Attribut abhängen,
das für
die Ausdruckseinheit des Knotens spezifiziert wird. Beispielsweise,
wie in den Schütten 204– 206 gezeigt
ist, kann, wenn das spezifizierte Attribut ein "Datum"-Attribut ist, die Vergleichsoperatorauswahlkomponente
Einträge
beinhalten, wie z. B. "liegt
vor", "ist", "ist nicht", "liegt nach" usw. Wie in den
Schritten 208–210 gezeigt
ist, kann, wenn das spezifizierte Attribut ein textliches Attribut
ist, z. B. "Betreff" oder "Absender", die Vergleichsoperatorauswahlkomponente
Einträge
beinhalten, wie z. B. "beginnt
mit", "enthält", "endet mit" usw. Wie in Schritt 212 gezeigt ist,
können
Einträge
für die
Vergleichsoperatorauswahlkomponente vorgabemäßig (default) auf "ist"- und "ist nicht"-Einträgen stehen.
Beispielsweise können,
wenn das Ausdruckseinheitsattribut "Priorität" ist, diese Einträge hinzugefügt werden.
-
In Schritt 214 wird die
Auswahl-Benutzerschnittstellenkomponente, die den Ausdruckseinheitsvergleichsoperator
darstellt, auf den geeigneten Vergleichsoperator eingestellt, wie
von der Knoteninformation spezifiziert wird, ähnlich wie oben für Schritt 202 beschneben
wurde.
-
Wie oben beschneben wurde, kann der
Typ der Benutzerschnittstellenkomponente, die erzeugt wird, um den "Wert"-Abschnitt einer
Ausdruckseinheit darzustellen, sich unterscheiden. Beispielsweise,
wie in den Schritten 216–218 gezeigt ist,
kann, wenn das Attribut der Ausdruckseinheit ein "Datum"-Attribut ist, eine
kalendarische Benutzerschnittstellenkomponente erzeugt werden. Wie
in den Schritten 224–226 gezeigt
ist, kann, wenn das Knotenattribut ein "Priorität"-Attribut ist, eine Auswahl-Benutzerschnittstellenkomponente
erzeugt werden mit Einträgen,
wie z. B. "niedrig", "normal", "hoch" usw. Wie in Schritt 222 gezeigt
ist, kann die Vorgabe derart sein, daß sie eine Textfeldbenutzerschnittstellenkomponente
erzeugt, die es einem Benutzer erlaubt, Freitext einzugeben, z.
B. um den Wert für
ein "Betreff" - oder "Absender"-Attribut zu spezifizieren.
-
In Schntt 228 wird die Auswahl-Benutzerschnittstellenkomponente,
die den Ausdruckseinheitswert darstellt, auf den geeigneten Wert
eingestellt, wie von der Knoteninformation spezifiziert wird, ähnlich wie
oben für
Schntt 202 beschrieben wurde.
-
Wie oben bemerkt wurde, stellt 6 eine Ausführungsform
eines Prozesses zum Erzeugen von Benutzerschnittstellenkomponenten
dar, die Ausdruckseinheitselementen entsprechen, und verschiedene
Schritte von 6 können hinzugefügt, weggelassen,
kombiniert, verändert,
in anderer Reihenfolge durchgeführt werden
usw. Beispielsweise kann, obgleich 6 hinsichtlich
der Erzeugung von Benutzerschnittstellenkomponenten für einen
bestimmten Typ der Ausdruckseinheit, der E-Mail-Nachrichten betrifft,
dargestellt ist, der Prozeß natürlich verallgemeinert
werden, um zu ermöglichen,
daß Benutzerschnittstellenkomponenten
geeignet erzeugt werden für
Ausdruckseinheiten, die irgendeinen von verschiedenen Typen von
Filterausdrücken betreffen.
Beispielsweise kann der Prozeß von 6 in solch einer Art und
Weise implementiert werden, daß ein
Aufrufer eine Liste von Einträgen
spezifizieren kann, die zu der Attributauswahl-Benutzerschnittstellenkomponente
hinzuzufügen
sind, eine Liste von Vergleichsoperatoreinträgen, die mit jedem Attribut
zu verknüpfen sind
usw. In bestimmten Ausführungsformen
können
Aufrufer in der Lage sein, diesen Informations typ in irgendeiner
von verschiedenen Arten zu spezifizieren. Beispielsweise können Datenstrukturen,
die die Information darstellen, definiert werden und als Parameter
zu einer Funktion oder einem Verfahren weitergeleitet werden.
-
Verwendung der resultierenden
Filterausdrucks-GUI
-
Eine Anwendung kann einen Filterausdrucksbaum
erzeugen, einen Top-Level-Benutzerschnittstellencontainer
für die
aus dem Filterausdrucksbaum zu erzeugende GUI erstellen, wie z.
B. ein Panel oder ein Fenster, und kann diesen Benutzerschnittstellencontainer
zu einer Funktion oder einem Verfahren leiten, die bzw. das geeignete
Benutzerschnittstellenstrukturen und – objekte zu dem Top-Level-Benutzerschnittstellencontainer
hinzufügt,
wie oben beschrieben wurde. Andere Parameter, die Informationen
betreffend die zu erzeugende Filterausdrucks-GUI spezifizieren,
wie z. B. die oben beschriebene Information, können ebenso zu der Funktion
oder dem Verfahren weitergeleitet werden.
-
Sobald eine GUI erzeugt wurde, kann
die Anwendung veranlassen, daß die
GUI angezeigt wird, z. B. durch Aufrufen eines Anzeigeverfahrens
auf einem Top-Level-Benutzerschnittstellencontainer
für die
GUI. In einer anderen Ausführungsform
kann die GUI inhärent
als ein Ergebnis der Erzeugung der Benutzerschnittstellenstrukturen
und -objekte angezeigt werden.
-
Ein Anwendungsprogramm, das einen
Filterausdruck verwendet, wechselwirkt mit einer GUI, die von einem
Filterausdrucksbaum in irgendeiner von verschiedenen Weisen abhängig von
einer bestimmten Implementierung kreiert wurde. In einer Ausführungsform
wird die Benutzerschnittstelleninformation, wie z. B. Bezugnahmen
auf Benutzerschnittstellenkomponenten oder -steuerungen, zu dem
Filterausdrucksbaum hinzugefügt,
wenn eine GUI kreiert wird. Beispielsweise entspricht in 3 die untere Boolesche Operator-Benutzerschnittstellenkomponente
dem Wurzelknoten des Filterausdrucksbaums, der in 2 gezeigt ist. Somit kann eine Bezugnahme
auf diese Benutzerschnittstellenkomponente zu dem Wurzelknoten des
Filterausdrucksbaums hinzugefügt
werden. Diese Benutzerschnittstelleninformation kann dann von der
Anwendung verwendet werden, um mit der GUI zu Wechselwirken, ähnlich der
Wechselwirkung einer Anwendung mit einer Filterausdrucks-GUI, die unter Verwendung
von herkömmlichen
Verfahren erzeugt wird.
-
Das Anwendungsprogramm kann Handhabungsereignisse
registrieren, das Interagieren mit der Filterausdrucks-GUI, falls
geeignet. Die Anwendung kann ebenso verschiedene andere Benutzerschnittstellenkomponenten
oder -steuerungen zu der GUI hinzufügen, wie z. B. einen "OK"-Button und einen "Abbruch"-Button, und kann
Ereignishandhaber für
diese Komponenten registrieren. Beispielsweise kann in Antwort auf
einen Benutzer, der einen "OK"-Button drückt, eine
Anwendung derart betreibbar sein, daß sie die spezifizierte Filterinformation
von dem Filterausdrucksbaum abfragt und die spezifizierte Filterinformation
verwendet, um eine Filteroperation durchzuführen. Beispielsweise kann eine
Anwendung für
das Durchsuchen einer Datenbank von Straßenadressen die Filterinformation
nutzen, um eine Operation, wie z. B. das Nachschlagen und das Zurückgeben
eines Satzes von Straßenadressen
für die
Anzeige zu einem Benutzer durchzuführen. Falls geeignet, kann
die Anwendung dann die abgerufene Information speichern, so daß sie später verwendet
werden kann, um eine GUI zu initialisieren, um das zuletzt verwendete
Filterkriterium, das von dem Benutzer spezifiziert wurde, z. B.
das nächste
Mal, wenn der Benutzer eine Datenbanksuche durchführt, widerzuspiegeln.
-
Obgleich die Ausführungsformen oben in beachtlichem
Detail beschrieben wurden, ergeben sich dem Fachmann zahllose Variationen
und Modifikationen, sobald die obige Beschreibung vollständig gewürdigt wurde.
Es ist beabsichtigt, daß die
folgenden Ansprüche
derart interpretiert werden, daß sie
alle solche Variationen und Modifikationen umfassen.