4b9aecf302b9af4fee45af1fe43e53d5faee8458
[fnpeditor.git] / modules / rng / rng.js
1 define([\r
2 'fnpjs/layout',\r
3 'views/tabs/tabs',\r
4 'libs/text!./mainLayout.html'\r
5 ], function(layout, tabs, mainLayoutTemplate) {\r
6 \r
7 return function(sandbox) {\r
8     'use strict';\r
9     \r
10     var mainTabs = (new tabs.View()).render();\r
11     var mainLayout = new layout.Layout(mainLayoutTemplate);\r
12     sandbox.getDOM().append(mainLayout.getAsView());\r
13     \r
14     function addTab(title, slug, view) {\r
15         mainTabs.addTab(title, slug, view);\r
16     }\r
17     \r
18     /* Events handling */\r
19     \r
20     var eventHandlers = {};\r
21      \r
22     eventHandlers.sourceEditor = {\r
23         ready: function() {\r
24             addTab(gettext('Source'), 'source',  sandbox.getModule('sourceEditor').getView());\r
25             sandbox.getModule('sourceEditor').setDocument(sandbox.getModule('data').getDocument());\r
26         }\r
27     };\r
28     \r
29     eventHandlers.visualEditor = {\r
30         ready: function() {\r
31             sandbox.getModule('visualEditor').setDocument(sandbox.getModule('data').getDocument());\r
32             addTab(gettext('Visual'), 'visual', sandbox.getModule('visualEditor').getView());\r
33             \r
34         }\r
35     };\r
36     \r
37     eventHandlers.data = {\r
38         ready: function() {\r
39             mainLayout.setView('mainView', mainTabs.getAsView());\r
40             \r
41             _.each(['visualEditor', 'sourceEditor', 'rng2', 'mainBar', 'indicator'], function(moduleName) {\r
42                 sandbox.getModule(moduleName).start();\r
43             });\r
44         },\r
45         documentChanged: function(document, reason) {\r
46             var slug = (reason === 'visual_edit' ? 'source' : 'visual');\r
47             sandbox.getModule(slug+'Editor').setDocument(document);\r
48         },\r
49         savingStarted: function() {\r
50             sandbox.getModule('mainBar').setCommandEnabled('save', false);\r
51             sandbox.getModule('indicator').showMessage(gettext('Saving...'));\r
52         },\r
53         savingEnded: function(status) {\r
54             sandbox.getModule('mainBar').setCommandEnabled('save', true);\r
55             sandbox.getModule('indicator').clearMessage();\r
56         }\r
57     }\r
58     \r
59     eventHandlers.rng2 = {\r
60         ready: function() {\r
61            addTab('rng2 test', 'rng2test', sandbox.getModule('rng2').getView());\r
62            \r
63         }\r
64     }\r
65     \r
66     eventHandlers.mainBar = {\r
67         ready: function() {\r
68             mainLayout.setView('topPanel', sandbox.getModule('mainBar').getView());\r
69         },\r
70         'cmd.save': function() {\r
71             sandbox.getModule('data').fakeSave();\r
72         }\r
73     }\r
74     \r
75     eventHandlers.indicator = {\r
76         ready: function() {\r
77             mainLayout.setView('messages', sandbox.getModule('indicator').getView());\r
78         }\r
79     }\r
80     \r
81     /* api */\r
82     \r
83     return {\r
84         start: function() {\r
85             sandbox.getModule('data').start();\r
86         },\r
87         handleEvent: function(moduleName, eventName, args) {\r
88             if('')\r
89                 wysiwigHandler.handleEvent(moduleName, eventName, args);\r
90             else if(eventHandlers[moduleName] && eventHandlers[moduleName][eventName]) {\r
91                 eventHandlers[moduleName][eventName].apply(eventHandlers, args);\r
92             }\r
93         }\r
94     }\r
95 };\r
96 \r
97 });