From c6991e797c4733b300f6ce16677a6d3ed7ac16d5 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 23 Aug 2011 20:17:26 +0200 Subject: [PATCH] added history functions to repositorybrowser --- .../sonia.repository.changesetviewergrid.js | 2 +- .../sonia.repository.extendedinfopanel.js | 2 +- .../sonia.repository.repositorybrowser.js | 45 +++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js index 8a73a82577..97028b2354 100644 --- a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js +++ b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.changesetviewergrid.js @@ -125,7 +125,7 @@ Sonia.repository.ChangesetViewerGrid = Ext.extend(Ext.grid.GridPanel, { openRepositoryBrowser: function(revision){ main.addTab({ - id: 'repositorybrowser-' + this.repository.id + '-' + revision, + id: 'repositorybrowser-' + this.repository.id + ':' + revision, xtype: 'repositoryBrowser', repository: this.repository, revision: revision, diff --git a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.extendedinfopanel.js b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.extendedinfopanel.js index c07bf51789..c3162cac43 100644 --- a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.extendedinfopanel.js +++ b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.extendedinfopanel.js @@ -96,7 +96,7 @@ Sonia.repository.ExtendedInfoPanel = Ext.extend(Sonia.repository.InfoPanel,{ createRepositoryBrowser: function(){ return { - id: 'repositorybrowser-' + this.item.id, + id: 'repositorybrowser-' + this.item.id + ':_', xtype: 'repositoryBrowser', repository: this.item, closable: true diff --git a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js index 2745aeb0d8..88a337f604 100644 --- a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js +++ b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js @@ -50,6 +50,12 @@ Sonia.repository.RepositoryBrowser = Ext.extend(Ext.grid.GridPanel, { console.debug('create new browser for repository ' + this.repository.name + " and revision " + this.revision); } + this.historyId = Sonia.History.createToken([ + 'repositorybrowser', + this.repository.id, + this.revision ? this.revision : '_' + ]); + var browserStore = new Sonia.rest.JsonStore({ proxy: new Ext.data.HttpProxy({ url: restUrl + 'repositories/' + this.repository.id + '/browse.json', @@ -162,6 +168,22 @@ Sonia.repository.RepositoryBrowser = Ext.extend(Ext.grid.GridPanel, { length: 0 })); } + + var historyParams = []; + if ( this.revision ){ + historyParams.push(this.revision) + } else { + historyParams.push('_'); + } + + if ( extra.params.path ){ + historyParams.push(extra.params.path); + } + + var id = Sonia.History.appendWithDepth(historyParams, 2); + if (id){ + this.historyId = id; + } }, onClick: function(e){ @@ -313,3 +335,26 @@ Sonia.repository.RepositoryBrowser = Ext.extend(Ext.grid.GridPanel, { // register xtype Ext.reg('repositoryBrowser', Sonia.repository.RepositoryBrowser); + +// register history handler +Sonia.History.register('repositorybrowser', function(params){ + + if (params){ + + var id = 'repositorybrowser-' + params[0] + ':'; + var revision = params[1]; + id += revision; + var path = params[2] ? params[2] : ''; + + if (debug){ + console.debug('load repositorybrowser for ' + id + ', ' + revision + ', ' + path ); + } + + var tab = Ext.getCmp(id); + + if ( tab ){ + main.getMainTabPanel().setActiveTab(id); + tab.changeDirectory(path); + } + } +}); \ No newline at end of file