/*
* Perspective
*/
- function SearchPerspective(options){
- var old_callback = options.callback || function() { };
+ class SearchPerspective extends $.wiki.SidebarPerspective {
+ vsplitbar = 'ZNAJDŹ I ZAMIEŃ';
+ options = Array();
- this.noupdate_hash_onenter = true;
- this.vsplitbar = 'ZNAJDŹ I ZAMIEŃ';
-
- options.callback = function(){
+ constructor(options) {
+ super(options);
var self = this;
this.editor = null;
this.$searchInput = $('#search-input', this.$element);
this.$replaceInput = $('#replace-input', this.$element);
this.$searchButton = $('#search-button', this.$element);
+ this.$searchPrevButton = $('#search-prev-button', this.$element);
this.$replaceButton = $('#replace-button', this.$element);
this.$replaceButton.attr("disabled","disabled");
- this.options = Array();
// handlers
this.$searchInput.change(function(event){
alert('Brak wyników.');
});
+ this.$searchPrevButton.click(function(){
+ if (!self.search(false))
+ alert('Brak wyników.');
+ });
+
this.$replaceButton.click(function(){
self.replace();
});
+ }
- old_callback.call(this);
- };
-
- $.wiki.Perspective.call(this, options);
- };
-
- SearchPerspective.prototype = new $.wiki.Perspective();
-
- SearchPerspective.prototype.search = function(){
- var self = this;
- var query = self.$searchInput.val();
+ search(forward=true) {
+ var self = this;
+ var query = self.$searchInput.val();
+
+ if (!self.editor)
+ self.editor = $.wiki.perspectiveForTab('#CodeMirrorPerspective').codemirror
+
+ if (!self.searchCursor) {
+ var options = {};
+ options.caseFold = !self.options['search-case-sensitive'];
+ var start = 0;
+ if (self.options['search-from-cursor']) {
+ start = self.editor.getCursor();
+ }
+ self.searchCursor = self.editor.getSearchCursor(
+ self.$searchInput.val(),
+ start,
+ options
+ );
+ }
+ if (forward ? self.searchCursor.findNext() : self.searchCursor.findPrevious()) {
+ self.editor.setSelection(self.searchCursor.from(), self.searchCursor.to());
+ self.editor.scrollIntoView({from: self.searchCursor.from(), to: self.searchCursor.to()}, 20);
+ self.$replaceButton.removeAttr("disabled");
+ return true;
+ }
+ else {
+ self.searchCursor = null;
+ this.$replaceButton.attr("disabled","disabled");
+ return false;
+ }
+ }
- if (!self.editor)
- self.editor = $.wiki.perspectiveForTab('#CodeMirrorPerspective').codemirror
+ replace() {
+ var self = this;
+ var query = self.$replaceInput.val();
- if (!self.searchCursor) {
- self.searchCursor = self.editor.getSearchCursor(
- self.$searchInput.val(),
- self.options['search-from-cursor'],
- !self.options['search-case-sensitive']
- );
- }
- if (self.searchCursor.findNext()) {
- self.searchCursor.select();
- self.$replaceButton.removeAttr("disabled");
- return true;
- }
- else {
- self.searchCursor = null;
- this.$replaceButton.attr("disabled","disabled");
- return false;
- }
- };
+ if (!self.searchCursor) {
+ self.search();
+ }
+ else {}
- SearchPerspective.prototype.replace = function(){
- var self = this;
- var query = self.$replaceInput.val();
+ self.editor.setSelection(self.searchCursor.from(), self.searchCursor.to());
+ self.editor.scrollIntoView({from: self.searchCursor.from(), to: self.searchCursor.to()}, 20);
- if (!self.searchCursor) {
- self.search();
- }
- else {}
- self.searchCursor.select();
- self.searchCursor.replace(query);
- if(self.search() && self.options['replace-all']) {
- self.replace();
+ self.searchCursor.replace(query);
+ if(self.search() && self.options['replace-all']) {
+ self.replace();
+ }
}
- };
-
- SearchPerspective.prototype.onEnter = function(success, failure){
- var self = this;
- $.wiki.Perspective.prototype.onEnter.call(this);
- self.$searchCursor = null;
+ onEnter(success, failure) {
+ var self = this;
- $('.vsplitbar').not('.active').trigger('click');
- $(".vsplitbar-title").html("↓ ZNAJDŹ I ZAMIEŃ ↓");
-
- if ($.wiki.activePerspective() != 'CodeMirrorPerspective')
- $.wiki.switchToTab('#CodeMirrorPerspective');
- };
+ super.onEnter();
+ self.$searchCursor = null;
- SearchPerspective.prototype.onExit = function(success, failure) {
+ if ($.wiki.activePerspective() != 'CodeMirrorPerspective')
+ $.wiki.switchToTab('#CodeMirrorPerspective');
+ }
- };
+ onExit(success, failure) {
+ }
+ }
$.wiki.SearchPerspective = SearchPerspective;