From 797b6b281aa90fc073ee43a14af37975629dcc27 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 17 Sep 2010 15:31:19 +0200 Subject: [PATCH] improve plugin config api --- .../api/rest/resources/HgConfigResource.java | 9 ++- .../java/sonia/scm/repository/HgConfig.java | 12 ++-- .../src/main/resources/sonia/scm/hg.config.js | 60 ++++++------------- .../src/main/webapp/resources/js/global.js | 4 ++ .../main/webapp/resources/js/sonia.config.js | 49 ++++++++++++++- 5 files changed, 83 insertions(+), 51 deletions(-) diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java index a928fa2d62..507147a7ab 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java @@ -62,7 +62,14 @@ public class HgConfigResource @GET public HgConfig getConfig() { - return handler.getConfig(); + HgConfig config = handler.getConfig(); + + if (config == null) + { + config = new HgConfig(); + } + + return config; } //~--- set methods ---------------------------------------------------------- diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgConfig.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgConfig.java index 8c215495b6..046f0747f6 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgConfig.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgConfig.java @@ -35,9 +35,9 @@ public class HgConfig * * @return */ - public File getConfigDirectory() + public String getBaseUrl() { - return configDirectory; + return baseUrl; } /** @@ -68,11 +68,11 @@ public class HgConfig * Method description * * - * @param configDirectory + * @param baseUrl */ - public void setConfigDirectory(File configDirectory) + public void setBaseUrl(String baseUrl) { - this.configDirectory = configDirectory; + this.baseUrl = baseUrl; } /** @@ -100,7 +100,7 @@ public class HgConfig //~--- fields --------------------------------------------------------------- /** Field description */ - private File configDirectory; + private String baseUrl; /** Field description */ private String hgBinary = "hg"; diff --git a/plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg.config.js b/plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg.config.js index 18f8c46a99..6f2d9bdf89 100644 --- a/plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg.config.js +++ b/plugins/scm-hg-plugin/src/main/resources/sonia/scm/hg.config.js @@ -2,49 +2,23 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ -repositoryConfigPanels.push({ - style: 'margin: 10px', - trackResetOnLoad : true, - autoScroll : true, - border : false, - frame : false, - collapsible : false, - collapsed : false, - layoutConfig : { - labelSeparator : '' - }, +registerConfigPanel({ + xtype : 'configForm', + title : 'Mercurial Settings', items : [{ - xtype : 'fieldset', - checkboxToggle : false, - title : 'Mercurial Settings', - collapsible : true, - autoHeight : true, - labelWidth : 140, - buttonAlign: 'left', - layoutConfig : { - labelSeparator : '' - }, - items : [{ - xtype : 'textfield', - fieldLabel : 'HG Binary', - name : 'hgBinary', - allowBlank : false - },{ - xtype: 'textfield', - name: 'hgRepoDirectroy', - fieldLabel: 'Repository directory', - allowBlank : false - },{ - xtype: 'textfield', - name: 'hgBaseUrl', - fieldLabel: 'Base URL', - allowBlank : false - }], - buttons: [{ - text: 'Save' - },{ - text: 'Cancel' - }] + xtype : 'textfield', + fieldLabel : 'HG Binary', + name : 'hgBinary', + allowBlank : false + },{ + xtype: 'textfield', + name: 'repositoryDirectory', + fieldLabel: 'Repository directory', + allowBlank : false + },{ + xtype: 'textfield', + name: 'baseUrl', + fieldLabel: 'Base URL', + allowBlank : false }] - }); diff --git a/scm-webapp/src/main/webapp/resources/js/global.js b/scm-webapp/src/main/webapp/resources/js/global.js index b9231ddfa1..b08b38dafb 100644 --- a/scm-webapp/src/main/webapp/resources/js/global.js +++ b/scm-webapp/src/main/webapp/resources/js/global.js @@ -12,6 +12,10 @@ var authCallbacks = []; // config form panels var repositoryConfigPanels = []; +function registerConfigPanel(panel){ + repositoryConfigPanels.push( panel ); +} + var repositoryTypeStore = new Ext.data.JsonStore({ id: 1, fields: [ 'displayName', 'name' ] diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.config.js b/scm-webapp/src/main/webapp/resources/js/sonia.config.js index 64271e13ce..9767334e7c 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.config.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.config.js @@ -27,4 +27,51 @@ Sonia.config.ConfigPanel = Ext.extend(Ext.Panel, { }); -Ext.reg("configPanel", Sonia.config.ConfigPanel); \ No newline at end of file +Ext.reg("configPanel", Sonia.config.ConfigPanel); + +Sonia.config.ConfigForm = Ext.extend(Ext.form.FormPanel, { + + title: 'Config Form', + items: null, + + initComponent: function(){ + + var config = { + title: null, + style: 'margin: 10px', + trackResetOnLoad : true, + autoScroll : true, + border : false, + frame : false, + collapsible : false, + collapsed : false, + layoutConfig : { + labelSeparator : '' + }, + items : [{ + xtype : 'fieldset', + checkboxToggle : false, + title : this.title, + collapsible : true, + autoHeight : true, + labelWidth : 140, + buttonAlign: 'left', + layoutConfig : { + labelSeparator : '' + }, + items: this.items, + buttons: [{ + text: 'Save' + },{ + text: 'Cancel' + }] + }] + }; + + Ext.apply(this, Ext.apply(this.initialConfig, config)); + Sonia.config.ConfigForm.superclass.initComponent.apply(this, arguments); + } + +}); + +Ext.reg("configForm", Sonia.config.ConfigForm);