1 /*
  2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
  3 For licensing, see LICENSE.html or http://ckeditor.com/license
  4 */
  5
  6 CKEDITOR.plugins.add( 'table',
  7 {
  8 	init : function( editor )
  9 	{
 10 		var table = CKEDITOR.plugins.table,
 11 			lang = editor.lang.table;
 12
 13 		editor.addCommand( 'table', new CKEDITOR.dialogCommand( 'table' ) );
 14 		editor.addCommand( 'tableProperties', new CKEDITOR.dialogCommand( 'tableProperties' ) );
 15 		editor.ui.addButton( 'Table',
 16 			{
 17 				label : lang.toolbar,
 18 				command : 'table'
 19 			});
 20
 21 		CKEDITOR.dialog.add( 'table', this.path + 'dialogs/table.js' );
 22 		CKEDITOR.dialog.add( 'tableProperties', this.path + 'dialogs/table.js' );
 23
 24 		// If the "menu" plugin is loaded, register the menu items.
 25 		if ( editor.addMenuItems )
 26 		{
 27 			editor.addMenuItems(
 28 				{
 29 					table :
 30 					{
 31 						label : lang.menu,
 32 						command : 'tableProperties',
 33 						group : 'table',
 34 						order : 5
 35 					},
 36
 37 //					tabledelete :
 38 //					{
 39 //						label : lang.deleteTable,
 40 //						command : 'tableDelete',
 41 //						group : 'table',
 42 //						order : 1
 43 //					},
 44
 45 					tablecell :
 46 					{
 47 						label : lang.cell.menu,
 48 						group : 'tablecell',
 49 						order : 1,
 50 						getItems : function()
 51 						{
 52 							return {
 53 								tablecell_insertBefore : CKEDITOR.TRISTATE_OFF,
 54 								tablecell_insertAfter : CKEDITOR.TRISTATE_OFF,
 55 								tablecell_delete : CKEDITOR.TRISTATE_OFF
 56 							};
 57 						}
 58 					},
 59
 60 					tablecell_insertBefore :
 61 					{
 62 						label : lang.cell.insertBefore,
 63 						group : 'tablecell',
 64 						order : 5
 65 					},
 66
 67 					tablecell_insertAfter :
 68 					{
 69 						label : lang.cell.insertAfter,
 70 						group : 'tablecell',
 71 						order : 10
 72 					},
 73
 74 					tablecell_delete :
 75 					{
 76 						label : lang.cell.deleteCell,
 77 						group : 'tablecell',
 78 						order : 15
 79 					},
 80
 81 					tablerow :
 82 					{
 83 						label : lang.row.menu,
 84 						group : 'tablerow',
 85 						order : 1,
 86 						getItems : function()
 87 						{
 88 							return {
 89 								tablerow_insertBefore : CKEDITOR.TRISTATE_OFF,
 90 								tablerow_insertAfter : CKEDITOR.TRISTATE_OFF,
 91 								tablerow_delete : CKEDITOR.TRISTATE_OFF
 92 							};
 93 						}
 94 					},
 95
 96 					tablerow_insertBefore :
 97 					{
 98 						label : lang.row.insertBefore,
 99 						group : 'tablerow',
100 						order : 5
101 					},
102
103 					tablerow_insertAfter :
104 					{
105 						label : lang.row.insertAfter,
106 						group : 'tablerow',
107 						order : 10
108 					},
109
110 					tablerow_delete :
111 					{
112 						label : lang.row.deleteRow,
113 						group : 'tablerow',
114 						order : 15
115 					},
116
117 					tablecolumn :
118 					{
119 						label : lang.column.menu,
120 						group : 'tablecolumn',
121 						order : 1,
122 						getItems : function()
123 						{
124 							return {
125 								tablecolumn_insertBefore : CKEDITOR.TRISTATE_OFF,
126 								tablecolumn_insertAfter : CKEDITOR.TRISTATE_OFF,
127 								tablecolumn_delete : CKEDITOR.TRISTATE_OFF
128 							};
129 						}
130 					},
131
132 					tablecolumn_insertBefore :
133 					{
134 						label : lang.column.insertBefore,
135 						group : 'tablecolumn',
136 						order : 5
137 					},
138
139 					tablecolumn_insertAfter :
140 					{
141 						label : lang.column.insertAfter,
142 						group : 'tablecolumn',
143 						order : 10
144 					},
145
146 					tablecolumn_delete :
147 					{
148 						label : lang.column.deleteColumn,
149 						group : 'tablecolumn',
150 						order : 15
151 					}
152 				});
153 		}
154
155 		// If the "contextmenu" plugin is loaded, register the listeners.
156 		if ( editor.contextMenu )
157 		{
158 			editor.contextMenu.addListener( function( element, selection )
159 				{
160 					if ( !element )
161 						return;
162
163 					var isTable	= element.is( 'table' ) ;
164 					var isCell	= !isTable && element.hasAscendant( 'table' ) ;
165
166 					if ( isTable || isCell )
167 					{
168 						var ret = isCell ?
169 							{
170 								tablecell : CKEDITOR.TRISTATE_OFF,
171 								tablerow : CKEDITOR.TRISTATE_OFF,
172 								tablecolumn : CKEDITOR.TRISTATE_OFF
173 							}
174 							: {};
175
176 						ret.tabledelete = CKEDITOR.TRISTATE_OFF;
177 						ret.table = CKEDITOR.TRISTATE_OFF;
178
179 						return ret;
180 					}
181
182 					return null;
183 				});
184 		}
185 	}
186 } );
187