make cursor keys work across annotation folders; make clicking in string annotation folder deselect annotation in other folder
This commit is contained in:
parent
2d0607aebd
commit
1eaf240970
3 changed files with 73 additions and 8 deletions
|
@ -171,7 +171,11 @@ Ox.ArrayEditable = function(options, self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectFirst() {
|
function selectFirst() {
|
||||||
self.selected > -1 && selectItem(0);
|
if (self.selected > -1) {
|
||||||
|
self.selected > 0
|
||||||
|
? selectItem(0)
|
||||||
|
: that.triggerEvent('selectbefore');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectItem(idOrPosition) {
|
function selectItem(idOrPosition) {
|
||||||
|
@ -193,13 +197,19 @@ Ox.ArrayEditable = function(options, self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectLast() {
|
function selectLast() {
|
||||||
self.selected > -1 && selectItem(self.options.items.length - 1);
|
if (self.selected > -1) {
|
||||||
|
self.selected < self.options.items.length - 1
|
||||||
|
? selectItem(self.options.items.length - 1)
|
||||||
|
: that.triggerEvent('selectafter');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectNext() {
|
function selectNext() {
|
||||||
self.selected > -1
|
if (self.selected > -1) {
|
||||||
&& self.selected < self.options.items.length - 1
|
self.selected < self.options.items.length - 1
|
||||||
&& selectItem(self.selected + 1);
|
? selectItem(self.selected + 1)
|
||||||
|
: that.triggerEvent('selectafter');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectNone() {
|
function selectNone() {
|
||||||
|
@ -207,7 +217,11 @@ Ox.ArrayEditable = function(options, self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectPrevious() {
|
function selectPrevious() {
|
||||||
self.selected > 0 && selectItem(self.selected - 1);
|
if (self.selected > -1) {
|
||||||
|
self.selected > 0
|
||||||
|
? selectItem(self.selected - 1)
|
||||||
|
: that.triggerEvent('selectbefore');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function singleclick(e) {
|
function singleclick(e) {
|
||||||
|
@ -230,8 +244,14 @@ Ox.ArrayEditable = function(options, self) {
|
||||||
// blur if still in editing mode
|
// blur if still in editing mode
|
||||||
that.blurItem();
|
that.blurItem();
|
||||||
} else {
|
} else {
|
||||||
// othewise deselect selected
|
// otherwise
|
||||||
|
if (self.selected > -1) {
|
||||||
|
// deselect selected
|
||||||
selectNone();
|
selectNone();
|
||||||
|
} else {
|
||||||
|
// or trigger event
|
||||||
|
that.triggerEvent('selectnone');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
that.gainFocus();
|
that.gainFocus();
|
||||||
|
|
|
@ -237,6 +237,15 @@ Ox.AnnotationFolder = function(options, self) {
|
||||||
that.triggerEvent('edit');
|
that.triggerEvent('edit');
|
||||||
},
|
},
|
||||||
select: selectAnnotation,
|
select: selectAnnotation,
|
||||||
|
selectafter: function() {
|
||||||
|
that.triggerEvent('selectafter');
|
||||||
|
},
|
||||||
|
selectbefore: function() {
|
||||||
|
that.triggerEvent('selectbefore');
|
||||||
|
},
|
||||||
|
selectnone: function() {
|
||||||
|
that.triggerEvent('selectnone');
|
||||||
|
},
|
||||||
submit: submitAnnotation,
|
submit: submitAnnotation,
|
||||||
key_space: function() {
|
key_space: function() {
|
||||||
that.triggerEvent('paused');
|
that.triggerEvent('paused');
|
||||||
|
@ -560,6 +569,20 @@ Ox.AnnotationFolder = function(options, self) {
|
||||||
return that;
|
return that;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
that.selectItem = function(position) {
|
||||||
|
// selects the first (0) or last (-1) visible annotation
|
||||||
|
if (self.annotations.length) {
|
||||||
|
that.options({selected: self.annotations[
|
||||||
|
position == 0 ? 0 : self.annotations.length - 1
|
||||||
|
].id});
|
||||||
|
self.$annotations.gainFocus();
|
||||||
|
} else {
|
||||||
|
that.triggerEvent(
|
||||||
|
position == 0 ? 'selectafter' : 'selectbefore'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/*@
|
/*@
|
||||||
removeItems <f> removeItems
|
removeItems <f> removeItems
|
||||||
@*/
|
@*/
|
||||||
|
|
|
@ -204,6 +204,13 @@ Ox.AnnotationPanel = function(options, self) {
|
||||||
select: function(data) {
|
select: function(data) {
|
||||||
selectAnnotation(data, i);
|
selectAnnotation(data, i);
|
||||||
},
|
},
|
||||||
|
selectafter: function() {
|
||||||
|
selectNext(layer.id, 1);
|
||||||
|
},
|
||||||
|
selectbefore: function() {
|
||||||
|
selectNext(layer.id, -1);
|
||||||
|
},
|
||||||
|
selectnone: selectNone,
|
||||||
submit: function(data) {
|
submit: function(data) {
|
||||||
that.triggerEvent('submit', Ox.extend({layer: layer.id}, data));
|
that.triggerEvent('submit', Ox.extend({layer: layer.id}, data));
|
||||||
},
|
},
|
||||||
|
@ -303,6 +310,21 @@ Ox.AnnotationPanel = function(options, self) {
|
||||||
that.triggerEvent('select', data);
|
that.triggerEvent('select', data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function selectNone() {
|
||||||
|
if (self.options.selected) {
|
||||||
|
getFolder(self.options.selected).options({selected: ''});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectNext(layer, direction) {
|
||||||
|
var index = Ox.mod(
|
||||||
|
Ox.getIndexById(self.options.layers, layer) + direction,
|
||||||
|
self.options.layers.length
|
||||||
|
);
|
||||||
|
Ox.print('index', index)
|
||||||
|
self.$folder[index].selectItem(direction == 1 ? 0 : -1);
|
||||||
|
}
|
||||||
|
|
||||||
function updateEditMenu() {
|
function updateEditMenu() {
|
||||||
var action = self.options.selected ? 'enableItem' : 'disableItem';
|
var action = self.options.selected ? 'enableItem' : 'disableItem';
|
||||||
self.$editMenuButton[action]('edit');
|
self.$editMenuButton[action]('edit');
|
||||||
|
|
Loading…
Reference in a new issue