DE69129959T2 - Elektronisches Dokumentenaufbereitungssystem - Google Patents

Elektronisches Dokumentenaufbereitungssystem

Info

Publication number
DE69129959T2
DE69129959T2 DE69129959T DE69129959T DE69129959T2 DE 69129959 T2 DE69129959 T2 DE 69129959T2 DE 69129959 T DE69129959 T DE 69129959T DE 69129959 T DE69129959 T DE 69129959T DE 69129959 T2 DE69129959 T2 DE 69129959T2
Authority
DE
Germany
Prior art keywords
button
buttons
document
user
editor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69129959T
Other languages
English (en)
Other versions
DE69129959D1 (de
Inventor
Eric A Bier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xerox Corp
Original Assignee
Xerox Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xerox Corp filed Critical Xerox Corp
Application granted granted Critical
Publication of DE69129959D1 publication Critical patent/DE69129959D1/de
Publication of DE69129959T2 publication Critical patent/DE69129959T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Digital Computer Display Output (AREA)
  • User Interface Of Digital Computer (AREA)
  • Document Processing Apparatus (AREA)

Description

  • 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.

Claims (6)

1. Elektronisches System zum Editieren von Dokumenten, das eine Benutzerschnittstelle umfaßt, die optional individuell anpaßbare Schaltflächen enthält, die vorbestimmten Aktionen initiieren, wenn sie durch einen Benutzer getriggert werden, wobei die Schaltflächen in elektronischen Dokumenten als verborgene Zeichenfolgen-Dauerattribute eingebettet sind, die mit durch den Menschen interpretierbaren Elementen derartiger Dokumente assoziiert sind, wobei die Attribut-Zeichenfolge jeder dieser Schaltflächen eine Schaltflächenklasse, Schaltflächendaten, einen Befehls-Handler und eine gewünschte Rückmeldung für den Benutzer spezifiziert, wobei das System umfaßt:
wenigstens einen Dokumenteditor (11) zum Laden der durch den Benutzer ausgewählten Dokumente in das System, so daß der Editor eine Datenstruktur für jedes der durch den Benutzer ausgewählten Dokumente erstellt, wodurch die Schaltflächenattribute für alle Schaltflächen eines der ausgewählten Dokumente in der durch den Editor erstellten Datenstruktur für das Dokument als Komponenten der mit ihnen assoziierten Dokumentelemente instantiiert werden, wobei der Editor einen durch den Benutzer einstellbaren Eingabeumleitungs-Schalter umfaßt, um den Editor in einem Schaltflächen-An-Modus oder in einem Schaltflächen-Aus-Modus zu betreiben,
wenigstens einen klassenspezifischen Schaltflächen-Handler (13) für eine zu spezifizierende Schaltflächenklasse, wobei jeder der Schaltflächen-Handler eine Liste der Befehle für eine vorbestimmte Schaltflächenklasse enthält,
eine Vielzahl von zu spezifizierenden Befehls-Handlern (14) zum Ausführen von Befehlen, die durch das Schaltflächenattribut vorgesehen werden, dadurch gekennzeichnet, daß das System einen zentralisierten Kern (12) zum Parsen der Schaltflächenattribute jeder durch den Benutzer getriggerten Schaltfläche umfaßt, wobei das Parsen die spezifizierte Schaltflächenklasse der Schaltfläche und den spezifizierten Befehls-Handler für die Schaltfläche identifiziert, wobei der Kern Kommunikationspfade zwischen dem Editor, dem Schaltflächen-Handler für die spezifizierte Klasse der Schaltfläche und dem spezifizierten Befehls-Handler für die Schaltfläche vorsieht, um die durch die Schaltfläche aufgerufene Aktion und Rückmeldung auszuführen.
2. System nach Anspruch 1, wobei der Kern (12) die Schaltflächen-Handler (13) und die Befehls-Handler (14) über deren Namen registriert.
3. System nach Anspruch 2, wobei der Kern (12) die Unterstützung zusätzlicher Editoren (11) in Laufzeit erweitert.
4. System nach Anspruch 2 oder 3, wobei der Kern (12) eine Registrierungsprozedur zum dynamischen Registrieren von Schaltflächen-Handlern (13) für zusätzliche Schaltflächenklassen in Laufzeit unterstützt.
5. System nach wenigstens einem der Ansprüche 2 bis 4, wobei der Kern (12) eine Registrierungsprozedur zum dynamischen Registrieren zusätzlicher Befehls- Handler (14) in Laufzeit unterstützt.
6. System nach wenigstens einem der vorstehenden Ansprüche, wobei der Kern (12) das Verknüpfen von Dokumenten, die derartige Schaltflächen enthalten, mit ausgewählten Anwendungsfenstern unterstützt.
DE69129959T 1990-08-24 1991-08-23 Elektronisches Dokumentenaufbereitungssystem Expired - Fee Related DE69129959T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US57351290A 1990-08-24 1990-08-24

Publications (2)

Publication Number Publication Date
DE69129959D1 DE69129959D1 (de) 1998-09-17
DE69129959T2 true DE69129959T2 (de) 1999-02-11

Family

ID=24292284

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69129959T Expired - Fee Related DE69129959T2 (de) 1990-08-24 1991-08-23 Elektronisches Dokumentenaufbereitungssystem

Country Status (4)

Country Link
US (1) US5862395A (de)
EP (1) EP0472444B1 (de)
JP (1) JPH07104765B2 (de)
DE (1) DE69129959T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10031364B4 (de) * 1999-06-29 2009-12-31 Mitsubishi Denki K.K. Vorrichtung und Verfahren zur Bilddarstellung

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051273B1 (en) * 1990-11-30 2006-05-23 Microsoft Corporation Customizing forms in an electronic mail system utilizing custom field behaviors and user defined operations
JPH0934675A (ja) * 1995-07-14 1997-02-07 Nippon Telegr & Teleph Corp <Ntt> 3次元仮想協同空間におけるオブジェクト操作方式
US6314570B1 (en) * 1996-02-08 2001-11-06 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for facilitating data selection and data processing in at television environment with reusable menu structures
US6100885A (en) * 1996-07-06 2000-08-08 International Business Machines Corporation Supporting modification of properties via a computer system's user interface
GB2315139A (en) * 1996-07-06 1998-01-21 Ibm Selecting operations in an object-oriented user interface
US6003050A (en) * 1997-04-02 1999-12-14 Microsoft Corporation Method for integrating a virtual machine with input method editors
DE69802915T2 (de) * 1997-04-02 2002-07-04 Microsoft Corp., Redmond Verfahren zur integration einer virtuellen maschine mit eingabemethodeeditoren
US5966719A (en) * 1997-11-20 1999-10-12 Microsoft Corporation Method for inserting capitalized Latin characters in a non-Latin document
US6470364B1 (en) * 1998-02-24 2002-10-22 Sun Microsystems, Inc. Method and apparatus for generating text components
US6356866B1 (en) 1998-10-07 2002-03-12 Microsoft Corporation Method for converting a phonetic character string into the text of an Asian language
US6198480B1 (en) 1998-10-07 2001-03-06 Wonderware Corporation Object-oriented tag browser
US6810522B2 (en) * 1998-10-07 2004-10-26 Invensys Systems, Inc. Method and system for associating parameters of containers and contained objects
US6388877B1 (en) 1999-02-04 2002-05-14 Palm, Inc. Handheld computer with open accessory slot
US6592628B1 (en) 1999-02-23 2003-07-15 Sun Microsystems, Inc. Modular storage method and apparatus for use with software applications
DE60003177T2 (de) 1999-03-18 2004-05-06 602531 British Columbia Ltd., Vancouver Dateneingabe für personalrechnergeräte
US7293231B1 (en) 1999-03-18 2007-11-06 British Columbia Ltd. Data entry for personal computing devices
US6467080B1 (en) * 1999-06-24 2002-10-15 International Business Machines Corporation Shared, dynamically customizable user documentation
US6823330B1 (en) 1999-11-16 2004-11-23 Gateway, Inc. Site home navigation control
US7185274B1 (en) 1999-12-07 2007-02-27 Microsoft Corporation Computer user interface architecture wherein users interact with both content and user interface by activating links
US6992687B1 (en) * 1999-12-07 2006-01-31 Microsoft Corporation Bookmarking and placemarking a displayed document in a computer system
US7458014B1 (en) 1999-12-07 2008-11-25 Microsoft Corporation Computer user interface architecture wherein both content and user interface are composed of documents with links
US7337389B1 (en) 1999-12-07 2008-02-26 Microsoft Corporation System and method for annotating an electronic document independently of its content
US6820111B1 (en) 1999-12-07 2004-11-16 Microsoft Corporation Computer user interface architecture that saves a user's non-linear navigation history and intelligently maintains that history
US7028267B1 (en) 1999-12-07 2006-04-11 Microsoft Corporation Method and apparatus for capturing and rendering text annotations for non-modifiable electronic content
US6957233B1 (en) 1999-12-07 2005-10-18 Microsoft Corporation Method and apparatus for capturing and rendering annotations for non-modifiable electronic content
US6714214B1 (en) * 1999-12-07 2004-03-30 Microsoft Corporation System method and user interface for active reading of electronic content
US9424240B2 (en) 1999-12-07 2016-08-23 Microsoft Technology Licensing, Llc Annotations for electronic content
US6882334B1 (en) 1999-12-14 2005-04-19 Gateway, Inc. Apparatus and method for detection of communication signal loss
US7243299B1 (en) 2000-04-21 2007-07-10 Microsoft Corporation Methods and apparatus for displaying multiple contexts in electronic documents
US6910208B1 (en) * 2000-04-25 2005-06-21 Microsoft Corporation System and method of providing replaceable and extensible user interface for the installation of a suite of applications
US20020087579A1 (en) * 2000-06-23 2002-07-04 Alan Chasanoff Object universe
US7234108B1 (en) 2000-06-29 2007-06-19 Microsoft Corporation Ink thickness rendering for electronic annotations
US6825861B2 (en) * 2001-01-08 2004-11-30 Apple Computer, Inc. Three state icons for operation
US7454714B2 (en) * 2001-03-30 2008-11-18 Aol Llc, A Delaware Limited Liability Company Visually distinguishing menu items
US20020171675A1 (en) * 2001-05-15 2002-11-21 International Business Machines Corporation Method and system for graphical user interface (GUI) widget having user-selectable mass
AUPR701701A0 (en) * 2001-08-14 2001-09-06 Mcdonald, Nathan Document analysis system and method
US8239759B1 (en) * 2001-11-27 2012-08-07 Adobe Systems, Inc. System and method for editing documents using stored commands
EP1496451A3 (de) * 2003-05-16 2005-11-30 Sap Ag Rechnersystem, Suchverfahren für ein Rechnersystem, Computerprogrammprodukt und hergestellter Artikel
KR100970729B1 (ko) * 2003-12-26 2010-07-16 삼성전자주식회사 입력 관리 장치 및 방법
JP4630672B2 (ja) * 2004-01-23 2011-02-09 キヤノン株式会社 アクセス制御装置及びアクセス制御方法及びアクセス制御プログラム
US7096142B2 (en) * 2004-04-02 2006-08-22 Agilent Technologies, Inc. Report format editor for circuit test
US7310783B2 (en) * 2004-05-10 2007-12-18 International Business Machines Corporation Single submission buttons
US7477239B2 (en) * 2004-10-29 2009-01-13 Xerox Corporation Reconfigurable lighted keypad
US7818755B1 (en) * 2004-12-22 2010-10-19 Apple Inc. Window server event taps
WO2006074530A1 (en) * 2005-01-12 2006-07-20 602531 British Columbia Ltd. Method, system, apparatus and computer-readable media for directing input associated with a keyboard-type device
US8552984B2 (en) 2005-01-13 2013-10-08 602531 British Columbia Ltd. Method, system, apparatus and computer-readable media for directing input associated with keyboard-type device
US7774299B2 (en) * 2005-05-09 2010-08-10 Microsoft Corporation Flow computing
US20070061714A1 (en) * 2005-09-09 2007-03-15 Microsoft Corporation Quick styles for formatting of documents
US7895170B2 (en) * 2007-02-14 2011-02-22 Ricoh Company, Ltd. Document management apparatus, document management program, and recording medium
US8954887B1 (en) * 2008-02-08 2015-02-10 Google Inc. Long press interface interactions
US8311806B2 (en) 2008-06-06 2012-11-13 Apple Inc. Data detection in a sequence of tokens using decision tree reductions
US8738360B2 (en) 2008-06-06 2014-05-27 Apple Inc. Data detection of a character sequence having multiple possible data types
US8489388B2 (en) 2008-11-10 2013-07-16 Apple Inc. Data detection
US9195365B2 (en) * 2009-03-25 2015-11-24 Honeywell International Inc. Automatic configurator of display objects
US20110239146A1 (en) * 2010-03-23 2011-09-29 Lala Dutta Automatic event generation
US20240393137A1 (en) * 2010-06-08 2024-11-28 EI Electronics, LLC, d/b/a Electro Industries/Gauge Tech Intelligent electronic device having a programmable display
US20120324377A1 (en) * 2011-06-15 2012-12-20 Microsoft Corporation User interface extensibility for web application development tool
US10228819B2 (en) 2013-02-04 2019-03-12 602531 British Cilumbia Ltd. Method, system, and apparatus for executing an action related to user selection
US10222944B1 (en) * 2016-02-24 2019-03-05 The Mathworks, Inc. Embedding user interface elements in documents containing code
US10949173B1 (en) 2018-10-29 2021-03-16 The Mathworks, Inc. Systems and methods for automatic code generation
CN115994008B (zh) * 2022-10-17 2023-08-01 上海神玑医疗科技有限公司 一种按钮装置软件功能的实现方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4723209A (en) * 1984-08-30 1988-02-02 International Business Machines Corp. Flow attribute for text objects
US4829470A (en) * 1985-12-12 1989-05-09 International Business Machines Corp. Text flow around irregular shaped graphic objects
JPH0711779B2 (ja) * 1986-02-21 1995-02-08 株式会社日立製作所 処理対象指示図柄表示装置
JPH01195568A (ja) * 1988-01-29 1989-08-07 Hitachi Ltd 電子化文書編集制御方式
JPH01234967A (ja) * 1988-03-16 1989-09-20 Hitachi Ltd 文書作成装置
US4931783A (en) * 1988-07-26 1990-06-05 Apple Computer, Inc. Method and apparatus for removable menu window
US5065347A (en) * 1988-08-11 1991-11-12 Xerox Corporation Hierarchical folders display
US5111395A (en) * 1989-11-03 1992-05-05 Smith Rodney A Automated fund collection system including means to eliminate duplicate entries from a mailing list
US5063600A (en) * 1990-05-14 1991-11-05 Norwood Donald D Hybrid information management system for handwriting and text

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10031364B4 (de) * 1999-06-29 2009-12-31 Mitsubishi Denki K.K. Vorrichtung und Verfahren zur Bilddarstellung

Also Published As

Publication number Publication date
US5862395A (en) 1999-01-19
EP0472444A3 (en) 1993-12-01
JPH07104765B2 (ja) 1995-11-13
JPH0749759A (ja) 1995-02-21
EP0472444B1 (de) 1998-08-12
EP0472444A2 (de) 1992-02-26
DE69129959D1 (de) 1998-09-17

Similar Documents

Publication Publication Date Title
DE69129959T2 (de) Elektronisches Dokumentenaufbereitungssystem
DE69525249T2 (de) Umschaltung zwischen darstellungs-/verhaltensthemen in graphischen benutzeroberflächen
DE69600794T2 (de) Graphische entwicklungs- und verwaltungsumgebung für anwendungsprogramme
DE69310202T2 (de) Internationales datenverarbeitungssystem
DE69303289T2 (de) Steuersystem für anzeigemenüzustand
DE69310187T2 (de) Objektorientiertes fachwerksystem
DE69310201T2 (de) Objektorientierte applikationsschnittstelle.
DE3586273T2 (de) Implizite erzeugung einer superblockstruktur in einem vieldaten-edierungsgeraet.
DE69310934T2 (de) Ballonhilfssystem.
DE69311359T2 (de) Befehlssystem
DE69331025T2 (de) System und Verfahren für Rechnerschnittstellen
DE69310188T2 (de) Objektorientiertes bestaetigungssystem
DE69310214T2 (de) Dialogsystem
DE69400204T2 (de) Ladesystem
DE69304928T2 (de) Atomares befehlsystem
DE69400433T2 (de) Kollaboratives arbeitssystem
DE69400862T2 (de) Kollaboratives arbeitssystem
DE69400436T2 (de) Run-time lader
DE69324966T2 (de) Verwendung einer eingebetteten interpretativen Programmiersprache zum Realisieren eines interaktiven Werkzeugs für die Definition einer Benutzerschnittstelle
DE69525338T2 (de) Abstraktion von mustern und farben in einer graphischen benutzerschnittstelle
DE10135445B4 (de) Integriertes Verfahren für das Schaffen einer aktualisierbaren Netzabfrage
DE69601151T2 (de) Interaktives sytem zum generieren von berichten und verfahren zu seinem betrieb
DE3586274T2 (de) Vieldaten-edierungsgeraet mit gebrauch von attributstroemen fuer textobjekte.
DE69609866T2 (de) Flexibles system und verfahren zum verknüpfen von hyperlinks
DE69503052T2 (de) Verbessertes objektorientiertes betriebssystem zum filtrieren von datenobjekten in einem fenster

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee