/* * Copyright [2011] [wisemapping] * * Licensed under WiseMapping Public License, Version 1.0 (the "License"). * It is basically the Apache License, Version 2.0 (the "License") plus the * "powered by wisemapping" text requirement on every single page; * you may not use this file except in compliance with the License. * You may obtain a copy of the license at * * http://www.wisemapping.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ mindplot.TopicEventDispatcher = new Class({ Extends: Events, Static: { _instance: null, configure: function(readOnly) { this._instance = new mindplot.TopicEventDispatcher(readOnly); }, getInstance : function() { return this._instance; } }, initialize:function(readOnly) { this._readOnly = readOnly; this._activeEditor = null; this._multilineEditor = new mindplot.MultilineTextEditor(); }, close : function(update) { if (this.isVisible()) { this._activeEditor.close(update); this._activeEditor = null; } }, show : function(topic, options) { this.process(mindplot.TopicEvent.EDIT, topic, options); }, process : function(eventType, topic, options) { $assert(eventType, "eventType can not be null"); // Close all previous open editor .... if (this.isVisible()) { this.close(); } // Open the new editor ... var model = topic.getModel(); if (model.getShapeType() != mindplot.model.TopicShape.IMAGE && !this._readOnly && eventType == mindplot.TopicEvent.EDIT) { this._multilineEditor.show(topic, options ? options.text : null); this._activeEditor = this._multilineEditor; } else { this.fireEvent(eventType, {model:model,readOnly:this._readOnly}); } }, isVisible: function() { return this._activeEditor != null && this._activeEditor.isVisible(); } }); mindplot.TopicEvent = { EDIT : "editnode", CLICK : "clicknode" };