General Undo Enhancements in Writer

OpenOffice.org 2.0

Document - ID	Specification Owner	Last Change	Status
	Henning Brinkmann / Éric Savary	2004-07-15	Approved
Conforms to	
Applies to	Writer, Writer/Web
Task ID(s)	PCD EaseOfUse-25 - 116484, 116486, 116487, 115575, 115582, i30098
Category	Feature

Abstract

Some core functionality is needed to be undoable. Examples are changing styles, tables, fields. The representation of actions in the undo/redo stack needs to be verbose enough to allow an unambiguous mapping to the actions. Not only the kind of action is to be displayed but also information about the object. E.g., if the user deletes several words by backspace, he gets an undo action for each word. Without additional information about the deleted word it is difficult to see which entry in the undo stack belongs to which deleted word.

i-Team Members

	Name	E-mail Address
User Experience	Matthias Müller-Prove /MMP	mprove@sun.com
Development	Henning Brinkmann /HB	Henning.Brinkmann@sun.com
Quality Assurance	Éric Savary /ES	Eric.Savary@sun.com
Documentation	Uwe Fischer /UFI	Uwe.Fischer@sun.com
		mail to iTeam

Approved for Implementation

	Approved by	Date
User Experience	Matthias Müller-Prove /MMP	2004-06-22
Development	Henning Brinkmann /HB	2004-06-14
Quality Assurance	Éric Savary /ES	2004-06-09
Documentation	Uwe Fischer /UFI	2004-06-10
String Review	Paul Compton	2004-07-04

Document Change History

Rev. Level	Change	Initials	Date
draft		HB	2003-08-13
	change to latest spec template	MMP	2003-08-18
		HB	2003-08-25
	change to latest spec template and spec review	MMP	2003-11-03
	Requested changes after review	HB	2003-11-10
pre-final	move string lists to description of according features	HB	2003-11-21
draft	state returned to draft because many strings had been forgotten and thus not implemented.	ES	2004-04-17
draft	New string tables covering all possible undoable actions	ES	2004-06-09
Approved	Last approval on 2004-06-22. Going to string review.	ES	2004-06-22

Contents

Glossary	1

1	Motivation	1

2	User Scenarios	1

2.1.1	Use Case 1 – Styles	1

2.1.2	Use Case 2 – Update Indices	1

3	Goals	1

4	Requirements and Dependencies	2

4.1	Requirements	2

4.2	Technical Dependencies	2

5	Competitive Analyses	2

6	Detailed Specification	2

6.1	Undo of style changes	2

6.2	More verbosity in undo stack	2

6.3	Undo for TOXs	7

6.4	Error Conditions	8

6.5	General strin list table for all writer undoable actions	8

7	Future Tasks	14

8	Notes	14

9	References	14

Glossary

Term	Description
TOX	A TOX is one of table of contents alphabetical index illustration index table of objects user-defined index bibliography

Motivation

There are some actions that are desirable to be undoable. Some of these actions are changes to styles or indexes and tables.

Another advantage for usability would be more information provided for undo actions. Additionally to the kind of action information about the object of the undoable action could be displayed in the menu entry for undo/redo/repeat or the drop down list for undo/redo.

User Scenarios

The following two use cases are taken from the PCD EaseOfUse-25:

Use Case 1 – Styles

changing the page border with the mouse

changing background color of pages or paragraph styles

Problem: Changes to styles are generally not undoable.

Use Case 2 – Update Indices

Insert table of content, then change a header, then update table of content.

Problem: deletes the undo stack

Goals

The usability is to be increased by enabling undo for styles, indexes, and tables. Descriptions of undo action shall not only contain the kind of undo, but also give information about the object of the action.

Requirements and Dependencies

Requirements

<State the requirement(s) of this feature here.>

Technical Dependencies

<Are there any technical dependencies for this feature? Does the implementation of this feature create any technical dependencies to other program parts?>

Competitive Analyses

<Describe or reference to solutions which are already on the market. Describe what is done well or what is done bad.>

Detailed Specification

Undo of style changes

For OpenOffice.org 2.0 the ability to undo changes to styles is to be added. For each of character styles, paragraph styles, page styles and numbering rules an undo has to be implemented for creating, changing and deleting.

More verbosity in undo stack

The menu entries “Edit->Undo”, “Edit->Redo” and “Edit->Repeat” are disabled respectively if the according action is impossible. In this case the menu entries “Edit->Undo”, “Edit->Redo” and “Edit->Repeat” are labeled with STR_UNDO, STR_REDO, and STR_REPEAT respectively.

A more concrete representation for undoable actions like “Insert: 'Hello World!'” will be added in OpenOffice.org 2.0. The additional information will be shown in both the “Edit”-Menu and the toolbar popup (see illustration 1). To prevent a too large menu or popup at most twenty characters of additional information will be given. If the additional information is longer than twenty characters it will be shortened, i.e. inner characters will be removed to shorten the information string to twenty characters. The missing characters are indicated by STR_LDOTS.

Illustration 1Tool bar popup for Undo/Redo stack The algorithm to shorten the strings works as follows:

Let be the string to be shortened.

Let be the maximum length of the description string

Let be the length of STR_LDOTS

Let using integer division.

Let .

The shortened string is the concatenation of the first characters of and STR_LDOTS and the last characters of .

If text from the document is cited in the additional information it is shortened and then enclosed in STR_START_QUOTE and STR_END_QUOTE.

In the table below the additional information for the different actions is described. For details about descriptions of redlines see below.

Action	String (see String list)	Comment
Insert	STR_INSERT_UNDO	$1 is replaced by the inserted text. If more than twenty characters are inserted the replacement is shortened to twenty characters. If several paragraphs are inserted $1 will be replaced by STR_PARAGRAPHS.
Delete	STR_DELETE_UNDO	$1 is replaced by the deleted text. If more than twenty characters are deleted the replacement is shortened to twenty characters. If a multi-selection is deleted $1 is replaced by STR_MULTISEL.
Overwrite	STR_OVR_UNDO	$1 is replaced by the overwriting text, i.e. if “abc” is overwritten by “def” the latter is the replacement. Too long replacements are treated the same way as described for Insert.

Strings occurring in Undo/Redo stack popups:

Item	English	German	Comments
STR_START_QUOTE	'	'	Opening single quotation mark for around the text inserted at runtime where the placeholder “$1” is, like in: “Insert: 'abc'”; TRANSLATORS! If this character is not used in your language for this purpose, please use the appropriate character instead.
STR_END_QUOTE	'	'	Closing single quotation mark after “$1””; TRANSLATORS! If this character is not used in your language for this purpose, please use the appropriate character instead
STR_UNDO	Undo:	Rückgängig:	
STR_REDO	Redo:	Wiederherstellen:	
STR_REPEAT	Repeat:	Wiederholen:	
RID_SVXSTR_NUM_UNDO_ACTIONS	Undo $(ARG1) actions	Rückgängig: $(ARG1) Aktionen	TRANSLATORS! If necessary, add punctuation to make grammatical, for example, a colon after “undo”.
RID_SVXSTR_NUM_UNDO_ACTION	Undo $(ARG1) action	Rückgängig: $(ARG1) Aktion	TRANSLATORS! If necessary, add punctuation to make grammatical, for example, a colon after “undo”.

Strings used to assemble redline descriptions:

Item	English	German	Comments
STR_REDLINE_MULTIPLE	Multiple changes	mehrere Änderungen	
STR_REDLINE_INSERT	Insert $1	$1 einfügen	TRANSLATORS! This string appears after an introductory string and cannot have any punctuation. For example, “Insert: Insert 'xxxxx'.” Please arrange to make more grammatical for this usage.
STR_REDLINE_DELETE	Delete $1	$1 löschen	TRANSLATORS! This string appears after an introductory string and cannot have any punctuation. For example, “Insert: Insert 'xxxxx'.” Please arrange to make more grammatical for this usage.

Strings used to assemble descriptions of undo objects:

Item	English	German	Comments
STR_OCCURRENCES_OF	occurrences of	Vorkommen von	TRANSLATORS! This string appears between two other strings and is therefore not capitalized in English. Capitalize appropriately for your sentence structure.
STR_LDOTS	...	...	TRANSLATORS! This will appear within another string when the text needs to be shortened, for example, “Insert: 'abc...m'.” Please replace with appropriate punctuation if these characters are not used for this purpose in your language. ATTENTION: “...” are three characters!
STR_YIELDS	->	->	TRANSLATORS! This is to signify an arrow. Please do not change!

Undo for TOXs

All changes to a TOX will be undoable in OpenOffice.org 2.0. The undo stack will not be cleared by changes to a TOX.

Strings for the TOXs

Item	English	German	Comments
Indexes and Tables insert	Insert index/table	Verzeichnis einfügen	TRANSLATORS! “Table” here is for a table of contents, references, illustrations, etc., not a table as in a set of cells in rows and columns. If there is a single word in your language to represent these tables and indexes, use that.
Indexes and Tables delete	Delete index/table	Verzeichnis löschen	TRANSLATORS! “Table” here is for a table of contents, references, illustrations, etc., not a table as in a set of cells in rows and columns. If there is a single word in your language to represent these tables and indexes, use that.
Indexes and Tables Rename	Rename index '$1' -> '$2'	Verzeichnis umbenennen: '$1' -> '$2'	$1 is the replaced string $2 is the replacement string
Index entry Insert	Insert index entry	Verzeichniseintrag einfügen	
Index entry Delete	Delete index entry	Verzeichniseintrag löschen	
Bibliography entry Insert	Insert bibliography entry	Bibliographie Eintrag einfügen	
Bibliography entry delete	Delete bibliography entry	Bibliographie Eintrag löschen	

Tab Order

none

Key Board Shortcuts

none

Error Conditions

none

General string list for all undoable actions in Writer

Item	English	Deutsch	Comments
Text Type	Typing: '$1'	Eingabe: '$1'	$1 is the typed string
Text type tab	Typing: $1 tab(s)	Eingabe: $1 tab(s)	$1 is the number of tabs typed
Text delete tab	Delete $1 tab(s)	$1 tab(s) löschen	$1 is the number of tabs deleted
Text Overwrite	Overwrite: '$1'	Überschreiben: '$1'	$1 is the overwritten string
Text Replace	Replace: '$1' -> '$2'	Ersetzen: '$1' -> '$2'	$1 is the replaced string $2 is the replacement string
Text Replace all	Replace: $1 occurrences of '$2'	Ersetzen: $1 Vorkommen von '$2'	$1 number of occurrences $2 is the replaced string
Text Sort	Sort text	Text sortieren	
Text Convert to table	Convert text -> table	Konvertierung Text -> Tabelle	
Paragraph Insert	New paragraph	Neuer Absatz	
Paragraph Delete	Delete paragraph	Absatz löschen	
Copy/Paste	Paste clipboard	Zwischenablage einfügen	
Changes Accept	Accept change: $1	Änderung akzeptieren: $1	$1 is the name of accepted change
Changes Reject	Reject change: $1	Änderung ablehnen: $1	$1 is the name of rejected change
Text Drag&Move	Move: '$1'	Verschieben: '$1'	$1 is the moved string
Multi-selection Copy/Paste	Copy: multiple selection	Mehrfachauswahl kopieren	
Multi-selection Delete	Delete: multiple selection	Mehrfachauswahl löschen	
Multi-selection Drag&Copy	Copy: multiple selection	Mehrfachauswahl kopieren	
Multi-selection Drag&Move	Move: multiple selection	Mehrfachauswahl verschieben	
line break Insert	Insert line break	Zeilenumbruch einfügen	
line break Delete	Delete line break	Zeilenumbruch löschen	
column break Insert	Insert column break	Spaltenumbruch einfügen	
column break Delete	Delete column break	Spaltenumbruch löschen	
page break Insert	Insert page break	Seitenumbruch einfügen	
page break Delete	Delete page break	Seitenumbruch löschen	
Fields Insert	Insert field	Feld einfügen	
Fields Modify	Change field	Feld ändern	
Fields Delete	Delete field	Feld löschen	
Special Character Insert	Insert special character	Sonderzeichen einfügen	
Style Apply	Apply style: $1	Formatvorlage anwenden: $1	$1 is the name of the applied style
Style Modify	Change style: $1	Formatvorlage ändern: $1	$1 is the name of the changed style
Style Find&Replace	Replace style: '$1' -> '$2'	Formatvorlage ersetzen: '$1' -> '$2'	$1 is the replaced style $2 is the replacement style
Style Replace All	Replace: $1 occurrences of '$2'	Ersetzen: $1 Vorkommen von '$2'	$1 number of occurrences $2 is the replaced style
Style Promote outline	Promote style level	Ebene erhöhen	
Style Demote outline	Demote style level	Ebene senken	
Section Insert	Insert section	Bereich einfügen	
Section Modify	Modify section	Bereich ändern	
Section Delete	Delete section	Bereich löschen	
Hyperlink Insert (as text)	Insert hyperlink	Hyperlink einfügen	
Hyperlink Insert (as URL button)	Insert hyperlink	Hyperlink einfügen	
Header Insert	Insert header	Kopfzeile einfügen	
Header Delete	Delete header/footer	Kopfzeile löschen	
Footer Insert	Insert footer	Fußzeile einfügen	
Footer Delete	Delete footer	Fußzeile löschen	
Footnote Insert	Insert footnote	Fußnote einfügen	
Footnote Delete	Delete footnote	Fußnote löschen	
Footnote Modify	Modify footnote	Fußnote ändern	
Footnote Modify options	Modify footnote options	Fußnoteneinstellungen ändern	
Caption insert	Insert Caption: '$1'	Beschriftung einfügen: '$1'	$1 is the caption text
AutoText Insert	Insert AutoText	AutoText einfügen	
Bookmark Insert	Insert bookmark: '$1'	Textmarke einfügen: $1	$1 is the bookmark name
Bookmark Rename	Rename bookmark: '$1' -> '$2'	Textmarke umbenennen : $1 -> $2	$1 is the old bookmark name $1 is the new bookmark name
Bookmark Delete	Delete bookmark: '$1'	Textmarke löschen: '$1'	$1 is the bookmark name
Note Insert	Insert note: '$1'	Notiz einfügen: '$1'	$1 is the note name
Note Delete	Delete note '$1'	Notiz löschen: '$1'	$1 is the note name
Script Insert	Insert script	Skript einfügen	
Script Delete	Delete script	Skript löschen	
Frame Insert	Insert frame: '$1'	Rahmen einfügen: '$1'	$1 is the frame name
Frame Delete	Delete frame: '$1'	Rahmen löschen: '$1'	$1 is the frame name
Frame Rename (over the Navigator)	Rename frame: '$1' -> '$2'	Rahmen umbenennen '$1' -> '$2'	$1 is the replaced string $2 is the replacement string
Table Insert	Insert table: '$1'	Tabelle einfügen: '$1'	$1 is the table name
Table Delete (over the Navigator)	Delete table: '$1'	Tabelle löschen: '$1'	$1 is the table name
Table Insert row	Insert row	Zeile einfügen	
Table Insert column	Insert column	Spalte einfügen	
Table Delete row	Delete row	Zeile löschen	
Table Delete column	Delete column	Spalte löschen	
Table Format Cell	Format cell	Zelle formatieren	
Table Apply attributes	Apply table attributes	Tabellenattribute anwenden	
Table Merge	Merge tables	Tabellen verbinden	
Table Split	Split table	Tabelle auftrennen	
Table Sort	Sort table	Tabelle sortieren	
Table Convert to text	Convert table -> text	Konvertierung Tabelle -> Text	
Horizontal Ruler Insert	Insert horizontal line	Horizontale Linie einfügen	
Pictures Insert From file	Insert picture	Bild einfügen	
Pictures Delete	Delete picture	Bild löschen	
Pictures Insert from the Gallery	Insert picture	Bild einfügen	
Pictures Replace from the Gallery	Replace picture	Bild ersetzen	
Objects Insert	Insert object: '$1'	Objekt einfügen: '$1'	$1 is the object name
Objects Delete	Delete object: '$1'	Objekt löschen: '$1'	$1 is the object name
Floating Frame Insert	Insert floating frame	Frame einfügen	
Floating Frame Delete	Delete floating frame	Frame löschen	
File	Insert file: '$1'	Datei einfügen: '$1'	
Asian Phonetic Guides	Asian Phonetic Guides	Phonetische Lesezeichen setzen	
Numbering	numbering	Nummerierung	when pressing the bullet or the numbering button or after Numbering dialog closed with ok. was: Applied attributes
AutoCorrect Use replacement table	AutoCorrect	AutoKorrektur	
AutoCorrect Correct TWo INitial CApitals	AutoCorrect	AutoKorrektur	
AutoCorrect Capitalize first letter of every sentence	AutoCorrect	AutoKorrektur	
AutoFormat Automatic bold and _underline_	AutoFormat	AutoFormat	
AutoFormat URL Recognition	AutoFormat	AutoFormat	
AutoFormat Replace 1st... with 1^st...	AutoFormat	AutoFormat	
AutoFormat Replace 1/2 ... with ½	AutoFormat	AutoFormat	
AutoFormat Replace dashes	AutoFormat	AutoFormat	
AutoFormat Delete spaces and tabs at beginning and end of paragraph	AutoFormat	AutoFormat	
AutoFormat Delete spaces and tabs at end and start of line	AutoFormat	AutoFormat	
AutoFormat Apply numbering - symbol: "	AutoFormat	AutoFormat	
AutoFormat Apply border	AutoFormat	AutoFormat	
AutoFormat Create table	AutoFormat	AutoFormat	
AutoFormat Apply Styles	AutoFormat	AutoFormat	
AutoFormat Remove blank paragraphs	AutoFormat	AutoFormat	
AutoFormat Replace Custom Styles	AutoFormat	AutoFormat	
AutoFormat Replace bullets with. "	AutoFormat	AutoFormat	
AutoFormat Replace"standard" quotes with custom quotes	AutoFormat	AutoFormat	
AutoFormat Combine single line paragraphs if length greater than 50%	AutoFormat	AutoFormat	
Draw object Insert	Insert $1	$1 einfügen	$1 is the draw object type (see below)
Draw object Line	Line	Linie	
Draw object Rectangle	Rectangle	Rechteck	
Draw object Ellipse	Ellipse	Ellipse	
Draw object Polygon	Polygon with $1 points	Polygon mit $1 Punkten	$1 is the number of points
Draw object curve	Curve	Kurve	
Draw object Freeform curve	Freeform curve	Freihand Kurve	
Draw object Elliptical arc	Elliptical arc	Ellipsenbogen	
Draw object Ellipse pie	Ellipse pie	Ellipsenausschnitt	
Draw object Ellipse segment	Ellipse segment	Ellipsenabschnitt	
Draw object Text frame	Text frame	Textrahmen	
Draw object Callout	Legend	Legende	Please take care that Callout is always replaced by Legend in all other slots!
Draw object Group	Group $1 draw objects	$1 Zeichenobjekte gruppieren	$1 is the number of draw objects String appears when objects of different types are grouped
Draw object Group	Group $1 $2	$1 $2 gruppieren	$1 is the number of draw objects. $2 is the object type (must be a plural! Eg: rectangle*s*) String appears when objects of the same type are grouped
Plural Draw Object Types	Rectangles	Rechtecke	Plural of $2 mentioned in “Draw object Group”
Plural Draw Object Types	Squares	Quadrate	Plural of $2 mentioned in “Draw object Group”
Plural Draw Object Types	Eclipse	Ellipsen	Plural of $2 mentioned in “Draw object Group”
Plural Draw Object Types	Circle	Kreise	Plural of $2 mentioned in “Draw object Group”
Plural Draw Object Types	Pies	Sektoren	Plural of $2 mentioned in “Draw object Group”
Plural Draw Object Types	Segments	Segmente	Plural of $2 mentioned in “Draw object Group”
Plural Draw Object Types	3D scenes	3D Szenen	Plural of $2 mentioned in “Draw object Group”
Draw object Ungroup	Ungroup $1 objects	Gruppierung auflösen: $1 Zeichenobjekte	$1 is the number of draw objects to be ungrouped
Draw object Delete	Delete $1	$1 löschen	$1 is the draw object type
Form control insert	Insert control	Kontrollfeld einfügen	
Form control delete	Delete control	Kontrollfeld löschen	
Form control resize	Resize control	Größe von Kontrollfeld ändern	
Form control move	Move control	Kontrollfeld verschieben	
Form control replace	Replace control	Kontrollfeld ersetzen	
Form control change property	Set property '$1'	Setzen der Eigenschaft '$1'	$1 is the property name
Spell Check Context menu replace	Replace: '$1' -> '$1'	Ersetzen: '$1' -> '$1'	$1 is the replaced word $2 is the replacement word
Spell Check dialog replace	Replace: '$1' -> '$1'	Ersetzen: '$1' -> '$1'	$1 is the replaced word $2 is the replacement word

Future Tasks

none

Notes

References

none

<Required – This paragraphs gives the audience idea of what to aspect from this document. It should be described shortly what problem will be solved.>

The source of software product implementation and change is the I-Team (Implementation Team). I-Teams are typically comprised of people who have skills in the areas of Product Marketing, Development Engineering, Technical Publications, and Test Engineering. I-Teams define the features or set of changes (based on input from SCs, customers, Engineering, or Marketing), plan the implementation project, perform the implementation and testing...

<Required. It makes sense to describe or visualize the tabbing order. The description of the tab order has to contain which control has the initial focus.>

<Required - Key Board shortcuts used in dialogs have to be listed in a table with a small description.>

<Required - List all error conditions, and the action the system takes about them. If an alert box comes up, which kind is it? Include exact text of messages, or say what points need to be covered. Error Messages need a string list>

<Recommended - If there are features which couldn't be implemented but have to be implemented in the future. State these in here with a description why the feature couldn't be implemented right now.>

<Recommended - Questions will arise during the writing of the specification. State these in here.>

Required - Give references to related documentation, such as engineering designs, technical specs, and other sources for related units. Also include links to documents that other sections in this spec need to refer to, such as user opinions usability test reports.

General Undo Enhancements in Writer

Page 5

http://specs.openoffice.org/writer/undo/Undo_GeneralWriter.sxw

Matthias Müller-Prove

2003-11-03T11:21:35

Falko Tesch

Matthias Müller-Prove