forked from Archives/Athou_commafeed
keyboard shortcuts
This commit is contained in:
5
pom.xml
5
pom.xml
@@ -249,6 +249,11 @@
|
||||
<artifactId>spin-js</artifactId>
|
||||
<version>1.2.7</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>mousetrap</artifactId>
|
||||
<version>1.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<profiles>
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.commafeed.frontend.references.angular.AngularSanitizeReference;
|
||||
import com.commafeed.frontend.references.angularui.AngularUIReference;
|
||||
import com.commafeed.frontend.references.angularuibootstrap.AngularUIBootstrapReference;
|
||||
import com.commafeed.frontend.references.csstreeview.CssTreeViewReference;
|
||||
import com.commafeed.frontend.references.mousetrap.MouseTrapReference;
|
||||
import com.commafeed.frontend.references.nginfinitescroll.NGInfiniteScrollReference;
|
||||
import com.commafeed.frontend.references.ngupload.NGUploadReference;
|
||||
import com.commafeed.frontend.references.select2.Select2Reference;
|
||||
@@ -33,6 +34,7 @@ public class HomePage extends BasePage {
|
||||
NGInfiniteScrollReference.renderHead(response);
|
||||
Select2Reference.renderHead(response);
|
||||
SpinJSReference.renderHead(response);
|
||||
MouseTrapReference.renderHead(response);
|
||||
|
||||
CssTreeViewReference.renderHead(response);
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.commafeed.frontend.references.mousetrap;
|
||||
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
|
||||
|
||||
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
|
||||
|
||||
public class MouseTrapReference extends WebjarsJavaScriptResourceReference {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final MouseTrapReference INSTANCE = new MouseTrapReference();
|
||||
|
||||
private MouseTrapReference() {
|
||||
super("/mousetrap/current/mousetrap.js");
|
||||
}
|
||||
|
||||
public static void renderHead(final IHeaderResponse response) {
|
||||
response.render(JavaScriptHeaderItem.forReference(INSTANCE));
|
||||
}
|
||||
}
|
||||
@@ -154,10 +154,16 @@ module.controller('FeedListCtrl', function($scope, $routeParams, $http, $route,
|
||||
|
||||
$scope.isOpen = false;
|
||||
$scope.entryClicked = function(entry, event) {
|
||||
$scope.mark(entry, true);
|
||||
if (!event.ctrlKey && event.which != 2) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
if (!entry.read) {
|
||||
$scope.mark(entry, true);
|
||||
}
|
||||
if (!event || (!event.ctrlKey && event.which != 2)) {
|
||||
if (event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}
|
||||
console.log($scope.current)
|
||||
console.log(entry)
|
||||
if ($scope.current != entry) {
|
||||
$scope.isOpen = true;
|
||||
} else {
|
||||
@@ -166,4 +172,50 @@ module.controller('FeedListCtrl', function($scope, $routeParams, $http, $route,
|
||||
$scope.current = entry;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var openNextEntry = function() {
|
||||
var entry = null;
|
||||
if ($scope.current) {
|
||||
var index;
|
||||
for ( var i = 0; i < $scope.entries.length; i++) {
|
||||
if ($scope.current == $scope.entries[i]) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
index = index + 1;
|
||||
if (index < $scope.entries.length) {
|
||||
entry = $scope.entries[index];
|
||||
}
|
||||
} else if ($scope.entries.length > 0) {
|
||||
entry = $scope.entries[0];
|
||||
}
|
||||
if (entry) {
|
||||
$scope.entryClicked(entry);
|
||||
}
|
||||
};
|
||||
|
||||
var openPreviousEntry = function() {
|
||||
var entry = null;
|
||||
if ($scope.current) {
|
||||
var index;
|
||||
for ( var i = 0; i < $scope.entries.length; i++) {
|
||||
if ($scope.current == $scope.entries[i]) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
index = index - 1;
|
||||
if (index >= 0) {
|
||||
entry = $scope.entries[index];
|
||||
}
|
||||
}
|
||||
if (entry) {
|
||||
$scope.entryClicked(entry);
|
||||
}
|
||||
};
|
||||
|
||||
Mousetrap.bind('space', openNextEntry);
|
||||
Mousetrap.bind('j', openNextEntry);
|
||||
Mousetrap.bind('k', openPreviousEntry);
|
||||
});
|
||||
Reference in New Issue
Block a user