-
Die vorliegende Erfindung betrifft elektronische Systeme zum Editieren von
Dokumenten, wobei Programmierer und Nicht-Programmierer in die Lage zu versetzt
werden sollten, die Benutzerschnittstelle ihrer Computerressourcen (zum Beispiel
von Personalcomputern, Workstations usw.) einzurichten, um Schnittstellen zu
erstellen, die ihren persönlichen Bedürfnissen und Vorlieben entgegenkommen.
Insbesondere betrifft die vorliegende Erfindung eine Erweiterung der Fähigkeiten von
Text- und Grafikeditoren (die hier kollektiv als "Dokumenteditoren" bezeichnet
werden), um den Benutzern das Einbetten von aktiven Schaltflächen in strukturierten
elektronischen Dokumenten in der Form von verborgenen Zeichenfolgen-
Dauerattributen von gewöhnlichen Text- oder Grafikelementen derartiger Dokumente
(wie etwa Text, Grafik, Tabellen und Gleichungen) sowie das Spezifizieren der
Verhaltenseigenschaften derartiger Schaltflächen zu erlauben.
-
Die Softwareherstellung ist wegen des weltweiten kommerziellen Bedarfs von
computerisierten Lösungen für die Anforderungen der Kunden in vielen Marktnischen
ein wachsender Industriezweig. Einige Computerbenützer verfügen über
beträchtliche Programmierungsfähigkeiten, wobei der Computer jedoch zu einem Werkzeug
geworden ist, das häufig von Benutzern verwendet wird, die keine Fähigkeiten
und/oder keine Motivation haben, um ein extensives Programmieren ihres
Computers vorzunehmen. Aus diesem Grund haben sich die Softwarehersteller
bemüht, um Benutzerschnittstellen zu entwickeln, die es dem Benutzer erlauben,
sich lediglich auf die Anwendung des Computers für ihre persönlichen
Anforderungen zu konzentrieren. Grafische Benutzerschnittstellen und Fensterpakete sind
herausragende Beispiele für gegenwärtig angebotene Softwaresysteme, die die
Verwendung des Computers sowohl für Benutzer ohne technischen Hintergrund wie
für Computerprofis mit umfangreichen Fähigkeiten erleichtern. Diese Systemsoftware
gestattet jedoch keine Differenzierung zwischen den verschiedenen Anforderungen
an die Schnittstelle und den Vorlieben verschiedener Benutzer.
-
Merkmale der Software-Benutzerschnittstelle, die für einen Benutzer
ausschlaggebend sind, können auf dem Bildschirm eines anderen Benutzers unnötigen
Platz verbrauchen. Einige Benutzer benötigen Merkmale, die durch den
Programmierer der Anwendung nicht berücksichtigt wurden. Folglich sind Softwarepakete mit
Benutzerschnittstellen entwickelt worden, die durch den Benutzer angepaßt werden
können. Es gibt zum Beispiel Pakete, die eine Vielzahl von vordefinierten
Schnittstellenoptionen bieten, so daß die Benutzer ihre Schnittstellen individuell anpassen
können, indem sie selektiv einige der Optionen aktivieren und andere ausschließen.
Es gibt auch Softwarepakete, die Tools umfassen, mit denen die Benutzer aktive
Schaltflächen und Menüs erstellen können, um den Computer dazu zu veranlassen,
Funktionen auszuüben, die die Anforderungen und Vorlieben der Benutzer direkt
unterstützen.
-
Insbesondere ermöglicht das HyperCard-Programm den Benutzern, auf die
persönlichen Anforderungen zugeschnittene Schaltflächen, Formulare und Layouts
zu erstellen. Dieses Programm unterstützt die sogenannte HpyerTalk-Sprache, die
den Benutzern das Programmieren derartiger Schaltflächen erlaubt. Siehe
D. Goodman, The Complete HyperCard Handbook, Bantam Books, 1987. In
ähnlicher Weise unterstützt das Xerox-Produkt ViewPoint eine Sprache mit dem
Namen CUSP zum Programmieren von Schaltflächen, die in Dokumenten eingefügt
werden können. Siehe VP CUSP Buttons Reference, VP Series Reference Librry,
Version 2.0, Xerox ViewPoint, Xerox Corporation 1988. Diese CUSP-Schaltflächen
können programmiert werden, um Icons und Fenster zu bewegen, um Dateien zu
drucken, Information in elektronischen Dateiordnern zu organisieren oder bei der
Durchführung von anderen Aufgaben hilfreich zu sein.
Tabellenkalkulationsprogramme sind auch von Interesse, da diese es dem Benutzer gewöhnlich
erlauben, Gleichungen zum Durchführen von durch den Benutzer gewünschten
Berechnungen zu programmieren.
-
Der sogenannte Andrew-Dokumenteditor ist ein weiteres interessantes
Beispiel für den aktuellen Stand der Technik, weil er das Einfügen von Schaltflächen in
Dokumenten erlaubt, die per E-Mail übertragen werden, so daß die Schaltflächen
von allen Empfängern derartiger Mail-Nachrichten verwendet werden können. Siehe
J. H: Morris et al. "Andrew: A Distributed Personal Computing Environment"
Communications of the ACM, Vol. 29, No. 3, März 1986, auf den Seiten 184-201.
-
W. J. Hansen "Enhancing documents with embedded programs: How Ness
extends insets in the Andrew ToolKit", Proceedings of the 1990 International
Conference on Computer Languages, März 1990, erläutert auf den Seiten 23-32 die
Probleme des Einbettens von Programmen in Dokumenten (zum Beispiel ist für eine
absolute Allgemeingültigkeit erforderlich, daß der Autor eines Dokuments über eine
Programmierungssprache verfügt) und betrachtet die Lösungen in der
Ness-Komponente des Andrew ToolKit und dabei die Verbindung von Benutzeraktionen mit
Programmfunktionen, die entsprechende Ebene der Programmierungssprache,
deren Zeichenfolgen-Verarbeitungsfähigkeiten sowie die Sicherheit.
-
Weiterhin umfaßt die Xerox-Interlisp-Umgebung einen Fensterverwalter mit
dem Namen "Rooms", der es dem Benutzer erlaubt, Schaltflächen zu erstellen, um
"von Raum zu Raum" zu wechseln (d. h. von einer durch den Benutzer
zusammengestellten Sammlung von Dateien und Verarbeitungstools zu einer anderen oder mit
anderen Worten von einem "Desktop" zu einem anderen), um
Anwendungsprogramme zu starten, um einen Programmstatus aufzuzeichnen und ihn später
wiederherzustellen, und um Funktionen zu erfüllen, die der Benutzer automatisieren
möchte. Siehe A. MacLean et al. "User Tailorable Systems: Pressing the Issues with
Buttons" Human Factors in Computing Systems. Proceedings of CHI '90, April 1990,
auf den Seiten 175-182. Die durch Rooms unterstützten Schaltflächen können per
E-Mail zu anderen Benutzern übertragen werden, die die Xerox-Interlisp-Umgebung
verwenden. Sie können auch in den Desktop eines Benutzers integriert werden, um
ein permanenter Teil der Workstation-Umgebung des Benutzers zu werden.
Weiterhin können diese Schaltflächen angepaßt werden, indem die von ihnen erfüllten
LISP-Prgrammiersprachfunktionen editiert werden oder indem Menübefehle
verwendet werden, um ihre Position und/oder ihr Aussehen zu verändern.
-
S. K.
Kinnell "Hypertext on the PC: Guide, Version 2.0" in DATABASE, Vol. 12,
NO. 4, August 1989 beschreibt verschiedene Aspekte der Benutzerstelle der Guide-
Software Version 2.0 von OWL International Inc. Wörter, Ausdrücke oder Passagen
von Dokumenten können als "Schaltflächen" gekennzeichnet werden (z. B. indem sie
unterstrichen angezeigt werden), die der Benutzer mit der Maus oder dem Cursor
anklicken kann. Das Klicken auf eine Schaltfläche kann das Einblenden eines
Rahmens veranlassen, der zum Beispiel eine Definition dieses Wortes oder ein mit
diesem Punkt des Textes assoziiertes Diagramm anzeigt. Es sind vier Typen von
Schaltflächen angegeben - Erweiterung, Bezugnahme, Bemerkung und Befehl.
-
Die Befehls-Schaltfläche verwendet einen Start-Interpreter und einen
seriellen Interpreter, um Befehle zu erkennen, die "unter der Befehls-Schaltfläche"
(S. 66) verborgen sind, um auf andere Anwendungen in Windows zuzugreifen, usw.
-
Die vorliegende Erfindung sieht ein elektronisches System zum Editieren von
Dokumenten in Übereinstimmung mit Anspruch 1 der beigefügten Ansprüche vor.
-
In dem Artikel von Kinnell wird keine "verborgene dauerhafte Zeichenfolge" in
Übereinstimmung mit der vorliegenden Erfindung angegeben. Es wird auch nicht
angegeben, daß eine derartige Kette eine Schaltflächenklasse, einen Befehls-
Handler oder eine gewünschte Rückmeldung für den Benutzer spezifiziert.
Außerdem wird kein zentralisierter Kern zum Parsen der Schaltflächenattribute jeder
durch den Benutzer getriggerten. Schaltfläche angegeben, wobei das Parsen die
spezifizierte Schaltflächenklasse und den spezifizierten Befehls-Handler für diese
Schaltfläche identifiziert, wobei der Kern Kommunikationspfade zwischen dem
Editor, dem Schaltflächen-Handler für die spezifizierte Schaltflächenklasse der
Schaltfläche sowie dem spezifizierten Befehls-Handler für die Schaltfläche vorsieht,
um die durch die Schaltfläche angeforderte Aktion und Rückmeldung auszuführen.
-
Generell sind die Schaltflächen, die im Stand der Technik für die individuelle
Anpassung der Schnittstellen angegeben sind anwendungsspezifisch und keine
Tools, die durch verschiedene Anwendungen verwendet werden können. Dies ist ein
großer Nachteil, da die meisten Benutzer nur über eine begrenzte Bildschirmfläche
verfügen, die sie den individuell erstellten Schaltflächen zuweisen möchten, obwohl
die Benutzer Funktionen durchführen können, bei denen sie häufig zwischen
verschiedenen Anwendungen hin und her wechseln müssen. Wenn ein Benutzer
weiterhin eine Anwendung verwendet, die das Einbetten von derartigen
Schaltflächen nicht erlaubt, müssen die Benutzerschaltflächen, die der Benutzer zu
verwenden wünscht, auf dem Bildschirm des Benutzers räumlich von der
Anwendung getrennt sein, was die erforderliche Bildschirmfläche größer macht und den
Benutzer dazu zwingt, mit seiner Aufmerksamkeit zwischen der Anwendungsfläche
und der Fläche für die Schaltflächen hin und her zu wechseln.
-
En weiterer Nachteil der Vorschläge des Standes der Technik zum
Verwenden von Schaltflächen zum individuellen Anpassen von Benutzerschnittstellen ist
darin gegeben, daß die in den Anwendungen eingebetteten Schaltflächen als
"besondere" Objekte behandelt werden. Auch wenn eine in einem Textdokument
vorgesehene Schaltfläche selbst eine Text-Zeichenfolge ist, erfordert das Editieren
der Schaltfläche die Verwendung von anderen Operationen als denen, die für das
Editieren des Textes verwendet werden, in dem die Schaltfläche vorgesehen ist.
Außerdem findet eine gewöhnliche Suchoperation eine derartige Schaltfläche nicht,
auch wenn die Text-Zeichenfolge mit dem Suchmuster übereinstimmt, weil die
Schaltfläche nicht als Textkomponente des Dokuments erkannt wird.
-
Die vorliegende Erfindung gibt einen elektronischen Dokumenteditor an, der
es den Benutzern erlaubt, verschiedene Verhaltenstypen für Schaltflächen mit
gewöhnlichen durch den Menschen interpretierbaren Elementen von elektronischen
Dokumenten zu verknüpfen, indem verborgene Zeichenfolgen-Dauerattribute mit
diesen Elementen assoziiert werden. Dies erlaubt das Editieren und Suchen
derartiger Schaltflächen über die Editier- und Suchroutinen, die gewöhnlich durch
Standard-Dokumenteditoren vorgesehen werden.
-
Lediglich beispielhaft werden im folgenden Ausführungsformen der
vorliegenden Erfindung mit Bezug auf die beigefügten Zeichnungen beschrieben, wobei
-
Fig. 1 ein schematisches Diagramm eines Dokumenteditors in
Übereinstimmung mit der vorliegenden Erfindung ist,
-
Fig. 2A bis 2C aufeinanderfolgende Schritte bei der Erzeugung einer
Schaltfläche in einem elektronischen Dokument darstellen,
-
Fig. 3A und 3B ein Menü einer Pop-up-Schaltfläche darstellen,
-
Fig. 4A und 4B die Verwendung von Schaltflächen darstellt, um Grafikstil-
Makros durchzuführen, indem die Stilattribute von Schaltflächen auf ein
ausgewähltes Grafikobjekt übertragen werden,
-
Fig. 5A bis 5C eine Rückmeldung für den Benutzer von einer Mehrzustands-
Schaltfläche darstellen,
-
Fig. 6 die Rückmeldung für den Benutzer von einem Satz von grafischen
Radio-Schaltflächen darstellt,
-
Fig. 7A und 7B die Rückmeldung für den Benutzer von einem Paar von
assoziierten Radio-Schaltflächen darstellt, das in einen Grafikeditor eingebettet ist,
-
Fig. 8 die Kommunikationspfade darstellt, die in einem beispielhaften
Computersystem vorgesehen sind,
-
Fig. 9A und 9B jeweils eine Steuerleiste und eine kompakte Wiedergabe der
Steuerleiste darstellen, und
-
Fig. 10A und 10B ein Grafikdokument darstellen, das sich aus Kreisen
zusammensetzt, die als Mehrzustands-Schaltflächen funktionieren.
A. Die Umgebung
-
Die vorliegende Erfindung beruht auf einigen Merkmalen, die in bestimmten
modernen Dokumenteditoren vorgefunden werden können:
-
(1) die Fähigkeit, beliebige Textattribute mit Dokumentelementen zu
assoziieren.
-
(2) die Fähigkeit Eingabeaktionen an andere Anwendungen als den
Dokumenteditor selbst weiterzugeben, und
(3) die Fähigkeit, eine Editiersprache zum Ausführen von Editieraktionen
zu interpretieren, die durch ein Softwareprogramm spezifiziert werden
und nicht durch einen menschlichen Benutzer.
-
Es werden dementsprechend im folgenden Editoren beschrieben, die diese
Merkmale aufweisen.
1. Versteckte Zeichenfolgen-Dauerattribute
-
Der Xerox Bravo-Texteditor (siehe "Bravo Manual" Alto Users Handbook,
Xerox Alto Research Center, 1979, auf den Seiten 31-62), der Andrew-Editor (siehe
J. Morris et. al., supra), der Xerox Star (J. Johnson et al., "The Xerox Star: A
Retrospective," Computer, Vol. 22, No. 9, September 1989, auf den Seiten 11-29)
und der Grif Editor (siehe R. Furuta et al. "Interactively Editing Structured
Documents," Electronic Publishing, Vol. 1, NO. 1, April 1988, auf den Seiten 19-44) sind
Beispiele für Dokumenteditoren, die es dem Benutzer erlauben, verborgene
Dauereigenschaften (wie Schriftbild, Farbe und Alphabet) mit den gewöhnlichen Zeichen
oder Grafikelementen eines Dokuments zu assoziieren. Diese Attribute sind
"dauerhaft", weil sie mit dem Dokument in einem Langzeitspeicher, wie auf einer
Magnetplatte oder einem Band, in einem stabilen Halbleiterspeicher oder in anderen
dauerhaften Speicherressourcen gespeichert werden. Außerdem können sie
elektronisch von Benutzer zu Benutzer oder von Computer zu Computer übertragen
werden. Weiterhin sind diese Attribute "verborgen", weil ihre textuellen
Beschreibungen (z. B. "rot", oder "Timesroman") nicht als Komponententeile der Dokumente,
in denen sie eingebettet sind, wiedergegeben werden, wenn die Dokumente
dargestellt oder gedruckt werden. Statt dessen wendet das Wiedergabeverfahren
diese Attribute für die Dokumentelemente an, mit denen sie assoziiert sind, damit
diese Elemente zum Beispiel rot oder mit der Timesroman-Schrift wiedergegeben
werden.
-
Einige bestehende Texteditoren, wie der Tioga-Editor (siehe R. Beach,
"Setting Tables and Illustrations with Style", Ph.D. Thesis, University of Waterloo,
Canada, 1985, auch als Xerox PARC Technical Report CSL-85-3 verfügbar)
erweitern das Konzept der verborgenen Dauerattribute, um das Einfügen von durch
den Benutzer ausgewählten Zeichenfolgen als verborgene Dauerattribute von
gewöhnlichen Dokumentelementen, wie Textzeichen oder Grafikformen, zu
erlauben. Es handelt sich dabei um eine wichtige Eigenschaft für den Austausch von in
verschiedenen Hardware- und Softwareumgebungen vorgesehenen Dokumenten
zwischen Benutzern, so daß davon ausgegangen werden kann, daß dies eine
übliche Eigenschaft von zukünftigen Dokumenteditoren wird.
2. Eingabeumleitung
-
Einige bestehende Editoren sind in der Lage, Eingabeaktionen zu anderen
Anwendungsprogrammen als dem Editor selbst umzuleiten. Zum Beispiel erlaubt der
Symbolic Presentation Mager (siehe S. McKay et al. "A Presentation Manager Based
on Application Semantics, Proceedings of the ACM SIGGRAPH Symposium on User
Interface Software and Technology, November 1989, auf den Seiten 141-148)
Befehle, die ein Benutzer unter Betätigung einer Maustaste eingeben kann, während
der Cursor auf ein bestimmtes Textelement zeigt, das von dem Editor zu einem
separaten Anwendungsprogramm umgeleitet werden soll. In ähnlicher Weise sieht
HyperCard eine Eingabeumleitung vor, so daß der Benutzer durch das Betätigen
einer Maustaste ein HyperTalk-Programm ausführen kann.
3. Laufzeit-interpretierte Editiersprachen
-
Es sind auch Dokumenteditoren bekannt, die in der Lage sind, eine Laufzeit-
Interpretation von Editiersprachen vorzunehmen. Zum Beispiel interpretiert der
EMACS-Texteditor einen Dialekt der LISP-Programmierungssprache, um Texteditier-
Makros zu unterstützen. In ähnlicher Weise erlaubt der zuvor genannte Tioga-Editor,
daß das Editieren aller Aktionen in einer interpretierten Sprache ausgedrückt wird, so
daß Editieroperationen austauschbar unter der Kontrolle von entweder dem
menschlichen Benutzer oder eines Computerprogramms ausgeführt werden.
B. Die Architektur eingebetteter Schaltflächen
-
In Übereinstimmung mit der vorliegenden Erfindung werden die oben
beschriebenen Merkmale von bekannten Dokumenteditoren in vorteilhafter Weise
genutzt (d. h. die verborgenen Zeichenfolgen-Dauerattribute, die Eingabeumleitung
und die Laufzeit-interpretierten Editiersprachen), um den Benutzern die Option zu
geben, ein Schaltflächenverhalten zu einem beliebigen Text- oder Grafikelement des
wiederzugebenden Teils eines elektronischen Dokuments hinzuzufügen (z. B. zu
Text, Grafik, Tabellen oder Gleichungen, im Gegensatz zu den
maschineninterpretierbaren Elementen, die die Struktur und das Layout derartiger Dokumente
definieren), so daß die Schaltflächen bei normalen Editier- und Suchoperationen
nicht besonders behandelt werden. Wie in Fig. 1 gezeigt, sind insbesondere ein oder
mehrere Dokumenteditoren 11 vorgesehen, die jeweils einen Eingabe-Umleitungs-
Softwareschalter enthalten, der durch den Benutzer verwendet werden kann, um
einen "Schaltflächen-Aus"-Zustand zu setzen, in dem die Eingabeumleitung
deaktiviert ist, oder um einen "Schaltflächen-An"-Zustand zu setzen, in dem die
Eingabeumleitung aktiviert ist. Immer wenn der Eingabeumleitungs-Schalter des
Editors 11, der ein bestimmtes Dokument verwaltet, in den "Schaltflächen-"-Zustand
versetzt wird, führt der Editor alle erhaltenen Eingabebefehle aus, um die normalen
Eiditieroperationen durchzuführen. Wenn jedoch der Eingabeumleitungs-Schalter
des Editors 11 in den "Schaltflächen-An"-Zustand versetzt wird, leitet er bestimmte
vorbestimmte Eingabebefehle, wie das Klicken einer Maustaste, zu einem als
"eingebetteter Schalflächen-Kern" bezeichneten zentralisierten Softwaremodul 12,
wenn der durch die Maus gesteuerte Cursor so positioniert ist, daß er auf ein
Dokumentelement mit der darin eingebetteten Schaltfläche zeigt.
-
Wenn ein Dokumenteditor 11 im "Schaltflächen-Modus" arbeitet (d. h. wenn
der Engabeumleitungs-Schalter im "Schaltflächen-An"-Zustand ist), untersucht der
Editor 11 die ausgewählten Dokumentelemente, um zu bestimmen, ob diese
Elemente Schaltflächenattribute aufweisen, und um, wenn dem so ist, sich selbst
darauf vorzubereiten, bestimmte vordefinierte Benutzereingabeaktionen zu dem
eingebetteten Schaltflächen-Kern 12 umzuleiten. Beim Empfang eines derartigen
Eingabebefehls, schaltet der eingegebette Schaltflächen-Kern 12 die Zeichenfolge,
die die Schaltflächenattribute des ausgewählten Dokumentelements definiert, zu
einem klassenspezifischen Schaltflächen-Handler in einem Schaltflächenklassen-
Verwalter 13. Wie weiter unten ausführlicher beschrieben wird, liest dieser
Schaltflächen-Handler dann das Schaltflächenattribut des ausgewählten
Dokumentelements, um die durchzuführenden Aktionen zu bestimmen, ruft die für die
Durchführung dieser Aktionen erforderlichen Befehlshandler-Routinen 14 auf und
sendet eine Zeichenfolge in der Editor-Eingabesprache zu dem Editor, um die
gewünschte Rückmeldung für den Benutzer zu erhalten. Die Befehls-Handler 14
können einen beliebigen Dokumenteditor 11 und auch zusätzliche
Anwendungsprogramme umfassen.
-
In einem System in Übereinstimmung mit der vorliegenden Erfindung
brauchen die Dokumenteditoren 11 kein Wissen über die interne Form oder den
Inhalt der Schaltflächenattribute zu haben, sie müssen lediglich wissen, daß alle
derartigen Attribute durch Zeichenfolgen definiert sind. Da sich diese Zeichenfolgen
von den normalerweise in den Datenstrukturen des Editors gefundenen Attributen
unterscheiden, können die normalen Editier- und Suchoperationen des Editors, der
ein solches Dokument verwaltet, verwendet werden, um die in dem Dokument
eingebetteten Schaltflächen zu editieren und dieselben zu suchen, wenn der
Eingabeumleitungs-Schalter des aktiven Editors im "Schaltflächen-Aus"-Zustand ist (wobei
viele Editierfunktionen auch im "Schaltflächen-An"-Zustand funktionieren). Wenn
andererseits der Eingabeumleitungs-Schalter des aktiven Editors 11 in den
"Schaltflächen-An"-Zustand versetzt wird, wird die Zeichenfolge, die die
Schaltflächeneigenschaften einer durch den Benutzer getriggerten Schaltfläche definiert, zu dem
zentraliserten eingebetteten Schaltflächenkern 12 geleitet, wo sie geparst wird,
wodurch einer der Schaltflächen-Handler in den Schaltflächenklassn 13 veranlaßt wird,
die Anwendungsprogramm 14 zu benachrichtigen, die für das Ausführen der durch
die Schaltfläche beabsichtigten Funktionen benötigt werden.
-
Als ein Ergebnis der oben beschriebenen Architektur kann jeder
Dokumenteditor direkt programmiert werden, um Elemente von Dokumenten, die in ihn
geladen werden, als Schaltflächen zu behandeln. Weiterhin verhalten sich alle
Schaltflächen in einer bestimmten Klasse in übereinstimmender Weise, unabhängig
vom dem Typ des Dokuments oder des Dokumentelements, in dem sie eingebettet
sind, da ihr Verhalten durch einen gemeinsamen Softwarekörper bestimmt wird.
C. Durch Schaltflächen implementierte Funktionen
-
Es sollte deutlich geworden sein, daß die in Übereinstimmung mit der
vorliegenden Erfindung vorgesehene Schaltflächen-Architektur es dem Benutzer von
elektronischen Dokumenteditoren ermöglicht, aktives Schaltflächen-Verhalten mit
Elementen eines elektronischen Dokuments zu assoziieren, so daß der Benutzer
durch das Zeigen auf diese Dokumentelemente mit einem Cursor und das Betätigen
einer geeigneten Eingabeeinrichtung (etwa einer Maustaste, eines Kontaktdetektors
auf der Spitze eines Stiftes oder einer Taste auf der Tastatur) vorbestimmte
Anwendungsroutinen aktivieren kann. Ein ausführliches Einführungsbeispiel ist weiter unten
erläutert, um eine typische Implementierung der vorliegenden Erfindung
darzustellen, die für die relativ einfache Aufgabe des Öffnens einer Datei verwendet wird.
Das Beispiel zeigt, wie ein Benutzer einen beliebige Folge von Textzeichen in eine
Schaltfläche umwandeln kann, die weiterhin als normales Dokumentelement editiert
und gesucht werden kann. Vor der Erläuterung des Einführungsbeispiels ist jedoch
zu beachten, daß das vorliegende System verschiedene Typen von Schaltflächen
unterstützen kann, darunter "Pop-up-Schaltflächen", die eine Anwendungsfunktion
ausführen, wenn sie getriggert werden, "Mehrzustands-Schaltflächen", die sich einen
Wert merken und den Wert verändern, wenn sie getriggert werden, und "Radio-
Schaltflächen", die entweder an oder aus sind und sicherstellen, daß gleichzeitig nur
eine Schaltfläche in einer Gruppe an ist. Der Vollständigkeit halber werden diese drei
Typen von Schaltflächen in den folgenden Abschnitten beschrieben, wobei Beispiele
gegeben werden, die ihre Eigenschaften und ihre Verwendung darstellen.
1. Ein Einführungsbeispiel: Schaltflächen, die Dateien öffnen
-
In diesem Beispiel soll angenommen werden, daß ein Benutzer des
UNIX-Betriebssystems das Editieren einer Datei mit dem Namen "~/writings/diary"
erleichtern will, die der Benutzer als Tagebuch für seine täglichen Aufzeichnungen
verwendet. Es wird außerdem angenommen, daß dieser Benutzer eine Datei
"AlwaysOpen" hat, die immer auf dem Bildschirm angezeigt wird, wenn sich der
Benutzer anmeldet, so daß der Benutzer die Text-Zeichenfolge"~/writings/diary" zu
dieser Datei hinzufügt. Die Datei "AlwaysOpen" sieht dann wie in Fig. 2A gezeigt
aus. Unter Verwendung einer geeigneten Cursorsteuerung, etwa einer Maus, wählt
der Benutzer dann die Zeichenfolge "~writings/diary" aus und betätigt eine
Schaltfläche, in einem Satz von Tools seines Fenstersystems, die einen Rahmen 20
um die ausgewählte Zeichenfolge zeichnet und assoziiert sie mit einer Text-
Zeichenfolge, die einen Befehl zum Starten eines Texteditorfensters für die
"~/writings/diary"-Datei enthält. Jetzt sieht die Datei "AlwaysOpen" wie in Fig. 2B
gezeigt aus. Um danach die neu erstellte Schaltfläche auszuprobieren, wählt der
Benutzer den Rahmen um die Zeichenfolge "~/writings/diary" aus, wobei er etwa
eine Maus verwendet, um einen Bildschirmcursor für die Auswahl zu positionieren
(der mit 21 angegebene schwarze Kreis mit einem schwarzen Punkt in seiner Mitte
gibt den mausgesteuerten Cursor wieder). Der Benutzer druckt dann eine der
physikalischen Tasten auf der Maus, um dadurch das Öffnen eines neuen
Texteditorfensters zu veranlassen, das die Inhalte der Datei "~/writings/diary" zeigt.
-
Die Zeichenfolge "~/writings/diary" funktioniert nur dann als Schaltfläche, wenn
der Editor, der die Datei "AlwaysOpen" verwaltet, in den "Schaltflächen-An"-Zustand
versetzt ist. Wenn der Benutzer den Schaltflächenmodus abschaltet, kann die Datei
unter Verwendung der Standardfunktionen des Editors zum Editieren und Suchen
von Text editiert und durchsucht werden. Wenn zum Beispiel ein Fehler bei der
Eingabe des Dateinamens des Tagebuchs gemacht wurde, kann der Benutzer
Editieroperationen verwenden, um den Namen zu korrigieren, mit dem die Datei in
der "AlwaysOpen"-Datei aufgeführt wird, auch wenn die Schaltfläche mit dem
inkorrekten Namen erstellt wurde.
2. Typen von Schaltflächen
-
In diesem Abschnitt werden die drei Grundtypen von Schaltflächen
beschrieben, die durch die vorliegende Erfindung unterstützt werden: Pop-up-Schaltflächen,
Mehrzustands-Schaltflächen und Radio-Schaltflächen, wobei Beispiele dafür
gegeben werden, wie diese Schaltflächen in verschiedenen Arten von Dokumenten
verwendet werden. Natürlich können andere Typen von Schaltflächen hinzugefügt
werden, so daß die beschriebenen Typen lediglich als repräsentative Beispiele
beschrieben werden.
a. Pop-up-Schaltflächen
-
Wenn der Benutzer eine Maustaste oder ähnliches über einem
Dokumentobjekt drückt, das als Pop-up-Schaltfläche erstellt wurde, erscheint ein Pop-up-
Menü, wobei eines der Einträge des Menüs auf dem Cursor zentriert ist. Der auf dem
Cursor zentrierte Menüeintrag hängt vorzugsweise von der gedrückten Maustaste ab
sowie davon, ob dabei auch die STRG- und/oder die Umschalttaste gedrückt
werden. Wenn der Benutzer die Maustaste schnell drückt, kann das Pop-up-Menü
auch unterdrückt werden und statt dessen direkt die Anwendung der Menüwahl des
Benutzers benachrichtigt werden, die durch die vom Benutzer verwendete
Kombination aus STRG-Taste, Umschalttaste und Maustaste bestimmt wird. Pop-up-
Menüs wurden zuvor beschrieben, allerdings nicht ihre Verwendung für aktive
Dokumente. Siehe K. Pier et al. "An Introduction to Gargoyle: An Interactive
Illustration Tool," Document Manipulation and Typography, Proceedings of EP '88,
Cambridge University Press, 1988 auf den Seiten 223-238, ebenfalls als Xerox
PARC Technical EDL-89-1 verfügbar.
-
Fig. 3A stellt ein aktives Dokument dar, das vier Pop-up-Schaltflächen enthält,
die jeweils mit einem sie umgebenden Rahmen gezeigt sind. Jede Schaltfläche führt
einen oder mehrere Texteditor-Makros aus. Neben jeder Schaltfläche ist eine
Beschreibung ihrer Funktion vorgesehen. In Fig. 3B halt der Benutzer die Maus über
die Zeichenfolge "Alphabet", wodurch das Erscheinen eines Pop-up-Menüs
veranlaßt wird, das dem Benutzer das Wechseln des Alphabets der aktuell
ausgewählten Text-Zeichenfolge in ein anderes Dokument (nicht gezeigt) erlaubt.
Der in dem Menü vorgesehene Bildprompt 25 gibt an, welche der drei Maustasten
verwendet werden kann, um das zukünftige Schalten der Schaltfläche zu
beschleunigen. Das Rechteck 26 gibt zeigt eine Rückmeldung an, die den aktuell
ausgewählten Menüeintrag beschreibt. Der in Fig. 3B teilweise über dem weiß-auf-
schwarz dargestellten Wort "Latin" sichtbare Pfeil 27 ist der Cursor (der Cursor
nimmt die Form eines Pfeils an, wenn ein Pop-up-Menü aktiv ist).
-
Jedes Liniensegment in Fig. 4A ist eine Pop-up-Schaltfläche, die ihr
Strichelungsmuster oder ihre Linienbreite auf ein ausgewähltes Grafikobjekt überträgt. Hier
werden die Schaltflächen verwendet, um das Strichelungsmuster der in Fig. 4B
gezeigten Multi-Segment-Form zu verändern. Es gibt bekannte Grafikeditoren, wie
den zuvor genannten Gargoyle-Editor, die eine "Snap-Dragging-Gravity" verwenden,
um die Auswahl von Schaltflächen mit geringer Fläche, wie etwa derartige Linien zu
ermöglichen. Siehe E. Bier et al. "Snap-Dragging," Computer Graphics, Vol. 20,
No. 9, August 1986 auf den Seiten 233-240.
b. Mehrzustands-Schaltflächen
-
Mehrzustands-Schaltflächen reagieren auf Eingabebefehle wie etwa
Mausklicks, indem sie die Inhalte einer bestimmten Variable modifizieren, die als Wert
bezeichnet wird und in jeder Schaltflächen dieser Klasse vorgesehen ist. Wenn die
Zeichenfolgen zum Beispiel "on" und "off" sind, schaltet der Schalter zwischen "on"
und "off', wenn er getriggert wird. Wenn die Zeichenfolgen "apple", "banana" und
"grapefruit" sind, wechselt die Schaltfläche zyklisch durch diese Namen.
-
Der Benutzer/Schnittstellendesigner kann entscheiden, wie jeder Zustand
dargestellt werden soll. Fig. 5A bis 5C zeigen mehrere Schaltflächen, die jeweils zwei
Zustände aufweisen: on und off. Der aktuelle Zustand dieser Schaltflächen wird
durch das Ändern des Fonts (Fig. 5A), das Umkehren des Kontrasts von Text und
Hintergrund (Fig. 5B) oder das Ändern der Textinhalte der Schaltfläche (Fig. 5C)
ange. Es ist deutlich, daß jede beliebige Dokumenteditor-Operation verwendet
werden kann, um eine derartige Hervorhebung zu erreichen.
-
Mehrzustands-Schaltflächen sind am nützlichsten, wenn sie verwendet
werden, um eine Anwendung zu steuern. Wie weiter unten ausführlicher erläutert wird,
kann eine Anwendung den Wert einer Schaltfläche lesen, indem der Name der
Schaltfläche und die virtuelle Speicheradresse des Dokuments, in dem die
Schaltfläche lokalisiert ist, für das System der eingebetteten Schaltflächen zur Verfügung
gestellt wird. Wenn dann die Schaltfläche mit dem bestimmten Namen in dem
gegebenen Dokument gefunden wird, gibt das System den Wert an die Anwendung aus.
Die Anwendung braucht nicht zu wissen, wo die Schaltfläche in dem Dokument
lokalisiert ist oder zu welcher Klasse die Schaltfläche gehört. Eine Anwendung kann
benachrichtigt werden, wenn eine Schaltfläche mit einem bestimmten Namen versucht,
ihren Zustand zu ändern, wodurch die Anwendung in die Lage versetzt wird, die
Zeitsteuerung einer derartigen Zustandsänderung zu steuern. Aktionen, die durch das
Triggern von Schaltflächen in einem aktiven Dokument initiiert werden, können
dementsprechend mit anderen Aktionen eines Anwendungsprogramms synchronisiert
werden.
c. Radio-Schaltflächen
-
Eine Radio-Schaltfläche ist ein Mitglied einer Gruppe von Schaltflächen, von
denen nur eine zu einem bestimmten Zeitpunkt "an" sein kann. Das Triggern einer
derartigen Schaltfläche schaltet typischerweise diese Schaltfläche "an" und dabei
alle anderen Schaltflächen der Gruppe "aus". Wie bei den Mehrzustands-
Schaltflächen kann der Benutzer/Schnittstellendesigner entscheiden, in welcher
Form eine derartige Schaltfläche ihr Aussehen verändert, um ihren Zustand
wiederzugeben. In diesem Fall sind die Radio-Schaltflächen über ihren Namen und
nicht über ihre Lokation im Dokument auf die Gruppe bezogen, so daß sie nicht
nebeneinander positioniert sein müssen.
-
Jeder Pfeil von Fig. 6 ist eine Radio-Schaltfläche. Wie gezeigt, wird der
angeklickte Pfeil schwarz, während alle anderen Pfeile weiß werden.
D. Ausführlichere Darstellung der Schaltflächenattribut-Architektur
-
Die Schaltflächenattribut-Architektur sieht eine Möglichkeit vor, um die
Dokumenteditoren zu modifizieren und zu strukturieren, so daß gewöhnliche Text- und
Grafikdokumentelemente als Schaltflächen funktionieren können. In diesem
Abschnitt werden die Architektur und ihre neuartigen Aspekte ausführlicher
beschrieben, wobei herausgestellt wird, wie diese Architektur die moderne Editor-
Technologie nutzt.
-
Die Schaltflächenattribut-Architektur umfaßt fünf Hauptteile:
-
1. Schaltflächenattribute. Eine als "Schaltflächenattribut" bezeichnete
Zeichenfolge wird mit einem beliebigen Dokumentelement "E" verknüpft, das sich wie
eine Schaltfläche verhalten soll. Diese Zeichenfolge beschreibt den Typ des
gewünschten Schaltflächenverhaltens.
-
2. Editoreigenschaften. Jeder verwendete Dokumenteditor muß in der
Lage sein, diejenigen Dokumente zu finden und zu numerieren, die
Schaltflächeneigenschaften aufweisen und bestimmte Eingabeaktionen (z. B. Mausaktionen), die
auf den Dokumentelementen mit diesem Attribut oder in Nähe derselben
vorgenommen werden, (zu dem eingebetteten Schaltflächenkern) umleiten können.
-
3. Der eingebettete Schaltflächenkern. Der eingebettete
Schaltflächenkern parst Schaltflächenattribute, um eine Kommunikation zwischen dem Editor, der
das Dokument mit den Schaltflächen verwaltet, einem für die durch das
Schaltflächenattribut spezifizierte Schaltflächenklasse geeigneten Schaltflächen-
Handler und den Anwendungspaketen herzustellen, die als "Befehls-Handler"
bezeichnet werden und aufgerufen werden, um eine durch ein bestimmtes
Schaltflächenattribut spezifizierte Aktion auszuführen. Die vorgesehene
Kommunikation ermöglicht es dem Schaltflächen-Handler, den Editor aufzurufen, in
dem die Schaltfläche eingebettet ist, um eine mit der Schaltflächenaktion assoziierte
Rückmeldung vorzushen. Wenn weiterhin Dokumente mit Schaltflächen als
Anwendungs-Steuerleiste verwendet werden, antwortet der Kern auf Anforderungen,
bestimmte Dokumente mit bestimmten Anwendungsfenstern zu verknüpfen, und
leitet darauf bezogene Eingabeaktionen zu dem entsprechenden Fenster um.
-
4. Schaltflächenklassen. Die Schaltflächenklassen sind ein Satz von
Schaltflächen-Handlern, die bestimmte Funktionen der verschiedenen Klassen von
eingebetteten Schaltflächen definieren. Neue Schaltflächenklassen können zu dem
System in Laufzeit hinzugefügt werden, indem eine Routine im Kern aufgerufen wird,
die die neue Klasse registriert. Auf diese Weise kann die Schaltflächen-Handler-
Software für eine neue Schaltflächenklasse korrigiert werden, ohne daß andere Teile
des Systems neu geladen werden.
-
5. Befehls-Handler. Befehls-Handler sind Anwendungen, die sich bei dem
Eingebettete-Schaltflächen-Kern registrieren, bevor der Benutzer beginnt, die
eingebetteten Schaltflächen, die sich auf diese beziehen, zu verwenden (z. B. wenn
sich der Benutzer anmeldet oder wenn die Software für die eingebetteten
Schaltflächen geladen wird). Wenn eine eingebettete Schaltfläche getriggert wird, wird der
entsprechende Behehls-Handler durch den Schaltflächen-Handler für die Klasse, zu
der die Schaltfläche gehört, aufgerufen, um die in der Schaltfläche beschriebene
Aktion auszuführen. Wie bei den Schaltflächenklassen, können neue Befehls-
Handler dynamisch hinzugefügt werden, indem sie beim Kern registriert werden, so
daß sie leicht korrigiert werden können, ohne den Rest des Systems neu zu laden.
-
Wenn sich das Aussehen einer Schaltfläche bei ihrer Betätigung verändern
soll, ist weiterhin ein sechstes Architektur-Merkmal erforderlich:
-
6. Die Editor-Eingabesprache. Der Dokumenteditor, in dem E eingebettet
ist, muß eine (aus Text-Zeichenfolgen bestehende) Eingabesprache vorsehen, die
Editieraktionen beschreibt, die auf dem Dokument ausgeführt werden können. Weil
eine derartige durch den Editor interpretierbare Eingabe-Zeichenfolge im
Schaltflächenattribut enthalten ist, können in der Schaltfläche selbst Editoraktionen
beschrieben werden, die die gewünschte Änderung des Aussehens der Schaltfläche
(oder von beliebigen anderen Dokumentelementen) erzeugen, wenn die Schaltfläche
getriggert wird.
-
Diese sechs Architektur-Merkmale unterstützen mehrere
Schaltflächenfunktionen, darunter:
-
a. Antworten, wenn der Benutzer eine eingebettete Schaltfläche triggert,
-
b. Aktualisieren oder Einsehen des Wertes einer Schaltfläche oder von
Schaltflächen bei einer Aufforderung durch ein Anwendungsprogramm,
-
c. Verknüpfen eines Dokuments mit einem Anwendungsfenster (das als
Befehls-Handler für einen Teilsatz der Schaltflächen im Dokument dient) und
Umleiten der Schaltflächenaktionen zu dem verknüpften Fenster.
-
Fig. 1 zeigt die Kommunikationspfade, die durch die Architektur der
eingebetteten Schaltflächen vorgesehen wird. Wie gezeigt, dient der Kern 12 als ein
Schaltbrett für das Weiterleiten von Nachrichten zwischen den anderen
Komponenten. Mit dieser Architektur ist es einfach, neue Editoren 11, Schaltflächenklassen
13 oder Befehls-Handler 14 dynamisch hinzuzufügen. Diese registrieren ihre Namen
und Routinen im Kern, der danach alle Nachrichten weiterleitet, die von dem
registrierten Namen kommen.
-
Jeder der sechs Teile dieser Architektur - die Schaltflächenattribute, die
Editoreigenschaften, der Eingebettete-Schaltflächen-Kern, die Schaltflächenklassen,
die Befehls-Handler und die Editor-Eingabesprache werden im folgenden
ausführlicher beschrieben. Im Laufe dieser Beschreibung wird gezeigt, wie die Architektur
ihre drei Hauptfunktionen erfüllt: das Antworten auf die Eingabebefehle des
Be
nutzers (z. B. Mausklicks), das Aktualisieren und Einsehen von Werten und das
Verknüpfen von Dokumenten mit Anwendungen.
1. Die Schaltflächenattribute
-
Wie zuvor herausgestellt, müssen alle Editoren, die die vorliegende Erfindung
unterstützen, in der Lage sein, mit jedem gegebenen Dokumentelement (z. B. mit
einem Textzeichen, einem Absatz, einer Grafikform usw.) ein durch eine
Zeichenfolge gewertetes Attribut, das sogenannte "Schaltflächenattribut" zu
assoziieren. Diese Zeichenfolge muß mit dem Dokument gespeichert werden, wenn
das Dokument auf einer Magnetplatte oder einem anderen dauerhaften Medium
gespeichert wird. Wenn das Dokument während des Betriebs in den Speicher
gelesen wird, wird diese Schaltflächenattribut-Zeichenfolge durch den Eingebettete-
Schaltflächen-Kern gelesen und für einen schnellen Zugriff in eine Datenstruktur
umgewandelt. Wenn der Dokumenteditor in der Lage ist, eine derartige
Datenstruktur eines Schaltflächenattributs mit Dokumentelementen zu assoziieren
(an Stelle der Schaltflächenattribut-Zeichenfolge), wird die Leistung verbessert, weil
der Eingebettete-Schaltflächen-Kern die Zeichenfolge nicht jedesmal neu lesen muß,
wenn die Schaltfläche getriggert wird.
-
Die Schaltflächenattribut-Text-Zeichenfolge wird in einer einfachen Sprache
mit dem Namen "Poppy" geschrieben, die benannte Felder zu Text-Zeichenfolge-
Werten verbindet. Die Sprache wurde durch die CUE-Forms-Sprache inspiriert.
Siehe T. Kaczmarek "CUE Forms Descriptions" Internal Technical Report of
University of Southern California, Information Sciences Laboratory, July 25, 1984.
Während die Benutzer Poppy-Zeichenfolgen per Hand editieren können, um das
Verhalten der Schaltflächen zu verändern, bestehen auch andere Möglichkeiten, um
das Verhalten der Schaltflächen zu verändern. Um zum Beispiel eine neue
Schaltfläche zu erstellen, können die Benutzer das Dokumentelement auswählen,
das eine Schaltfläche werden soll und eine bestehende Schaltfläche aktivieren, die
als "Schaltflächen-Ersteller" bezeichnet wird und deren Aufgabe die Erstellung von
neuen Schaltflächen ist. Eine typische Schaltfläche zum Erstellen von Schaltflächen
wird im folgenden beschrieben.
-
Als Beispiel für ein Schaltflächenattribut wird die Beschreibung in der Poppy-
Sprache einer typischen Pop-up-Schaltfläche, die die Farbe von ausgewählten
Objekten ändert, gezeigt:
-
Bei dem vorstehenden Beispiel bedeutet das erste Wort "Poppy 1", daß ein
Programm in der Poppy-Sprache Version 1 folgt. Wie gezeigt, folgend dann vier
Felder für Schaltflächendaten, jeweils eines für die Klasse, den Befehls-Handler, das
Menü und die Rückmeldung.
-
Alle Schaltflächen müssen ein Feld für die Klasse aufweisen, da die Klasse
einer Schaltfläche bestimmt, welcher Codekörper (d. h. welcher Schaltflächen-
Handler) die Benutzereingabe in die Schaltfläche handhabt. In diesem Fall ist es die
Pop-up-Schaltflächenklasse.
-
Das Befehls-Handler-Feld identifiziert die Befehls-Handler-Anwendung 14
(Fig. 1), die die Befehle erhält, wenn eine Wahl in dem Pop-up-Menü der
Schaltfläche getroffen wird, wobei der Name verwendet wird, unter dem die
Anwendung im Kern 12 registriert ist. Der Befehls-Handler für die vorstehende
Schaltfläche ist eine "Färbungs"-Anwendung, die die Farbe ausgewählter Objekte zu
einer im Menü der Schaltfläche genannten Farbe ändert.
-
Das Menü-Feld in dem vorstehenden Beispiel beschreibt ein Pop-up-Menü in
einer LISP-Syntax, die der Pop-up-Schaltflächenklassen-Handler versteht. Dieses
Menü weist drei Einträge auf, die mit "Red", "Green" und "Blue" gekennzeichnet sind.
Die auf die Eintragsbezeichnung folgende Text-Zeichenfolge entspricht der
Dokumentations-Zeichenfolge, die angezeigt wird, wenn sich der Cursor über diesem
Eintrag befindet. Der in Klammern gesetzte Ausdruck vor jedem Eintragsnamen gibt
eine Text-Zeichenfolge wieder, die zu der Anwendung geleitet wird.
-
Die Unterfelder des Rückmeldungsfeldes bestimmten die Aktionen, die beim
Auftreten von Schaltflächenereignissen durchgeführt werden sollen. Das Eingabe-
Unterfeld veranlaßt den Cursor, die Form eines Ochsenauges anzunehmen, wenn er
in diese Schaltfläche geht. Die Spitzklammern um "SetCursor bullseye" weisen
Poppy an, diesen Ausdruck selbst zu interpretieren und ihn nicht zu dem Editor
weiterzugeben, der die Schaltfläche verwaltet. Das "Down"-Unterfeld enthält eine
Ausdrucks-Zeichenfolge in der Eingabesprache des zuvor genannten Tioga-
Texteditors, die den Editor dazu veranlaßt, einen fetten Font für den Text dieser
Schaltfläche anzuwenden. In ähnlicher Weise gibt das Feld "Exit, EndActivity" die
Schaltfläche wieder in einem normalen Font wieder, wenn die Anwendung der
Schaltfläche mit der Berechnung fertig ist oder wenn der Benutzer die Operation
abbricht, indem er den Cursor aus der Schaltfläche heraus bewegt, bevor der Klick
abgeschlossen ist.
-
In der Poppy-Sprache ist der Wert jedes Felds entweder eine einfache
alphanumerische Zeichenfolge, die durch weiße Leerräume begrenzt ist, oder eine
Zeichenfolge (die weiße Zwischenräume umfassen kann), die zwischen Standard-
Grenzen, wie Anführungszeichen ""; Klammern () oder Spitzklammern steht. Wenn
ein Editor eine Schaltflächen enthaltende Datei von der Platte liest, veranlaßt er den
Eingebettete-Schaltflächen-Kern, das Schaltflächenattribut jeder Schaltfläche zu
parsen. Der Kern parst die Zeichenfolge des Schaltflächenattributs in einen Satz aus
(Feldname)/(Feldwert)-Paaren, wobei jeder Feldwert eine nicht interpretierte
Zeichenfolge ist, und gibt die Paare an den entsprechenden Schaltflächen-Handler
für die Schaltflächenklasse weiter, um zu veranlassen, daß der klassenspezifische
Schaltflächen-Handler eine die Schaltfläche wiedergebende Laufzeit-Datenstruktur
erstellt.
-
Mehrzustands-Schaltflächen und Radio-Schaltflächen weisen zwei zusätzliche
Datenfelder für den Namen und die Variablen auf, die in Poppy zum Beispiel wie
folgt ausgedrückt werden:
-
Name: Fruit
-
Variables: (Value: {orange, apple, banana} = orange).
-
In dem vorstehenden Beispiel ist der Wert (Value) eine Variable, die die Werte
orange, apple oder banana annehmen kann, wobei ihr aktueller Wert "orange" ist.
Anwendungen nehmen auf diese Wert Bezug, um ihn zu lesen oder zu schreiben,
indem die den Namen der Schaltfläche "Fruit" schreiben. Wenn mehr als eine
Schaltfläche denselben Namen aufweist, kann der Name zweideutig werden. Deshalb wird
dieses Problem typischerweise gelöst, indem alle Schaltflächen mit demselben
Namen dazu gezwungen werden, denselben Wert aufzuweisen, so daß das Ändern
des Wertes einer der Schaltflächen verursacht, daß sich auch alle anderen ändern.
Alternativ dazu ist es jedoch auch möglich, den Wert eines gegebenen
Variablennamens in einem besonderen Unterteil eines hierarchisch strukturierten Dokuments
nachzuschlagen. Wenn zum Beispiel eine Schaltfläche A über einen
Variablennamen N auf einen Wert Bezug nimmt, kann das System den Wert der
Variable N zuerst in dem Absatz, in dem A auftritt, dann in dem Teilabschnitt, in dem
A auftritt, und dann in dem entsprechenden Abschnitt usw. suchen. Auf diese Weise
kann die hierarchische Struktur von Dokumenten verwendet werden, um die
Zweideutigkeit von Namen zu beseitigen.
2. Editor-Eigenschaften
-
Es ist möglich, daß die Editoren 11 (Fig. 1) in einigen Beziehungen
geringfügig modifiziert werden müssen, um in der Architektur der eingebetteten
Schaltflächen teilzunehmen. Insbesondere sollten sie Routinen aufweisen, um
-
a. alle Elemente in dem Dokument aufzulisten, die das
Schaltflächenattribut aufweisen,
-
b. das Schaltflächenattribut (und andere Attribute) eines gegebenen
Dokumentelements zu beschreiben,
-
c. das Dokument in Übereinstimmung mit den Editierbefehlen zu
editieren, die in einer Editor-spezifischen Sprache vorgesehen sind (optional),
-
d. zu berichten, ob eine gegebene Cursorposition innerhalb oder
außerhalb eines gegebenen Dokumentelements ist.
-
Außerdem kann ein Editor für eine verbesserte Leistung zusätzlich ein
Routine enthalten, die
-
e. einen Zeiger mit einer beliebigen Datenstruktur mit einem
Dokumentelement assoziiert,
-
f. die Inhalte einer Schaltfläche als Text-Zeichenfolge beschreibt.
-
Das zuletzt genannte Merkmal ist am sinnvollsten, wenn die Schaltfläche in
einem Textdokument eingebettet ist.
-
Schließlich müssen die Editoren in der Lage sein, die Verarbeitung von
Auswahlaktionen (z. B. das Zeigen mit einer Maus oder mit den Cursortasten) zu
verzögern, wenn sie sich im "Schaltflächen-Modus" befinden, bis sie bestimmt
haben, ob das Dokumentelement unter dem Cursor zu einem bestimmten Zeitpunkt
ein Schaltflächenattribut besitzt oder nicht. Wenn ein derartiges Attribut gefunden
wird, führt der Editor keine Editierfunktion aus. Statt dessen leitet er die Information
darüber, daß der Benutzer auf eine eingebettete Schaltfläche gezeigt und eine
Maustaste gedrückt hat, zu dem Eingebettete-Schaltflächen-Kern weiter. Wenn kein
derartiges Attribut vorhanden ist, führt der Editor andererseits die Editieraktion aus,
die er normalerweise ausführt, wenn eine Maustaste über dem gegebenen
Dokumentelement gedrückt wird.
-
Glücklicherweise sind diese Merkmale allgemein leicht zu implementieren.
Alle mausgesteuerten Editoren enthalten bereits einen Code zum Bestimmen des
Dokumentelements, auf das der Benutzer zeigt. Weiterhin weisen die meisten
derartigen Editoren einen Code zum Abwickeln einer entsprechenden Routine auf, um
jedes Eingabeereignis zu handhaben, wobei alle WYSIWIG (What You See Is What
You Get)-Editoren eine Code zum Zugreifen auf die Attribute der Dokumentelemente
aufweisen. Deshalb können diese einfach erweitert werden, um einen Code zu
enthalten, der bestimmt, ob ein Schaltflächenattribut vorhanden ist, um zum
passenden Zeitpunkt die Eingebettete-Schaltflächen-Kernroutine abzuwickeln, um diese
Attribute zu modifizieren und um nach Dokumentelementen zu suchen, die
besondere Attribute aufweisen.
3. Der Eingebettete-Schaltflächen-Kern
-
Der Eingebettete-Schaltflächen-Kern sieht zwei Typen von Routinen vor:
-
(1) Registrierungsprozeduren, die das Einführen von neuen Befehls-
Handlern, Schaltflächenklassen und Anwendungsfenstern in das System erlauben.
-
(2) Aktionsroutinen, die zur Verwendung von Schaltflächen durch Benutzer
und Softwareroutinen beitragen.
-
Die Grundroutinen dieser zwei Typen werden in diesem Abschnitt
beschrieben.
a. Registrierungsprozeduren
-
Ein Nachrichten-Handler registriert sich in geeigneter Weise bei dem
Eingebettete-Schaltflächen-Kern, indem er eine Kernroutine aufruft:
-
RegisterMessageHandler: PRODEDURE [name: String, notifyProc:
RegisteredNotify:Proc];
-
wobei "String" eine ASCII-Text-Zeichenfolge und "RegisteredNotifyProc" eine
Prozedur des folgenden Typs ist:
-
RegisteredNotifyProc: TYPE = PROCEDURE [action: String, button Button]
RETURNS success: BOOLEAN].
-
Dabei beschreibt "RegisteredNotifyProc" "button" die eingebettete
Schaltfläche, die gedrückt wurde, um die Aktion zu triggern, und BOOLEAN ist ein
wahr/falsch-Wert. Wenn folglich der Kern ein Schaltflächenattribut liest, das
anfordert, daß eine Aktion zu einem Befehls-Handler mit einem registrierten Namen
gesendet wird, ruft der Kern die assoziierte RegisteredNotifyProc auf, um dadurch
die Aktionsanforderung als Parameter zu dem Befehls-Handler weiterzuleiten.
-
Eine Schaltflächenklasse registriert sich selbst bei dem
Eingebettete-Schaltflächen-Kern, indem sie die Kernroutine aufruft:
-
Register ButtonClass: PROCEDURE [buttonClassName: String, buttonClass:
ButtonClass];
-
wobei ButtonClass Routinen zum Durchführen der folgenden Prozeduren vorsieht:
-
(1) Instantiate. Erzeugen von Laufzeit-Datenstrukturen für eine bestimmte
Schaltfläche einer spezifizierten Klasse aus ihrem Schaltflächenattribut.
-
(2) File Out. Erzeugen eines veränderten Schaltflächenattributs für die
bestimmte Schaltfläche (z. B. wenn sich der Wert seit der Erstellung geändert hat)
aus den Laufzeit-Datenstrukturen, wenn das Hostdokument der Schaltfläche auf
Platte geschrieben wird.
-
(3) Handle Triggering. Antworten auf Triggeraktionen für die gegebene
Schaltfläche. Diese Routine entscheidet, welche Rückmeldung durchgeführt werden
soll und wann der Befehls-Handler benachrichtigt werden sollte.
-
(4) Get Value. Mitteilen des aktuellen Wertes der gegebenen Schaltfläche,
wenn der Kern nach diesem fragt.
-
(5) Set Value. Antworten auf Anforderungen, den Wert einer betimmten
Schaltfläche zu ändern. Schaltflächen können zum Beispiel antworten, indem sie
ihre Laufzeit-Datenstrukturen ändern und eine entsprechende für den Menschen
sichtbare Rückmeldung erzeugen.
-
(6) Default Behavior. Durchführen des Verhaltens, das die gegebene
Schaltfläche aufweisen sollte, wenn kein spezifizierter Befhels-Handler vorgesehen
ist. Schaltflächen in einem Zustand wechseln zum Beispiel häufig in den nächsten
Zustand, wenn sie getriggert werden und kein Befehls-Handler angegeben ist.
-
Wenn eine Anwendung ein bestimmtes Dokument mit einem bestimmten
Anwendungsfenster verknüpfen möchte, macht es den folgenden Aufruf:
-
LinkDocToApplication: PROCEDURE [doc: ActiveDoc, handlerName: String,
window: Window, applicationData: POINTER, notifyProc: NotifyProc];
-
wobei "ActiveDoc" die virtuelle Speicheradresse des zu verknüpfenden Dokuments
mit Schaltflächen wiedergibt. Wenn die vorstehende Routine aufgerufen ist, ist der
Kern in der Lage, das Triggern jeder Schaltfläche in "ActiveDoc" zu handhaben,
dessen Befehls-Handler-Feld denselben Handler-Namen "handlerName" enthält,
indem er "notifyProc" aufruft und die Argumente "window" und "applicationData"
weiterleitet, um das Ausführen der Aktion der Schaltfläche zu veranlassen. Dabei
beschreibt "window" das besondere Anwendungsfenster, dessen Inhalte durch das
Triggern der gegebenen Schaltfläche beeinflußt werden sollen, und "applicationData"
ist ein Zeiger auf eine andere Information, die die Anwendung benötigt, um die
beabsichtigte Schaltflächenaktion auszuführen. Dazu ist "noto Proc" eine Prozedur
des folgenden Typs:
-
NotifyProc: TYPE = PROCEDURE [button: Button, action: String, window:
Window, applicationData: POINTER] RETURNS [success: BOOLEAN];
-
Die Erfolgsrückmeldung von "notifyProc" wird durch die Schaltflächenklasse
verwendet, um zu bestimmen, ob dem Benutzer mitgeteilt werden soll, daß die durch
den Benutzer angeforderte Aktion erfolgreich oder nicht erfolgreich war.
b. Aktionsroutinen
-
Die Aktionsroutinen des Kerns werden durch Editoren aufgerufen, die die
Dokumente mit den Schaltflächen handhaben, durch Anwendungsprogramme, die
die Dokumente als Steuerleisten verwenden, und durch Schaltflächenklassen, die
dem Kern helfen, auf Aufrufe von derartigen Editoren und Anwendungsprogrammen
zu antworten. Insbesondere sieht der Kern drei Routinen vor, die durch die Editoren
der Dokumente mit Schaltflächen aufgerufen werden: HandlePress, DataStructure-
FromAttribute und AttributeFromDataStructure. Weiterhin sieht der Kern zwei
Grundroutinen vor, die durch Anwendungen aufgerufen werden: GetValue, und SetValue.
-
Schließlich sieht der Kern sechs Grundroutinen vor, die durch Schaltflächenklassen
aufgerufen werden: PassEventToCommandHandler, GetField, SetField, GetAttribute
und RegisterNameValuePair. Diese Routinen und ihre Funktionen werden in diesem
Abschnitt definiert.
1. Durch Editoren aufgerufene Aktionsroutinen
-
HandlePress: PROCEDURE [press: InputAction, button: Button, doc:
AcitveDoc];
-
ist eine der grundlegenden Routinen in der Architektur der eingebetteten
Schaltflächen. Ein Editor ruft diese Routine auf, wenn er feststellt, daß der Benutzer einen
Cursor über die Schaltfläche bewegt und die Schaltfläche getriggert hat (entweder
durch das Klicken einer Maustaste, das Drücken einer Taste auf der Tastatur oder
mit Hilfe einer anderen Einrichtung). Das Argument "press" ist eine Wiedergabe des
durch den Benutzer verwendeten Verfahrens, um die Schaltfläche zu triggern. Einige
Schaltflächen (z. B. Pop-up-Schaltflächen) verhalten sich, je nach der physikalischen
Taste bzw. den physikalischen Tasten, die für das Triggern gedrückt werden,
verschieden, so daß in dem "press"-Argument Information enthalten ist. Das "button"-
Argument gibt an, welche Schaltfläche getriggert wurde, und das "doc"-Argument
gibt das Dokument an, in dem die Schaltfläche lokalisiert ist. Wenn "HandleClick"
aufgerufen wird, parst der Kern das Schaltflächenattribut, um festzustellen, welche
Schaltflächenklasse diesen Klick handhaben soll und gibt die Aktion für eine weitere
Verarbeitung an diese Schaltflächenklasse weiter.
-
Eine weitere Routine, die durch den Editor aufgerufen werden kann, ist die
folgende:
-
DataStructureFromAttribute: PROCEDURE [attribute: String, button: Button,
doc, ActiveDoc] RETURNS [dataStructure:POINTER];
-
Damit die HandlePress-Routine erfolgreich ist, muß der Kern das
Schaltflächenattribut parsen. Dieses Parsen kann bei jedem Triggern der Schaltfläche
vorgenommen werden, was die Leistung jedoch beeinträchtigen würde. Statt dessen
kann der Editor die DataStructureFromAttribute-Routine einmal für jede Schaltfläche
aufrufen, wenn das Dokument geladen wird. Diese Routine parst das
Schaltflächenattribut, erstellt eine die Schaltfläche wiedergebende Datenstruktur und gibt diese
Datenstruktur an den Editor zurück. Der Editor kann dann diese Datenstruktur an
Stelle der Schaltflächenattribut-Zeichenfolge als einen Laufzeit-Wert des
Schaltflächenattributs speichern. [Dabei ist zu beachten: Als eine extra Verbesserung kann
das Parsen vorgenommen werden, wenn die Schaltfläche zum ersten Mal gedrückt
wird, damit dieser Arbeitsaufwand nicht für alle Schaltflächen anfällt, wenn das
Dokument geladen wird. Mit diesem Schema fällt der Arbeitsaufwand für das Parsen
nur für die verwendeten Schalflächen an.]
-
Wenn das Dokument zurück zur Platte geschrieben wird, kann ein
Schaltflächenattribut unter Verwendung der AttributeFromDataStucture-Routine wieder zu
einer Zeichenfolge umgewandelt werden:
-
AttributeFromStringStructure: PROCEDURE [dataStructure: POl NTER]
RETURNS [attribute: String];
-
Diese Routine nimmt eine durch die oben beschriebene DataStructure-
FromAttribute-Routine erzeugte Datenstruktur und wandelt sie in einen durch den
Menschen lesbare Text-Zeichenfolge in der Poppy-Sprache um. Editoren rufen diese
Routine auf, wenn ein Dokument zurück auf die Platte geschrieben wird, damit sie
die Schaltflächeneigenschaften extern als Text-Zeichenfolgen wiedergeben können.
Dabei ist zu beachten, daß die durch die Routine ausgegebene Text-Zeichenfolge
für eine bestimmten Schalfläche nicht identisch mit der Text-Zeichenfolge sein muß,
die als Argument zu der Datat-StructureFromAttribute-Routine gegeben wurde.
Wenn die Schaltfläche zum Beispiel eine Mehrzustands-Schaltfläche ist, kann der
Wert von TRUE zu FALSE gewechselt haben, wobei dieser neue Zustand in der
revidierten Zeichenfolge des Schaltflächenattributs wiedergegeben wird.
2. Durch Anwendungen aufgerufene Aktionsroutinen
-
GetValue: PROCEDURE [name: String, doc: ActiveDoc] RETURNS
[value:String]
-
ist eine Routine, die den Wert der mit Value bezeichneten Variable ausgibt, der in
der Schaltfläche bzw. den Schaltflächen in dem Dokument "doc" erscheint, das die
gegebene Text-Zeichenfolge "name" im Feld "Name:" der Schaltflächenattribute
aufweist. Wenn mehrere Schaltflächen in dem Dokument diesen Namen aufweisen,
gibt die Routine den Wert der ersten angetroffenen Schaltfläche aus. Um die
Leistung zu verbessern, prüft die GetValue-Routine, ob "name" durch die
RegisterNameValuePair-Routine (siehe unten) in einer Hashtabelle registriert wurde.
Wenn ja, findet die Routine den assoziierten Wert sehr schnell und gibt ihn aus.
Wenn nicht, sucht die Routine mit Hilfe der in Abschnitt D.2 beschriebenen
Enumeratebuttons-Routine in allen Schaltflächen im Dokument nach dem Namen
und gibt einen Wert aus, wenn der Name gefunden wird. Wenn keine Schaltfläche
mit diesem Namen gefunden wird, gibt es eine leere Zeichenfolge aus.
-
SetValue: PROCEDURE (name: String, value: String, doc: ActiveDoc];
-
Diese Prozedur ändert den Wert der Wert-Variable in allen Schaltflächen im
Dokument "doc", die den bestimmten Namen aufweisen. Es leitete auch den
Schaltflächennamen, den Wert und den Dokumentnamen zu der RegisterNameValuePair-
Routine (siehe unten) weiter, damit bei späteren Aufrufen von GetValue schnell der
korrekte Wert ausgegeben werden kann.
3. Durch die Schaltflächenklassen aufgerufene Aktionsroutinen
-
PassEventToCommandHandler: PROCEDURE [event: String, button: Button,
application: String];
-
wird durch eine Schaltflächenklase aufgerufen, um dem Kern mitzuteilen, daß der
Zeitpunkt erreicht ist, um die Text-Zeichenfolge mit dem Namen "event" zu dem
Befehls-Handler der bezeichneten Schaltfläche weiterzugeben. Dieser Kern
bestimmt dann aus der Schaltfläche und den aktuellen Tabellen der Kerns zu den
registrierten BefehlsHandlern und den verknüpften Dokumenten (siehe die oben
beschriebene LinkDocToWindow-Routine), welche Prozedur aufgerufen werden soll,
um den BefehlsHandler zu benachrichtigen, wobei das Ereignis dann zu dieser
Prozedur weitergegeben wird und die Routine schließlich abschließt.
-
GetField: PROCEDURE [fieldName: String, button: Button] RETURNS [field:
String];
-
ist eine Routine, die den Wert eines besonderen Feldes des Schaltflächenattributs
einer gegebenen Schaltfläche ausgibt. Wenn zum Beispiel GetFiled ["Command-
Handler" bei einer Mehrzustands-Schaltfläche für die oben beschriebene
Anwendung für die farbige Darstellung angewendet wird, wird die Zeichenfolge
"Colorizer" ausgegeben.
-
SetField: PROC [filedName: String, filed: String, button:Button];
-
ist eine Prozedur zum Zuweisen eines neuen Wertes zu einem bestimmten Feld
eines Schaltflächenattributs. Darauffolgende GetField-Operationen auf dem
veränderten Feld geben dann den: neuen Wert aus.
-
GetAttribute: PROC [key: String, button: Button] RETURNS [pointer:
POINTER];
-
Weil das Schaltflächenattribut (dadurch identifiziert, daß als Key "Button-
Attribute" genommen wird) ist das einzige Attribut eines Dokumentelements, das für
die Architektur der eingebetteten Schaltflächen ausschlaggebend ist, wobei es
möglich ist, daß einige Schaltflächenklassen die Werte von anderen Attributen
bekommen wollen. Die hier beschriebene Schaltfläche zum Erstellen von Schaltflächen
zum Beispiel verwendet ein zweites Attribut (dadurch identifiziert, daß als Key
"ButtonAttributeLiteral" genommen wird). Die GetAttribute-Prozedur macht alle diese
Attribute für die Schaltflächenklassen verfügbar. Diese Routine gibt einen Zeiger auf
eine beliebige Datenstruktur aus, so daß die Schaltflächenklasse wissen muß, ob
diese Datenstruktur eine Text-Zeichenfolge oder eine andere Datenstruktur ist, wenn
sie diese verwendet.
-
SetAttribute: PROCEDURE [key: String, pointer: POINTER, button: Button,
edited: BOOLEAN];
-
erlaubt es den Schaltflächenklassen, den Wert jedes Attributs des durch das
"button"-Argument beschriebenen Dokumentelements zu ändern.
-
RegisterNameValuePair: PROC [name: String, value: String, doc: ActiveDoc];
ist eine Routine zum Speichern des Name-Wert-Paares in einer Hashtabelle, wobei
"name" als key verwendet wird. Wie oben genannt, verwendet die GetValue-Routine
diese Tabelle, um schnell die Werte derjenigen benannten Schaltflächen zu finden,
deren Namen und Werte in dieser Tabelle gespeichert sind.
4. Die Schaltflächenklassen
-
Wie oben in Abschnitt c.2. beschrieben, sind für den Benutzer des
Schaltflächen enthaltenden Dokuments wenigstens drei verschiedene
Schaltflächenklassen verfügbar, wobei diese Klassen drei Grundbaublöcke für die mit diesen
Dokumenten erstellten Schnittstellen vorsehen. Wie weiterhin in Abschnitt D.3.a
beschrieben, kann dieser Satz von Schaltflächenklassen erweitert werden (sogar in
Laufzeit), indem eine Registrierungsprozedur aufgerufen wird. Wie weiterhin bereits
in Abschnitt D.3.a genannt wurde, ist jede Schaltflächenklasse durch sechs
Prozeduren definiert. Außerdem weist eine Schaltfläche einer gegebenen
Schaltflächenklasse verschiedene Felder in ihrem Schaltflächenattribut auf, um die
Aktivität zu unterstützen. Der vorliegende Abschnitt enthält Beispiele von
Schaltflächenattributen für alle drei oben beschriebenen Schaltflächenklassen, wobei
auch beschrieben wird, wie jede Klasse ihre sechs Routinen implementiert.
a. Pop-up-Schaltflächen
-
Pop-up-Schaltflächen können ein Pop-up-Menü anzeigen, wenn sie getriggert
werden (davon abhängig, wie der Benutzer die Schaltflächen triggert), und in
Übereinstimmung mit dem durch den Benutzer gewählten Menüpunkt eine Aktion
durchführen. Das Schaltflächenattribut für eine Pop-up-Schaltfläche, das wie in Fig. 2c die
in dem Text der Schaltfläche selbst genannte Datei öffnet (dieses
Schaltflächenattribut muß für diese Aktion sinnvollerweise mit einem Textdokumentelement
assoziiert werden), lautet wie folgt:
-
Poppy 1
Class: PopUpButton
Menu: (
((< Concat "Open" < ButtonText») "Open" "Opens the file represented by this
button")
)
CommandHandler: CommandTool
Feedback: (
(Mouse Moved < SetCursor bullseye> )
)
-
Die PopUpButton-Klasse macht das Feld "Menu" erforderlich. Die Felder für
die Klassen, den Befehls-Handler und die Rückmeldung werden für alle
Schaltflächenklassen durch den Eingebettete-Schaltflächen-Kern unterstützt.
-
Die sechs Grundroutinen für die Pop-up-Schaltflächenklasse werden wie folgt
implementiert.
-
Instantiation: Diese Routine liest das Menü-Feld und erzeugt eine
Datenstruktur, die das grafische Aussehen des Pop-up-Menüs wiedergibt.
-
File Out. Wenn dieses Schaltflächenattribut keine Werte hat, ändert es sich
während der Verwendung nicht. Die File Out-Routine gibt einfach das ursprüngliche
Schaltflächenattribut aus.
-
Button press. Zuerst wird der Eingebettete-Schaltflächen-Kern 12 (Fig. 1)
aufgefordert, eine mit dem Rückmeldungs-Feld assoziierte Rückmeldung
vorzunehmen, wenn die Schaltfläche gedrückt wird. Als nächstes wird das Pop-up-Menü
auf dem Bildschirm des Benutzers gezeichnet (wenn der Benutzer die Maustaste
lange genug gedrückt hält, um die Anzeige zu aktivieren), wobei der Benutzer jetzt
eine Menüauswahl vornehmen kann. Wenn der Benutzer eine Auswahl getroffen hat,
wird die Auswahl bewertet. In dem oben angeführten Beispiel wird der Ausdruck
< Concat "Open" < ButtonText» bewertet, um den im Text der Schaltfläche
genannten Dateinamen zu finden und um die Zeichenfolge "Open"
dementsprechend anzupassen. Wenn die Schaltfläche zum Beispiel die Text-
Zeichenfolge "~/writings/diary" umfaßt, erzeugt die Verkettung die Zeichenfolge
"Open ~/writings/diary". Schließlich gibt der Kern 12 diese Text-Zeichenfolge zu dem
Befehls-Handler (in diesem Fall "CommandTool"). Der Befehls-Handler 14 führt dann
die Aktion aus (er zeigt z. B. die bezeichnete Datei auf dem Bildschirm an).
Schließlich ruft der Kern 12 den Editor auf, um eine Rückmeldung vorzusehen, die
anzeigt, daß der Schaltflächenbefehl ausgeführt wurde.
-
Get Value. Es ist kein Wert angegeben, so daß diese Prozedur nichts bewirkt.
-
Set Value: Es ist kein Wert angegeben, so daß diese Prozedur nichts bewirkt.
-
Default Behavior. Wenn kein Befehls-Handler vorgesehen ist, zeigen die
Pop-up-Schaltflächen einfach ihren Befehl auf dem Bildschirm an, so daß der
Benutzer diesen lesen kann. Dies ist beim Korrigieren von Schaltflächen dieser
Klasse hilfreich.
-
b. Mehrzustands-Schaltflächen
-
Fig. 5B zeigt eine Mehrzustands-Textschaltfläche, die den Wert TRUE oder
FALSE aufweisen kann. Wenn der Wert TRUE ist, erscheint der Text weiß auf
schwarz. Wenn der Wert FALSE ist, erscheint der Text schwarz auf weiß. Das
Schaltflächenattribut ist:
-
Mehrzustands-Schaltflächen erfordern, daß das Feld "Variables" in den
Schaltflächenattributen erscheint und daß eine Variable mit dem Namen "Value"
definiert werden kann. Außerdem ist zu beachten, daß das Feld mit dem Namen
"UpClickMessage" in dem vorstehenden Beispiel die Nachricht beschreibt, die zu
dem Befehls-Handler gesendet wird, wenn der Benutzer aufhört, auf diese
Schaltfläche zu klicken. Das Feld "Name" wird durch den Eingebettete-
Schaltflächen-Kern unterstützt und sieht eine Möglichkeit für den Kern vor, sich auf
den Wert dieser Schaltfläche zu beziehen. Die anderen Felder für die Klasse, den
Befehls-Handler und die Rückmeldung werden für alle Klassen durch den
Eingebettete-Schaltflächen-Kern unterstützt.
-
Die Mehrzustands-Schaltflächenklasse implementiert ihre sechs
klassenspezifischen Routinen wie folgt:
-
Instantiation. Diese Routine liest das Variablen-Feld und erzeugt eine
Datenstruktur, die jede benannte Variable und ihren Wert wiedergibt. Sie stellt auch sicher,
daß die Schaltfläche zu Beginn das korrekte Aussehen aufweist, indem sie die mit
dem aktuellen Wert von Value assoziierte Rückmeldung durchführt. In diesem
Beispiel sendet die Schaltfläche die Zeichenfolge "BeginButton ClearLooks LookWhite-
OnBlackEndButton" zu dem Texteditor, der dem Text der Schaltfläche ein normales
Aussehen gibt (was eine Folge des ClearLooks-Befehls ist), wobei der Text
allerdings weiß auf schwarz dargestellt wird (was eine Folge von LookWhiteOnBlack
ist). Die Befehle BeginButton und EndButton in diesem Beispiel weisen den
Texteditor an, die anderen Befehle für den Text dieser Schaltfläche und nicht für
einen anderen Teil des Dokuments anzuwenden.
-
File Out. Um sich selbst textuell zu beschreiben, muß eine Mehrzustands-
Schaltfläche einen neuen Wert für das Variablen-Feld erstellen, indem es den
Namen und den aktuellen Wert jeder in dem ursprünglichen Schaltflächenattribut
genannten Variable ausschreibt. In diesem Beispiel wird je nach dem aktuellen Wert
der Wert-Variable die Zeichenfolge "TRUE" oder "FALSE" ausgeschrieben. Die
anderen Felder des Schaltflächenattributs ändern sich nicht und werden genauso
ausgeschrieben wie sie eingelesen wurden.
-
Button Press. Zuerst wird der Kern aufgefordert, eine in dem Rückmeldungs-
Feld mit der gedrückten Taste assoziierte Rückmeldung durchzuführen. In dem oben
beschriebenen Beispiel gibt die mit "Down" beginnende Rückmeldungszeile an, daß
die Schaltfläche kursiv dargestellt werden soll, wenn sie durch den Benutzer
angeklickt wird. Wenn der Benutzer die Maustaste losläßt (oder in anderer Weise angibt,
daß eine Auswahl vorgenommen wurde) wird die Nachricht "Toggle Grid" zu dem
Befehls-Handler gesendet. Wenn dieser Ausdruck Prozduraufrufe (wie < Button
Text> oder < Concat> in dem Beispiel der Pop-up-Schaltfläche) enthält, werden
derartige Schaltflächen zu diesem Zeitpunkt aufgerufen.
-
Get Value. Diese Routine gibt den Wert der Wert-Variable aus.
-
Set Value. Diese Routine weist der Wert-Variable den neuen Wert zu und
führt die mit dem neuen Wert assoziierte Rückmeldung aus. Wenn zum Beispiel in
dem vorhergehenden Beispiel Value auf FALSE gesetzt wird, wird die Editier-
Instruktion "BeginButton ClearLooks EndButton" zu dem Texteditor gesendet,
wodurch veranlaßt wird, daß der Text der Schaltfläche schwarz auf weiß dargestellt
wird.
-
Default Behavior. Wenn kein Befehls-Handler vorgesehen ist und der
Benutzer eine Auswahl dieser Schaltfläche trifft, wird das UpClick-Message-Feld
ignoriert. Statt dessen wird Value in seinen nächsten möglichen Wert versetzt. In
dem vorliegenden Beispiel wechselt der Wert mit jedem Klick von TRUE zu FALSE
oder von FALSE zu TRUE.
c. Radio-Schaltflächen
-
Fig. 7A und 7B zeigen ein Paar von Radio-Schaltflächen, die in einem
Grafikeditor eingebettet werden könnten. Der Kreis (Fig. 7B) ist deutlich dicker als
das Quadrat (Fig. 7A), um anzugeben, daß die kreisförmige Schaltfläche "on" ist
während die quadratische Schaltfläche "off" ist. Die Schaltflächenattribute für diese
zwei Schaltflächen sind beinahe, identisch. Das Attribut der quadratischen
Schaltfläche ist:
-
Poppy 1
-
Class: Radiobutton
-
CommandHandler: DrawShapes
-
Name: Shape
-
RadiobuttonValue: Rectangle
-
Variables: (State: BOOL = FALSE)
-
UpClickMessage: (RectangleMode)
-
In dem Schaltflächenattribut für die kreisförmige Schaltfläche wird das fett
gedruckte Wort "Rectangle" in dem vorstehenden Beispiel durch "Circle" und das fett
gedruckte Wort "FALSE" durch "TRUE" ersetzt.
-
Es ist deutlich, daß die Klasse der Radio-Schaltflächen die Felder
Radiobutton Value, Variables und UpclickMessage unterstützt. Das
Radio-Schaltflächen-Wert-Feld Radiobutton Value beschreibt einen möglichen Wert der Wert-
Variable Value, die nicht explizit in dem Schaltflächenattribut erwähnt wird, aber
implizit durch alle Radio-Schaltflächen mit demselben Namen definiert wird. In dem
vorstehenden Beispiel kann Value die Werte des Satzes [Rectangle, Circle]
annehmen. Die Felder Variables und UpClickMessage Weise andererseits Funktionen
auf, die deren Funktionen für die Mehrfachzustand-Schaltflächen ähnlich sind. Für
die Radio-Schaltflächen muß allerdings die Zustands-Variable State mit einem
Booleschen Wert (TRUE/FALSE) definiert werden. Außerdem kann der Wert von
State nur für eine Schaltfläche in einem Satz von Radio-Schaltflächen TRUE sein.
Alle Radio-Schaltflächen in einer Gruppe weisen dasselbe Name-Feld auf. Die
anderen Felder für die Klasse, den Befehls-Handler, den Namen und die
Rückmeldung werden für alle Schaltflächenklassen durch den Eingebettete-
Schaltflächen-Kern unterstützt.
-
Die Radio-Schaltflächen implementieren ihre sechs Klassenprozeduren wie
folgt:
-
Instantiation: Diese Routine liest das Variablen-Feld und erzeugt eine
Datenstruktur, die jede benannte Variable und ihren Wert wiedergibt. Sie stellt auch sicher,
daß die Schaltfläche zu Beginn das korrekte Aussehen aufweist und die mit dem
aktuellen Wert des Zustands-Feldes assoziierte Rückmeldung durchführt. In dem
vorstehenden Beispiel sendet die rechteckige Schaltfläche eine durch den Editor
interpretierbare Zeichenfolge "(BeginButton) (LineWidth 2.0) (DashesOff) (End-
Button)" zu dem Grafikeditor, der das Rechteck dünn und nicht gestrichelt darstellt.
-
File Out. Wie eine Mehrzustands-Schaltfläche muß eine Radio-Schaltfläche
eine neue Zeichenfolge erzeugen, um ihr Variablen-Feld wiederzugeben. Die
anderen Felder ändern sich nicht und werden genau so ausgeschrieben wie sie
eingelesen wurden.
-
Button Press. Wie zuvor, wird der Kern zuerst aufgefordert, eine mit dem
Rückmeldungs-Feld assoziierte Rückmeldung vorzunehmen, wenn die Schaltfläche
gedrückt wird. In dem vorstehenden Beispiel gibt die mit "Down" beginnende
Rückmeldungszeile an, daß die ausgewählte Schaltfläche als eine gestrichelte Form
wiedergegeben werden soll, wenn sie durch den Benutzer angeklickt wird. Wenn der
Benutzer die Maustaste losläßt (oder in anderer Weise angibt, daß er eine Auswahl
getroffen hat) wird die Nachricht "RectangleMode" zum Befehls-Handler gesendet.
Wenn dieser Ausdruck Prozeduraufrufe (wie < Button Text> oder < Concat> in dem
Beispiel der Pop-up-Schaltfläche) enthält, werden derartige Schaltflächen zu diesem
Zeitpunkt aufgerufen.
-
Get Value. Die Get Value-Routine für die Radio-Schaltflächen ist interessant.
Der Wert einer aufeinander bezogenen Gruppe von Radio-Schaltflächen entspricht
dem Wert des RadiobuttonValue-Feldes der Schaltfläche in der Gruppe, deren
Zustands-Variable TRUE ist. In dem vorstehenden Beispiel gibt Get Value also
"Circle" aus.
-
Set Value. Set Value ist ebenfalls interessant. Der angegebene Wert muß der
Wert des RadiobuttonValue-Feldes einer der Schaltflächen in der Gruppe sein. Die
Zustands-Variable dieser Schaltfläche wird auf TRUE gesetzt und die Zustands-
Variablen aller anderen Schaltflächen in der Gruppe werden auf FALSE gesetzt.
Jede Variable sieht die entsprechende Rückmeldung für den neuen Zustand vor
(Schaltflächen, die ihren Zustand nicht geändert haben, brauchen keine
Rückmeldungsaktionen auszuführen).
-
Default Behavior. Wenn kein Befehls-Handler vorgesehen ist und wenn der
Benutzer die eine Radio-Schaltfläche ausgewählt hat, wird deren UpClickMessage
ignoriert. Statt dessen wird der Zustands-Wert der ausgewählten Schaltfläche auf
TRUE gesetzt, wobei die Zustands-Variablen aller anderen Schaltflächen in der
Gruppe auf FALSE gesetzt werden. Die Rückmeldung wird wie für die Set Value-
Routine beschrieben vorgesehen.
5. Der Befehls-Handler
-
Wenn eine Schaltfläche getriggert wird, wird ein Befehl zu einer Befehls-
Handler-Anwendung 14 (Fig. 1) gesendet, um eine vorbestimmte Funktion
durchzuführen. Jede Schaltfläche beschreibt, welcher Befehls-Handler 14 den Befehl erhält,
indem dieser Handler als Teil des Befehls oder in dem CommandHandler-Feld des
Schaltflächenattributs genannt wird. Es ist dabei tatsächlich möglich, Befehle zu
mehreren Befehls-Handlern zu senden, indem deren Namen in dem Command-
Handler-Feld aufgelistet werden.
-
Neue Befehle können fliegend (on-the-fly) zu dem Softwaresystem
hinzugefügt werden. Jedes Programm kann die RegisterCommandHandler-Prozedur
aufrufen, um den Namen eines Befehls-Handlers und eine Call-Back-Prozedur in
dem Eingebettete-Schaltflächen-Kern 12 (Fig. 1) zu registrieren. Dann handhabt der
Kern 12 alle zu einem registrierten Befehls-Handler gerichteten Befehle, indem er die
registrierten Call-Back-Prozeduren aufruft. Die Call-Back-Prozedur nimmt wiederum
zwei Argumente: einen Befehl und eine Beschreibung der gedrückten Schaltfläche.
Weiterhin gibt sie an, ob der Befehl erfolgreich war oder nicht, was es erlaubt, eine
unterschiedliche Rückmeldung für den Benutzer vorzusehen, wenn ein Befehl nicht
erfolgreich ist.
-
Vorzugsweise enthält das System wenigstens den folgenden Satz von
Befehls-Handlern 14 (diese Handler unterstützen viele verschiedene
Verhaltensmuster der Schaltflächen):
a. Der Befehls-Handler CommandTool
-
Der Befehls-Handler CommandTool interpretiert sein Befehlsargument als ob
es durch einen Benutzer in zum Beispiel einer Cedar-Befehls-Shell eingetippt
worden wäre. Die Cedar-Befehls-Shell arbeitet insofern wie die Befehls-Shell in
UNIX, daß jede Ausgabe aus der Befehls-Shell in ein spezielles Typescript
geschrieben wird, das von allen eingebetteten Schaltflächen geteilt wird.
b. Der Befehls-Handler zum Erstellen von Schaltflächen
-
Der Befehls-Handler zum Erstellen von Schaltflächen wendet ein
Schaltflächenattribut auf ein durch den Benutzer ausgewähltes Dokumentelement an.
Insbesondere wird das Schaltflächenattribut von einem besonderen ansonsten nicht
verwendeten Attribut genommen, das als "ButtonAttributeLiteral" bezeichnet wird und
zu einer Schaltflächenerstellungs-Schaltfläche gehört. Es ist deutlich, daß dieser
Ansatz das Ändern des Schaltflächenattributs der Schaltflächen, die unter
Verwendung einer derartigen Schaltflächenerstellungs-Schaltfläche erstellt wurden, ebenso
einfach macht wie das Editieren des Verhaltens der
Schaltflächenerstellungs-Schaltfläche, da beide Verhaltensweise durch das Editieren eines Attributs der
Schaltflächenerstellungs-Schaltfläche geändert werden können. Im folgenden werden zum
Beispiel die Attribute einer Schaltflächenerstellungs-Schaltfläche zum Erstellen von
Pop-up-Schaltflächen angegeben:
-
Das Schaltflächenattribut ButtonAttribute beschreibt das Verhalten der
Schaltfläche selbst. Das Attribut ButtonAttributeLiteral ist das Schaltflächenattribut der neu
erstellten Schaltfläche. Deshalb wird die neu erstellte Schaltfläche in diesem
besonderen Beispiel ein Pop-up-Menü mit zwei Elementen aufweisen. Weiterhin sendet
die Pop-up-Schaltfläche ihre Befehle zu einem Befehls-Handler mit dem Namen
"Message Window".
c. Der Message Window-Befehls-Handler
-
Der Message Window-Befehls-Handler druckt den Befehl einfach in einem
speziellen Bereich des Bildschirms aus, der für eine Rückmeldung reserviert ist und
vom Benutzer gelesen werden kann. Dieser Befehls-Handler ist beim Korrigieren von
neuen Schaltflächen besonders nützlich.
d. Der Dokumenteditor-Befehls-Handler
-
Der Dokumenteditor-Befehls-Handler sendet die Befehls-Zeichenfolge der
Schaltfläche zu einem geeigneten Dokumenteditor, wie dem zuvor genannten Tioga-
Editor. Die Befehle in dieser Text-Zeichenfolge werden allgemein dazu verwendet,
das Dokument, in dem die Schaltfläche erscheint, oder das Dokument, das die
aktuellen durch den Benutzer ausgewählten Dokumentelemente enthält, zu
editieren, wobei sie aber auch verwendet werden können, um ein beliebiges anderes
Dokument zu editieren. Dabei ist zu beachten, daß dieser Befehls-Handler die
Verwendung von Schaltflächen zum Triggern von Dokumenteditor-Makros erlaubt.
Eine Pop-up-Schaltfläche mit dem folgenden Schaltflächenattribut
-
veranlaßt, daß der Dokumenteditor die ausgewählten Textobjekte fett darstellt, wenn
der erste Menüpunkt ausgewählt wird, oder kursiv, wenn der zweite Menüpunkt
ausgewählt wird.
6. Die Editor-Eingabesprache
-
Das erste Beispiel in Abschnitt D.1 zeigt das Schaltflächenattribut, das das
Aussehen des Textes der Schaltfläche zu fett ändert, wenn es aktiv ist, und zu
normal, wenn es nicht aktiv ist. Dieser Fontwechsel wird bewerkstelligt, indem die
Befehls-Zeichenfolgen "BeginButton ApplyLook Bold EndButton" und BeginButton
RemoveLook EndButton" zu dem Dokumenteditor gesendet werden. In ähnlicher
Weise führt die in Abschnitt D.5 beschriebene Schaltfläche ein Editormakro auf einer
vom Benutzer ausgewählten Text-Zeichenfolge aus.
-
Es ist nicht unbedingt notwendig, daß ein Dokumenteditor in der Lage ist, eine
Eingabe-Editiersprache zu interpretieren, die eingebetteten Schaltflächen sind
jedoch viel nützlicher, wenn diese Fähigkeit vorgesehen ist. Wenn ein derartiger
Editor vorgesehen ist, kann der Benutzer Zeichenfolgen zum Editieren des
Dokuments als Teil-Zeichenfolgen eines Schaltflächenattributs einfügen, um
Standard-Dokumenteditor-Operationen aufzurufen, um eine Rückmeldung
anzuzeigen und um Makro-Operationen in einem bestimmten Dokumenteditor
durchzuführen.
7. Das Drücken der Tasten
-
Fig. 8 stellt die Kommunikationspfade dar, die verwendet werden, wenn der
Benutzer eine eingebettete Schaltfläche triggert. Diese Kommunikationspfade
werden in mehreren Schritten wie folgt verwendet:
Schritt 1: Benachrichtigung (Editor 11 an den Eingebettete-Schaltflächen-Kern
12 an die spezifizierte Schaltflächenklasse 13)
-
Wenn ein Benutzer zum Beispiel eine Maustaste über einer eingebetteten
Schaltfläche klickt, gibt der Editor 11, der das Dokument mit den eingebetteten
Schaltflächen verwaltet, die Mausaktion, eine Beschreibung der Position der
eingebetteten Schaltfläche in dem Dokument und das Schaltflächenattribut zu dem
Eingebettete-Schaltflächen-Kern 12. Der Kern 12 wiederum liest das Klassenfeld des
Schaltflächenattributs, um die oben genannte Information an den Schaltflächen-
Handler für die spezifizierte Schaltflächenklasse 13 weiterzuleiten.
Schritt 2: Anfängliche Rückmeldung (spezifizierte Schaltflächenklasse 13 zum
Eingebettete-Schaltflächen-Kern 12 zum Editor 11).
-
Wenn geeignet, fordert die Schaltflächenklasse 13 den
Eingebettete-Schaltflächen-Kern 12 auf, die mit der Mausaktion assoziierten Rückmeldeaktionen
durchzuführen. Zum Beispiel kann eine Schaltfläche einen Kasten um sich herum
zeichnen, wenn die Maus auf die Schaltfläche geht. Sie kann auch grau dargestellt
werden, wenn sie durch die Maus angeklickt wird. Der Kern 12 schlägt die
Mausaktion in dem Rückmeldungs-Feld der Schaltfläche nach und gibt die gefundenen
Befehle zu dem Editor 11 weiter, der die Schaltfläche verwaltet.
Schritt 3: Auswählen einer Aktion (spezifische Schaltflächenklasse 13 zum
Eingebettete-Schaltflächen-Kern 12 zum Befehls-Handler 14)
-
Zu diesem Zeitpunkt kann die Schaltflächenklasse ein Menü der Aktionen
erscheinen lassen oder einfach warten, bis die Maustaste nach oben geht. Wenn der
Benutzer eine durch diese Schaltfläche auszuführende Aktion ausgewählt hat, kann
die Schaltflächenklasse 13 eine weitere Rückmeldung anfordern, um anzuzeigen,
daß die Operation ausgeführt wird (siehe Schritt 2). Dann sendet die
Schaltflächenklasse 13 die ausgewählte Aktionsliste zu dem Kern 12. Der Kern schlägt den
Namen im Befehls-Handler-Feld des Schaltflächenattributs nach und gibt die
Aktionsliste zu der Befehls-Handler-Routine 14 weiter, die unter diesem Namen
registriert ist.
Schritt 4: Abschließende Rückmeldung (spezifizierte Schaltflächenklasse 13
zum Eingebettete-Schaltflächen-Kern 12 zum Editor 11).
-
Wenn der Befehls-Handler 14 das Durchführen einer durch die Schaltfläche
getriggerten Aktion abgeschlossen hat, fordert die Schaltflächenklasse 13 den Editor
(über den Kern 12) auf, eine abschließende Rückmeldung vorzusehen (die
eingebettete Schaltfläche nimmt z. B. wieder ihr ursprüngliches Aussehen an).
-
Wie in Fig. 8 gezeigt, ist das Softwaresystem im virtuellen Speicher 21 eines
Computersystems 22 vorgesehen. Das Computersystem 22 enthält einen
geeigneten Bus 23, um die zentrale Verarbeitungseinheit (CPU) 24 über einen
Speichercontroller 21 mit dem virtuellen Speicher, über einen I/O-Controller 28 mit
einer Tastatur 26 und mit einem Cursorcontroller 27 (z. B. einer Maus) sowie über
einen Displaycontroller 30 mit einem Monitor 29 zu verbinden. Dabei ist jedoch zu
beachten, daß andere Computerarchitekturen verwendet werden können.
8. Das Abrufen und Setzen von Schaltflächenwerten
-
Mehrzustands-Schaltflächen und Radio-Schaltflächen enthalten beide Werte,
die durch ein Anwendungsprogramm abgefragt werden können. Die Handhabung
dieser zwei Typen von Schaltflächen macht zwei Komplikationen bei dem in
Abschnitt D.3.b. beschriebenen Mechanismus erforderlich.
-
Erstens sollte es möglich sein, daß ein Anwendungsprogramm den aktuellen
Wert einer dieser Schaltflächen findet. In diesem Zusammenhang soll daran erinnert
werden, daß der Eingebettete-Schaltflächen-Kern 12 die GetValue-Routine vorsieht,
die den Namen eines aktiven Dokuments und einer Schaltfläche als Argumente
nimmt und den Wert der Schaltfläche als Text-Zeichenfolge ausgibt. Wenn eine
Anwendung ein aktives Dokument als Steuerleiste verwendet, verfügt die Anwendung
über einen Zeiger auf dieses aktive Dokument, so daß das Aufrufen der Prozedur
unkompliziert ist. Dabei ist zu beachten, daß der Kern 12 ein derartiges aktives
Dokument dynamisch als einen benannten Befehls-Handler 14 für die Anwendung
registrieren kann, wenn durch die Anwendung eine Anforderung zur Routine-
Registrierung gemacht wird.
-
Zweitens kann es erforderlich sein, daß die Zustandswechsel der Schaltfläche
mit anderen Anwendungsaktionen synchronisiert werden müssen. Etwa bei einem
Zeichenprogramm, das ein aktives Dokument verwendet, um den Wert der aktuellen
Farbe zu setzen. Der Benutzer sollte in der Lage sein, die Farbe auf Rot zu setzen,
eine Form zu zeichnen, die Farbe auf Blau zu setzen, eine zweite Form zu zeichnen,
auch wenn die Anwendung ins Hintertreffen gerät und die erste Form noch nicht
vollständig dargestellt hat, wenn der Benutzer die aktuelle Farbe bereits zu Blau
verändert hat. Um eine Konfusion zu vermeiden, sollte die Schaltfläche (bzw. sollten
die Schaltflächen), die die aktuelle Farbe ändern, den von ihnen angegebenen Wert
nicht wechseln, bis die Anwendung mit der Verwendung des aktuellen Werts fertig
ist.
-
Um diese Synchronisation möglich zu machen, wechseln die Mehrzustands-
Schaltflächen und die Radio-Schaltflächen ihren Zustand nicht automatisch. Statt
dessen senden sie eine Anforderung an die Anwendung, den Zustand zu wechseln.
-
Wenn die Anwendung fertig ist ruft sie die Routine SetValue auf, um den neuen Wert
für die Schaltfläche zu setzen. Dies führt zum fünften Schritt bei der Handhabung der
Eingabe:
Schritt 5: Rückmeldung des geänderten Wertes (Anwendung zum
Eingebettete-Schaltflächen-Kern zum Editor).
-
Wenn eine Anwendung SetValue aufruft, sucht der
Eingebettete-Schaltflächen-Kern 12 im Rückmeldungs-Feld jeder Schaltfläche, deren Wert verändert
wurde, nach einer auszuführenden Rückmeldungsaktion. Wenn eine Aktion
aufgelistet ist, wird diese Aktion zu dem Editor 11 gesendet, der die Schaltfläche verwaltet.
Um schnell zu reagieren, wenn Anwendungen nach dem Wert der benannten
Schaltfläche fragen, hält der Eingebettete-Schaltflächen-Kern 12 vorzugsweise eine
Hashtabelle (eine Standard-Datenstruktur aus der Computerwissenschaft. Siehe Don
Knuth "The Art of Computer Programming, Volume 3") für die Werte aufrecht, wobei
der Hashtabellen-Schlüssel aus der Namens-Variable der Schaltfläche abgeleitet
wird und wobei der in der Tabelle gespeicherte Wert der Wert der Schaltfläche ist.
Für jedes aktuell aktive Dokument mit Schaltflächen wird eine derartige Hashtabelle
geführt, wobei die Tabelle jedesmal aktualisiert wird, wenn eine benannte
Schaltflächen-Variable in dem Dokument, auf das die Tabelle bezogen ist, ihren Wert
ändert.
8. Das Verknüpfen von Dokumenten mit Anwendungsfenstern
-
In vielen Systemen kann eine gegebene Anwendung in mehreren Fenstern
gleichzeitig laufen. Die Operationen in der Steuerleiste eines gegebenen Fensters
sollen jedoch auf die Inhalte dieses Fensters und nicht auf die Inhalte von anderen
Fenstern angewendet werden. Außerdem weisen einige Fenster mehrere Ansichten
auf. Weiterhin können verschiedene Schaltflächen in einer Steuerleiste für die
Anwendung in verschiedenen Ansichten vorgesehen sein.
-
Um die Verwendung von Schaltflächen enthaltenden Dokumenten als
Steuerleisten zu verallgemeinern, sieht der Kern 12 die zuvor genannte LinkDoc-
ToApplication-Routine vor, die durch eine Anwendung aufgerufen werden kann, um
den Namen eines Befehls-Handlers in einem bestimmten aktiven Dokument mit einer
bestimmten Ansicht eines Anwendungsfensters zu verknüpfen. Zum Beispiel kann
ein Programm zum Lesen von Mails eine Ansicht zum Anzeigen der Nachrichten-
Header und eine andere Ansicht zum Anzeigen der Nachrichten-Körper verwenden.
Eine Schaltfläche, die sich für die Header anzuwenden ist, speichert dann
"CommandHandler: Headers" in ihrem Schaltflächenattribut, während eine auf den
Nachrichten-Körper bezogene Schaltfläche "CommandHandler: Bodies" in ihrem
Schaltflächenattribut speichert. In diesem Fall wird die Verknüpfungs-Routine
zweimal aufgerufen: einmal, um die "Header"-Schaltflächen zu verknüpfen, und
einmal, um die "Körper"-Schaltflächen zu verknüpfen.
-
Dabei ist zu beachten, daß die Schaltflächen selbst nicht mit den Ansichten
der Anwendungen verknüpft sind. Die Verknüpfung erfolgt über den Namen des
Befehls-Handlers, auf den sie sich beziehen. Dies ermöglicht das Hinzufügen von
neuen Schaltflächen zu der Steuerleiste in Laufzeit, die automatisch mit dem
Dokument verknüpft werden, das die korrekte Leiste enthält, wenn der korrekte
Befehls-Handler genannt wird.
Schlußfolgerungen
-
In Anbetracht der vorstehenden Erläuterungen ist zu beachten, daß Systeme,
die das Einbetten von Schaltflächen in Dokumenten erlauben, die folgenden
Fähigkeiten vorsehen:
-
(1) Durch die Verwendung von in Dokumenten eingebetteten Schaltflächen
können die Leser mit der Information im Dokument arbeiten und die im
Dokument selbst vorgesehenen Fähigkeiten nutzen. Diese Integration
erlaubt es den Benutzern, sich weiterhin auf ihre Aufgaben zu
konzentrieren, und spart Bildschirmraum, der ansonsten für Tools am Rand
des Dokuments verwendet werden würde.
-
(2) Bei Systemen zum Senden von strukturierten Elementen per Mail
können auch die Schaltflächen per Mail gesendet werden, was es den
Benutzern erlaubt, einfach Schaltflächen auszutauschen und auf die in
der elektronischen Mail empfangene Information schnell zu reagieren.
-
(3) Benutzer können Stücke von bestehenden Steuerleisten in neue
Dokumente kopieren, um individuell angepaßte Steuerleisten zu erstellen.
-
Außerdem bietet die hier beschriebene Schaltflächen-Architektur diese
zusätzlichen Vorteile:
-
(4) Es können Schaltflächen unter Verwendung von Standardfunktionen
zum Editieren von Dokumenten editiert werden, da es sich um
gewöhnliche Elemente handelt.
-
(5) Die durch die Schaltflächen durchgeführten Aktionen können sich auf
die Inhalte oder auf das Aussehen der Schaltfläche selbst beziehen,
d. h. auf alle Eigenschaften, die der Dokumenteditor unterstützt. Die
Schaltflächen können also verwendet werden, um ihr eigenes
Aussehen zu modifizieren oder um ihre Eigenschaften auf andere
Objekte im selben Dokumenteditor zu übertragen.
-
(6) Die Schaltflächen können jede beliebige Form aufweisen. In vielen
Systemen müssen die Schaltflächen rechteckig sein. In dem hier
beschriebenen System sind die Schaltflächen beliebige
Dokumentelemente, deren Formen lediglich durch die Fähigkeiten des Editors
begrenzt sind, in dem sie eingebettet sind.
-
(7) Da eine derartige Schaltfläche einfach als ein zusätzliches
Zeichenfolgen-Attribut für ein Dokumentelement wiedergegeben wird, können
Schaltflächen enthaltende Dokumente unter Verwendung bestehender
Software zum Erzeugen von strukturierten Dokumenten erzeugt
werden.
-
Es folgen ausführlichere Erläuterungen der zuvor genannten Vorteile:
1. Auf die Aufgabe konzentriert bleiben
-
Häufig wird ein elektronisches Dokument gelesen, um Information zu finden,
die der Benutzer sofort verwenden möchte. Wenn ein Benutzer zum Beispiel einen
Befehl eingibt, um die Dateien in einem Verzeichnis aufzulisten, wünscht der
Benutzer häufig, einige der Dateien in der Liste zu lesen, neu zu benennen oder zu
löschen. Bei den meisten gegenwärtigen Schnittstellen, muß die Aufmerksamkeit
des Benutzers von der Liste zu einer Befehls-Shell oder einem Datei-Tool abgelenkt
werden, um ein Editorfenster für eine der aufgelisteten Dateien zu öffnen. Wenn
jedoch die Dateinamen Schaltflächen sind, wie dies bei einigen symbolischen
Anwendungen der Fall ist, können diese Operationen direkt auf der Dateiliste
durchgeführt werden, ohne die Aufmerksamkeit von der Liste abzulenken.
-
Als ein weiteres Beispiel können die Softwaremodule einen Satz von
Schaltflächen in der Nähe des Textes jeder Routine umfassen, um die Routine zu testen,
ihre Durchführung zeitlich abzustimmen oder um Hypertext-Links zu Stellen
vorzusehen, wo diese Routine weiter dokumentiert, implementiert oder aufgerufen wird.
2. Schaltflächen in elektronischer Post
-
Es ist möglich, daß der Sender einer E-Mail-Nachricht Schaltflächen einfügen
möchte, die den Empfängern dabei helfen, mit der Information in der Nachricht
umzugehen. Wenn zum Beispiel eine Nachricht gesendet wird, die eine
Software
version, eine Telefonnummer oder eine Datei beschreibt, kann der Sender jeweils
eine Schaltfläche einfügen, um die neue Software zu installieren, die Telefonnummer
zu wählen oder die Datei zu öffnen.
3. Das Wiederverwenden von Leisten
-
Wie zuvor beschrieben, können die Schaltflächensätze mit einer bestimmten
Ansicht eines Anwendungsfensters verknüpft werden, was die Verwendung von
Schaltflächen enthaltenden Dokumenten als Steuerleisten ermöglicht. Wenn die
Steuerleisten Dokumente sind, können die Dokumenteditoren verwendet werden, um
sich durch die Dokumente zu bewegen, die Dokumente zu modifizieren, zu kopieren
oder Teile derselben zu individuell angepaßten Steuerleisten für besondere
Aufgaben zu kombinieren.
-
Fig. 9A zeigt zum Beispiel eine Dialogbox zum Suchen nach Textmustern. Die
Dialogbox wird hier verwendet, um nach dem fett dargestellten Wort Apple zu
suchen und es durch das kursiv dargestellte Wort Banana zu ersetzen. In Fig. 9B
wurde diese Steuerleiste in ein Dokument kopiert. Um Platz zu sparen wurde eine
mit "Parameters" gekennzeichnete Schaltfläche verwendet, die die in Fig. 9A
gezeigte Steuerleiste umfaßt und versteckt. (Eine derartige Schaltfläche verbirgt ein
kleines Dokument; wenn die Schaltfläche gedrückt wird, erscheint das kleine
Dokument.) Die in Fig. 9B gezeigten Schaltflächen "Search", "Yes", "No" und
"Substitute" sehen Funktionen vor, um die Ersetzungen jeweils einzeln oder
gemeinsam durchzuführen. Zusammen bilden diese Schaltflächen eine kompakte
Steuerleiste für eine besondere Suchaufgabe (das Suchen nach dem Wort Apple
und Ersetzen durch das Wort Banana). Um die Parameter zu ändern, kann der
Benutzer die verborgene Steuerleiste (Fig. 9A) erscheinen lassen und verwenden.
4. Fähigkeiten der Dokumente werden zu Fähigkeiten der Benutzerschnittstelle
-
Herkömmliche Dokumenteditoren können Dokumentinformation erstellen,
auswählen, bewegen, kopieren, löschen, speichern, abrufen, suchen, scrollen, bezüglich
der Darstellung ändern, selektiv anzeigen und drucken. Wenn Dokumente
Benutzerschnittstellen sind, sind alle diese Fähigkeiten für sowohl das Erstellen wie das
Verwenden der Benutzerschnittstellen verfügbar.
-
Außerdem können die vertrauten Layout-Fähigkeiten von Dokumenteditoren
verwendet werden, um Steuerleisten zusammenzustellen. Grafikeditoren können
verwendet werden, um Grenzen und Icons zu erstellen; Texteditoren können
verwendet werden, um Umrisse oder Tabellen von Schaltflächen mit
entsprechenden Farben, Fonts, Unterstreichungen usw. zu versehen. Derartige
Leisten erben die Fähigkeit von Texteditoren, um Text für unterschiedliche
Seitengrößen und Skalierungsfaktoren neu zu formatieren.
-
Für die Schnittstellen-Benutzer sehen die Dokumenteditoren Möglichkeiten
vor, um sich durch die Benutzerschnittstellen zu bewegen. Die Benutzer können
große Dokumente erstellen, die in Abschnitte und Teilabschnitte organisiert sind und
viele Schaltflächen, berechnete Felder sowie andere bei verschiedenen Aufgaben
hilfreiche aktive Elemente enthalten. Die Benutzer können dann ein Scrollen, Level-
Clipping (d. h. das Anzeigen von lediglich den Header-Namen) sowie eine Text- oder
Grafiksuche zum Finden der Komponenten der Benutzerschnittstelle verwenden.
-
Das Suchen-und-Ersetzen von Text und von Grafik (siehe D. Kurlander et al.
"Graphical Search and Replace" Computer Graphics, Vol. 22, No. 4, August 1988,
auf den Seiten 113-120) kann verwendet werden, um schnell Benutzerschnittstellen
aus bestehenden Dokumenten zu erstellen. Zum Beispiel kann ein Dokument mit
Namen, Adressen und Telefonnummern zu einem aktiven Dokument umgewandelt
werden, in dem nach den Zeichenfolgen gesucht wird, die wie Telefonnummern
aussehen, um sie zu Schaltflächen umzuwandeln, die diese Telefonnummer wählen.
5. Das individuelle Anpassen der Dokumenteditoren
-
Ebenso wie die Fähigkeiten der Dokumenteditoren für die Verbesserung der
Benutzerschnittstellen verwendet werden können, können Schaltflächen enthaltende
Dokumente dazu verwendet werden, die Dokumenteditoren zu verbessern. Diese
gegenseitige Unterstützung kann zu raschen Verbesserungen bei sowohl den
Texteditoren wie bei den Benutzerschnittstellen führen. Zum Beispiel können Benutzer
Schaltflächen-Sammlungen erstellen, die zeitaufwendige oder komplizierte
Texteditor-Operationen durchführen, darunter Textsuchen und Gestaltungsänderungen.
Eine besonders nützliche als "Stuffer" bezeichnete Ausführungsform einer derartigen
Schaltfläche fügt ihre eigenen Textinhalte an der Cursorposition des aktuellen
Texteditors ein.
-
Die Schaltflächen können auch verwendet werden, um die Textnavigation zu
verbessern. Ein durch das GUIDE-Hypertextsystem inspiriertes Beispiel (P. Brown "A
Simple Mechanism for Authorship of Dynamic Documents" in J. C. von Vliet (ed) Text
Processing and Document Manipulation, Proceedings of the Internal Conference,
Cambridge University Press, April 1986, auf den Seiten 35-42) betrifft die Fähigkeit,
einen Teil eines Dokuments hinter einer Schaltfläche zu verbergen. Mit jedem
Drücken der Schaltfläche wird der Text entweder angezeigt oder verborgen.
Derartige Schaltflächen zum Verbergen erlauben es dem Benutzer ein Dokument zu
durchsuchen, wobei die Bildschirmfläche nur für interessante Dokumentteile
verwendet wird. Dabei ist zu beachten, daß ein Dokument mit Schaltflächen zum Verbergen
für eine Steuerleiste mit mehreren Schichten verwendet werden kann. Siehe Fig. 9A
und 9B.
-
Die Schaltflächen können in ungewöhnlicher Weise verwendet werden, um
einen Grafikeditor individuell anzupassen. Fig. 10A und 10B zeigen eine
Ansammlung von Kreisen, die mit einem Zeichenprogramm gezeichnet wurden.
Dabei soll angenommen werden, daß der Benutzer verschiedene Farben für die
Kreise verwenden will. Dies kann bewerkstelligt werden, indem normale
Editorbefehle verwendet werden, um jeden einzelnen Kreis auszuwählen und eine
Farbe für denselben zu verwenden. Dafür sind jedoch mehrere Mausklicks für jede
Farbänderung erforderlich. Es ist beträchtlich einfacher, jeden Kreis in eine
Schaltfläche mit zwei Zuständen umzuwandeln, die schwarz dargestellt wird, wenn
sie on ist, und weiß, wenn sie off ist. In diesem Fall können Farbänderungen mit
einem Mausklick pro Farbänderung vorgenommen werden. Wenn alle Änderungen
vorgenommen wurden, kann die Schaltflächenaktivität ausgeschaltet werden (oder
es können die Schaltflächeneigenschaften von den Formen entfernt werden), so daß
ein neu gefärbtes Bild zurückbleibt, das wieder normal editiert werden kann.
6. Die Schaltflächen können eine beliebige Form aufweisen
-
Jeder cursorgesteuerte Editor für Text, Grafik, Gleichungen, Tabellen usw.
kann feststellen, auf welches Objekt der Benutzer zeigt. Die Schaltflächen-
Architektur nutzt diese Fähigkeiten, um zu bestimmen, wann der Benutzer eine
Schaltfläche drückt. Eine Schaltfläche kann also ein Kreis, ein Triangel, ein
Gingerbread-Man, ein Phantasie-Gittermuster sein oder eine andere beliebige Form
aufweisen, solange der Editor, in dem die Schaltfläche eingebettet ist, feststellen
kann, wann der Benutzer auf diese Form zeigt. Man erinnere sich an Fig. 4A, die
eine Schaltfläche zeigt, die sogar ein einfaches Liniensegment in einem System sein
kann, wobei der Benutzer lediglich in die Nähe des Objektes und nicht direkt auf das
Objekt zeigen muß.
7. Generatoren
-
Eine der wichtigeren Eigenschaften der hier beschriebenen eingebetteten
Schaltflächen besteht darin, daß sie in den meisten Verfahrensschritten durch die
Benutzer mit Hilfe vertrauter Operationen zum Editieren von Dokumenten erstellt und
modifiziert werden können. Es ist jedoch von Vorteil, wenn die eingebetteten
Schaltflächen automatisch unter der Steuerung eines Programms erzeugt werden können.
Zum Beispiel kann ein alle Dateien in einem Verzeichnis auflistender Befehl die
Schaltflächenattribute zu den Dateinamen hinzufügen, so daß die Dateinamen zu
Schaltflächen umgewandelt werden, die die entsprechende Dateien öffnen, wenn sie
gedrückt werden.
-
Bei der Verwendung der beschriebenen Architektur erfordert das Erzeugen
von Schaltflächen enthaltenden Dokumenten keine spezielle Programmierung. Das
System muß lediglich eine Möglichkeit vorsehen, mit der Programme strukturierte
Dokumente mit beliebigen Attributen für die Dokumentelemente erzeugen. Diese
Fähigkeit ist in Systemen wie die der CDA-Architektur der Digital Equipment
Corporation vorgesehen, die als "private Daten" bezeichnete Daten erlauben, die auf
eine bestimmte Implementierung zum Verarbeiten von Daten beschränkt sind. Siehe
CDA (Compound Document Architecture) Manual, Digital Equipment Corporation,
Maynard, Ma., November 1988, Abschnitt 3.1.5.6. Mit einem derartigen Generator
für strukturierte Dokumente ist für das Erzeugen von Schaltflächen lediglich
erforderlich, daß ein als "ButtonAttribute" bezeichnetes Attribut hinzugefügt wird,
wenn diejenigen Teile des Dokuments erstellt werden, die sich als Schaltflächen
verhalten sollen.