Skip to content

Commit bcec0c6

Browse files
committed
update electron window
1 parent c81bdda commit bcec0c6

9 files changed

Lines changed: 257 additions & 316 deletions

File tree

Gulpfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,4 @@ gulp.task('default', function (cb) {
125125
runSequence('del', 'build', 'watch', cb)
126126
})
127127

128-
// require('./gulp-electron')(gulp)
128+
require('./gulp-electron')(gulp)

electron_src/popup/index.html

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,33 @@
1010
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
1111
<meta name="description" content="CodeXen - Short code storage service">
1212

13-
<link rel="stylesheet" href="../../all.css" media="screen" title="no title" charset="utf-8">
13+
<link rel="stylesheet" href="../../vendor/css/font-awesome.css" media="screen" title="no title" charset="utf-8">
14+
<link rel="stylesheet" href="../../main.css" media="screen" title="no title" charset="utf-8">
1415
</head>
1516
<body class="popup-body" ng-controller="PopUpController">
1617

17-
<!-- Dev!!-->
18-
<button style="position:fixed;bottom:0;right:0;padding:5px;z-index:1000;" type="button" name="button" ng-click="toggleDev()">DEV!</button>
19-
20-
<div ng-click="focusSearchInput()" class="search-block">
18+
<div class="search-block">
2119
<input ng-change="filterList(searchNeedle)" search-input id="search-input" type="text" class="form-control" ng-model="searchNeedle" ng-change="refreshResult">
2220
</div>
2321

2422
<div class="result-block row-fluid">
25-
<ul ng-click="focusList()" class="result-list left-pane" ng-class="{focused:isFocusing == 2}">
26-
<li ng-click="selectItem($index)" ng-repeat="snippet in filteredSnippets"><a ng-class="{selected:$index == selectIndex}" href="#">{{snippet.description}}</a></li>
23+
<ul class="result-list left-pane" ng-class="{focused:isFocusing == 2}">
24+
<li ng-click="selectSnippet($index)" ng-repeat="snippet in filteredSnippets" ng-class="{active:$index == selectIndex}"><a href="#">{{snippet.description}}</a></li>
2725
</ul>
2826

2927
<div class="right-pane">
30-
<div ng-click="focusControl()" class="result-detail-control">
31-
<button ng-class="{focus: controlIndex == 1}" id="btnClipboard" type="button" name="button" class="btn btn-default"><i class="fa fa-clipboard"></i></button>
32-
<button ng-class="{focus: controlIndex == 2}" id="btnEdit" type="button" name="button" class="btn btn-default"><i class="fa fa-edit"></i></button>
33-
<button ng-class="{focus: controlIndex == 3}" id="btnShare" type="button" name="button" class="btn btn-default"><i class="fa fa-share"></i></button>
28+
<div class="result-detail-control">
29+
<button id="btnClipboard" type="button" name="button" class="btn btn-default"><i class="fa fa-clipboard"></i></button>
30+
<button id="btnEdit" type="button" name="button" class="btn btn-default"><i class="fa fa-edit"></i></button>
31+
<button id="btnShare" type="button" name="button" class="btn btn-default"><i class="fa fa-share"></i></button>
3432
</div>
35-
<div ng-click="focusContent()" id="aceView" class="result-detail-content"
33+
<div id="aceView" class="result-detail-content"
3634
ui-ace="{
3735
showGutter: false,
3836
useWrapMode: true,
3937
mode:selectedItem.mode.toLowerCase(),
40-
onLoad : aceLoaded
38+
onLoad: aceLoaded,
39+
theme: 'solarized_dark'
4140
}"
4241

4342
readonly

electron_src/popup/popup.js

Lines changed: 68 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,6 @@
33
var remote = require('remote')
44
var ipc = require('ipc')
55

6-
var SEARCH_INPUT = 1
7-
var RESULT_LIST = 2
8-
var RESULT_CONTROL = 3
9-
var RESULT_CONTENT = 4
10-
// var btnClipboard = document.getElementById('btnClipboard')
11-
// var btnEdit = document.getElementById('btnEdit')
12-
// var btnShare = document.getElementById('btnShare')
13-
var aceView = document.getElementById('aceView')
14-
156
angular.module('codexen.popup', [
167
'ui.ace',
178
'satellizer',
@@ -27,214 +18,146 @@ angular.module('codexen.popup', [
2718
// Setup Events
2819
remote.getCurrentWindow().on('focus', function () {
2920
$scope.$apply(focusSearchInput)
21+
loadSnippets()
3022
})
3123

3224
hotkeys.bindTo($scope)
3325
.add('down', function (e) {
34-
switch ($scope.isFocusing) {
35-
case RESULT_LIST:
36-
selectNextItem()
37-
break
38-
case RESULT_CONTROL:
39-
focusContent()
40-
break
41-
}
26+
nextSnippet()
4227
e.preventDefault()
4328
})
4429
.add('up', function (e) {
45-
switch ($scope.isFocusing) {
46-
case RESULT_LIST:
47-
selectPriorItem()
48-
break
49-
case RESULT_CONTENT:
50-
focusControl()
51-
break
52-
}
30+
priorSnippet()
5331
e.preventDefault()
5432
})
5533
.add('right', function (e) {
56-
if ($scope.isFocusing === RESULT_LIST) {
57-
focusControl()
58-
return
59-
}
60-
if ($scope.isFocusing === RESULT_CONTROL) {
61-
nextControl()
62-
}
6334
})
6435
.add('left', function (e) {
65-
if ($scope.isFocusing === RESULT_CONTROL) {
66-
priorControl()
67-
}
6836
})
6937
.add('esc', function (e) {
70-
switch ($scope.isFocusing) {
71-
case RESULT_LIST:
72-
focusSearchInput()
73-
break
74-
case RESULT_CONTROL:
75-
focusList()
76-
break
77-
case RESULT_CONTENT:
78-
console.log('esc fr content')
79-
focusControl()
80-
break
81-
case SEARCH_INPUT:
82-
hidePopUp()
83-
}
38+
hidePopUp()
8439
})
8540
.add('shift+tab', function (e) {
8641
e.preventDefault()
87-
if ($scope.isFocusing === RESULT_CONTROL) {
88-
priorControl()
89-
return
90-
}
9142
})
9243
.add('tab', function (e) {
93-
e.preventDefault()
94-
if ($scope.isFocusing === RESULT_LIST) {
95-
focusControl()
96-
return
97-
}
98-
if ($scope.isFocusing === RESULT_CONTROL) {
99-
nextControl()
100-
return
101-
}
10244
})
10345
.add('enter', function (e) {
104-
switch ($scope.isFocusing) {
105-
case RESULT_LIST:
106-
console.log($scope.selectedItem.content)
107-
ipc.send('writeCode', $scope.selectedItem.content)
108-
break
109-
}
46+
console.log($scope.selectedItem.content)
47+
ipc.send('writeCode', $scope.selectedItem.content)
11048
e.preventDefault()
11149
})
11250

113-
11451
$scope.aceLoaded = function (editor) {
11552
editor.commands.addCommand({
11653
name: 'escape',
11754
bindKey: {win: 'esc', mac: 'esc'},
11855
exec: function (editor) {
11956
editor.blur()
120-
focusControl()
12157
$scope.$apply()
12258
},
12359
readOnly: true
12460
})
12561
}
12662

63+
$scope.$on('nextSnippetRequested', function (e) {
64+
e.stopPropagation()
65+
nextSnippet()
66+
})
67+
68+
$scope.$on('priorSnippetRequested', function (e) {
69+
e.stopPropagation()
70+
priorSnippet()
71+
})
72+
73+
$scope.$on('snippetSubmitted', function (e) {
74+
if ($scope.filteredSnippets.length > 0) ipc.send('writeCode', $scope.selectedItem.content)
75+
else console.log('\x07')
76+
e.stopPropagation()
77+
})
78+
12779
// Init Data
12880
$scope.snippets = []
12981

130-
var userId = $auth.getPayload().sub
131-
Snippet.findByUser(userId)
82+
Snippet.findMine()
13283
.success(function (data) {
133-
$scope.snippets = data.snippets
84+
$scope.snippets = data
13485
filterList()
13586
})
13687

137-
// Functions
138-
139-
// Search Filter
140-
function filterList (needle) {
141-
$scope.filteredSnippets = $filter('filter')($scope.snippets, needle)
142-
$scope.selectIndex = 0
143-
selectItem($scope.selectIndex)
144-
}
145-
$scope.filterList = filterList
146-
147-
function hidePopUp () {
148-
ipc.send('hidePopUp')
149-
}
150-
15188
// Result Item control
15289
$scope.selectIndex = 0
15390

154-
$scope.selectItem = selectItem
155-
function selectItem (index) {
156-
$scope.selectIndex = index
157-
$scope.selectedItem = $scope.filteredSnippets[index]
91+
$scope.selectSnippet = selectSnippet
92+
$scope.filterList = filterList
93+
$scope.focusSearchInput = focusSearchInput
15894

159-
$scope.controlIndex = 0
95+
// Search Filter
96+
function loadSnippets () {
97+
Snippet.findMine()
98+
.success(function (data) {
99+
$scope.snippets = data
100+
filterList()
101+
})
160102
}
161103

162-
function selectNextItem () {
163-
if ($scope.selectIndex >= ($scope.filteredSnippets.length - 1)) {
164-
return
165-
}
166-
selectItem(++$scope.selectIndex)
104+
function filterList (needle) {
105+
$scope.filteredSnippets = $filter('filter')($scope.snippets, needle)
106+
firstSnippet()
167107
}
168108

169-
function selectPriorItem () {
170-
if ($scope.selectIndex === 0) {
171-
focusSearchInput()
172-
return
173-
}
174-
selectItem(--$scope.selectIndex)
109+
function selectSnippet (index) {
110+
if (index !== undefined) $scope.selectIndex = index
111+
$scope.selectedItem = $scope.filteredSnippets[$scope.selectIndex]
175112
}
176113

177-
// Focusing control
178-
$scope.isFocusing = 0
179-
180-
function focusSearchInput () {
181-
$scope.isFocusing = SEARCH_INPUT
182-
document.getElementById('search-input').focus()
183-
184-
$scope.controlIndex = 0
114+
function firstSnippet () {
115+
$scope.selectIndex = 0
116+
selectSnippet($scope.selectIndex)
185117
}
186-
$scope.focusSearchInput = focusSearchInput
187118

188-
function focusList () {
189-
$scope.isFocusing = RESULT_LIST
190-
document.getElementById('search-input').blur()
191-
192-
$scope.controlIndex = 0
119+
function priorSnippet () {
120+
if ($scope.selectIndex > 0) $scope.selectIndex -= 1
121+
selectSnippet()
193122
}
194-
$scope.focusList = focusList
195123

196-
function focusControl () {
197-
if ($scope.controlIndex === 0) {
198-
$scope.controlIndex = 1
124+
function nextSnippet () {
125+
if ($scope.selectIndex < $scope.filteredSnippets.length - 1) {
126+
$scope.selectIndex += 1
199127
}
200-
$scope.isFocusing = RESULT_CONTROL
128+
selectSnippet()
201129
}
202-
$scope.focusControl = focusControl
203130

204-
function focusContent () {
205-
angular.element(aceView).scope().focus()
206-
$scope.isFocusing = RESULT_CONTENT
131+
// Focusing Search Input
132+
function focusSearchInput () {
133+
document.getElementById('search-input').focus()
207134
}
208135

209-
$scope.controlIndex = 0
210-
211-
function nextControl () {
212-
if ($scope.controlIndex === 3) {
213-
$scope.controlIndex = 0
214-
focusContent()
215-
return
216-
}
217-
$scope.controlIndex ++
136+
function hidePopUp () {
137+
ipc.send('hidePopUp')
218138
}
219139

220-
function priorControl () {
221-
if ($scope.controlIndex === 1) {
222-
focusList()
223-
return
224-
}
225-
$scope.controlIndex --
226-
}
227140
})
228141
.directive('searchInput', function () {
229142
return {
230143
restrict: 'A',
231144
link: function (scope, el, attr) {
232145
el.on('keydown', function (e) {
233-
234146
// Down key => Focus on Result list
235147
if (e.keyCode === 40) {
236-
scope.focusList()
237-
e.preventDefault()
148+
scope.$emit('nextSnippetRequested')
149+
// e.preventDefault()
150+
}
151+
152+
// Up key => Focus on Result list
153+
if (e.keyCode === 38) {
154+
scope.$emit('priorSnippetRequested')
155+
// e.preventDefault()
156+
}
157+
158+
// Up key => Focus on Result list
159+
if (e.keyCode === 13) {
160+
scope.$emit('snippetSubmitted')
238161
}
239162

240163
// Esc key => Dismiss popup

0 commit comments

Comments
 (0)