|  |  | 
 |  |  |  * | 
 |  |  |  * Licensed under the Apache License, Version 2 | 
 |  |  |  * | 
 |  |  |  * Copyright(c) 2010 Jacques Distler  | 
 |  |  |  * Copyright(c) 2010 Alexis Deveria  | 
 |  |  |  * Copyright(c) 2010 Jacques Distler | 
 |  |  |  * Copyright(c) 2010 Alexis Deveria | 
 |  |  |  * | 
 |  |  |  */ | 
 |  |  |  | 
 |  |  | 
 |  |  |       svgdoc = S.svgroot.parentNode.ownerDocument, | 
 |  |  |       started, | 
 |  |  |       newFO; | 
 |  |  |        | 
 |  |  |        | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     var properlySourceSizeTextArea = function(){ | 
 |  |  |       // TODO: remove magic numbers here and get values from CSS | 
 |  |  |       var height = $('#svg_source_container').height() - 80; | 
 |  |  | 
 |  |  |       var fc_rules = $('#fc_rules'); | 
 |  |  |       if(!fc_rules.length) { | 
 |  |  |         fc_rules = $('<style id="fc_rules"><\/style>').appendTo('head'); | 
 |  |  |       }  | 
 |  |  |       } | 
 |  |  |       fc_rules.text(!on?"":" #tool_topath { display: none !important; }"); | 
 |  |  |       $('#foreignObject_panel').toggle(on); | 
 |  |  |     } | 
 |  |  | 
 |  |  |       $('#tool_source_save, #tool_source_cancel').toggle(!on); | 
 |  |  |       $('#foreign_save, #foreign_cancel').toggle(on); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |        | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     // Function: setForeignString(xmlString, elt) | 
 |  |  |     // This function sets the content of element elt to the input XML. | 
 |  |  |     // | 
 |  |  | 
 |  |  |         console.log(e); | 
 |  |  |         return false; | 
 |  |  |       } | 
 |  |  |    | 
 |  |  |  | 
 |  |  |       return true; | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  | 
 |  |  |       properlySourceSizeTextArea(); | 
 |  |  |       $('#svg_source_textarea').focus(); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |  | 
 |  |  |     function setAttr(attr, val) { | 
 |  |  |       svgCanvas.changeSelectedAttribute(attr, val); | 
 |  |  |       S.call("changed", selElems); | 
 |  |  |     } | 
 |  |  |      | 
 |  |  |      | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     return { | 
 |  |  |       name: "foreignObject", | 
 |  |  |       svgicons: "extensions/foreignobject-icons.xml", | 
 |  |  | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       }], | 
 |  |  |        | 
 |  |  |  | 
 |  |  |       context_tools: [{ | 
 |  |  |         type: "input", | 
 |  |  |         panel: "foreignObject_panel", | 
 |  |  | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |        | 
 |  |  |        | 
 |  |  |  | 
 |  |  |  | 
 |  |  |       ], | 
 |  |  |       callback: function() { | 
 |  |  |         $('#foreignObject_panel').hide(); | 
 |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // TODO: Needs to be done after orig icon loads | 
 |  |  |         setTimeout(function() {        | 
 |  |  |         setTimeout(function() { | 
 |  |  |           // Create source save/cancel buttons | 
 |  |  |           var save = $('#tool_source_save').clone() | 
 |  |  |             .hide().attr('id', 'foreign_save').unbind() | 
 |  |  |             .appendTo("#tool_source_back").click(function() { | 
 |  |  |                | 
 |  |  |  | 
 |  |  |               if (!editingforeign) return; | 
 |  |  |  | 
 |  |  |               if (!setForeignString($('#svg_source_textarea').val())) { | 
 |  |  | 
 |  |  |               } else { | 
 |  |  |                 endChanges(); | 
 |  |  |               } | 
 |  |  |               // setSelectMode();  | 
 |  |  |               // setSelectMode(); | 
 |  |  |             }); | 
 |  |  |              | 
 |  |  |  | 
 |  |  |           var cancel = $('#tool_source_cancel').clone() | 
 |  |  |             .hide().attr('id', 'foreign_cancel').unbind() | 
 |  |  |             .appendTo("#tool_source_back").click(function() { | 
 |  |  |               endChanges(); | 
 |  |  |             }); | 
 |  |  |            | 
 |  |  |  | 
 |  |  |         }, 3000); | 
 |  |  |       }, | 
 |  |  |       mouseDown: function(opts) { | 
 |  |  |         var e = opts.event; | 
 |  |  |          | 
 |  |  |  | 
 |  |  |         if(svgCanvas.getMode() == "foreign") { | 
 |  |  |  | 
 |  |  |           started = true; | 
 |  |  | 
 |  |  |           } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |          | 
 |  |  |  | 
 |  |  |       }, | 
 |  |  |       selectedChanged: function(opts) { | 
 |  |  |         // Use this to update the current selected elements | 
 |  |  |         selElems = opts.elems; | 
 |  |  |          | 
 |  |  |  | 
 |  |  |         var i = selElems.length; | 
 |  |  |          | 
 |  |  |  | 
 |  |  |         while(i--) { | 
 |  |  |           var elem = selElems[i]; | 
 |  |  |           if(elem && elem.tagName == "foreignObject") { | 
 |  |  | 
 |  |  |               $('#foreign_font_size').val(elem.getAttribute("font-size")); | 
 |  |  |               $('#foreign_width').val(elem.getAttribute("width")); | 
 |  |  |               $('#foreign_height').val(elem.getAttribute("height")); | 
 |  |  |              | 
 |  |  |  | 
 |  |  |               showPanel(true); | 
 |  |  |             } else { | 
 |  |  |               showPanel(false); |