// $Id = DropboxFile.js,v 1.12 2010-01-02 09 =45 =14 gaudenz Exp $ // Copyright (c) 2006-2014, JGraph Ltd /** * Constructs a new point for the optional x and y coordinates. If no * coordinates are given, then the default values for and are used. * @constructor * @class Implements a basic 2D point. Known subclassers = {@link mxRectangle}. * @param {number} x X-coordinate of the point. * @param {number} y Y-coordinate of the point. */ OneDriveFile = function(ui, data, meta) { DrawioFile.call(this, ui, data); this.meta = meta; }; //Extends mxEventSource mxUtils.extend(OneDriveFile, DrawioFile); /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.getHash = function() { return 'W' + encodeURIComponent(this.meta.id); }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.getMode = function() { return App.MODE_ONEDRIVE; }; /** * Overridden to enable the autosave option in the document properties dialog. */ OneDriveFile.prototype.isAutosaveOptional = function() { return true; }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.getTitle = function() { return this.meta.name; }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.isRenamable = function() { return true; }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.save = function(revision, success, error) { this.doSave(this.getTitle(), success, error); }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.saveAs = function(title, success, error) { this.doSave(title, success, error); }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.doSave = function(title, success, error) { DrawioFile.prototype.save.apply(this, arguments); this.saveFile(title, false, success, error); }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.saveFile = function(title, revision, success, error) { if (!this.isEditable()) { if (success != null) { success(); } } else if (!this.savingFile) { this.savingFile = true; if (this.getTitle() == title) { // Makes sure no changes get lost while the file is saved var prevModified = this.isModified; var modified = this.isModified(); this.setModified(false); this.ui.oneDrive.saveFile(this, mxUtils.bind(this, function(meta) { this.savingFile = false; this.isModified = prevModified; this.meta = meta; this.contentChanged(); if (success != null) { success(); } }), mxUtils.bind(this, function(resp) { this.savingFile = false; this.isModified = prevModified; this.setModified(modified || this.isModified()); if (error != null) { error(resp); } })); } else { this.ui.oneDrive.insertFile(title, this.getData(), mxUtils.bind(this, function(file) { this.savingFile = false; if (success != null) { success(); } this.ui.fileLoaded(file); }), function() { this.savingFile = false; if (error != null) { error(); } }); } } else if (error != null) { error({code: App.ERROR_BUSY}); } }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.rename = function(title, success, error) { this.ui.oneDrive.renameFile(this, title, mxUtils.bind(this, function(meta) { if (!this.hasSameExtension(title, this.getTitle())) { this.meta = meta; this.save(true, success, error); } else { this.meta = meta; this.descriptorChanged(); if (success != null) { success(); } } }), error); }; /** * Translates this point by the given vector. * * @param {number} dx X-coordinate of the translation. * @param {number} dy Y-coordinate of the translation. */ OneDriveFile.prototype.move = function(folderId, success, error) { this.ui.oneDrive.moveFile(this.meta.id, folderId, mxUtils.bind(this, function(meta) { this.meta = meta; this.descriptorChanged(); if (success != null) { success(meta); } }), error); };