+ // Expose to public\r
+ tinymce.extend(this, {\r
+ deleteTable : deleteTable,\r
+ split : split,\r
+ merge : merge,\r
+ insertRow : insertRow,\r
+ insertCol : insertCol,\r
+ deleteCols : deleteCols,\r
+ deleteRows : deleteRows,\r
+ cutRows : cutRows,\r
+ copyRows : copyRows,\r
+ pasteRows : pasteRows,\r
+ getPos : getPos,\r
+ setStartCell : setStartCell,\r
+ setEndCell : setEndCell\r
+ });\r
+ };\r
+\r
+ tinymce.create('tinymce.plugins.TablePlugin', {\r
+ init : function(ed, url) {\r
+ var winMan, clipboardRows;\r
+\r
+ function createTableGrid(node) {\r
+ var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table');\r
+\r
+ if (tblElm)\r
+ return new TableGrid(tblElm, ed.dom, selection);\r
+ };\r
+\r
+ function cleanup() {\r
+ // Restore selection possibilities\r
+ ed.getBody().style.webkitUserSelect = '';\r
+ ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');\r
+ };\r
+\r
+ // Register buttons\r
+ each([\r
+ ['table', 'table.desc', 'mceInsertTable', true],\r
+ ['delete_table', 'table.del', 'mceTableDelete'],\r
+ ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],\r
+ ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],\r
+ ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],\r
+ ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],\r
+ ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],\r
+ ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],\r
+ ['row_props', 'table.row_desc', 'mceTableRowProps', true],\r
+ ['cell_props', 'table.cell_desc', 'mceTableCellProps', true],\r
+ ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],\r
+ ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]\r
+ ], function(c) {\r
+ ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});\r
+ });\r
+\r
+ // Select whole table is a table border is clicked\r
+ if (!tinymce.isIE) {\r
+ ed.onClick.add(function(ed, e) {\r
+ e = e.target;\r
+\r
+ if (e.nodeName === 'TABLE') {\r
+ ed.selection.select(e);\r
+ ed.nodeChanged();\r
+ }\r
+ });\r
+ }\r