wip: Getting rid of tabsManager module; using tab view instead
[fnpeditor.git] / modules / rng2 / rng2.js
1 define([\r
2 'fnpjs/layout',\r
3 'fnpjs/vbox',\r
4 'views/tabs/tabs',\r
5 'libs/text!./layout.html',\r
6 ],\r
7 function(layout, vbox, tabs, layoutTemplate) {\r
8 \r
9 'use strict';\r
10 \r
11 return function(sandbox) {    \r
12     var view = new layout.Layout(layoutTemplate);\r
13     \r
14     var sidebar = new tabs.View({stacked: true});\r
15     sidebar.render();\r
16     \r
17     var box = new vbox.VBox();\r
18     \r
19     \r
20     view.setView('rightColumn', sidebar.$el);\r
21     \r
22     var eventHandlers = {};\r
23     \r
24     eventHandlers.documentCanvas = {\r
25         ready: function() {\r
26             sandbox.getModule('documentCanvas').setDocument(sandbox.getModule('data').getDocument());\r
27             view.setView('leftColumn', sandbox.getModule('documentCanvas').getView());\r
28         },\r
29         \r
30         nodeSelected: function(node) {\r
31             sandbox.getModule('nodePane').setNode(node);\r
32             sandbox.getModule('nodeFamilyTree').setNode(node);\r
33         },\r
34         \r
35         contentChanged: function() {\r
36         \r
37         },\r
38         \r
39         nodeHovered: function(node) {\r
40             \r
41         },\r
42         \r
43         nodeBlured: function(node) {\r
44         \r
45         }\r
46     };\r
47 \r
48     eventHandlers.nodePane = {\r
49         ready: function() {\r
50             //sidebar.addTab({icon: 'pencil'}, 'nodePane', sandbox.getModule('nodePane').getView());\r
51             box.appendView(sandbox.getModule('nodePane').getView());\r
52             sidebar.addTab({icon: 'pencil'}, 'edit', box.getAsView());\r
53         },\r
54         \r
55         nodeChanged: function(attr, value) {\r
56             sandbox.getModule('documentCanvas').modifyCurrentNode(attr, value);\r
57         }\r
58     };\r
59     \r
60     eventHandlers.metadataEditor = {\r
61         ready: function() {\r
62             sandbox.getModule('metadataEditor').setMetadata(sandbox.getModule('data').getDocument());\r
63             sidebar.addTab({icon: 'info-sign'}, 'metadataEditor', sandbox.getModule('metadataEditor').getView());\r
64         }\r
65     };\r
66     \r
67     eventHandlers.nodeFamilyTree = {\r
68         ready: function() {\r
69             //sidebar.addTab({icon: 'home'}, 'family', sandbox.getModule('nodeFamilyTree').getView());\r
70             box.appendView(sandbox.getModule('nodeFamilyTree').getView());\r
71         },\r
72         nodeEntered: function(id) {\r
73             sandbox.getModule('documentCanvas').highlightNode(id);\r
74         },\r
75         nodeLeft: function(id) {\r
76             sandbox.getModule('documentCanvas').dimNode(id);\r
77         },\r
78         nodeSelected: function(id) {\r
79             sandbox.getModule('documentCanvas').selectNode(id);\r
80         }\r
81     }\r
82     \r
83     \r
84     \r
85     return {\r
86         start: function() {\r
87             sandbox.getModule('documentCanvas').start();\r
88             sandbox.getModule('nodePane').start();\r
89             sandbox.getModule('metadataEditor').start();\r
90             sandbox.getModule('nodeFamilyTree').start();\r
91             \r
92             sandbox.publish('ready');\r
93         },\r
94         handleEvent: function(moduleName, eventName, args) {\r
95             if(eventHandlers[moduleName] && eventHandlers[moduleName][eventName]) {\r
96                 eventHandlers[moduleName][eventName].apply(eventHandlers, args);\r
97             }\r
98         },\r
99         getView: function() { return view.getAsView(); }\r
100         \r
101     }\r
102 }\r
103 \r
104 });