DE202011110880U1 - Kollaborative Cursors in einem gehosteten Textverarbeitungsprogramm - Google Patents

Kollaborative Cursors in einem gehosteten Textverarbeitungsprogramm Download PDF

Info

Publication number
DE202011110880U1
DE202011110880U1 DE202011110880.9U DE202011110880U DE202011110880U1 DE 202011110880 U1 DE202011110880 U1 DE 202011110880U1 DE 202011110880 U DE202011110880 U DE 202011110880U DE 202011110880 U1 DE202011110880 U1 DE 202011110880U1
Authority
DE
Germany
Prior art keywords
document
user
users
model
information
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 - Lifetime
Application number
DE202011110880.9U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202011110880U1 publication Critical patent/DE202011110880U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Document Processing Apparatus (AREA)

Abstract

Ein oder mehrere konkrete computerlesbare Speichermedien, die Anweisungen beinhalten, die bei ihrer Ausführung durch einen oder mehrere Computer Abläufe ausführen, umfassend: das Empfangen von Eingaben durch einen Benutzer einer browserbasierten Anwendung zur Dokumentenbearbeitung bezüglich eines Dokuments, das durch die Anwendung angezeigt wird; das Identifizieren einer gegenwärtigen Cursor-Position eines ersten Benutzers, der die Anwendung ausführt; das Empfangen, von einem zentralen Serversystem, von Daten, die Veränderungen widerspiegeln, welche durch einen oder mehrere vom ersten Benutzer abweichende Benutzer vorgenommen wurden, sowie der gegenwärtigen Cursor-Positionen im Dokument für den einen oder die mehreren Benutzer; das Aktualisieren eines Dokumentmodells, das auf einem Computergerät gespeichert ist, welches die browserbasierte Anwendung ausführt, und das Übermitteln wenigstens eines Teils des Modells an den Browser; und das Übermitteln der gegenwärtigen Cursor-Positionen für einen oder mehrere andere Benutzer an den Browser.

Description

  • TECHNISCHES GEBIET
  • Dieses Dokument bezieht sich auf Systeme und Techniken für die Verwaltung und das Anzeigen der Cursorpositionen für Benutzer, die gemeinschaftlich ein elektronisches Dokument auf einem gehosteten Serversystem bearbeiten.
  • HINTERGRUND
  • Cloudbasierte oder gehostete Berechnungen im Allgemeinen involvieren das Ausführen von Anwendungen über einen Webbrowser und das Erlangen von Informationen für die Anwendung von einem Fernserversystem oder -Dienst. Cloud-Computersysteme bietet echte Vorteile gegenüber der herkömmlichen Desktop-Software, beispielsweise die Zugriffsmöglichkeit auf Dokumente auf unterschiedlichen Computern und an unterschiedlichen Standorten. Anwendungen zur Steigerung der Produktivität in Büros sind eine Art von Anwendung, wie sie gegenwärtig über die Cloud bereitgestellt werden. Zum Beispiel können Benutzer ihre Webbrowser einsetzen, um Textverarbeitungen und Tabellenkalkulationen zu bearbeiten, die auf einem gehosteten Serversystem gespeichert sind, können auf Anwendungen für die Unternehmensressourcenplannung (enterprise resource planning; ERP) zugreifen, können Fotos bearbeiten und können die meisten anderen Tätigkeiten vornehmen, welche sie zuvor mit Desktop-Anwendungen durchführen konnten.
  • In einem gehosteten System kann es Benutzern auch möglich sein, auf dasselbe Dokument gleichzeitig zuzugreifen. Zum Beispiel kann das Serversystem ein Master-Dokument pflegen und kann Veränderungen am Dokument an diverse Client-Rechengeräte kommunizieren, welche auf das Dokument über das Internet zugreifen. Dieses gemeinschaftliche Bearbeiten kann eine verbesserte Nutzererfahrung über Systeme hinweg ermöglichen, in denen jeder Benutzer eine Reihe Bearbeitungen an einem Dokument vornimmt und es dann an einen anderen Benutzer weiterleitet, wenn keine Feedbackschleife existiert, um Bearbeitungen von einem Benutzer zu korrigieren, wenn ein anderer Benutzer weiß, dass die Bearbeitungen unratsam sind.
  • ZUSAMMENFASSUNG
  • Dieses Dokument beschreibt Systeme und Techniken, die verwendet werden können, um Benutzern eines gehosteten Textverarbeitungssystem, welche ein Dokument zur selben Zeit geöffnet haben und es gleichzeitig bearbeiten, Informationen anzuzeigen (wobei "gleichzeitig" die Möglichkeit anzeigt, einander überschneidende Bearbeitung in einer gemeinsamen Sitzung vorzunehmen und keine buchstäbliche Gleichzeitigkeit voraussetzt). Wie hier beschrieben, kann das Client-Gerät jedes Benutzers dem Serversystem häufig Veränderungen, oder Abänderungen, mitteilen, die der bestimmte Benutzer kürzlich an seiner Version des Dokuments vorgenommen hat. Diese Mitteilungen, welche in der Größenordnung von mehreren Mitteilungen pro Sekunde erfolgen können, wenn der Benutzer Abänderungen vornimmt (z.B. tippt), können von Daten begleitet werden, die dem Serversystem mitteilen, wo sich der Cursor des Benutzers im Dokument befindet (z.B. zwischen welchen Zeichen in einer Zeichenfolge, die den Inhalt des Dokuments widerspiegelt). Das Serversystem kann die Abänderungen mit anderen Abänderungen abgleichen, die es von anderen Benutzern empfangen hat (z.B. ob sie miteinander interferieren) und kann aktualisierte koordinierte Abänderungsinformationen an alle Client-Geräte schicken, welche die korrespondierenden Abänderungen nicht selbst vorgenommen haben, und kann mit diesen Daten die Daten verschicken, welche die Position der Cursor der anderen Benutzer anzeigen.
  • Diese Merkmale können, in bestimmten Implementierungen, einen oder mehrere Vorteile mit sich bringen. Zum Beispiel kann ein browserbasiertes Dokument mehreren Benutzern angezeigt und von diesen in einer gemeinschaftlichen Bearbeitungssitzung bearbeitet werden. Jeder der Benutzer kann visuell verankert sein, indem sie einen Cursor sehen können, der die Bearbeitungsposition eines jeden anderen Benutzers anzeigt. Als Ergebnis kann der bestimmte Benutzer veranlasst werden, eine Bearbeitung im selben Bereich wie die anderen Benutzer zu vermeiden, um so Kollisionen in eingefügten Bearbeitungen zu vermeiden.
  • In einer Implementierung wird ein computerimplementiertes, gemeinschaftliches Bearbeitungsverfahren offenbart. Das Verfahren umfasst das Empfangen von Eingaben eines Benutzers einer browserbasierten Dokumentbearbeitungsanwendung in ein Dokument, das von der Anwendung angezeigt wird; das Identifizieren einer gegenwärtigen Cursor-Position im Dokument eines ersten Benutzers, der die Anwendung ausführt; das Empfangen, durch ein zentrales Serversystem, von Daten, die Veränderungen am Dokument widerspiegeln, die von einem oder mehreren, sich vom ersten Benutzer unterscheidenden Benutzern vorgenommen wurden und die gegenwärtigen Cursor-Positionen des einen oder der mehreren Benutzer; das Aktualisieren eines Dokumentenmodells, das auf einem Rechengerät gespeichert ist, welches die browserbasierte Anwendung ausführt und das Übermitteln wenigstens eines Teils des Modells an den Browser; und das Übermitteln der gegenwärtigen Cursor-Positionen für einen oder mehrere Benutzer an den Browser. Das Verfahren kann außerdem das Empfangen aktualisierter Informationen bezüglich der gegenwärtigen Positionen der Cursors eines oder mehrerer Benutzer des Dokuments und das Übermitteln der gegenwärtigen Cursor-Positionen eines oder mehrerer Benutzer umfassen. Des Weiteren kann das Verfahren das Übertragen von Daten an das zentrale Serversystem beinhalten, welche die vom ersten Benutzer vorgenommenen Veränderungen am Dokument beschreiben und das Identifizieren einer gegenwärtigen Cursor-Position für den ersten Benutzer im Dokument.
  • In einigen Aspekten umfasst das Verfahren das Übertragen von Daten, die Veränderungen im Dokument beschreiben, sowie das Identifizieren einer gegenwärtigen Cursor-Position des ersten Benutzers, häufiger als ein Mal pro Sekunde während Perioden von aktiver Bearbeitungsaktivität durch den ersten Benutzer. Das Verfahren kann außerdem das Ermitteln umfassen, wann der erste Benutzer aktiv ein Dokument bearbeitet, das Starten eines Timers, wenn der erste Benutzer die Bearbeitung des Dokuments beginnt und das Übertragen der aufgelaufenen Daten aus des Benutzers Bearbeitungsaktivität, wenn der Timer abläuft. Des Weiteren kann das Verfahren das Setzen des Timers auf eine Zeitspanne von weniger als 500 Millisekunden beinhalten und kann außerdem das Setzen des Timers auf eine Zeitspanne gleich oder weniger als 250 Millisekunden umfassen. Zusätzlich kann das Verfahren das Übertragen von Daten umfassen, die Veränderungen im Dokument beschreiben, sowie das Identifizieren einer gegenwärtigen Cursor-Position des ersten Benutzers, häufiger als ein Mal pro Sekunde während Perioden von aktiver Bearbeitungsaktivität durch den ersten Benutzer.
  • In einer weiteren Implementierung wird ein computerimplementiertes gemeinschaftliches Bearbeitungssystem offenbart und umfasst eine Schnittstelle für das Empfangen von Kommunikation von einer Vielzahl von Client-Geräten, welche elektronische Dokumente unter Verwendung von Webbrowsern bearbeiten, einschließlich Informationen, welche die Cursor-Standorte in einem Dokument, in dem ein bestimmter Benutzer aktiv ist, anzeigen; ein aktiver Modell-Manager, um andere Benutzer als den bestimmten Benutzer zu identifizieren, welche in dem elektronischen Dokument aktiv sind; und Kollaborationslogik, um den sich vom bestimmten Benutzer unterscheidende Benutzer Informationen zur Verfügung zu stellen, welche Veränderungen widerspiegeln, die an einem Modell des elektronischen Dokuments und an Cursor-Standorten des bestimmten Benutzers im Dokument vorgenommen wurden.
  • Die Details einer oder mehrerer Ausführungsformen sind in den nachstehenden beigelegten Zeichnungen und der Beschreibung dargelegt. Andere Eigenschaften und Vorteile werden aus der Beschreibung und den Zeichnungen, und aus den Ansprüchen ersichtlich.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein schematisches Diagramm eines Systems für die Koordinierung von Cursor-Positionen in einer gemeinschaftlichen Dokumentenbearbeitungssituation.
  • 2A und 2B sind Blockdiagramme, in denen die Komponenten einer implementierten Modell-Präsentation-Steuerung bei einer Tabellenanwendung gezeigt werden.
  • 2C ist das Blockdiagramm eines Systems, bei dem die kollaborative Bearbeitung eines Dokuments durch mehrere Benutzer und über ein gehostetes Serversystem ermöglicht wird.
  • 3 ist ein Flussdiagramm eines exemplarischen Prozesses für die Koordinierung simultaner Veränderungen an einem elektronischen Dokument.
  • 4 ist ein Swimlane-Diagramm eines exemplarischen Prozesses für die Koordination simultaner Veränderungen an einem elektronischen Dokument
  • 5A zeigt einen Beispiels-Screenshot eines Textverarbeitungsprogramms, das eine gemeinschaftliche Bearbeitungssitzung implementiert.
  • 5B zeigt einen Screenshot eines Tabellenkalkulationsdokuments, das gemeinschaftlich von mehreren Benutzern bearbeitet wird.
  • 6 stellt ein Beispiel eines Computergeräts und eines mobilen Computergeräts dar, die verwendet werden können, um die hierin beschriebenen Techniken zu implementieren.
  • Gleichnamige Referenzsymbole in den verschiedenen Zeichnungen bezeichnen gleichartige Elemente.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Dieses Dokument beschreibt Systeme und Techniken für die Koordinierung simultaner Bearbeitung eines elektronischen Dokuments durch mehrere unterschiedliche Benutzer, die sich voneinander entfernt befinden, und von einem Serversystem, dass die Interaktion über das Internet hostet. Somit können die hier besprochenen Techniken eine gute Nutzererfahrung während der Bearbeitung eines Rich-Text-Dokuments (d.h. eines Dokuments, das Formatierung, Bilder und andere Inhalte beinhalten kann, die über schlichten Text hinausgehen) in einer Cloud oder einer gehosteten Computer-Umgebung bieten. Wie hier besprochen, können Veränderungen, welche verschiedene Benutzer an einem Dokument vornehmen, als Abänderungen an ein zentrales Serversystem kommuniziert werden, das als Schiedsrichter fungiert, wenn die Abänderungen mit zeitlich überschneidenden Veränderungen anderer Benutzer interferieren und das die Abänderungen an die Benutzer weiterleitet, die nicht die Urheber der bestimmten Abänderung oder der fraglichen Gruppe von Abänderungen sind. Diese Verbreitung von Abänderungen kann sehr häufig erfolgen, wenn ein Benutzer Veränderungen am Dokument vornimmt, etwa in der Größenordnung von einmal alle paar Sekunden, einmal pro Sekunde oder mehrere Male pro Sekunde. Außerdem können die Abänderungsinformationen von Informationen des ersten Benutzers begleitet werden, welche dieses Benutzers gegenwärtige Cursor-Position im Dokument anzeigt und von Informationen, welche den Benutzer identifizieren. Als Resultat können die Computergeräte der anderen Benutzer, wenn sie diese Informationen empfangen, einen Cursor für den ersten Benutzer erzeugen (obgleich in einer Farbe oder Form die sich von ihrem eigenen Cursor unterscheidet) und können außerdem ein Tag oder einen Merker anzeigen, die des ersten Benutzers Name oder Bezeichnung zeigt. Um visuelle Interferenzen zu minimieren, wird dieser Merker möglicherweise nur dann angezeigt, wenn der Fernnutzer, der mit dem Cursor korrespondiert, aktiv bearbeitet (z.B. in den letzten paar Sekunden getippt hat) oder wenn der lokale Benutzer mit seinem Zeigegerät über den Cursor des anderen Benutzers fährt.
  • 1 ist ein schematisches Diagramm eines Systems 100 für die Koordinierung von Cursor-Positionen in einer gemeinschaftlichen Dokumentenbearbeitungssituation. Im Allgemeinen handelt es sich bei dem hier gezeigten System um ein gehostetes Textverarbeitungssystem, auf das mehrere Benutzer zur selben Zeit zugreifen können, um gemeinschaftlich ein miteinander geteiltes Dokument bearbeiten können. Schematisch gezeigt werden hier korrespondierende Webseiten für drei verschiedene Benutzer, die an einem Newsletter arbeiten, der "Weekly Collaborator" heißt. Seite 102 wird von einem Benutzer namens Barley bearbeitet; Seite 104, die möglicherweise von einem von Seite 102 entfernten Client-Computergerät erzeugt wurde und auf die durch das Netzwerk 110 wie etwa das Internet zugegriffen wurde, wird von einem Benutzer namens Betty bearbeitet; und Seite 106 wird von einem Benutzer namens JohnB bearbeitet. Jede der Seiten, oder genauer jeder der Webbrowser, der die Seiten erzeugt, kann durch das Netzwerk 110 mit einem gehosteten Serversystem 108 kommunizieren. Das System 108 kann von einem Unternehmen betrieben werden, das eine Vielfalt von gehosteten Diensten anbietet, wie etwa Suchergebnisse, Kartensuchergebnisse, Zahlungstransaktionen für Online-Shopping, Übersetzungswerkzeuge und ähnliche Dienste in der Cloud.
  • Seite 102 wird mit einer Symbolleiste 112 nahe seinem oberen Rand gezeigt, die Browserschaltflächen und ein Suchfeld für die Eingabe von Suchanfragen in einer gewohnten Weise anzeigt. Unterhalb der Symbolleiste 112 werden Funktionen 114 etwa in der Form von Aktionsmenüs und auswählbaren Icons angezeigt, die Formatierungsveränderungen am Dokument hervorrufen können, das auf der Browserseite 102 bearbeitet wird. Zusätzliche Funktionen wie etwa der Rollbalken 118 können bereitgestellt werden, wenn das Dokument länger als das Ansichtsfenster ist, das auf Seite 102 passt. Ein Griff auf dem Rollbalken 118 kann von einem Benutzer ausgewählt werden, um andere Abschnitte des Dokuments einzeln ins Bild zu ziehen. Wie weiter unten beschrieben kann das System einer Model-View-Controller-Anordnung folgen, sodass ein Modell des Dokuments auf einem Client-Gerät gespeichert und in ein Dokumentenobjektmodell (DOM) gerendert werden kann, welches dann auf Seite 102 angezeigt werden kann. Dort wo das Dokument viel größer als das Ansichtsfenster ist, kann es effizienter sein, nur einen Teil des Dokuments an oder um das Ansichtsfenster zu rendern, und das Übermitteln oder sogar das Herunterladen des restlichen Dokumentmodells vom Server zum Client zurückzustellen.
  • In diesem bestimmten Beispiel bearbeiten die Benutzer von Seite 102, Seite 104 und Seite 106 den Newsletter allesamt rasant, um eine bevorstehende Deadline einzuhalten. Von daher hat jeder von ihnen seinen Cursor-Standort in einem unterschiedlichen Bereich des Dokuments von den anderen und sie tippen Text und löschen Text aus dem Dokument während der Bearbeitung. Unter Verwendung der hier besprochenen Techniken kann ein Controller, der auf jedem der Client-Computergeräte der Benutzer ausgeführt wird, diese Tastenanschläge und andere Eingaben abfangen und kann Informationen über die Tastenanschläge als Abänderungen an den Server 108 senden. Diese Informationen können zum Beispiel einen Standort beinhalten, der im Inhalt des Modells indexiert wird, in dem die Bearbeitung gegenwärtig stattfindet sowie einer Position, die im Modell indexiert wird, in dem sich der Cursor des bestimmten Nutzers gegenwärtig befindet. Zusätzlich können Informationen für die Identifizierung des bestimmten Benutzers bereitgestellt werden, sodass, wie weiter unten in größerem Detail beschrieben wird, der Server 108 Informationen bereitstellt, welche die Cursor-Positionen von anderen Benutzern als dem lokalen Benutzer identifizieren.
  • Bezugnehmend auf die Cursor-Positionen, werden auf Seite 102 Cursor-Informationen für alle drei Benutzer angezeigt. Die Cursor-Information für Barley, den lokalen Benutzer, wird durch Cursor 122 dargestellt. Cursor 122 und andere Cursors können als Span-Elemente mit einer schmalen Breite in einer Hintergrundfarbe, die sich von der Hintergrundfarbe des bearbeiteten Dokuments abhebt, erzeugt werden. Die Position des Cursors kann bestimmt werden, indem ein Anfangsstandort für den Cursor identifiziert wird und, wenn Zeichen eingegeben werden, indem die Zeichen in einem Div-Element abseits des Bildschirms erzeugt werden, das die geeignete Zeichengröße und Formatierung verwendet und indem dann Standard-HTML-Elemente verwendet werden, um die Höhe und Breite eines solchen abseitigen Elements zu bestimmen. Solch ein durch den Benutzer eingegebenes Zeichen kann dann an das DOM geleitet werden und auf der Seite 102 dargestellt werden, wobei die Position des Cursors 122 um die Breite des abseitigen Elements vorwärts indexiert wird, sodass der Cursor sich nun rechts von dem neu hinzugefügten Zeichen befindet und Barley, dem lokalen Benutzer, anzeigt, dass sich sein nächster Tastenanschlag an dieser Position befinden wird. Auf diese Weise können der Cursor 122, der Text und andere Bereiche des bearbeiteten Dokuments allesamt synthetisch generiert werden, sodass ein visueller Eindruck bereitgestellt wird, der mit dem vom bestimmten Urheber intendierten Format übereinstimmt.
  • Ein Cursor 124A für Betty wird als das Dokument bearbeitend gezeigt, oberhalb des Orts, an dem Barley das Dokument bearbeitet. Ein Merker 124B wird an den Cursor angehängt, sodass Barley sofort erkennen kann, dass Betty diese bestimmte Bearbeitung durchführt. Somit kann Barley beispielsweise wissen, dass Betty ein Experte auf dem Gebiet ist, das sie bearbeitet und kann ihren Bearbeitungen weniger Aufmerksamkeit schenken. Demgegenüber kann Barley wissen, dass das Gebiet, das Betty bearbeitet, eines ist, das ihm sehr am Herzen liegt und er kann Bettys Bearbeitungen sehr genau beobachten und ihr Kommentare bereitstellen, wenn sie das Dokument auf eine Weise bearbeitet, die ihm nicht gefällt. Zum Beispiel kann er eine Randnotiz in das Dokument einfügen, er kann Bettys Bearbeitungen bearbeiten oder er kann eine Notiz in die Chat-Sitzung tippen, die automatisch mit der Textverarbeitungsanwendung ausgeführt werden kann.
  • JohnB bearbeitet ein Dokument an einer Position viel weiter unten als die beiden anderen Benutzer und abseits des gegenwärtigen Ansichtsfensters auf Seite 102. Als Ergebnis wird der Cursor für JohnB nur als kleiner Cursor 120A gezeigt, welcher an den Merker 120B angehängt ist und der jenseits der Seite nach unten zeigt, um Barley anzuzeigen, dass JohnB sich irgendwo horizontal auf einer Linie mit dem Cursor 120A, aber jenseits des Seitenendes, befindet.
  • Die Seiten 104 und 106 zeigen korrespondierende Icons und Merker, die anderen Benutzern angezeigt werden können. Insbesondere können diese Benutzer ihre Positionen mit lediglich einem Icon wie Icon 122 markiert haben und können die Positionen anderer Benutzer mit Icons in verschiedenen Farben markiert werden und möglicherweise einem angehängten Merker oder einer anderen Markierung, die den Benutzer identifiziert, der an dieser Position bearbeitet.
  • Die hier gezeigten Merker können in bestimmten Situationen abgeschaltet werden, sodass der lokale Benutzer leichter mehr von der Seite 102 sehen kann. Zum Beispiel kann der Merker verschwinden, wenn Betty für eine vorgegebene Zeit, wie etwa 5 Sekunden oder mehr, mit dem Tippen 124B aufhört und es kann nur Icon 124A gezeigt werden. Auf diese Weise kann einem Benutzer ein geeignetes Maß an Benachrichtigung bereitgestellt werden, ohne dass die visuelle Oberfläche überhäuft wird.
  • Effektives gemeinschaftliches Bearbeiten kann in dieser Situation erreicht werden, in dem ein Controller, wie der unten besprochene Controller, Benutzereingaben abfängt und sie als Abänderungen regelmäßig an das Serversystem 108 sendet. Zum Beispiel kann, wenn eine lange Zeitspanne ohne Eingaben durch den Benutzer vergangen ist und der Benutzer damit beginnt, Eingaben vorzunehmen, ein Timer gestartet werden und alle Eingaben, die bis zu dem Zeitpunkt seines Ablaufens zwischengespeichert wurden, können als Abänderungen stapelweise an das Serversystem 108 gesendet werden. Der Timer kann beispielsweise auf eine Zeitspanne von 3 Sekunden, 2 Sekunden, 1 Sekunde oder einem Bruchteil einer Sekunde gestellt werden, wie etwa durch das Senden von Uploads zum Serversystem 108, wenn ein Benutzer aktive Eingaben vornimmt, alle 200 ms (Millisekunden). Das Serversystem 108 kann diese Abänderungen, die ihm übergeben wurden, dann überprüfen, wenn es erkennt hat, dass es zu einer Kollision zwischen Benutzereingaben kommt und kann die revidierten Abänderungen dann an die anderen Clients zurückgeben. Diese Informationen können von Informationen begleitet werden, welche den bearbeitenden Benutzer und außerdem die Cursor-Position für diesen Benutzer innerhalb des Dokumentenmodells identifizieren. Diese Informationen können von den anderen Client-Systems verarbeitet werden, wie etwa von einer Layout-Engine, die ein Span-Element schmaler Breite in einer Hintergrundfarbe erzeugt, die sich von der Hintergrundfarbe des Dokuments des bestimmten Benutzers abhebt. Der Cursor als ein Span-Element kann dann auf einer Bearbeitungsoberfläche für die Seiten 104 und 106 platziert werden und kann von den Benutzern dieser Seiten gesehen werden.
  • Dieser Vorgang des Abfangens von Benutzerinteraktionen, der Bestimmung von Cursor-Positionen zur gegenwärtigen Zeit und der Weitergabe dieser Informationen an den Server 108 und zurück an die anderen Clients kann sich während einer Bearbeitungssitzung eines Dokuments häufig wiederholen, bis sich einer der Benutzer bei der Sitzung abmeldet und sein Cursor nicht länger angezeigt wird oder bis sich alle Benutzer bei der Sitzung abmelden und dann das aktuellste Modell das ist, was sich gegenwärtig auf Server 108 befindet. In dieser Situation können die Kopien des Modells an jedem der Clients zwischengespeichert werden und das nächste Mal wiederverwendet werden, dass sich die Benutzer zurück in das System einloggen, sofern sich das Server-Modell nicht seitdem verändert hat, oder sie können verworfen werden (da das zentrale Modell in einer nächsten Sitzung heruntergeladen werden kann).
  • 2A und 2B sind Blockdiagramme, die Komponenten einer Modellansicht-Controller(model view controller, MVC)-Implementierung einer Textverarbeitungsanwendung zeigen. Die Textverarbeitungsanwendung kann beispielsweise von einem Webbrowser (z. B. dem in der 1A gezeigten Browser 104) ausgeführt werden. Im Allgemeinen sorgt die MVC-Implementierung für das Herunterladen eines Modells von einem Remote-Server auf einen Client und für die Wiedergabe des Modells in einem DOM. Die so hergestellte Ansicht des Modells kann direkt vom Webbrowser verwaltet werden. Die Steuerung kann Aktionen, beispielsweise Mausklicks auf Symbole und Tastaturbefehle, abfangen und dafür sorgen, dass derartige Aktionen implementiert werden, beispielsweise durch das gleichzeitige Hinzufügen von eingegebenen Zeichen zum Modell auf dem Client und auf dem Remote-Server (es kann sich hierbei beispielsweise um das Hochladen von Änderungen oder Mutationen auf den Server handeln. Dies kann über Regeln so programmiert werden, dass die Mutationen in ein Mastermodell integriert werden, damit das Modell auf dem Client noch während der Bearbeitung dem Mastermodell entspricht).
  • Bezugnehmend auf 2A kann eine Computeranwendung 200A so konfiguriert werden, dass sie ein Textverarbeitungsdokument 202 anzeigt. Die Anwendung 200A beinhaltet und steuert ein Modell 204A, eine Ansicht 206A und einen Controller 208A, und greift auf diese zu. So kann das Modell 204A beispielsweise eine Darstellung des Zustands vom Textverarbeitungsdokument 202 enthalten, einschließlich solcher Elemente wie Zeichendaten, Formate, Stile, Absätze, Abschnitte, Umbrüche, Listen, Tabellen, Bilder, Formeln usw. Die Ansicht 206A kann eine Wiedergabe des aktuellen Zustands vom Modell 204A darstellen. Die Ansicht kann beispielsweise eine visuelle Darstellung liefern, in der die wesentlichen Inhalte des Dokuments (z. B. seinen Rohtext) mit Formatierung und Layoutinformationen kombiniert werden. Wenn die Ansicht von einem Browser angezeigt wird, gibt sie die Form, oder sogar die genaue WYSIWYG-Darstellung des Dokuments, wieder, die vom Modell definiert wird.
  • Zusätzlich zum Rendering des Modells, kann die Ansicht 206A für die Präsentierung visueller Informationen an den Benutzer verwendet werden, welche dem Textverarbeitungsdokument 202 zugewiesen sind, wie etwa sichtbare Benutzerbedienelemente (d.h. Chrome) und andere Textverarbeitungsdaten. Der Controller 208A kann auf Änderungen im Modell 204A oder in der Ansicht 206A reagieren und den Zustand des Modells 204A und der Ansicht 206A aktualisieren. Wie in 2A gezeigt, stellen durchgezogene Linien zwischen dem Modell 204A, der Ansicht 206A und dem Controller 208A direkte Bezüge zwischen Komponenten dar, während gestrichelte Linien auf Listener verweisen. So kann beispielsweise der Controller 208A beim Abhören von Benutzerinteraktionen (z. B. von Benutzersteuerelementen) an der Darstellung der Ansicht 206A das Modell 204A modifizieren, und nachfolgend auch die Ansicht 206A direkt oder indirekt modifizieren (indem er die Ansicht 206A veranlasst, neue Modelldaten abzurufen und diese neuen Daten wiederzugeben).
  • Als weiteres Beispiel kann die Ansicht 206A, während sie auf durch einen anderen Benutzer in einer kollaborativen Umgebung oder auf durch automatisierte Datenaktualisierung vorgenommene Veränderungen am Modell 204A wartet, ein erneutes Rendering eines aktualisierten Modells oder eines Teiles des Modells anfordern. Zum Beispiel können Veränderungen anderer Benutzer, wenn ein Benutzer eines Client-Geräts nur einer von mehreren Benutzern ist, die gleichzeitig ein Dokument oder Zeichen bearbeiten, vom Serversystem an die Client-Geräte weitergegeben werden (und können Bearbeitungen durch den ersten Benutzer vom Client-Gerät an das Serversystem weitergegeben werden) und der Client-Code kann Zeichen zum Modell beinahe in Echtzeit hinzufügen und diese Veränderungen können an das DOM (z.B. durch Rendering der Ansicht 206A) weitergegeben werden, sodass jeder Benutzer sehr schnell die von anderen Benutzern vorgenommenen Veränderungen sehen kann.
  • Bezugnehmend auf 2B wird die Modell-Präsentation-Steuerung wie in 2A gezeigt, mit weiteren Details dargestellt. Wie gezeigt, beinhaltet, steuert oder greift eine Computeranwendung 200B (korrespondierend mit der Anwendung 200A) zu auf ein Modell 204B (korrespondierend mit Modell 204A), eine Ansicht 206B (korrespondierend mit der Ansicht 206A) und einen Controller 208B (korrespondierend mit dem Controller 208A).
  • Das Modell 204B kann ein oder mehrere Dokumentmodelle 210 beinhalten. Jedes der Dokumentmodelle 210 kann, zum Beispiel, ein separates Dokument in einer Ansammlung von Textverarbeitungsdokumenten repräsentieren und jedes der Modelle 210 kann Elemente wie etwa Zeichen, Stile und Entitäten beinhalten. Andere Dokumentformen, beispielsweise Tabellen, können ebenfalls dargestellt werden. Modelldaten und Elemente können von einem Masterdokument 238 bereitgestellt werden, das auf einem Remote-Serversystem mit einer Verbindung zu einem Netzwerk 236 (z. B. das Internet) gespeichert wird.
  • Im Allgemeinen wird jedem Dokumenttext in den Modellen 210 eine Reihe von Zeichen zugewiesen. Die Zeichen können beispielsweise Rohtext für das Textverarbeitungsdokument 202 darstellen. Sie können auch bestimmte reservierte Steuerzeichen, beispielsweise zur Andeutung eines Umbruchs (z. B. Absatzumbruch, Seitenumbruch usw.) beinhalten. In einigen Implementierungen kann jedes der Dokumentmodelle 210 eine eindimensionale Zeichenfolge beinhalten, die Dokumentzeichen beinhaltet in einer Reihenfolge, in welcher sie im Dokument erscheinen.
  • Stile können verwendet werden, um Informationen bezüglich der Präsentation des Dokumenttextes (z.B. der Reihe von Zeichen) zu speichern. Textstile können beispielsweise Zeichenformatierungs-Attribute (z. B. Schriftart, Schriftgröße, Fettdruck, Kursivschrift, Vordergrund- und Hintergrundfarben, Ausrichtung und ähnliche Attribute) beinhalten. In einigen Implementierungen können die in den einzelnen Dokumentmodellen 210 beinhalteten Stile in einer Sparse-Matrix gespeichert werden. So kann die Sparse-Matrix beispielsweise Markierungen beinhalten, die Stiländerungen im Dokument und Positionszeigern in der Zeichenfolge entsprechen. Die Zeiger können beispielsweise Stilfolgen zwischen abgeglichenen Markierungen definieren, indem Positionen innerhalb der Zeichenfolge, in der die Stiländerungen auftreten, festgelegt werden. In einigen Implementierungen können die Markierungen im abgeglichenen Satz so angeordnet werden, dass sie innerhalb der eindimensionalen Zeichenfolge mit bestimmten Zeichen verknüpft sind. Wenn beispielsweise zwischen zwei paarweise vorkommenden Markierungen Text hinzugefügt wird, kann sich der Zeiger für eine Markierung um eine Ganzzahl verschieben. Die Verschiebung entspricht dabei der Anzahl von Zeichen, die mit dem hinzugefügten Text verknüpft sind.
  • Entitäten in jedem der Modelle 210 können verwendet werden, um Informationen bezüglich von Objekten außerhalb des Dokumentmodells 210 zu speichern, auf sie kann durch Referenzen im Modell, wie etwa in der eindimensionalen Zeichenfolge, verwiesen werden. So können beispielsweise Entitäten Objekte beinhalten, etwa Listen, Tabellen, Bilder usw. In einigen Implementierungen können die Referenzen Objektkennungen und Zeiger auf die eindimensionalen Zeichenfolgen (z. B. von der Sparse-Matrix) beinhalten, die angeben, wo das Objekt in der Zeichenfolge erscheinen soll. Sie können auch Kennungen innerhalb der Zeichenfolge beinhalten, die auf Entitäten verweisen und die Positionen markieren, an denen bestimmte Entitäten im Dokument bei der Wiedergabe oder Anzeige erscheinen sollen. Ein Bild beispielsweise, das zwischen zwei Absätzen erscheinen soll, kann mit einem Sonderzeichen verknüpft sein, das in der Zeichenfolge nach einer Absatzmarkierung für einen Absatz und vor dem ersten Zeichen des nächsten Absatzes erscheint.
  • Die Ansicht 206B kann ein oder mehrere Ansichtsitems 220 erzeugen, welche es dem Benutzer ermöglichen können, mit der Anwendung 200B zu interagieren, wie etwa Menüleisten, Symbolleisten, Kontextmenüs, Chatfenster, Dialogmenüs, andere Funktionen und dergleichen. Die Ansicht 206B kann auch ein Dokumentmenü 222 beinhalten, das Informationen und Steueroptionen bezüglich eines oder mehrerer Dokumentmodelle 210 und eines oder mehrerer Sätze der Pro-Ansichten 224 bietet. So kann beispielsweise eine der Pro-Ansichten 224 mit einem entsprechenden Blattmodell 210 verknüpft sein. Jede Pro-Ansicht 224 kann Komponenten oder Steuerelemente, beispielsweise Selektoren (Cursors, Auswahlindikatoren usw.) und Navigations-Tools (Bildlaufleisten, Dokumentmatrizen, Umrisse usw.) beinhalten.
  • Der Controller 208B kann einen oder mehrere Controller 230 beinhalten, der auf Benutzerinteraktionen mit einem oder mehreren der Ansichtsitems 220 wartet und diese handhabt. In einigen Implementierungen kann jeder Controller 230 mit einem entsprechenden Ansichtselement 220 verknüpft sein. So können beispielsweise Controller für Menüleisten auf die Interaktionen mit Menüleisten-Ansichtselementen achten und diese verarbeiten (z. B. bezüglich verschiedener Aktionen, die ein Benutzer gewöhnlich unter mehreren Menüauswahlelementen ergreifen würde). Controller für Symbolleisten können auf die Interaktionen mit Symbolleisten-Ansichtselementen achten und diese verarbeiten. Controller für Kontextmenüs können auf die Interaktionen mit Kontextmenü-Ansichtselementen achten und diese verarbeiten, usw. Die Feststellung, dass ein bestimmtes Ereignis aufgetreten ist, kann einen bestimmten Controller 230 dazu veranlassen, vorbestimmte Codes oder einen sonstigen vorbestimmten Vorgang auszuführen, beispielsweise ein lokales Modell zu aktualisieren, sobald ein Tastendruck eingeht, und Informationen über den Tastendruck zu einem zentralen Serversystem hochzuladen.
  • Der Controller 208B kann außerdem einen Dokumentencontroller 232 beinhalten, der auf Benutzerinteraktionen mit dem Dokumentmenü 222 wartet und diese handhabt. Zusätzlich kann der Controller 208B einen Satz von Pro-Ansicht-Controllern 234 beinhalten, wobei jeder Controller 234 so konfiguriert ist, dass er auf Benutzerinteraktionen mit einer entsprechenden Ansicht im Satz der Pro-Ansichten 224 achtet und diese verarbeitet. Jeder Pro-Ansicht-Controller 234 kann verschiedene Controller-Typen beinhalten, beispielsweise Tasten-Controller für das Abfangen und Interpretieren von Tastatureingaben, Maus-Controller für das Abfangen und Interpretieren von Mauseingaben und Modelländerung-Controller für das Abfangen und Interpretieren von Modelländerungsereignissen.
  • Im Allgemeinen können die im Controller 208B beinhalteten Controller nutzergenerierte Ereignisse in Modell- und Ansichtsabänderungen umwandeln. Ein relevanter Controller (z. B. ein für die Verarbeitung von Aktionen konfigurierter Controller) kann beispielsweise aufgrund einer Benutzeraktion ein oder mehrere Ereignisse empfangen, die mit der Aktion verknüpft sind, und vorübergehende Änderungen an der Ansicht 206B vornehmen, bevor die Benutzeraktion erfolgt. Anschließend kann der entsprechende Controller auf Grundlage der Ereigniseigenschaften einen Befehl zusammenstellen, um das Modell 204B zu mutieren, es auszuführen und das aktualisierte Modell oder lediglich die Daten der jeweiligen Mutationen an das Remote-Serversystem weiterzuleiten, welches das Dokumentmodell 238 über das Netzwerk 236 hostet.
  • Die Controller können auch Timer oder andere Mechanismen verwenden, um Eingaben oder Abänderungen zu aggregieren, um so die Anzahl von Aktualisierungen, die an den lokalen oder serverbasierten Modellen vorgenommen werden müssen, zu verringern. Die Controller können beispielsweise Änderungen an dem lokalen und/oder serverbasierten Modell in Batches implementieren, die innerhalb vordefinierter Zeitfenster auftreten. So kann etwa eine Wartezeit von 200 ms nach dem ersten Tastaturbefehl eingehalten werden, bevor das zentrale Serversystem die Daten über alle Tastaturbefehle erhält, die in diesem Zeitfenster aufgetreten sind.
  • Es sind viele mögliche Benutzerinteraktionen mit der Anwendung 200B möglich, einschließlich von Interaktionen, die in Sitzungen mit nur einem oder in Sitzungen mit mehreren Benutzern beinhaltet sind. Zur Veranschaulichung wird nachfolgend eine Reihe von beispielhaften Benutzeraktionen mit der Anwendung 200B beschrieben. Um beispielsweise Text in das Textverarbeitungsdokument 202 einzugeben, kann der Benutzer mit einer Computermaus die gewünschte Dokumentposition 212 für die Texteinfügung auswählen, indem er auf das Dokument 202 klickt. Ein Maus-Controller, der in den Pro-Ansicht-Controllern 234 beinhaltet ist (z. B. ein Pro-Ansicht-Controller, der mit dem aktiven Dokument 202 verknüpft ist), kann auf ein Ereignis achten, das mit der Mauspositionierungs- und Mausklick-Eingabe verknüpft ist. Sobald dieses Ereignis abgefangen wird, kann der Controller die Ansicht 206B modifizieren (z. B. eine Pro-Ansicht, die mit dem aktiven Dokument verknüpft ist), um dem Benutzer einen visuellen Indikator für die Auswahl (z. B. einen Cursor) zu geben. Die ausgewählte Position 212 kann beispielsweise mit einem sichtbaren Cursor verknüpft sein (wobei der Cursor ein grafisches HTML-Element, beispielsweise ein Bild, ist und an einer geeigneten Position im Ansichtsbereich angezeigt wird, an der auch das Dokument angezeigt wird, wodurch das grafische Element in einer synthetischen Darstellung wie ein echter Cursor aussieht). Die ausgewählte Position kann auch optisch hervorgehoben werden oder eine andere Modifizierung erfahren. Zusätzlich kann auch die ausgewählte Position 212 der Position im Modell 2048 zugewiesen werden. So kann beispielsweise eine in einer eindimensionalen Zeichenfolge und in den Dokumentmodellen 210 enthaltene Stelle auf Grundlage der ausgewählten Position 212 bestimmt werden.
  • Unter Verwendung einer Tastatur kann der Benutzer erwünschten Text an der Dokumentenposition 212 eingeben. Ein Tastatur-Controller, der in den Pro-Ansicht-Controllern 234 beinhaltet ist, kann auf Ereignisse achten, die mit der Tastatureingabe verknüpft sind. Sobald diese abgefangen werden, kann die Ansicht 206B dahingehend modifiziert werden, dass der Benutzer einen visuellen Indikator für die Eingabe erhält. Wenn der Benutzer beispielsweise Text an der Position 212 eingibt, kann das Dokument 202 visuell aktualisiert werden, sodass der Benutzer den Text sieht. Darüber hinaus kann der Tastatur-Controller das Modell 204B dahingehend modifizieren, dass der eingegebene Text durch Kopieren der Benutzereingabe in das Modell eingefügt wird. So kann beispielsweise eine eindimensionale und in den Dokumentmodellen 210 enthaltene Zeichenfolge so aktualisiert werden, dass die eingegebenen Zeichen enthalten sind. Darüber hinaus kann das Dokumentmodell 238 dahingehend aktualisiert werden, dass der eingegebene Text enthalten ist, wodurch also das Modell 204B mit dem Dokumentmodell 238 koordiniert wird. Zum Beispiel können Veränderungen am Modell 204B an das Dokumentenmodell 238 über eine Verbindung zum Netzwerk 236 übermittelt werden. In einigen Implementierungen können Veränderungen periodisch gesendet werden (z.B. einmal pro 100 Millisekunden, einmal pro 200 Millisekunden, einmal pro 600 Millisekunden, einmal pro Sekunden, einmal pro 2 Sekunden oder in jedem anderen geeigneten Zeitintervall). In einigen Implementierungen können Änderungen auf Grundlage einer Benutzeraktivität (z. B. bei Eingabe eines Absatzumbruchs, bei Anwenden einer Formatänderung, beim Navigieren zu einem anderen Dokumentabschnitt, beim Klicken einer Speichern-Schaltfläche oder bei einer anderen Aktion) weitergegeben werden.
  • Als weiteres Beispiel kann ein Benutzer eine Entität (z.B. eine Liste, eine Tabelle, einen Hyperlink, ein Bild oder ein anderes solches Objekt) in das Dokument 202 einfügen. Der Benutzer kann beispielsweise mit einer Computermaus eine gewünschte Dokumentposition (z. B. die Position 212) für die Entitätseinfügung auswählen, indem er auf das Dokument 202 klickt. Ähnlich wie bei Interaktionen im Zusammenhang mit Texteingabe kann beispielsweise ein in dem Pro-Ansicht-Controller 234 enthaltener Maus-Controller auf ein Ereignis achten, das mit der Mauspositionierungs-Eingabe und der Mausklick-Eingabe verknüpft ist. Sobald das Ereignis abgefangen wird, kann der Controller die Ansicht 206B so modifizieren, dass der Benutzer einen visuellen Indikator für die ausgewählte Position erhält. Als Nächstes kann der Benutzer beispielsweise die Entität für Einfügungen festlegen, indem er mit einem Ansichtselement 220 oder mit dem Dokumentmenü 222 interagiert. Beispielsweise kann der Benutzer eine Auswahl auf einer Menüleiste vornehmen, um hierdurch den Wunsch einer Bildeinfügung mitzuteilen. Ein mit der Bildauswahl verknüpftes Dialogfeld kann dem Benutzer angezeigt werden, damit dieser das gewünschte Bild auswählen kann.
  • Modellansicht-Controller-Interaktionen für das Hinzufügen einer Entität innerhalb der Anwendung 200B können auf eine ähnliche Weise arbeiten, wie wenn ein Benutzer Text eingibt. Wenn der Benutzer beispielsweise das Bild an der Position 212 einfügt, kann das Dokument 202, wenn es auf einer Bearbeitungsfläche angezeigt wird, visuell aktualisiert werden, damit der Benutzer das Bild sieht. Zusätzlich kann das Modell 204B so modifiziert werden, dass es eine Referenz auf das eingefügte Bild enthält, indem die Referenz in das Modell geschrieben wird. Eines der Dokumentmodelle 210 (z. B. das mit dem aktiven Dokument verknüpfte Modell) kann beispielsweise so aktualisiert werden, dass es eine Referenz zum eingefügten Bild beinhaltet. Eine eindimensionale Zeichenfolge kann so aktualisiert werden, dass sie ein Sonderzeichen beinhaltet, das die Position des Bilds angibt, und die Referenz zum Bild kann gespeichert werden.
  • Wenn das Dokument 202 aus dem Modell gerendert wird, das dem aktiven Dokument zugewiesen ist, kann der Bildinhalt beispielsweise in das Dokument 202 integriert werden, das dem Benutzer angezeigt wird. In einigen Implementierungen kann die eindimensionale Zeichenfolge mehrere Vorkommnisse einer Kennung für eine einzelne Entität beinhalten. Zum Beispiel kann das Bild an mehreren Positionen im Dokument 202 positioniert werden, angegeben durch mehrfache Positionen für die Kennung in der eindimensionalen Zeichenfolge. Daher kann eine einzelne externe Entität innerhalb eines Dokuments oder zwischen mehreren Dokumenten geteilt werden – beides durch gemeinsame Referenzen auf die externe Entität. Das Dokumentmodell 238 kann dahingehend aktualisiert werden, dass das eingegebene Bild beinhaltet ist, wodurch also das Modell 204B mit dem Dokumentmodell 238 koordiniert wird. So können beispielsweise Änderungen am Modell 204B über eine Verbindung zum Netzwerk 236 an das Dokumentmodell 238 übertragen werden.
  • Zusätzlich kann der Benutzer beispielsweise die Formatierung des Texts und im Dokument 202 präsentierte Entitäten ändern. Durch Interaktion mit einem der Ansichtselemente 220 oder mit dem Dokumentmenü 222 kann der Benutzer eine gewünschte Formatierungsänderung (z. B. die Änderung der Schriftart eines ausgewählten Textblocks in Fettdruck, die Änderung einer Wörteranordnung als Liste, die Änderung eines Absatzes auf Rechtsausrichtung, die Änderung eines Dokumentzeilenabstands auf Doppelzeilen usw.) angeben. Einer der Controller 230 oder der Dokument-Controller 232 kann zusammen mit der Ansicht 206B auf Benutzerinteraktionen achten. Sobald eine solche Interaktion erkannt wird, kann das Modell 204B so modifiziert werden, dass die Formatierungsänderung beinhaltet wird. Eines der Dokumentmodelle 210 (z. B. das mit dem aktiven Dokument verknüpfte Modell) kann beispielsweise so aktualisiert werden, dass ein Element in eine Sparse-Stilmatrix beinhaltet wird. Diese definiert die Formatierungsänderung und definiert zudem die Positionen auf der eindimensionalen Zeichenfolge, an denen die Stiländerungen vorgenommen werden sollen. Ein in den Pro-Ansicht-Controllern 234 beinhalteter Modelländerungs-Controller kann auf Ereignisse achten, die mit dem Modell 204B verknüpft sind und eine Anfrage an die Ansicht 206B senden, eine entsprechende Aktualisierung vorzunehmen (z. B. durch Wiedergeben einer Anzeige des formatierten Textes). In einigen Implementierungen kann der Modelländerungs-Controller auch Modelländerungs-Ereignisse verarbeiten, die sich aus kollaborativen Modelländerungen ergeben.
  • In einigen Implementierungen kann ein Dokumentenmodell, bei dem sich um eines der Dokumentenmodelle 210 handelt, eine Teilmenge der Dokumentdaten des Dokumentenmodells 238 beinhalten. Wenn das Dokumentmodell 238 beispielsweise außergewöhnlich groß ist, kann eine Teilmenge der Daten (z. B. eine mit einem Abschnitt des Dokuments verknüpfte Teilmenge, die aktuell für den Benutzer sichtbar ist, plus eventuell ein Pufferbereich um den aktuell sichtbaren Bereich oder Ansichtsbereich, wodurch kleine Bildlaufentfernungen durch normale Browserinteraktionen und ohne Wiedergabe zusätzlicher Inhalte vom Modell verarbeitet werden können) für jeden einzelnen Client bereitgestellt werden, der aktuell das Textverarbeitungsdokument 202 anzeigt. Weiter ist es beispielsweise möglich, das vollständige Dokumentmodell 238 für jeden einzelnen Client bereitzustellen.
  • Der Benutzer kann wählen, einen anderen Bereich des Textverarbeitungsdokuments 202 zu sehen, als er gegenwärtig im Webbrowser sieht. Wenn der Benutzer beispielsweise mit einer Bildlaufleiste 214 interagiert, die mit dem Dokument 202 verknüpft ist, kann der Benutzer die Absicht äußern, die Dokumentdaten außerhalb des aktuellen Ansichtsfensters oder des angezeigten Bereichs zu sehen. Einer der Pro-Ansicht-Controller 234 (z.B. der dem aktiven Dokument zugewiesene Pro-Ansicht-Controller) kann auf Benutzerinteraktionen mit der Ansicht 206B oder einer anderen geeigneten Komponente warten (z.B. des visuellen Teils des Rollbalkens 214) und kann auf die Interaktion (z.B. durch eine Computermaus) hin anfordern, dass die Ansicht 206B sich selbst neu entwirft.
  • Falls der Benutzer eine kleine Roll-Menge bestimmt, kann die Ansicht 206A sich selbst im Browser anzeigen. So kann beispielsweise ein Pufferbereich der Dokumentdaten im Modell 204B (der bereits in einem DOM wiedergegeben wird) rund um die im sichtbaren Bereich von Dokument 202 angezeigten Daten beibehalten werden. Wenn sich das vom Benutzer festgelegte Maß an Bildlauf nach Ansicht 206B noch innerhalb der Grenzen des Pufferbereichs für Daten befindet, kann die Dokumentanzeige mithilfe der zuvor wiedergegebenen Daten aktualisiert werden. Wenn der Benutzer ein großes Maß an Bildlauf festlegt, sodass sich der vom Benutzer festgelegte Bildlauf nach Ansicht 206B außerhalb der Grenzen der zuvor wiedergegebenen Pufferdaten befindet, können beispielsweise vom Dokumentmodell 238 weitere Dokumentdaten über das Netzwerk 236 heruntergeladen werden. Hierdurch kann das Modell 204B mit Informationen aktualisiert werden, die mit weiteren Dokumentabschnitten verknüpft sind, und das Dokument kann mithilfe der heruntergeladenen Daten wiedergegeben werden.
  • 2C ist das Blockdiagramm eines Systems 240, bei dem die kollaborative Bearbeitung eines Dokuments durch mehrere Benutzer und über ein gehostetes Serversystem ermöglicht wird. Im Allgemeinen beinhaltet das System 240 ein gehostetes Dokumentsystem 242, das von einem oder mehreren Computerservern (z. B. einer Serverfarm) ausgeführt wird. Das gehostete Dokumentsystem 242 kann Dokumenthosting-Dienste für eine beliebige Anzahl von Clients über Verbindungen zu einem Netzwerk 244 (z. B. das Internet) anbieten. Mithilfe des Dokumentsystems 242 können Clientbenutzer neue Dokumente erstellen, bestehende Dokumente modifizieren, Dokumente freigeben und kollaborativ mit anderen Benutzern an Dokumenten arbeiten.
  • Zu Darstellungszwecken können den Browseranwendungen 246, 248 und 250 Dokument-Hosting-Dienste bereitgestellt werden. Jede dieser Anwendungen kann von einem Webbrowser (z. B. vom Browser 104, wie in 1 dargestellt) ausgeführt werden und kann Modell-, Ansichts- und Controller-Komponenten beinhalten (z. B. ähnlich wie bei Anwendung 200, die in den 2A und 2B dargestellt wird). Die Anwendungen 246, 248 und 250 können so konfiguriert werden, dass sie Computercode ausführen (z. B. JavaScript und andere Codes, die auf einem Webbrowser laufen), um eine Textverarbeitungsschnittstelle anzuzeigen und Textverarbeitungsfunktionen auszuführen, die mit einem oder mehreren der vom gehosteten Dokumentsystem 242 bereitgestellten Dokumenten verknüpft sind.
  • Wie in der gegenwärtigen Veranschaulichung gezeigt, kann Chris mit dem Webbrowser 252 interagieren, kann Tina mit dem Webbrowser 254 interagieren und kann Spike mit dem Webbrowser 256 interagieren. Jeder der Browser 252, 254 und 256 kann auf eine passende Anzahl von Browseranwendungen (z. B. eingebettete Anwendungen, Widgets, Internetdienste usw.) zugreifen. Zum Beispiel kann Browser 252 auf Anwendung 246 zugreifen, Browser 254 kann auf Anwendung 248 zugreifen und Browser 256 kann auf Anwendung 250 zugreifen.
  • Indem sie mit von den Webbrowsern dargestellten Bedienelementen interagieren, können die Benutzer des Systems 240 (z.B. Chris, Spike und Tina) beispielsweise mit einem oder mehreren Dokumenten arbeiten, die vom gehosteten Dokumentsystem 242 verwaltet und angeboten werden. Die Benutzer können z. B. auf die vom System 242 bereitgestellten Dokumente zugreifen oder neue Dokumente erstellen. Jede der Browseranwendungen 246, 248 und 250 kann über das Netzwerk 244 mit einer Schnittstelle 260 des Dokumentsystems 242 kommunizieren. Zum Beispiel kann die Kommunikation zwischen den Browseranwendungen 246, 248 und 250 mit der Schnittstelle 260 HTTP(HyperText Transfer Protocol)-Anfragen, SOAP(Simple Objekt Access Protocol)-Nachrichten oder ein anderes geeignetes Protokoll beinhalten. In einigen Implementierungen können die Clientbrowser Kanalverbindungen zur Schnittstelle 260 unterhalten, um Sitzungsdaten zwischen Clients und dem Dokumentsystem 242 zu kommunizieren.
  • Das gehostete Dokumentsystem 242 kann Subkomponenten für die Speicherung und Verwaltung von Informationen beinhalten, die sich auf Systemnutzer, Dokumente und Browseranwendungen beziehen. Die verschiedenen Teilkomponenten können von demselben Computerserver ausgeführt werden oder über mehrere Computerserver verteilt sein. Die Teilkomponenten können direkt (z. B. über Meldungen, übertragene Dateien, freigegebene Daten, entfernte Prozessrufe oder ein anderes Protokoll) oder auch indirekt (z. B. über eine zwischengeschaltete Anwendung) untereinander kommunizieren. Im Allgemeinen können Teilkomponenten, die im Dokumentsystem 242 beinhaltet sind, mit den Clientanwendungen (z. B. den Browseranwendungen 246, 248 und 250) über die Schnittstelle 260 kommunizieren.
  • Das System 242 kann außerdem einen oder mehrere Datenspeicher für die Speicherung von Benutzerinformationen 270 beinhalten. Die Benutzerinformation 270 kann beispielsweise Informationen bezüglich der Systembenutzer (z. B. Chris, Tina und Spike) beinhalten. Diese Informationen können u. a. Folgendes beinhalten: Allgemeine Benutzerinformationen und Anmeldeinformationen (z. B. Benutzernamen, Kennwörter, E-Mail-Adressen usw.); Informationen zu einem oder mehreren Geräten, über das bzw. die die Benutzer auf das System zugreifen (z. B. IP-Adressen, Browserversionen, Verbindungsgeschwindigkeiten usw.) und Systemnutzungsinformationen (z. B. Zugriffszeiten, Umfang der abgerufenen Daten usw.).
  • In einigen Implementierungen kann das System 242 einen oder mehrere Datenspeicher für die Speicherung von Dokumenten 272 in der Form von z.B. Dokumentmodellen, wie des weiter oben und unten besprochenen, beinhalten. So können die Dokumente 272 beispielsweise Textverarbeitungsdokumente beinhalten, die von Systembenutzern erstellt, unterhalten und abgerufen werden. Ein weiteres Beispiel sind die Dokumente 272, die von einem automatisierten Vorgang, beispielsweise einem News-Feed oder einem anderen Berichtsvorgang, generiert werden und wiederum auf den gesammelten Daten basieren. Informationen, die mit den Dokumenten 272 verknüpft sind, können Dokumentdaten-Modelle, Dokumenttext, Dokument-Formatierungsinformationen, Entitäten (z. B. Tabellen, Bilder, Videos, Sound-Clips oder ähnliche Objekte) usw. beinhalten.
  • Das System 242 kann außerdem einen oder mehrere Datenspeicher für die Speicherung von Zugriffsinformationen 274 beinhalten. So kann die Zugriffsinformation 274 beispielsweise Informationen über die Zugriffssteuerung von Systembenutzern (z. B. Benutzern, die in den Benutzerinformationen 270 beinhaltet sind) auf Systemdokumente (z. B. Dokumente, die in den Dokumenten 272 beinhaltet sind) beinhalten. Im Allgemeinen können Systembenutzer die Zugriffsrechte für die selbst erstellten oder verwalteten Dokumente selbst definieren. So kann beispielsweise Chris ein persönliches Briefdokument erstellen und festlegen, dass dieses Dokument privat ist. Hierdurch können andere Systembenutzer (z. B. Tina und Spike) dieses Dokument nicht finden oder darauf zugreifen, da der Zugriff auf verschiedene gängige Weise eingeschränkt sein kann. Ein weiteres Beispiel wäre, dass Tina ein Zeitplandokument hochlädt und definieren könnte, dass dieses Dokument mit Chris geteilt werden soll und für diesen einsehbar ist. Spike könnte das Dokument deshalb weder finden noch darauf zugreifen, während Chris auf das Dokument im schreibgeschützten Modus zugreifen könnte. In einigen Implementierungen könnte Tina als Dokumentautorin den vollständigen Zugriff auf das Dokument behalten. Sie hätte dann bestimmte Rechte, beispielsweise das Hinzufügen, Bearbeiten und Löschen von Inhalten, könnte Rechte ändern und könnte das Dokument aus dem System 242 entfernen. Ein weiteres Beispiel wäre, dass Spike in Verbindung mit einem Gruppenprojekt ein Dokument erstellen könnte, und Chris sowie Tina (neben sich selbst) vollständige Zugriffsrechte einräumen könnte. In einigen Implementierungen können Benutzergruppen in der Zugriffsinformation 274 beinhaltet sein. So kann ein Benutzer beispielsweise eine Gruppe erstellen und dieser Gruppe ein oder mehrere Benutzer hinzufügen. Statt beim Zuweisen von Dokumentrechten einzelne Benutzer auszuwählen, kann der Benutzer in bestimmten Fällen eine Gruppe auswählen, in der die einzelnen Benutzer enthalten sind. Die Zugriffsinformation 274 kann auch solche Informationen wie die Benutzer-IDs der Dokumentbenutzer, die Dokument-Zugriffszeiten usw. beinhalten.
  • In einigen Implementierungen kann das System 242 einen oder mehrere Datenspeicher für die Speicherung von HTML/JavaScript 276 beinhalten. So kann das HTML/JavaScript 276 beispielsweise den Anwendungscode für die Ausführung der Browseranwendungen 246, 248 und 250 beinhalten. Der Anwendungscode kann für einen der Browser 252, 254 und 256 bereitgestellt werden, beispielsweise, wenn die Browserbenutzer auf eine Website zugreifen, die mit dem gehosteten Dokumentsystem 242 verknüpft ist. Auf das Empfangen einer Anfrage für jedes der Dokumente 272 hin, kann das System 242 beispielsweise HTML/JavaScript 276 zusätzlich zu einem oder mehreren der Dokumente 272 bereitstellen. Durch Verwendung des HTML/JavaScript 276 können die Browseranwendungen 246, 248 und 250 die Dokumentdaten wiedergeben und eine Schnittstelle bereitstellen, über die die Browserbenutzer mit den Dokumenten interagieren können. In einigen Implementierungen können andere Technologien als HTML und JavaScript für die Bereitstellung des Anwendungscodes verwendet werden. So kann beispielsweise für Webbrowser mit einem entsprechenden Plug-In ein anderer Typ des kompilierten oder interpretierten Codes bereitgestellt werden. Es sind viele mögliche Benutzerinteraktionen mit dem System 240 möglich, einschließlich von Interaktionen in Sitzungen mit nur einem oder mit mehreren Benutzern. So können beispielsweise in einer kollaborativen Bearbeitungssitzung mehrere Benutzer gleichzeitig mit einem Dokument interagieren. Obwohl die für die Dokumentbearbeitung verwendeten Anwendungen möglicherweise unabhängig voneinander reagieren, können die Anwendungen beim Aktualisieren und Wiedergeben des Dokumentmodells denselben Bearbeitungsregeln folgen. Dadurch können mehrere Benutzer eine ähnliche Dokumenterfahrung haben und in der Lage sein, bei der Erstellung eines ähnlichen Dokumentmodells zusammenzuarbeiten.
  • In einer Beispielsitzung greift Chris, um eine gemeinschaftliche Textverarbeitungs-Dokumentenbearbeitung zu initiieren, auf das gehostete Dokumentsystem 242 zu, indem er den Webbrowser 252 auf eine Webseite (z.B. eine Domain) steuert, die dem System 242 zugewiesen ist. Beim Eingang der Anmeldeinformationen vom Browser 252 kann das System 242 die Informationen von Chris mit der Benutzerinformation 270 abgleichen. Bei dieser Abgleichung kann das System 242 dem Browser 252 das HTML/JavaScript 276 bereitstellen, damit die Online-Textverarbeitung ausgeführt wird (selbst wenn einige Teile des Codes bereits vor der Abgleichung weitergegeben werden). Der Browser kann einen Teil von HTML/JavaScript 276 als Browseranwendung 246 beinhalten, den mit der Anwendung verknüpften Chrome wiedergeben und die Anwendung für Chris anzeigen.
  • Chris kann mit der Browseranwendung 246 über eine Reihe Bedienelemente interagieren, die in einer Anwendungsansicht innerhalb des Browsers 252 angezeigt wird. So kann Chris beispielsweise die Absicht erkennen lassen, dass er ein neues Dokument erstellen will, indem er auf eine Schaltfläche klickt oder eine Menüoption in der Anwendungsansicht auswählt. Der Anwendungs-Controller kann den Befehl abfangen und über das Netzwerk 244 an die Schnittstelle 260 weitergeben. Bei Eingang des Befehls kann das System 242 ein neues Dokument zu den Dokumenten 272 hinzufügen und die mit dem neuen Dokument verknüpften Informationen zum Satz der aktiven Modelle 262 hinzufügen. So können die aktiven Modelle 262 beispielsweise Modellinformationen beinhalten, die mit Dokumenten verknüpft sind, welche wiederum von anderen Benutzern des Systems 242 bearbeitet werden.
  • Eine korrespondierende Version des Models der Reihe aktiver Modelle 262 kann in der Browseranwendung 246 vorhanden sein. So kann Chris beispielsweise bei einem Textverarbeitungsdokument, das von der Ansicht der Browseranwendung 246 bereitgestellt wird, Inhalte hinzufügen und Änderungen vornehmen. Die entsprechenden Inhalte und Änderungen können auf ein Modell angewendet werden, auf das die Browseranwendung 246 (und verknüpfter HTML- und JavaScript-Code, der auf dem Browser ausgeführt wird) zugreift, und das auf die aktiven Modelle 262 weitergeleitet werden kann.
  • Chris kann das Dokument außerdem mit einem oder mehreren Benutzern teilen. Wenn Chris beispielsweise Steuerelemente verwendet, die mit der Anwendung 246 verknüpft sind, kann er Tina und Spike als Benutzer auswählen, die das Dokument teilen können. Zudem kann er Tina und Spike vollständige Benutzerrechte einräumen. So können Tina und Spike beispielsweise in eine dargestellte Liste von Benutzern aufgenommen werden, die gewöhnlich Dokumente mit Chris teilen, und Chris kann Tina und Spike aus dieser Liste auswählen. Ein weiteres Beispiel wäre, dass Chris die E-Mail-Adressen von Tina und Spike bereitstellen kann. Das System 242 kann die Freigabeinformationen (z. B. Benutzer-IDs anderer Benutzer, die Zugriff auf das Dokument haben, Zugriffsebenen der Benutzer usw.) in der Zugriffsinformation 274 speichern. In einigen Implementierungen kann das System 242 Nachrichten (z. B. E-Mails, Textnachrichten, Softwarenachrichten usw.) an Benutzer senden, die Dokumentrechte erhalten haben. In einigen Implementierungen können Benutzer, die Dokumentrechte erhalten haben, einen Link (z. B. einen Hyperlink oder URL) zum geteilten Dokument empfangen.
  • Auf das Empfangen einer Benachrichtigung bezüglich des geteilten Dokuments hin, können Tina und Spike auf das Dokument mit ihren Webbrowsern 254 und 256 zugreifen. Zum Beispiel kann das System 242 auf eine Verifizierung hin den Browsern 254 und 256 HTML/JavaScript 276 für die Ausführung eines Online-Textverarbeitungsprogramms bereitstellen. Der Browser kann einen Teil des HTML/JavaScript 276 als Browseranwendungen 248 und 250 beinhalten, den mit der Anwendung verknüpften Chrome wiedergeben und die Anwendungen anzeigen.
  • Zusätzlich kann ein im gehosteten Dokumentsystem 242 beinhalteter aktiver Modellmanager 264 bestimmen, welche Dokumente gegenwärtig von Benutzern des Systems und Benutzern, die im Dokument aktiv sind (d.h. Chris), geöffnet sind und kann eine gemeinschaftliche Sitzung aufsetzen. So kann beispielsweise der aktive Modellmanager 264 bestimmen, dass das von Tina und Spike angeforderte Dokument mit einem oder mehreren der aktiven Modelle 262 verknüpft ist. Das System 242 kann die Dokumentanfrage dann an einen Computer weiterleiten, auf dem das Dokument gehostet ist, woraufhin der Computer Tina und Spike mit der aktuellen Sitzung verknüpfen kann. Darüber hinaus können die Browseranwendungen 248 und 250 die Modelldaten herunterladen, die mit dem/den aktiven Modell(en) 262 verknüpft sind, und die heruntergeladenen Modelldaten wiedergeben und anzeigen. In einigen Implementierungen kann das System 242 Modellinstanzen für Tina und Spike erstellen und diese zu den aktiven Modellen 262 hinzufügen.
  • Im gegenwärtigen Beispiel können Benutzer in der Lage sein, ihre eigenen Cursors und auch die Cursors anderer Benutzer in einer gemeinschaftlichen Sitzung zu sehen. Zur Veranschaulichung wird der Cursor jedes einzelnen Benutzers für ihn bzw. sie als Quadrat angezeigt. So kann Chris seinen eigenen Cursor beispielsweise als Quadrat sehen, während die Cursors anderer Benutzer als Kreis oder Dreieck dargestellt werden. Dementsprechend sehen Tina und Spike auch ihre eigenen Cursors möglicherweise als Quadrat, während die Cursors der anderen Benutzer als Kreis oder Dreieck dargestellt werden. In einigen Implementierungen können die Cursors in unterschiedlichen Farben dargestellt werden (was hier nicht gezeigt werden konnte). So können die Cursors beispielsweise im Allgemeinen als Unterstriche oder vertikale Striche dargestellt werden, wobei die Cursors für jeden Benutzer eine andere Farbe haben.
  • Im gegenwärtigen Beispiel können Veränderungen, die von jedem der Benutzer vorgenommen werden, von den Browseranwendungen 246, 248 und 250 an das gehostete Dokumentsystem 242 gesendet, koordiniert und zurück an die anderen Benutzer gesendet werden. In einigen Implementierungen können Veränderungen in Zeitintervallen gesendet werden (z.B. einmal pro 100 Millisekunden, einmal pro 200 Millisekunden, einmal pro 600 Millisekunden, einmal pro Sekunden, einmal pro 2 Sekunden oder in jedem anderen geeignete Zeitintervall). In einigen Implementierungen kann das Senden zumindest teilweise von der Aktivität oder Inaktivität des Benutzers abhängig sein. Während der Perioden der Inaktivität können Änderungen beispielsweise weniger häufig gesendet oder empfangen werden, als in Perioden von Benutzeraktivität. Wenn ein Benutzer Daten eingibt, oder wenn sich ein lokaler Benutzer mit dem Zeigegerät über den Cursor für einen anderen Benutzer bewegt, kann eine Popup-Beschriftung zur Identifizierung des anderen Benutzers angezeigt werden. Auf diese Weise kann der lokale Benutzer feststellen, wer die Änderungen vornimmt, selbst wenn die Beschriftung anschließend wieder ausgeblendet werden kann, um das Dokument nicht weiter zu blockieren.
  • Um von mehreren Benutzern vorgenommene mehrfache Dokumentveränderungen zu koordinieren kann das gehostete Dokumentsystem 242 eine Kollaborationslogik 266 beinhalten. Die Zusammenarbeitslogik 266 kann beispielsweise von einem oder mehreren Codemodulen ausgeführt werden, die wiederum von einem oder mehreren mit dem System 242 verknüpften Computerservern ausgeführt werden. In einigen Implementierungen können Teile der Zusammenarbeitslogik von den Browseranwendungen 246, 248 und 250 ausgeführt werden. Im Allgemeinen kann die Logik 266 Datenkonflikte (z. B. Fälle, in denen mehrere Benutzer denselben Dokumentteil bearbeiten oder widersprüchliche Dokumentformate anwenden) lösen, indem ein konsistenter Satz von Regeln auf alle Benutzeränderungen angewandt wird. Selbst wenn in manchen Fällen ein oder mehrere Benutzer möglicherweise aufgefordert werden, eine Änderung eindeutig zu machen. Wenn beispielsweise Tina eine Dokumentänderung vornimmt und Spike noch vor Empfang von Tinas Änderung eine widersprüchliche Dokumentänderung vornimmt, kann Spike eine Meldung von der Browseranwendung 250 mit möglichen Konfliktlösungsszenarien erhalten. In einigen Implementierungen kann ein Benutzer identifiziert werden, dessen Änderungen sich bei Konfliktsituationen gegenüber den Änderungen anderer Benutzer durchsetzen. So kann Chris als Dokumentautor bei Konflikten seine Änderungen möglicherweise gegenüber anderen Änderungen von Tina oder Spike durchsetzen. Wenn Spike beispielsweise genau dann einen Absatz bearbeitet, wenn Chris diesen löscht, kann der Absatz (einschließlich der Änderungen von Spike) gelöscht werden.
  • Daher das in 2C gezeigte System kollaborative Bearbeitungen eines gehosteten Dokuments durch mehrere Benutzer gleichzeitig verarbeiten. Die Verwaltung einer solchen Bearbeitung kann mit einem niedrigen Aufwand an Datenverkehr zwischen den verschiedenen Teilsystemen im System einhergehen.
  • 3 ist ein Flussdiagramm eines exemplarischen Prozesses für die Koordinierung simultaner Veränderungen an einem elektronischen Dokument. Im Allgemeinen involviert der Vorgang das Feststellen von Veränderungen in einem Dokument und einem Dokumentmodell, die Benutzer eines Client-Computergeräts vorgenommen haben, das Aufzeichnen dieser Veränderungen als Abänderungen, das Bestimmen einer gegenwärtigen Cursor-Position für den Nutzer des Client-Geräts und das Hochladen dieser Informationen in ein Serversystem, welches diese Informationen dann mit anderen Client-Geräten teilen kann, möglicherweise nach einer Neuformatierung oder anderweitigen Anpassung der Informationen. Diese Informationen können jedes der Client-Geräte in die Lage versetzen, von anderen Geräten vorgenommene Bearbeitungen und die aktuelle Cursor-Position der anderen Geräte in Echtzeit auf jeder lokalen Maschinen anzuzeigen.
  • Der Vorgang beginnt in Feld 302, wo Nutzereingaben von einem Client-Gerät empfangen werden. Diese Eingaben können eine Vielzahl von Formen annehmen, wie etwa das Tippen von Text in ein Textverarbeitungs-, Tabellenkalkulationsprogramm oder ein Bilddokument, oder andere geeignete Veränderungen. Die Eingaben können außerdem das Löschen von Text, das Einfügen von Figuren oder das Ändern des Formats oder Stils von Elementen in einem Dokument einbeziehen.
  • In Feld 304 werden die vom Benutzer empfangenen Eingaben in einer Übertragung an das zentrale Serversystem zusammengefasst. Diese Informationen, die an das Serversystem übertragen werden, können Informationen beinhalten, die von einem Benutzer vorgenommene Veränderungen und Positionen identifizieren, an denen diese Veränderungen im Dokumentmodell, das durch ein zentrales Serversystem verwaltet wird, vorgenommen werden sollen. Die Veränderungen können außerdem eine Revisionsnummer beinhalten, sodass das zentrale Serversystem die Reihenfolge nachhalten kann, in welcher die Veränderungen angekommen sind und diese Informationen verwenden kann, um Interferenzen zwischen von verschiedenen Benutzern vorgenommene Veränderungen aufzulösen. Zusätzlich können die Informationen eine Identifizierung von Informationen für jeden Benutzer beinhalten, sodass die Nutzeridentitäten mit anderen Benutzern in einem gemeinschaftlichen Bearbeitungsmodus für das Dokument geteilt werden können.
  • In Feld 306 aktualisiert das Client-Gerät seine eigene Version des Dokumentmodells und rendert das Model oder den aktualisierten Modellbereich in ein Dokumentenobjektmodell (DOM) auf dem Gerät, auf das durch einen Browser zugegriffen werden kann, welcher dann das Dokument anzeigt. In Feld 308 empfängt das Gerät Modelldaten für das Dokument von einem zentralen Serversystem. Diese empfangenen Informationen korrespondieren mit Informationen, die andere Client-Geräte an das zentrale Serversystem liefern, vergleichbar der Informationen, die das erste lokale Client-Gerät in Feld 304 geliefert hat. Somit nehmen die verschiedenen Benutzer gleichzeitige Bearbeitungen vor und überschneiden sich die Kommunikationen durch das zentrale Serversystem gegenseitig.
  • In der Zeit seitdem das Client-Gerät zuletzt mit dem Serversystem kommuniziert kann, hat der Benutzer des Geräts möglicherweise Bearbeitungen auf dem Gerät vorgenommen, welche die Bearbeitungen anderer Benutzer an anderen Geräten beeinträchtigen oder von ihnen beeinträchtigt werden. Von daher müssen sich überschneidende Bearbeitungen möglicherweise identifiziert werden und müssen möglicherweise Umwandlungen auf eine Weise durchgeführt werden, die mit den Umwandlungen auf anderen Clients und auf dem Serversystem übereinstimmt, um so ein aktualisiertes Dokumentmodell beim lokalen Client zu erzeugen. Der Client kann außerdem die Cursor-Positionen anderer Benutzer identifizieren, dort wo diese Positionen direkt in den Daten angegeben sein können, die vom Serversystem empfangen wurden. Diese Daten können dem lokalen Dokumentmodell hinzugefügt und im lokalen DOM gerendert werden. Diese Daten können außerdem eine Kennung anzeigen, wie etwa einen Benutzernamen oder eine Bezeichnung, um sie jeder Cursor-Position zuzuweisen. In Feld 312 verarbeitet der Vorgang die Bearbeitungen und passt die Cursor-Positionen für jeden der Benutzer an, die zuvor einen Cursor auf der Dokumentenanzeige des lokalen Clients angezeigt hatten. Zum Beispiel können schmale Span-Elemente mit einer aus dem Hintergrund des Dokuments hervorgehobenen Hintergrundfarbe innerhalb des DOM von ihren in der letzten Kommunikation vom Serversystem angezeigten Positionen an neue Positionen bewegt werden, die in der jüngsten Kommunikation vom Serversystem angezeigt werden.
  • In Feld 314 werden die Veränderungen zum Modell und im weiteren Sinne zum DOM hinzugefügt, wenn das Modell in das DOM-Gebiet gerendert wird und in Feld 316 zeigt ein Browser das modifizierte Dokument und die Cursors an, indem er auf das DOM zugreift. Der hier gezeigte Vorgang kann sich, wie oben bemerkt, häufig wiederholen, etwa mehrere Male pro Sekunde. Im Ergebnis können die Cursor-Positionen anderer Benutzer häufig aktualisiert werden und können, was Zeit und Ort angeht, sehr genau mit der Cursor-Position übereinstimmen, die gegenwärtig von den anderen Benutzern auf ihren eigenen Maschinen gesehen wird. Im Ergebnis können mehrere Benutzer reibungsloser miteinander interagieren, weil sie leicht die Arbeit in Echtzeit sehen können, die andere Benutzer im Dokument verrichten.
  • 4 ist ein Swimlane-Diagramm eines exemplarischen Prozesses für die Koordination simultaner Veränderungen an einem elektronischen Dokument. Im Allgemeinen zeigt der Ablauf ein Beispiel, in dem symmetrische Handlungen von zwei verschiedenen Client-Computergeräten vorgenommen werden, die beide durch ein zentrales Serversystem auf ein gemeinsames Dokument zugreifen, um gemeinschaftliche Bearbeitungen des Dokuments durchzuführen.
  • Der Vorgang beginnt in Feld 402A und 402B, wo jeder der Benutzer an den zwei Client-Geräten damit beginnt, ein geteiltes Dokument nahezu gleichzeitig zu bearbeiten. In den Feldern 404A und 404B kann jeder der Client-Geräte diese Änderungen an das Serversystem übertragen, etwa wenn ein Timer abläuft oder für jeden Tastenanschlag oder jede ähnliche Veränderung, die von einem der Clients erkannt wird. In Feld 406 erkennt das Serversystem, dass das Dokument von einem bestimmten Benutzer bearbeitet wird und kann, in diesem Beispiel, solche Handlungen für die beiden unterschiedlichen Client-Geräte parallel vornehmen, wie in den gestapelten Feldern in der mittleren Spalte gezeigt. Die Handlungen können auch in einer Warteschlange gestapelt und in der Reihenfolge abgearbeitet werden, in der sie empfangen wurden. Das Serversystem 408 kann auch andere Benutzer identifizieren, die gegenwärtig im Dokument und aktiv sind, sodass es bestimmen kann, mit welchen anderen Benutzern die Information geteilt wird, dass es empfangen wurde. In Feld 410 aktualisiert das Serversystem seine Master-Version des Dokumentmodells und überträgt Veränderungsdaten an die jeweiligen Clients oder werden den Veränderungen von Client B zugewiesene Daten an Client A gesendet und dem Client B zugewiesene Daten werden an Client A gesendet.
  • In den Feldern 412A und 412B empfangen die Clients die Veränderungsdaten vom zentralen Serversystem und ermitteln potentielle Kollisionen, die von den Bearbeitungen des anderen Clients erzeugt wurden, wenn man sie mit Bearbeitungen des lokalen Clients vergleicht. In den Feldern 414A und 414B passt jedes der Client-Geräte die Darstellung seiner Veränderungsdaten an, um solche Kollisionen aufzulösen und aktualisieren die Client-Geräte dann, in Feld 416A und 416B, ihre jeweiligen Modelle und rendern sie in die jeweiligen DOMs der Browser, die auf den Clients laufen. Schließlich verändern die Clients, in den Feldern 418A und 418B, die Daten im DOM, die sich auf die Cursors anderer Benutzer beziehen und verschieben die Entsprechungen dieser Cursors auf ihre neuen Positionen entsprechend der vom Serversystem in den Boxen 412A und 412B empfangenen Daten.
  • Bei dem hier gezeigten Vorgang kann es sich insofern um einen kontinuierlichen Vorgang handeln, dass jeder Client kontinuierlich auf durch die Benutzer vorgenommene Eingaben wartet und dann die Eingaben stapelweise übertragen kann, in Stapeln einzelner Eingaben wie etwa Tastenanschlägen oder in etwas größeren Stapeln, wo die Stapelgröße im Allgemeinen klein genug ausgewählt wird, dass Eingaben an andere Clients häufig genug übertragen werden, um eine reibungslose Nutzererfahrung in einer gemeinschaftlichen Sitzung zu gewährleisten.
  • 5A zeigt einen Beispiels-Screenshot eines Textverarbeitungsprogramm, das eine gemeinschaftliche Bearbeitungssitzung implementiert. In diesem Beispiel gibt es drei Benutzer, die einen Lebenslauf von Joseph Smith betrachten und am Ende des Lebenslaufs Kommentare tippen. Bei dem hier gezeigten bestimmten Screenshot handelt es sich um einen Seitennutzer namens kroberts, was durch die Tatsache angezeigt wird, dass ein Cursor in der Mitte der drei Zeilen nahe dem Ende des Lebenslaufes nicht durch einen Merker mit einem Namen begleitet wird. Vermutlich muss die lokale Benutzerin (hier kroberts) ihren eigenen Namen nicht neben ihrem Cursor sehen und durch das Weglassen des Merkers hebt sich der Cursor, verglichen mit den anderen Cursors, die einander eher gleichen, markanter hervor. Die anderen Benutzer, James Pattison und ein Benutzer namens otazi tippen zur selben Zeit wie kroberts, sodass man, wäre die Figur animiert, die drei vertikalen Cursorbalken sehen könnte, wie sie beinahe unisono von links nach rechts über die Seite wandern würden. Jede Aktualisierung des DOM, aus dem das Dokument erzeugt, kann mit hoher Regelmäßigkeit erfolgen (z.B. mehrere Male pro Sekunde) und kann, je nach Tippgeschwindigkeit des bestimmten Benutzers, ein bis mehrere Zeichen beinhalten.
  • Außerdem wird ein Chatfeld am rechten Ende der Seite bereitgestellt, in dem die Benutzer Kommentare tippen können, während sie fortschreiten, wobei diese Kommentare nicht im Dokument selbst beinhaltet sein werden. Zum Beispiel kann einer der Benutzer in einer gemeinschaftlichen Bearbeitungsumgebung, wie hier gezeigt, anfordern, dass die anderen Benutzer bestimmte Handlungen vornehmen. Als ein Beispiel kann ein erster Benutzer anfordern, dass andere Benutzer bestimmte Absätze im Dokument überprüfen und arbeiten, während der erste Benutzer andere Absätze überprüft und bearbeitet.
  • 5B zeigt einen Screenshot eines Tabellenkalkulationsdokuments, das gemeinschaftlich von mehreren Benutzern bearbeitet wird. In diesem Beispiel wird das Vorhandensein des Cursors dieses bestimmten Benutzers durch farbige Umrisse oder Felder in bestimmten Zellen angezeigt und hier wird ersichtlich, dass vier verschiedene Benutzer gleichzeitig Spalte B der Tabellenkalkulation bearbeiten.
  • 6 zeigt ein Beispiel eines allgemeinen Computergeräts 600 und eines allgemeinen mobilen Computergeräts 650, die mit den hier beschriebenen Techniken verwendet werden. Computergerät 600 soll verschiedene Formen von Digitalcomputern darstellen, zum Beispiel Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade Server, Mainframes und andere geeignete Computer. Computergerät 650 soll verschiedene Formen mobiler Geräte, wie Personal Digital Assistants, Mobiltelefone, Smartphones und andere ähnliche Computergeräte, darstellen. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
  • Das Computergerät 600 beinhaltet einen Prozessor 602, Speicher 604, ein Speichergerät 606, eine Hochgeschwindigkeitsschnittstelle 608, die mit dem Speicher 604 und High Speed-Erweiterungsanschlüssen 610 verbindet, und eine Low Speed-Schnittstelle 612, die mit einem Low Speed-Bus 614 und dem Speichergerät 606 verbindet. Alle der Komponenten 602, 604, 606, 608, 610 und 612 sind mithilfe verschiedener Busse miteinander verbunden und können an einer gemeinsamen Hauptplatine oder auf andere Weise, wie geeignet, angebracht sein. Der Prozessor 602 kann Anweisungen zur Ausführung innerhalb des Computergeräts 600 verarbeiten, einschließlich Anweisungen, die im Speicher 604 oder auf dem Speichergerät 606 gespeichert sind, um grafische Informationen für eine GUI auf einem externen Eingabe-/Ausgabegerät anzuzeigen, wie etwa Anzeige 616, die an die Hochgeschwindigkeitsschnittstelle 608 gekoppelt ist. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse, wie angemessen, zusammen mit mehreren Speichern und Speichertypen verwendet werden. Außerdem können mehrere Computergeräte 600 verbunden sein, wobei jedes Gerät Teile der nötigen Operationen bereitstellt (z. B. als Serverbank, eine Gruppe von Blade Servern oder ein Multiprozessor-System).
  • Der Speicher 604 speichert Informationen innerhalb des Computergeräts 600. In einer Implementierung ist der Speicher 604 ein flüchtiges Speichergerät oder flüchtige Speichergeräte. In einer anderen Implementierung ist der Speicher 604 ein nicht flüchtiges Speichergerät oder nicht flüchtige Speichergeräte. Der Speicher 604 kann auch eine andere Form von computerlesbarem Medium sein, zum Beispiel ein magnetischer oder optischer Datenträger.
  • Das Speichergerät 606 ist in der Lage, Massenspeicher für das Computergerät 600 bereitzustellen. In einer Implementierung kann das Speichergerät 606 ein computerlesbares Medium sein oder enthalten, zum Beispiel ein Diskettengerät, ein Festplattengerät, ein optisches Datenträgergerät oder ein Bandgerät, ein Flash-Speicher oder ein anderes ähnliches Solid-State-Speichergerät oder eine Reihe von Geräten, zum Beispiel Geräte in einem Storage Area Network oder anderen Konfigurationen. Ein Computerprogrammprodukt kann konkret in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie etwa der Speicher 604, das Speichergerät 606, der Speicher auf Prozessor 602 oder ein propagiertes Signal.
  • Der Hochgeschwindigkeits-Controller 608 verwaltet bandbreitenintensive Vorgänge für das Computergerät 600, während der Low Speed-Controller 612 weniger bandbreitenintensive Vorgänge verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Implementierung, ist der High-Speed-Controller 608 an den Speicher 604, die Anzeige 616 (z. B. durch einen Grafikprozessor oder -beschleuniger) und an die -Erweiterungsanschlüsse 610 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht gezeigt). In der Implementierung ist der Low-Speed-Controller 612 an das Speichergerät 606 und an den Low-Speed-Erweiterungsanschluss 614 gekoppelt. Der langsame Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, B, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Eingabe-/Ausgabevorrichtungen, wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
  • Das Computergerät 600 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt. Zum Beispiel kann es als Standardserver 620, oder mehrmals in einer Gruppe solcher Server implementiert sein. Es kann auch als Teil eines Rackserversystems 624 implementiert sein.
  • Darüber hinaus kann es in einem Personal Computer, wie Laptop-Computer 622, implementiert sein. Alternativ können Komponenten von Computergerät 600 mit anderen Komponenten in einem mobilen Gerät kombiniert sein (nicht dargestellt), z. B. Gerät 650. Jedes dieser Geräte kann eines oder mehrere Computergeräte 600, 650 enthalten, und ein gesamtes System kann aus mehreren Computergeräten 600, 650 bestehen, die miteinander kommunizieren.
  • Das Computergerät 650 beinhaltet einen Prozessor 652, Speicher 664, ein Eingabe-/Ausgabegerät, wie etwa eine Anzeige 654, eine Kommunikationsschnittstelle 666 und einen Sende-Empfänger 668, neben anderen Komponenten. Das Gerät 650 kann auch mit einem Speichergerät ausgestattet sein, zum Beispiel einem Microdrive oder einem anderen Gerät, um zusätzlichen Speicher bereitzustellen. Jede der Komponenten 650, 652, 664, 654, 666 und 668 ist mithilfe verschiedener Busse miteinander verbunden, und kann an einer gemeinsamen Hauptplatine oder auf andere Weise, wie geeignet, angebracht sein.
  • Der Prozessor 652 kann Anweisungen im Computergerät 650 ausführen, zum Beispiel Anweisungen, die in Speicher 664 gespeichert sind. Der Prozessor kann als ein Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann zum Beispiel für die Koordination der anderen Komponenten des Geräts 650 sorgen, zum Beispiel die Kontrolle von Benutzeroberflächen, Anwendungen, die vom Gerät 650 ausgeführt werden, und die drahtlose Kommunikation durch Gerät 650.
  • Der Prozessor 652 kann mit einem Benutzer über die Steuerschnittstelle 658 und die Displayschnittstelle 656 kommunizieren, die mit einem Display 654 gekoppelt ist. Die Anzeige 654 kann zum Beispiel eine TFT-LCD-(Thin-Film-Transistor Liquid Crystal Display) oder eine OLED-Anzeige (organische Leuchtdiode) oder eine andere angemessene Anzeigetechnologie sein. Die Displayschnittstelle 656 kann eine geeignete Schaltung enthalten, die das Display 654 dazu bringt, einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 658 kann Befehle von einem Benutzer empfangen und sie für die Übermittlung an Prozessor 652 umwandeln. Zusätzlich kann eine externe Schnittstelle 662 Kommunikation mit dem Prozessor 652 bereitstellen, zum Beispiel, um Nahbereichskommunikation des Gerätes 650 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 662 kann zum Beispiel in einigen Implementierungen, eine kabelgebundene Kommunikation bereitstellen, oder in anderen Implementierungen eine drahtlose Kommunikation, und es können auch mehrere Schnittstellen verwendet werden.
  • Der Speicher 664 speichert Informationen im Computergerät 650. Der Speicher 664 kann als eines oder mehrere computerlesbare Medien, flüchtige Speichergeräte oder nicht flüchtige Speichergeräte implementiert sein. Erweiterungsspeicher 674 kann ebenfalls bereitgestellt und mit dem Gerät 650 über Erweiterungsschnittstelle 672 verbunden werden, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Dieser Erweiterungsspeicher 674 kann zusätzlichen Speicherplatz für Gerät 650 bereitstellen oder er kann auch Anwendungen oder andere Informationen für Gerät 650 speichern. Insbesondere kann Erweiterungsspeicher 674 Anweisungen zum Ausführen oder Ergänzen der oben beschriebenen Prozesse enthalten, und er kann außerdem sichere Informationen enthalten. Somit kann Erweiterungsspeicher 674 zum Beispiel als Sicherheitsmodul für Gerät 650 bereitgestellt werden und er kann mit Anweisungen programmiert sein, die die sichere Verwendung von Gerät 650 erlauben. Zusätzlich dazu können über die SIMM-Karten sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Karte auf eine Weise, die nicht gehackt werden kann.
  • Der Speicher kann beispielsweise Flash-Speicher und/oder NVRAM-Speicher beinhalten, wie nachstehend erörtert. In einer Implementierung ist ein Computerprogrammprodukt konkret in einem Informationsträger ausgeführt. Das Computerprogrammprodukt enthält Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 664, die Speichererweiterung 674, Speicher auf Prozessor 652 oder ein weitergeleitetes Signal, das zum Beispiel über den Sendeempfänger 668 oder die externe Schnittstelle 662 empfangen werden kann.
  • Das Gerät 650 kann drahtlos über die Verbindungsschnittstelle 666 kommunizieren, welche digitale Signalverarbeitungsschaltkreise beinhalten kann, falls erforderlich. Die Verbindungsschnittstelle 666 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter u. a. GSM-Sprachanrufe, SMS, EMS, oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS. Eine solche Kommunikation kann zum Beispiel über Funkfrequenzempfänger 668 erfolgen. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie etwa unter Verwendung von Bluetooth, WiFi oder eines anderen solchen Sender-Empfängers (nicht gezeigt). Außerdem kann GPS(Global Positioning System)-Empfängermodul 670 zusätzliche navigations- und standortbezogene drahtlose Daten für Gerät 650 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 650 ausgeführt werden.
  • Das Gerät 650 kann auch akustisch mithilfe des Audio-Codecs 660 kommunizieren, der gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann. Das Audio-Codec 660 kann zudem akustische Töne für einen Benutzer erzeugen, z. B. durch einen Lautsprecher, wie beispielsweise in einem Handgerät von Gerät 650. Diese Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.) beinhalten und können auch Töne, die von Anwendungen, welche auf Gerät 650 operieren, beinhalten.
  • Das Computergerät 650 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt. Zum Beispiel, kann es als Mobiltelefon 680 implementiert werden. Es kann außerdem als Teil eines Smartphones 682, Personal Digital Assistant oder eines anderen ähnlichen mobilen Geräts implementiert sein.
  • Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltkreisen, integrierten Schaltkreisen, speziell konzipierten ASICs (anwendungsspezifischen integrierten Schaltkreisen), Computerhardware, Firmware, Software und/oder Kombinationen derselben realisiert werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, der ein spezieller Prozessor oder ein Prozessor für allgemeine Zwecke sein kann, und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Anweisungen an ein Speichersystem, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung gekoppelt ist.
  • Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenanweisungen für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierten Programmiersprache und/oder in Assembler-/Maschinensprache implementiert werden. Wie hier verwendet, bezeichnen die Begriffe „maschinenlesbares Medium“, „computerlesbares Medium“ ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als ein maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal“ bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen.
  • Um Interaktion mit einem Benutzer zu ermöglichen können die hier beschriebenen Systeme und Techniken auf einem Computer mit einem Anzeigegerät (z. B. einem CRT-(Kathodenstrahlröhre) oder einem LCD-(Flüssigkristallanzeige)Monitor) implementiert werden, um Informationen für den Benutzer anzuzeigen, und mit einer Tastatur und einem Zeigegerät (z. B. Maus oder Trackball), mit denen der Benutzer Eingaben in den Computer vornehmen kann. Andere Arten von Geräten können auch verwendet werden, um eine Interaktion mit einem Benutzer bereitzustellen; zum Beispiel kann eine dem Benutzer bereitgestellte Rückmeldung irgendeine Form von Sinnesrückmeldung sein (z. B. visuelle Rückmeldung, auditive Rückmeldung oder Tastrückmeldung); und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen werden, einschließlich akustischer, Sprach- oder Tasteingaben.
  • Die hier beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Back-End-Komponente beinhaltet (z. B. als Datenserver), oder das eine Middleware-Komponente beinhaltet (z. B. einem Anwendungsserver), oder das eine Front-End-Komponente beinhaltet (z. B. ein Client-Computer mit einer grafischen Benutzeroberfläche oder einem Webbrowser, über welche ein Benutzer mit einer Implementierung der hier beschriebenen Systeme und Techniken interagieren kann) oder jeder Kombination aus derartigen Back-End-, Middleware- und Front-End-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium von digitaler Datenkommunikation (z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN“), ein Fernnetz („WAN“) und das Internet.
  • Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.
  • Eine Anzahl von Ausführungsformen wurde beschrieben. Allerdings wird dabei vorausgesetzt, dass unterschiedliche Modifikationen gemacht werden können, ohne von der Reichweite und dem Umfang der Erfindung abzuweichen. Zum Beispiel wurden große Teile dieses Dokuments mit Bezug auf Textverarbeitungsdokumente beschrieben, aber auch andere Formen von Dokumenten könnten angesprochen werden.
  • Zusätzlich erfordern die in den Figuren dargestellten logischen Abläufe nicht die bestimmte dargestellte Reihenfolge oder eine sequenzielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. Darüber hinaus können andere Schritte bereitgestellt oder Schritte aus den beschriebenen Abläufen eliminiert werden und andere Komponenten können zu den beschriebenen Systemen hinzugefügt werden oder aus diesen entfernt werden. Dementsprechend liegen Ausführungsformen innerhalb des Umfangs der nachfolgenden Ansprüche.

Claims (12)

  1. Ein oder mehrere konkrete computerlesbare Speichermedien, die Anweisungen beinhalten, die bei ihrer Ausführung durch einen oder mehrere Computer Abläufe ausführen, umfassend: das Empfangen von Eingaben durch einen Benutzer einer browserbasierten Anwendung zur Dokumentenbearbeitung bezüglich eines Dokuments, das durch die Anwendung angezeigt wird; das Identifizieren einer gegenwärtigen Cursor-Position eines ersten Benutzers, der die Anwendung ausführt; das Empfangen, von einem zentralen Serversystem, von Daten, die Veränderungen widerspiegeln, welche durch einen oder mehrere vom ersten Benutzer abweichende Benutzer vorgenommen wurden, sowie der gegenwärtigen Cursor-Positionen im Dokument für den einen oder die mehreren Benutzer; das Aktualisieren eines Dokumentmodells, das auf einem Computergerät gespeichert ist, welches die browserbasierte Anwendung ausführt, und das Übermitteln wenigstens eines Teils des Modells an den Browser; und das Übermitteln der gegenwärtigen Cursor-Positionen für einen oder mehrere andere Benutzer an den Browser.
  2. Konkretes computerlesbares Speichermedium nach Anspruch 1, worin die Abläufe weiterhin das Empfangen aktualisierter Informationen bezüglich der gegenwärtigen Positionen der Cursors eines oder mehrerer Benutzer des Dokuments und das Übermitteln der gegenwärtigen Cursor-Positionen eines oder mehrerer Benutzer umfassen.
  3. Konkretes computerlesbares Speichermedium nach Anspruch 1, worin die Abläufe weiterhin das Übertragen von Daten an das zentrale Serversystem, welche die vom ersten Benutzer vorgenommenen Veränderungen am Dokument beschreiben, und das Identifizieren einer gegenwärtigen Cursor-Position für den ersten Benutzer im Dokument umfassen.
  4. Konkretes computerlesbares Speichermedium nach Anspruch 1, worin die Abläufe weiterhin das Übertragen von Daten, die Veränderungen im Dokument beschreiben, sowie das Identifizieren einer gegenwärtigen Cursor-Position des ersten Benutzers, häufiger als ein Mal pro Sekunde während Perioden von aktiver Bearbeitungsaktivität durch den ersten Benutzer umfassen.
  5. Konkretes computerlesbares Speichermedium nach Anspruch 4, worin die Abläufe weiterhin das Ermitteln, wann der erste Benutzer aktiv ein Dokument bearbeitet, das Starten eines Timers, wenn der erste Benutzer die Bearbeitung des Dokuments beginnt und das Übertragen der aufgelaufenen Daten durch die Bearbeitungsaktivität des Benutzers, wenn der Timer abläuft, umfassen.
  6. Konkretes computerlesbares Speichermedium nach Anspruch 1, worin die Abläufe weiterhin das Übertragen von Daten, die Veränderungen im Dokument beschreiben, sowie das Identifizieren einer gegenwärtigen Cursor-Position des ersten Benutzers, häufiger als ein Mal pro Sekunde während Perioden von aktiver Bearbeitungsaktivität durch den ersten Benutzer umfassen.
  7. Computerimplementiertes gemeinschaftliches Bearbeitungssystem, umfassend: eine Schnittstelle für das Empfangen von Kommunikation von einer Vielzahl von Client-Geräten, welche elektronische Dokumente unter Verwendung von Webbrowsern bearbeiten, einschließlich von Informationen, die Cursor-Positionen in einem Dokument anzeigen, in dem der bestimmte Benutzer aktiv ist; einen aktiven Modell-Manager um andere Benutzer als den bestimmten Benutzer zu identifizieren, welche im elektronischen Dokument aktiv sind; und eine Kollaborationslogik, um die anderen Benutzer als den bestimmten Benutzer mit Informationen zu versorgen, die am Modell des elektronischen Dokuments vorgenommene Veränderungen widerspiegeln und Cursor-Positionen im Dokument für den bestimmten Benutzer.
  8. System nach Anspruch 7, weiterhin umfassend eine Ausgabenschnittfläche, die dazu programmiert ist, Informationen von der Kollaborationslogik zu empfangen und diese Informationen zu verwenden, um anderen Client-Geräten als dem Client-Gerät, von dem die Informationen bezüglich Veränderungen am Modell empfangen wurden, Informationen zu übertragen, sodass die Client-Geräte die Veränderungen widerspiegeln und Cursor-Positionen für das Client-Gerät anzeigen, von dem die Informationen bezüglich der Veränderungen am Modell empfangen wurden.
  9. System nach Anspruch 7, weiterhin umfassend ein Dokumentprotokoll, das Dokumente zu Benutzern in Beziehung setzt, die gegenwärtig auf die Dokumente zugreifen.
  10. System nach Anspruch 7, worin die Kollaborationslogik programmiert ist, um Informationen bereitzustellen, welche die Veränderungen häufiger als ein Mal pro Sekunde widerspiegeln.
  11. System nach Anspruch 10, worin die Kollaborationslogik programmiert ist, um Informationen bereitzustellen, welche die Veränderungen häufiger als ein Mal pro 500 Millisekunden widerspiegeln.
  12. System nach Anspruch 10, worin das System programmiert ist, um jedem der Vielzahl von Benutzern, die ein Dokument gleichzeitig benutzen, häufiger als ein Mal pro 500 Millisekunden zu berichten.
DE202011110880.9U 2010-04-12 2011-04-12 Kollaborative Cursors in einem gehosteten Textverarbeitungsprogramm Expired - Lifetime DE202011110880U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US32325910P 2010-04-12 2010-04-12
US61/323,259 2010-04-12

Publications (1)

Publication Number Publication Date
DE202011110880U1 true DE202011110880U1 (de) 2017-01-20

Family

ID=44169198

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202011110880.9U Expired - Lifetime DE202011110880U1 (de) 2010-04-12 2011-04-12 Kollaborative Cursors in einem gehosteten Textverarbeitungsprogramm

Country Status (7)

Country Link
US (3) US20110252339A1 (de)
EP (2) EP3214556A3 (de)
CN (2) CN102934105B (de)
AU (1) AU2011240674B2 (de)
CA (1) CA2796299A1 (de)
DE (1) DE202011110880U1 (de)
WO (1) WO2011130286A1 (de)

Families Citing this family (198)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788319B2 (en) * 2005-12-30 2014-07-22 Microsoft Corporation Social context monitor
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
US9396279B1 (en) * 2009-02-17 2016-07-19 Jpmorgan Chase Bank, Na Collaborative virtual markup
US20110314392A1 (en) * 2010-06-17 2011-12-22 Cisco Technology, Inc. Incorporating calendar interfaces to dynamically adjust presentation information
JP2012038210A (ja) * 2010-08-10 2012-02-23 Sony Corp 情報処理装置、情報処理方法、コンピュータプログラム及びコンテンツ表示システム
US9930092B2 (en) 2010-12-06 2018-03-27 Zoho Corporation Private Limited Editing an unhosted third party application
GB2500356A (en) 2011-01-20 2013-09-18 Box Inc Real time notification of activities that occur in a web-based collaboration environment
US20120210243A1 (en) * 2011-02-11 2012-08-16 Gavin Andrew Ross Uhma Web co-navigation
US8996985B1 (en) 2011-03-16 2015-03-31 Google Inc. Online document processing service for displaying comments
US8681866B1 (en) 2011-04-28 2014-03-25 Google Inc. Method and apparatus for encoding video by downsampling frame resolution
US9330366B2 (en) 2011-05-06 2016-05-03 David H. Sitrick System and method for collaboration via team and role designation and control and management of annotations
US11611595B2 (en) 2011-05-06 2023-03-21 David H. Sitrick Systems and methodologies providing collaboration among a plurality of computing appliances, utilizing a plurality of areas of memory to store user input as associated with an associated computing appliance providing the input
US8918722B2 (en) 2011-05-06 2014-12-23 David H. Sitrick System and methodology for collaboration in groups with split screen displays
US8924859B2 (en) 2011-05-06 2014-12-30 David H. Sitrick Systems and methodologies supporting collaboration of users as members of a team, among a plurality of computing appliances
US8918724B2 (en) 2011-05-06 2014-12-23 David H. Sitrick Systems and methodologies providing controlled voice and data communication among a plurality of computing appliances associated as team members of at least one respective team or of a plurality of teams and sub-teams within the teams
US10402485B2 (en) * 2011-05-06 2019-09-03 David H. Sitrick Systems and methodologies providing controlled collaboration among a plurality of users
US8914735B2 (en) 2011-05-06 2014-12-16 David H. Sitrick Systems and methodologies providing collaboration and display among a plurality of users
US8826147B2 (en) 2011-05-06 2014-09-02 David H. Sitrick System and methodology for collaboration, with selective display of user input annotations among member computing appliances of a group/team
US8918723B2 (en) 2011-05-06 2014-12-23 David H. Sitrick Systems and methodologies comprising a plurality of computing appliances having input apparatus and display apparatus and logically structured as a main team
US9106787B1 (en) 2011-05-09 2015-08-11 Google Inc. Apparatus and method for media transmission bandwidth control using bandwidth estimation
US20130117064A1 (en) * 2011-06-17 2013-05-09 Progress Software Corporation Business process analysis combining modeling, simulation and collaboration with web and cloud delivery
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
US9978040B2 (en) 2011-07-08 2018-05-22 Box, Inc. Collaboration sessions in a workspace on a cloud-based content management system
EP2729877A4 (de) 2011-07-08 2015-06-17 Box Inc Desktopapplikation zum zugriff und zur interaktion mit arbeitsplätzen in einem cloud-basierten inhaltsverwaltungssystem und synchronisierungsmechanismen dafür
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US9948988B2 (en) 2011-10-04 2018-04-17 Ricoh Company, Ltd. Meeting system that interconnects group and personal devices across a network
US8266245B1 (en) 2011-10-17 2012-09-11 Google Inc. Systems and methods for incremental loading of collaboratively generated presentations
US10430388B1 (en) 2011-10-17 2019-10-01 Google Llc Systems and methods for incremental loading of collaboratively generated presentations
US20150199308A1 (en) 2011-10-17 2015-07-16 Google Inc. Systems and methods for controlling the display of online documents
US8812946B1 (en) 2011-10-17 2014-08-19 Google Inc. Systems and methods for rendering documents
US8434002B1 (en) * 2011-10-17 2013-04-30 Google Inc. Systems and methods for collaborative editing of elements in a presentation document
US11210610B2 (en) 2011-10-26 2021-12-28 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
US8738706B1 (en) * 2011-11-16 2014-05-27 Google Inc. Systems and methods for collaborative document editing
WO2013082320A1 (en) 2011-11-29 2013-06-06 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
WO2013079907A1 (en) * 2011-11-30 2013-06-06 The University Of Surrey System, process and method for the detection of common content in multiple documents in an electronic system
US9542366B2 (en) 2011-12-20 2017-01-10 Apple Inc. Smart text in document chat
US20130159849A1 (en) * 2011-12-20 2013-06-20 Keng Fai Lee Jump to Collaborator Cursor
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US20130185651A1 (en) * 2012-01-18 2013-07-18 Microsoft Corporation People presence detection in a multidocument knowledge base
US20130191451A1 (en) * 2012-01-19 2013-07-25 Microsoft Corporation Presence-based Synchronization
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9286597B2 (en) * 2012-03-30 2016-03-15 Microsoft Technology Licensing, Llc Tracking co-authoring conflicts using document comments
US20130262992A1 (en) * 2012-04-02 2013-10-03 Jane He Methods and systems for electronic editing and/or signing
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9367522B2 (en) 2012-04-13 2016-06-14 Google Inc. Time-based presentation editing
US20130283147A1 (en) * 2012-04-19 2013-10-24 Sharon Wong Web-based collaborative document review system
US9185429B1 (en) 2012-04-30 2015-11-10 Google Inc. Video encoding and decoding using un-equal error protection
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US9396216B2 (en) 2012-05-04 2016-07-19 Box, Inc. Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US20130311598A1 (en) * 2012-05-16 2013-11-21 Apple Inc. Cloud-based data item sharing and collaboration among groups of users
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9473532B2 (en) 2012-07-19 2016-10-18 Box, Inc. Data loss prevention (DLP) methods by a cloud service including third party integration architectures
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
GB2513671A (en) 2012-08-27 2014-11-05 Box Inc Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
JP2014056319A (ja) * 2012-09-11 2014-03-27 Canon Inc 情報処理装置およびプログラム、制御方法
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US9372833B2 (en) * 2012-09-14 2016-06-21 David H. Sitrick Systems and methodologies for document processing and interacting with a user, providing storing of events representative of document edits relative to a document; selection of a selected set of document edits; generating presentation data responsive to said selected set of documents edits and the stored events; and providing a display presentation responsive to the presentation data
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
WO2014051577A1 (en) * 2012-09-27 2014-04-03 Hewlett-Packard Development Company, L. P. Sharing content between collocated mobile devices in an ad-hoc private social group
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
JP5982343B2 (ja) 2012-10-17 2016-08-31 ボックス インコーポレイテッドBox, Inc. クラウドベース環境におけるリモートキー管理
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10140198B1 (en) * 2012-10-30 2018-11-27 Google Llc Networked desktop environment
US8819587B1 (en) 2012-10-30 2014-08-26 Google Inc. Methods of managing items in a shared workspace
US20150193492A1 (en) * 2012-11-08 2015-07-09 Google Inc. Editing sub-section of an electronic document via notification message
US9529785B2 (en) 2012-11-27 2016-12-27 Google Inc. Detecting relationships between edits and acting on a subset of edits
CN103853319A (zh) * 2012-11-30 2014-06-11 英业达科技有限公司 依据输入操作控制相异装置的系统、服务器及其方法
FR2998995A1 (fr) * 2012-12-03 2014-06-06 France Telecom Procede de communication entre plusieurs utilisateurs munis de terminaux de communication, par l'intermediaire d'une espace virtuel de communication
JP5916590B2 (ja) * 2012-12-06 2016-05-11 コニカミノルタ株式会社 オブジェクト操作装置及びオブジェクト操作制御プログラム
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
CN103118067B (zh) * 2012-12-26 2017-02-08 珠海金山办公软件有限公司 一种多设备间智能传输并打开文件的方法和系统
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9462037B2 (en) 2013-01-07 2016-10-04 Google Inc. Dynamically sizing chunks in a partially loaded spreadsheet model
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
EP2755151A3 (de) 2013-01-11 2014-09-24 Box, Inc. Funktionalitäten, Merkmale und der Benutzeroberfläche eines Synchronisationsclient zu einer Cloud-basierten Umgebung
US9311622B2 (en) * 2013-01-15 2016-04-12 Google Inc. Resolving mutations in a partially-loaded spreadsheet model
US9172740B1 (en) 2013-01-15 2015-10-27 Google Inc. Adjustable buffer remote access
EP2757491A1 (de) 2013-01-17 2014-07-23 Box, Inc. Konfliktlösung, Wiederversuchbedingungsverwaltung und Handhabung von Problemdateien für den Synchronisations-Client zu einer Plattform auf Cloud-Basis
US9311692B1 (en) 2013-01-25 2016-04-12 Google Inc. Scalable buffer remote access
US9225979B1 (en) 2013-01-30 2015-12-29 Google Inc. Remote access encoding
US20140258969A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Web-Based Integrated Development Environment For Real-Time Collaborative Application Development
US20140258968A1 (en) * 2013-03-05 2014-09-11 Research In Motion Limited Visual Representation Of Edits For Collaborative Application Development
US9158518B2 (en) 2013-03-11 2015-10-13 Blackberry Limited Collaborative application development environment using a connected device
US10049084B2 (en) * 2013-03-18 2018-08-14 Hsc Acquisition, Llc Rules based content management system and method
US9773264B2 (en) 2013-03-26 2017-09-26 Blackberry Limited Method for providing composite user interface controls and an online storefront for same
US20140337718A1 (en) * 2013-05-07 2014-11-13 International Business Machines Corporation Graphical marking to indicate edited data
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US9633037B2 (en) 2013-06-13 2017-04-25 Box, Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9588954B2 (en) * 2013-06-15 2017-03-07 Microsoft Technology Licensing, Llc Application/document collaboration in a multi-device environment
US10133720B2 (en) 2013-06-15 2018-11-20 Microsoft Technology Licensing, Llc Showing presence of multiple authors in a spreadsheet
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US9489114B2 (en) * 2013-06-24 2016-11-08 Microsoft Technology Licensing, Llc Showing interactions as they occur on a whiteboard
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
WO2015018244A1 (en) 2013-08-07 2015-02-12 Microsoft Corporation Augmenting and presenting captured data
US9971752B2 (en) 2013-08-19 2018-05-15 Google Llc Systems and methods for resolving privileged edits within suggested edits
US10258886B2 (en) 2013-09-04 2019-04-16 Nvidia Corporation Dynamic interface control device mapping when game sharing
US11130055B2 (en) 2013-09-04 2021-09-28 Nvidia Corporation System and method for granting remote access to a video game executed on a video game console or network client
JP2015052821A (ja) * 2013-09-05 2015-03-19 株式会社東芝 通信装置および通信方法
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US9704137B2 (en) * 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US9348803B2 (en) 2013-10-22 2016-05-24 Google Inc. Systems and methods for providing just-in-time preview of suggestion resolutions
US9407596B2 (en) * 2013-11-20 2016-08-02 International Business Machines Corporation Interactive splitting of entries in social collaboration environments
JP6244902B2 (ja) * 2013-12-27 2017-12-13 富士通株式会社 ガジェット間表示連携方法、ガジェット間表示連携プログラム及び情報処理装置
US20150199454A1 (en) * 2014-01-10 2015-07-16 Brigham Young University Concurrent design and analysis of an engineering object
WO2015121813A1 (en) * 2014-02-11 2015-08-20 Wix.Com Ltd. System for synchronization of changes in edited websites and interactive applications
US9898520B2 (en) 2014-03-25 2018-02-20 Open Text Sa Ulc Systems and methods for seamless access to remotely managed documents using synchronization of locally stored documents
CN104980453B (zh) * 2014-04-02 2018-10-30 纬创资通股份有限公司 同步显示操作信息的方法、系统、电子装置及服务器
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US20160098162A1 (en) * 2014-10-06 2016-04-07 Lenovo (Singapore) Pte. Ltd. Pen based locking mechanism
CN105630757B (zh) * 2014-11-07 2019-11-26 珠海金山办公软件有限公司 一种数据编辑方法及装置
US10191890B2 (en) * 2014-12-17 2019-01-29 Microsoft Technology Licensing, Llc Persistent viewports
US20160266860A1 (en) * 2015-03-09 2016-09-15 Sensory Technologies LLC Multiuser interactive display system and method
US9987561B2 (en) 2015-04-02 2018-06-05 Nvidia Corporation System and method for multi-client control of a common avatar
US9953018B2 (en) * 2015-05-01 2018-04-24 Microsoft Technology Licensing, Llc Transfer of content between documents of different storage types
US10339183B2 (en) 2015-06-22 2019-07-02 Microsoft Technology Licensing, Llc Document storage for reuse of content within documents
US10740349B2 (en) 2015-06-22 2020-08-11 Microsoft Technology Licensing, Llc Document storage for reuse of content within documents
US10394949B2 (en) 2015-06-22 2019-08-27 Microsoft Technology Licensing, Llc Deconstructing documents into component blocks for reuse in productivity applications
US10565297B2 (en) 2015-06-26 2020-02-18 Microsoft Technology Licensing, Llc. Rumored changes for real-time coauthoring
US9786277B2 (en) * 2015-09-07 2017-10-10 Voicebox Technologies Corporation System and method for eliciting open-ended natural language responses to questions to train natural language processors
US9448993B1 (en) 2015-09-07 2016-09-20 Voicebox Technologies Corporation System and method of recording utterances using unmanaged crowds for natural language processing
US9401142B1 (en) 2015-09-07 2016-07-26 Voicebox Technologies Corporation System and method for validating natural language content using crowdsourced validation jobs
US9519766B1 (en) 2015-09-07 2016-12-13 Voicebox Technologies Corporation System and method of providing and validating enhanced CAPTCHAs
WO2017044409A1 (en) 2015-09-07 2017-03-16 Voicebox Technologies Corporation System and method of annotating utterances based on tags assigned by unmanaged crowds
US20170075507A1 (en) 2015-09-16 2017-03-16 International Business Machines Corporation Displaying user activity in real-time collaborative editing systems
US10204077B2 (en) * 2015-09-21 2019-02-12 Facebook, Inc. Rich text editor
US11194398B2 (en) * 2015-09-26 2021-12-07 Intel Corporation Technologies for adaptive rendering using 3D sensors
CN105302787A (zh) * 2015-11-10 2016-02-03 浪潮软件股份有限公司 一种表格数据编辑的方法及装置
US20170129870A1 (en) * 2015-11-11 2017-05-11 Mohan Murali Alapati Compositions and methods for the treatment of neurological diseases
US9667676B1 (en) * 2016-01-29 2017-05-30 Dropbox, Inc. Real time collaboration and document editing by multiple participants in a content management system
US11102188B2 (en) * 2016-02-01 2021-08-24 Red Hat, Inc. Multi-tenant enterprise application management
CN107515710A (zh) * 2016-06-16 2017-12-26 阿里巴巴集团控股有限公司 即时通讯处理方法、装置、设备和系统
WO2018004021A1 (ko) * 2016-06-27 2018-01-04 주식회사 한글과컴퓨터 전자 문서의 공동 편집을 위한 협업 지원 장치 및 그 동작 방법
US20180063206A1 (en) * 2016-08-31 2018-03-01 Microsoft Technology Licensing, Llc Media Communication
US10733478B2 (en) * 2016-08-31 2020-08-04 Facebook, Inc. Systems and methods for processing media content that depict objects
US10635286B2 (en) * 2016-10-23 2020-04-28 Oracle International Corporation Visualizations supporting unlimited rows and columns
US11003632B2 (en) 2016-11-28 2021-05-11 Open Text Sa Ulc System and method for content synchronization
US10382547B2 (en) * 2017-01-31 2019-08-13 Box, Inc. Collaborative cloud-based document editing from a browser-enabled platform native application
US11200071B2 (en) * 2017-02-27 2021-12-14 International Business Machines Corporation Cognitive scrollbar
US11163616B2 (en) * 2017-03-07 2021-11-02 Polyjuice Ab Systems and methods for enabling interoperation of independent software applications
US10666593B2 (en) * 2017-03-21 2020-05-26 Domo, Inc. Systems and methods for messaging and collaboration
KR101880507B1 (ko) * 2017-04-21 2018-07-20 주식회사 한글과컴퓨터 웹 문서에 삽입된 도형의 크기 조정을 지원하는 클라이언트 단말 장치 및 그 동작 방법
US10068002B1 (en) 2017-04-25 2018-09-04 Palantir Technologies Inc. Systems and methods for adaptive data replication
KR101880508B1 (ko) * 2017-04-27 2018-07-20 주식회사 한글과컴퓨터 웹 문서에서 목록 생성을 지원하는 웹 문서 편집 지원 장치 및 방법
KR101781844B1 (ko) 2017-05-19 2017-09-27 주식회사 한글과컴퓨터 마크업 언어 기반 문서의 조합 글자 동기화 장치 및 그의 동작 방법
US11301431B2 (en) 2017-06-02 2022-04-12 Open Text Sa Ulc System and method for selective synchronization
US20190004639A1 (en) * 2017-06-29 2019-01-03 Microsoft Technology Licensing, Llc Providing living avatars within virtual meetings
US10380196B2 (en) * 2017-12-08 2019-08-13 Palantir Technologies Inc. Systems and methods for using linked documents
CN110209308A (zh) * 2018-03-13 2019-09-06 腾讯科技(深圳)有限公司 光标控制方法及相关设备
CN108549623B (zh) * 2018-04-12 2022-03-01 北京三快在线科技有限公司 协作文档编辑控制方法、装置、电子设备及存储介质
US20190361580A1 (en) * 2018-05-23 2019-11-28 Microsoft Technology Licensing, Llc Progressive presence user interface for collaborative documents
US10902188B2 (en) * 2018-08-20 2021-01-26 International Business Machines Corporation Cognitive clipboard
CN109710909B (zh) * 2018-12-29 2020-07-07 腾讯科技(深圳)有限公司 内容获取方法、装置、终端及存储介质
CN109918345B (zh) * 2019-02-22 2023-11-03 腾讯科技(深圳)有限公司 文档处理方法、装置、终端及存储介质
US11244100B2 (en) * 2019-05-08 2022-02-08 Microsoft Technology Licensing, Llc Visualizing changes based on document scope
US11379016B2 (en) 2019-05-23 2022-07-05 Intel Corporation Methods and apparatus to operate closed-lid portable computers
CN110290218B (zh) * 2019-07-05 2022-04-19 永中软件股份有限公司 文件批注方法和系统、计算机可读介质
US11652930B2 (en) * 2019-07-30 2023-05-16 Cimpress Schweiz Gmbh Systems and methods for synchronizing document edits using application state variables
JP2021043719A (ja) * 2019-09-11 2021-03-18 富士ゼロックス株式会社 情報処理装置及びプログラム
US11543873B2 (en) 2019-09-27 2023-01-03 Intel Corporation Wake-on-touch display screen devices and related methods
CN110752984B (zh) * 2019-10-24 2021-10-15 北京字节跳动网络技术有限公司 一种显示在线文档的方法、装置、电子设备及存储介质
US11733761B2 (en) 2019-11-11 2023-08-22 Intel Corporation Methods and apparatus to manage power and performance of computing devices based on user presence
US20210234908A1 (en) * 2019-12-20 2021-07-29 Atlassian Pty Ltd. Systems and methods for collaborative editing an electronic resource using client device designations
US11809535B2 (en) 2019-12-23 2023-11-07 Intel Corporation Systems and methods for multi-modal user device authentication
US11157089B2 (en) * 2019-12-27 2021-10-26 Hypori Llc Character editing on a physical device via interaction with a virtual device user interface
US11360528B2 (en) 2019-12-27 2022-06-14 Intel Corporation Apparatus and methods for thermal management of electronic user devices based on user activity
WO2021163373A1 (en) * 2020-02-14 2021-08-19 Magic Leap, Inc. 3d object annotation
US11388209B2 (en) * 2020-03-19 2022-07-12 DTEN, Inc. Interactive broadcast
US20210365231A1 (en) * 2020-05-25 2021-11-25 Shopify Inc. Systems and methods for displaying a cursor on another user device
US20220109651A1 (en) * 2020-10-07 2022-04-07 Microsoft Technology Licensing, Llc Interactive components for user collaboration
EP4229509A1 (de) * 2020-10-13 2023-08-23 Pitch Software GmbH Arbeitsraumvideozusammenarbeit
US11366583B1 (en) * 2021-02-02 2022-06-21 Bank Of America Corporation Computer-to-computer users# edit and event transfer and synchronization
US11863600B2 (en) * 2021-06-30 2024-01-02 Dropbox, Inc. Techniques for efficient communication during a video collaboration session
US11863615B2 (en) 2022-03-18 2024-01-02 T-Mobile Usa, Inc. Content management systems providing zero recovery time objective
CN115543140B (zh) * 2022-09-26 2024-05-14 深圳市国鑫恒运信息安全有限公司 一种在sol页面展示bios设置界面光标的控制方法
US11935007B1 (en) 2022-12-27 2024-03-19 Dropbox, Inc. Generating collaborative content items to provide customizable graphical representations in online graphical user interfaces

Family Cites Families (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528743A (en) 1993-05-27 1996-06-18 Apple Computer, Inc. Method and apparatus for inserting text on a pen-based computer system
US5793966A (en) 1995-12-01 1998-08-11 Vermeer Technologies, Inc. Computer system and computer-implemented process for creation and maintenance of online services
US5761669A (en) 1995-06-06 1998-06-02 Microsoft Corporation Controlling access to objects on multiple operating systems
US6651108B2 (en) 1995-08-14 2003-11-18 Next Software, Inc. Method and apparatus for generating object-oriented world wide web pages
US5930813A (en) 1995-12-21 1999-07-27 Adobe Systems Incorporated Method and system for designating objects
US5758358A (en) 1996-01-29 1998-05-26 Microsoft Corporation Method and system for reconciling sections of documents
US6006239A (en) 1996-03-15 1999-12-21 Microsoft Corporation Method and system for allowing multiple users to simultaneously edit a spreadsheet
US5895476A (en) 1996-09-09 1999-04-20 Design Intelligence, Inc. Design engine for automatic reformatting for design and media
US6006252A (en) 1996-10-08 1999-12-21 Wolfe; Mark A. System and method for communicating information relating to a network resource
JP3739525B2 (ja) 1996-12-27 2006-01-25 富士通株式会社 可変遅延回路及び半導体集積回路装置
US6662210B1 (en) * 1997-03-31 2003-12-09 Ncr Corporation Method of remote collaboration system
JP3143079B2 (ja) 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
US7031954B1 (en) 1997-09-10 2006-04-18 Google, Inc. Document retrieval system with access control
JPH11208130A (ja) 1998-01-23 1999-08-03 Fujicopian Co Ltd 感熱転写記録媒体
AUPP252298A0 (en) * 1998-03-24 1998-04-23 80-20 Software Pty Limited Document management software
US6154738A (en) 1998-03-27 2000-11-28 Call; Charles Gainor Methods and apparatus for disseminating product information via the internet using universal product codes
US6243706B1 (en) 1998-07-24 2001-06-05 Avid Technology, Inc. System and method for managing the creation and production of computer generated works
US6377354B1 (en) 1998-09-21 2002-04-23 Microsoft Corporation System and method for printing a document having merged text and graphics contained therein
JP3904752B2 (ja) 1999-01-26 2007-04-11 アルプス電気株式会社 反射型液晶表示装置およびその製造方法
US6512531B1 (en) 1999-04-09 2003-01-28 Adobe Systems Incorporated Font navigation tool
US7064757B1 (en) 1999-05-07 2006-06-20 Apple Computer, Inc. Automatic synthesis of font tables for character layout
US6501779B1 (en) 1999-05-26 2002-12-31 Nxi Communications, Inc. Network communication system
US7330875B1 (en) 1999-06-15 2008-02-12 Microsoft Corporation System and method for recording a presentation for on-demand viewing over a computer network
US6971105B1 (en) * 1999-07-29 2005-11-29 Rehle Visual Communications Llc Method, apparatus, and computer program product for deferred completion of multi-step user transaction applications
US6327584B1 (en) 1999-07-30 2001-12-04 Hewlett-Packard Company Apparatus and method for using version control to dynamically update files while the files are available for access
JP3498020B2 (ja) 1999-09-29 2004-02-16 Nec液晶テクノロジー株式会社 アクティブマトリックス基板及びその製造方法
US7047033B2 (en) 2000-02-01 2006-05-16 Infogin Ltd Methods and apparatus for analyzing, processing and formatting network information such as web-pages
US6704798B1 (en) 2000-02-08 2004-03-09 Hewlett-Packard Development Company, L.P. Explicit server control of transcoding representation conversion at a proxy or client location
US7450114B2 (en) 2000-04-14 2008-11-11 Picsel (Research) Limited User interface systems and methods for manipulating and viewing digital documents
US7210099B2 (en) 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
US7035910B1 (en) 2000-06-29 2006-04-25 Microsoft Corporation System and method for document isolation
US6983316B1 (en) 2000-07-18 2006-01-03 Western Digital Ventures, Inc. Method of and content delivery server for delivering content to a personal computer having a disk drive which includes a network address for the content delivery server and a server-contacting program
CA2424713C (en) 2000-08-21 2007-12-04 Thoughtslinger Corporation Simultaneous multi-user document editing system
US6972748B1 (en) 2000-08-31 2005-12-06 Microsoft Corporation J-key input for computer systems
US7752214B2 (en) * 2000-09-01 2010-07-06 Op40, Inc. Extended environment data structure for distributed digital assets over a multi-tier computer network
US7152203B2 (en) 2000-09-11 2006-12-19 Appeon Corporation Independent update and assembly of web page elements
US6717593B1 (en) 2000-09-12 2004-04-06 Avaya Technology Corp. Mark-up language implementation of graphical or non-graphical user interfaces
TW538275B (en) 2000-09-18 2003-06-21 Alps Electric Co Ltd Reflective liquid crystal display device
US20020035580A1 (en) 2000-09-21 2002-03-21 Yoshinori Tanabe Computer readable medium containing HTML document generation program
US20020133492A1 (en) 2000-11-16 2002-09-19 Samson Information Tech, L.L.C. System and methods for web browser based document scanning, remote storage, and retrieval
US6766334B1 (en) 2000-11-21 2004-07-20 Microsoft Corporation Project-based configuration management method and apparatus
US6879997B1 (en) 2000-11-27 2005-04-12 Nokia Corporation Synchronously shared online documents
US8255791B2 (en) 2000-11-29 2012-08-28 Dov Koren Collaborative, flexible, interactive real-time displays
US20020129096A1 (en) 2001-02-14 2002-09-12 Mansour Peter M. Platform-independent distributed user interface client architecture
KR100685946B1 (ko) 2001-03-02 2007-02-23 엘지.필립스 엘시디 주식회사 액정 디스플레이 패널 및 그 제조방법
GB2373085B (en) 2001-03-08 2004-10-06 Ibm Method, computer program and system for style sheet generation
US6725219B2 (en) 2001-03-13 2004-04-20 Seiko Epson Corporation Internet presentation system
US7039643B2 (en) 2001-04-10 2006-05-02 Adobe Systems Incorporated System, method and apparatus for converting and integrating media files
JP3692054B2 (ja) 2001-05-21 2005-09-07 株式会社東芝 文書構造変換方法および文書構造変換装置およびプログラム
JP4081643B2 (ja) 2001-08-01 2008-04-30 株式会社日立製作所 液晶表示装置
EP1435046A2 (de) 2001-08-03 2004-07-07 Koninklijke Philips Electronics N.V. System und verfahren zur aktualisierung eines dokuments
US7529778B1 (en) 2001-12-12 2009-05-05 Microsoft Corporation System and method for providing access to consistent point-in-time file versions
US6938070B2 (en) 2001-12-17 2005-08-30 Dassault Systemes Conflict resolution for collaborative work system
US20030179230A1 (en) 2002-03-25 2003-09-25 Gerry Seidman Method and apparatus for providing remote peer-to-peer collaborative user interfaces
US7114160B2 (en) 2002-04-17 2006-09-26 Sbc Technology Resources, Inc. Web content customization via adaptation Web services
JP3857663B2 (ja) 2002-04-30 2006-12-13 株式会社東芝 構造化文書編集装置、構造化文書編集方法及びプログラム
US7190468B2 (en) 2002-07-17 2007-03-13 Hewlett-Packard Development Company, L.P. Background document rendering system and method
US6928476B2 (en) 2002-08-23 2005-08-09 Mirra, Inc. Peer to peer remote data storage and collaboration
WO2004027607A2 (en) 2002-09-20 2004-04-01 Mks Inc. Version control system for software development
US7231597B1 (en) 2002-10-07 2007-06-12 Microsoft Corporation Method, apparatus, and computer-readable medium for creating asides within an electronic document
CN1244874C (zh) * 2002-10-12 2006-03-08 鸿富锦精密工业(深圳)有限公司 多点协同作业系统及方法
US20040088374A1 (en) 2002-10-31 2004-05-06 Webb James D. Aggregation and sharing of patient data
US7818678B2 (en) 2002-10-31 2010-10-19 Litera Technology Llc Collaborative document development and review system
US7904807B2 (en) 2002-11-05 2011-03-08 Xerox Corporation System and method for copying formatting information between Web pages
WO2004084044A2 (en) 2003-03-18 2004-09-30 Networks Dynamics, Inc. Network operating system and method
GB0307714D0 (en) 2003-04-03 2003-05-07 Ibm System and method for information collation
US7426543B2 (en) 2003-04-25 2008-09-16 Sap Ag Accessing data stored in multiple locations
US7349929B2 (en) 2003-04-25 2008-03-25 Sap Ag Accessing data based on user identity
US7506069B2 (en) 2003-04-25 2009-03-17 Sap Ag Accessing data in a computer network
US7890928B2 (en) 2003-07-26 2011-02-15 Pilla Gurumurty Patrudu Mechanism and system for representing and processing rules
US20050033811A1 (en) 2003-08-07 2005-02-10 International Business Machines Corporation Collaborative email
JP2005131915A (ja) 2003-10-30 2005-05-26 Seiko Epson Corp 印刷装置および印刷方法並びに印刷装置用のプログラム
US20050125461A1 (en) 2003-12-08 2005-06-09 International Business Machines Corporation Version control of metadata
GB2410814A (en) 2004-02-05 2005-08-10 Stephen John Doyle Document conversion enabling browser content across different types of terminal devices
US7812860B2 (en) 2004-04-01 2010-10-12 Exbiblio B.V. Handheld device for capturing text from both a document printed on paper and a document displayed on a dynamic display device
US7818679B2 (en) 2004-04-20 2010-10-19 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US7487448B2 (en) 2004-04-30 2009-02-03 Microsoft Corporation Document mark up methods and systems
US20060031751A1 (en) 2004-05-26 2006-02-09 Shai Ehud Method for creating editable web sites with increased performance & stability
WO2006026578A2 (en) * 2004-08-27 2006-03-09 Peng Tao Online annotation management system and method
US7707498B2 (en) 2004-09-30 2010-04-27 Microsoft Corporation Specific type content manager in an electronic document
US7656543B2 (en) 2004-11-12 2010-02-02 Hewlett-Packard Development Company, L.P. Albuming images
US8065604B2 (en) 2004-12-30 2011-11-22 Massachusetts Institute Of Technology Techniques for relating arbitrary metadata to media files
US7792788B2 (en) * 2005-03-04 2010-09-07 Microsoft Corporation Method and system for resolving conflicts operations in a collaborative editing environment
US7653875B2 (en) 2005-04-07 2010-01-26 Microsoft Corporation Browser sensitive web content delivery
US20060248121A1 (en) 2005-04-15 2006-11-02 Michael Cacenco System and method for supporting packaging, publishing and republishing of wireless component applications
US7491399B2 (en) 2005-06-23 2009-02-17 University Of Maryland Biotechnology Institute In Ovo vaccine against infectious bursal disease
US8539604B2 (en) 2005-08-03 2013-09-17 International Business Machines Corporation Method, system and program product for versioning access control settings
US7953696B2 (en) 2005-09-09 2011-05-31 Microsoft Corporation Real-time synchronization of XML data between applications
US20070061714A1 (en) 2005-09-09 2007-03-15 Microsoft Corporation Quick styles for formatting of documents
CA2621488A1 (en) 2005-09-13 2007-03-22 Spacetime3D, Inc. System and method for providing three-dimensional graphical user interface
US20070073899A1 (en) 2005-09-15 2007-03-29 Judge Francis P Techniques to synchronize heterogeneous data sources
US7958448B2 (en) 2005-10-25 2011-06-07 Celartem, Inc. Systems, methods, user interfaces, and computer-readable media for activating and managing fonts
CA2524527A1 (en) 2005-10-26 2007-04-26 Ibm Canada Limited - Ibm Canada Limitee Systems, methods and tools for facilitating group collaborations
GB0523703D0 (en) * 2005-11-22 2005-12-28 Ibm Collaborative editing of a document
US7774703B2 (en) 2006-02-09 2010-08-10 Microsoft Corporation Virtual shadow awareness for multi-user editors
US20070220068A1 (en) 2006-02-15 2007-09-20 Bruce Thompson Electronic document and business process control
US8307119B2 (en) 2006-03-31 2012-11-06 Google Inc. Collaborative online spreadsheet application
US7743018B2 (en) 2006-04-10 2010-06-22 International Business Machines Corporation Transient storage in distributed collaborative computing environments
US8230351B2 (en) * 2006-04-11 2012-07-24 Sri International Method and apparatus for collaborative work
US7769727B2 (en) 2006-05-31 2010-08-03 Microsoft Corporation Resolving update-delete conflicts
JP4795127B2 (ja) 2006-06-06 2011-10-19 三菱電機株式会社 液晶表示装置およびその製造方法
US8745227B2 (en) 2006-06-07 2014-06-03 Apple Inc. Distributed secure content delivery
US8250082B2 (en) 2006-06-23 2012-08-21 Microsoft Corporation Cross domain communication
US20080028302A1 (en) 2006-07-31 2008-01-31 Steffen Meschkat Method and apparatus for incrementally updating a web page
US20080059539A1 (en) 2006-08-08 2008-03-06 Richard Chin Document Collaboration System and Method
JP4979312B2 (ja) 2006-09-09 2012-07-18 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7624145B2 (en) 2007-01-06 2009-11-24 Microsoft Corporation Persistent collaborative framework for interactive web applications
US8019780B1 (en) 2007-03-30 2011-09-13 Google Inc. Handling document revision history information in the presence of a multi-user permissions model
US8190987B2 (en) 2007-10-25 2012-05-29 Microsoft Corporation Private views of data and local calculations during real time collaboration
US20090192845A1 (en) 2008-01-30 2009-07-30 Microsoft Corporation Integrated real time collaboration experiences with online workspace
US9436927B2 (en) 2008-03-14 2016-09-06 Microsoft Technology Licensing, Llc Web-based multiuser collaboration
GB2458388A (en) 2008-03-21 2009-09-23 Dressbot Inc A collaborative online shopping environment, virtual mall, store, etc. in which payments may be shared, products recommended and users modelled.
CN101556593A (zh) * 2008-04-11 2009-10-14 北京亿企通信息技术有限公司 一种多人协同工作文档管理的方法和系统
US7478330B1 (en) 2008-04-30 2009-01-13 International Business Machines Corporation Systems and methods involving improved web browsing
US8209706B2 (en) 2008-06-27 2012-06-26 Microsoft Corporation Inter-frame messaging between different domains
US8321783B2 (en) 2008-09-30 2012-11-27 Apple Inc. Visualizing content positioning within a document using layers
US8073812B2 (en) 2008-10-15 2011-12-06 Microsoft Corporation Preserving user intention in distributed data systems
US20100153948A1 (en) 2008-12-11 2010-06-17 Ghost, Inc. Combined web and local computing environment
US7962547B2 (en) 2009-01-08 2011-06-14 International Business Machines Corporation Method for server-side logging of client browser state through markup language
JP2010181978A (ja) * 2009-02-03 2010-08-19 Seiko Epson Corp 共同作業装置及び共同作業の制御方法
US8775939B2 (en) 2009-02-20 2014-07-08 Fuji Xerox Co., Ltd. Systems and methods for audience-enabled access to presentation content
US8700776B2 (en) 2009-03-23 2014-04-15 Google Inc. System and method for editing a conversation in a hosted conversation system
US8446377B2 (en) 2009-03-24 2013-05-21 Microsoft Corporation Dual screen portable touch sensitive computing system
US8782524B2 (en) 2009-03-31 2014-07-15 Samsung Electronics Co., Ltd Method and apparatus for controlling presentation slides
US8179417B2 (en) * 2009-07-22 2012-05-15 Hewlett-Packard Development Company, L.P. Video collaboration
US8327812B2 (en) 2009-07-24 2012-12-11 Deere & Company Nucleate boiling cooling system
US9049258B2 (en) 2009-09-17 2015-06-02 Border Stylo, LLC Systems and methods for anchoring content objects to structured documents
JP5503300B2 (ja) 2010-01-14 2014-05-28 株式会社ジャパンディスプレイ 液晶表示装置の製造方法、液晶表示装置および電子機器
US20110178981A1 (en) 2010-01-21 2011-07-21 International Business Machines Corporation Collecting community feedback for collaborative document development
US8572022B2 (en) 2010-03-02 2013-10-29 Microsoft Corporation Automatic synchronization conflict resolution
US8892632B2 (en) 2010-06-04 2014-11-18 Microsoft Corporation Client-server interaction frequency control
US20120072819A1 (en) 2010-09-21 2012-03-22 Google, Inc. Asynchronous Redrawing in Online Document Processors
CN106202021A (zh) 2010-11-02 2016-12-07 谷歌公司 由多个用户对博客的实时同步文档编辑

Also Published As

Publication number Publication date
CN102934105A (zh) 2013-02-13
EP3214556A3 (de) 2017-10-18
US20110252339A1 (en) 2011-10-13
US10082927B2 (en) 2018-09-25
CN106445194A (zh) 2017-02-22
WO2011130286A1 (en) 2011-10-20
US9280529B2 (en) 2016-03-08
CN106445194B (zh) 2019-07-09
CN102934105B (zh) 2016-10-05
US20120110443A1 (en) 2012-05-03
EP3214556A2 (de) 2017-09-06
EP2558959A1 (de) 2013-02-20
CA2796299A1 (en) 2011-10-20
US20160139768A1 (en) 2016-05-19
AU2011240674B2 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
DE202011110880U1 (de) Kollaborative Cursors in einem gehosteten Textverarbeitungsprogramm
DE202011110867U1 (de) Rich-Text- und browserbasiertes Textverarbeitungsprogramm
DE202011110879U1 (de) Rich-Content in einem Textverarbeitungssystem auf Browserbasis
US10678999B2 (en) Real-time collaboration in a hosted word processor
DE202011110886U1 (de) Synthetische Navigationselemente für elektronische Dokumente
DE202011110891U1 (de) Scrollen in umfangreichen gehosteten Datenbestand
AU2011240674A1 (en) Collaborative cursors in a hosted word processor
DE202013012499U1 (de) Hintergrundseite auf Browserebene zur Bereitstellung mehrfacher Ansichten
DE202011110894U1 (de) Serverbasierte gemeinsame Datennutzung in Computeranwendungen
US20110252335A1 (en) Zooming in a Web Browser
DE202010018484U1 (de) System für die Bearbeitung eines Gesprächs in einem gehosteten Gesprächssystem
DE202011110895U1 (de) Echtzeitsynchronisierte Bearbeitung von Dokumenten durch mehrere Benutzer für das Bloggen
US8839457B2 (en) Image storage in electronic documents

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
R151 Utility model maintained after payment of second maintenance fee after six years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R152 Utility model maintained after payment of third maintenance fee after eight years
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017240000

Ipc: G06F0040166000

R071 Expiry of right