1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * Plugin for Freemind import.
- * See https://github.com/jiangxin/freemind-mmx/tree/master/freemind
- */
- Draw.loadPlugin(function(ui) {
- var graph = ui.editor.graph;
-
- // Adds resource for action
- mxResources.parse('importFreemind=Freemind');
-
- // Parses Freemind data
- function importFreemindData(data)
- {
- // Gets the default parent for inserting new cells. This
- // is normally the first child of the root (ie. layer 0).
- var parent = graph.getDefaultParent();
- var cells = [];
-
- // Makes the import one undoable edit
- graph.getModel().beginUpdate();
- try
- {
- // Gets point for free space in the graph for insert
- var pt = graph.getFreeInsertPoint();
- //
- // TODO: Import freemind data at pt.x/pt.y like so...
- //
- cells.push(graph.insertVertex(parent, null, data, pt.x, pt.y, 80, 30));
-
- // Applies current styles to new cells (might not be needed)
- graph.fireEvent(new mxEventObject('cellsInserted', 'cells', cells));
- }
- finally
- {
- graph.getModel().endUpdate();
- }
-
- // Selects new cells and scrolls into view
- graph.setSelectionCells(cells);
- graph.scrollCellToVisible(graph.getSelectionCell());
- };
- // Adds action
- ui.actions.addAction('importFreemind...', function()
- {
- // Only modern browsers for now. We'll move the import
- // code above to the main codebase later
- if (Graph.fileSupport && !mxClient.IS_IE && !mxClient.IS_IE11)
- {
- var input = document.createElement('input');
- input.setAttribute('type', 'file');
-
- mxEvent.addListener(input, 'change', function()
- {
- if (input.files != null)
- {
- // Only one file for now...
- var reader = new FileReader();
-
- reader.onload = function(e)
- {
- importFreemindData(e.target.result);
- };
-
- reader.readAsText(input.files[0]);
- }
- });
- input.click();
- }
- });
-
- // Adds menu
- ui.menubar.addMenu('Import', function(menu, parent)
- {
- ui.menus.addMenuItem(menu, 'importFreemind');
- });
-
- // Moves import menu to before help menu
- ui.menubar.container.insertBefore(ui.menubar.container.lastChild,
- ui.menubar.container.lastChild.previousSibling.previousSibling.previousSibling);
- });
|