-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathmain.js
executable file
·94 lines (79 loc) · 2.9 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*!
* Brackets Todo 0.9.7
* Display all todo comments in current document or project.
*
* @author Mikael Jorhult
* @license http://mikaeljorhult.mit-license.org MIT
*/
define(function (require, exports, module) {
'use strict';
// Get dependencies.
var Menus = brackets.getModule('command/Menus');
var CommandManager = brackets.getModule('command/CommandManager');
var WorkspaceManager = brackets.getModule('view/WorkspaceManager');
var AppInit = brackets.getModule('utils/AppInit');
var ExtensionUtils = brackets.getModule('utils/ExtensionUtils');
var Preact = brackets.getModule('thirdparty/preact');
// Extension modules.
var App = require('modules/App');
var Events = require('modules/Events');
var Files = require('modules/Files');
var Settings = require('modules/Settings');
var SettingsManager = require('modules/SettingsManager');
var Strings = require('modules/Strings');
var Tags = require('modules/Tags');
// Mustache templates.
var todoPanelTemplate = require('text!html/panel.html');
// Components.
var ResultsTableComponent = require('modules/components/ResultsTable');
var ToolbarComponent = require('modules/components/Toolbar');
// Setup extension.
var $todoIcon = $('<a href="#" title="' + Strings.EXTENSION_NAME + '" id="brackets-todo-icon"></a>');
var rootElement;
// Get view menu.
var menu = Menus.getMenu(Menus.AppMenuBar.VIEW_MENU);
// Register extension.
CommandManager.register(Strings.EXTENSION_NAME, App.COMMAND_ID, App.toggle);
// Add command to menu.
if (menu !== undefined) {
menu.addMenuDivider();
menu.addMenuItem(App.COMMAND_ID, 'Ctrl-Alt-T');
}
// Load stylesheet.
ExtensionUtils.loadStyleSheet(module, 'todo.css');
// Register event handlers.
function registerHandlers () {
// Subscribe to all changes to comments.
Events.subscribe('todos:updated', function () {
rootElement = Preact.createElement('div',
{
className: Settings.get().search.scope
},
Preact.createElement(ToolbarComponent, {
tags: Tags.get()
}),
Preact.createElement(ResultsTableComponent, {
files: Files.get()
})
);
// Render content of panel.
Preact.render(rootElement, document.getElementById('brackets-todo-container'));
});
}
// Register panel and setup event listeners.
AppInit.htmlReady(function () {
// Create panel.
WorkspaceManager.createBottomPanel('mikaeljorhult.bracketsTodo.panel', $(todoPanelTemplate), 100);
// Register event handlers.
registerHandlers();
// Add listener for toolbar icon.
$todoIcon.click(function () {
// Toggle panel when icon is clicked.
CommandManager.execute(App.COMMAND_ID);
}).appendTo('#main-toolbar .buttons');
// Enable extension if enabled last time Brackets was open.
if (SettingsManager.isExtensionEnabled()) {
App.enable(true, true);
}
});
});