Sync with webodf 1875ef27bc220bc49dc6092e7de9b5e184c2e855

* adds support for direct text styling:
  + bold
  + italic
  + underline
  + strikethrough,
  + font
  + fontsize
* fixes broken OT on selections vs. other editing operations
* performance improvements with big documents
pull/1/head
Friedrich W. H. Kossebau 11 years ago
parent d968b2afe5
commit 15b7bdfd9d

@ -127,6 +127,36 @@ define("webodf/editor/Editor", [
initDocLoading(docUrl, memberId, editorReadyCallback);
};
/**
* Closes a single-user document, and does cleanup.
* @param {!function(!Object=)} callback, passing an error object in case of error
* @return undefined;
*/
this.closeDocument = function (callback) {
runtime.assert(session, "session should exist here.");
session.close(function (err) {
if (err) {
callback(err);
} else {
editorSession.destroy(function (err) {
if (err) {
callback(err);
} else {
editorSession = undefined;
session.destroy(function (err) {
if (err) {
callback(err);
} else {
session = undefined;
callback();
}
});
}
});
}
});
};
/**
* @param {!string} filename
* @param {?function()} callback
@ -188,34 +218,26 @@ define("webodf/editor/Editor", [
* @param {!function(!Object=)} callback, passing an error object in case of error
* @return {undefined}
*/
this.close = function (callback) {
this.closeSession = function (callback) {
runtime.assert(session, "session should exist here.");
// TODO: there is a better pattern for this instead of unrolling
editorSession.close(function(err) {
session.close(function(err) {
if (err) {
callback(err);
} else {
session.close(function(err) {
// now also destroy session, will not be reused for new document
memberListView.setEditorSession(undefined);
editorSession.destroy(function(err) {
if (err) {
callback(err);
} else {
// now also destroy session, will not be reused for new document
if (memberListView) {
memberListView.setEditorSession(undefined);
}
editorSession.destroy(function(err) {
editorSession = undefined;
session.destroy(function(err) {
if (err) {
callback(err);
} else {
editorSession = undefined;
session.destroy(function(err) {
if (err) {
callback(err);
} else {
session = undefined;
callback();
}
});
session = undefined;
callback();
}
});
}
@ -294,7 +316,7 @@ define("webodf/editor/Editor", [
canvasElement = document.getElementById("canvas"),
memberListElement = document.getElementById('memberList'),
collabEditing = Boolean(server),
directStylingEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
directParagraphStylingEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
imageInsertingEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
// annotations not yet properly supported for OT
annotationsEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
@ -360,7 +382,7 @@ define("webodf/editor/Editor", [
loadOdtFile: loadOdtFile,
saveOdtFile: saveOdtFile,
close: close,
directStylingEnabled: directStylingEnabled,
directParagraphStylingEnabled: directParagraphStylingEnabled,
imageInsertingEnabled: imageInsertingEnabled,
annotationsEnabled: annotationsEnabled,
undoRedoEnabled: undoRedoEnabled
@ -380,7 +402,7 @@ define("webodf/editor/Editor", [
session = new ops.Session(odfCanvas);
editorSession = new EditorSession(session, pendingMemberId, {
viewOptions: viewOptions,
directStylingEnabled: directStylingEnabled,
directParagraphStylingEnabled: directParagraphStylingEnabled,
imageInsertingEnabled: imageInsertingEnabled
});
if (undoRedoEnabled) {

@ -65,7 +65,7 @@ define("webodf/editor/EditorSession", [
* Instantiate a new editor session attached to an existing operation session
* @param {!ops.Session} session
* @param {!string} localMemberId
* @param {{viewOptions:gui.SessionViewOptions,directStylingEnabled:boolean}} config
* @param {{viewOptions:gui.SessionViewOptions,directParagraphStylingEnabled:boolean}} config
* @constructor
*/
var EditorSession = function EditorSession(session, localMemberId, config) {
@ -512,28 +512,6 @@ define("webodf/editor/EditorSession", [
self.sessionController.getTextManipulator().removeCurrentSelection();
self.sessionController.getImageManager().insertImage(mimetype, content, width, height);
};
/**
* @param {!function(!Object=)} callback, passing an error object in case of error
* @return {undefined}
*/
this.close = function (callback) {
callback();
/*
self.sessionView.close(function(err) {
if (err) {
callback(err);
} else {
caretManager.close(function(err) {
if (err) {
callback(err);
} else {
self.sessionController.close(callback);
}
});
}
});
*/
};
/**
* @param {!function(!Object=)} callback, passing an error object in case of error
@ -592,7 +570,7 @@ define("webodf/editor/EditorSession", [
head.appendChild(fontStyles);
self.sessionController = new gui.SessionController(session, localMemberId, shadowCursor, {
directStylingEnabled: config.directStylingEnabled
directParagraphStylingEnabled: config.directParagraphStylingEnabled
});
caretManager = new gui.CaretManager(self.sessionController);
selectionViewManager = new gui.SelectionViewManager();

@ -141,17 +141,15 @@ define("webodf/editor/Tools", [
}
// Simple Style Selector [B, I, U, S]
if (args.directStylingEnabled) {
simpleStyles = new SimpleStyles(function (widget) {
widget.placeAt(toolbar);
widget.startup();
});
sessionSubscribers.push(simpleStyles);
simpleStyles.onToolDone = onToolDone;
}
simpleStyles = new SimpleStyles(function (widget) {
widget.placeAt(toolbar);
widget.startup();
});
sessionSubscribers.push(simpleStyles);
simpleStyles.onToolDone = onToolDone;
// Paragraph direct alignment buttons
if (args.directStylingEnabled) {
if (args.directParagraphStylingEnabled) {
paragraphAlignment = new ParagraphAlignment(function (widget) {
widget.placeAt(toolbar);
widget.startup();

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -278,7 +278,7 @@ var documentsMain = {
parent.location.hash = "";
documentsMain.webodfEditorInstance.endEditing();
documentsMain.webodfEditorInstance.close(function() {
documentsMain.webodfEditorInstance.closeSession(function() {
// successfull shutdown - all is good.
// TODO: proper session leaving call to server, either by webodfServerInstance or custom
// documentsMain.webodfServerInstance.leaveSession(sessionId, memberId, function() {

Loading…
Cancel
Save