src/main/java/com/gitblit/wicket/pages/NewRepositoryPage.html | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/pages/NewRepositoryPage.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/panels/ConditionalChoiceOption.html | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/gitblit/wicket/panels/ConditionalChoiceOption.java | ●●●●● patch | view | raw | blame | history |
src/main/java/com/gitblit/wicket/pages/NewRepositoryPage.html
@@ -19,41 +19,13 @@ <hr/> <h4><wicket:message key="gb.initialCommit"></wicket:message></h4> <div> <p><wicket:message key="gb.initialCommitDescription"></wicket:message></p> </div> <p><wicket:message key="gb.initialCommitDescription"></wicket:message></p> <div style="clear:both;padding-top:10px;"> <div style="display: inline-block;vertical-align: top;"> <input type="checkbox" wicket:id="addReadme" /> </div> <div style="display: inline-block;"> <b><wicket:message key="gb.initWithReadme"></wicket:message></b><br/> <p><wicket:message key="gb.initWithReadmeDescription"></wicket:message></p> </div> </div> <div wicket:id="addReadme"></div> <div style="clear:both;padding-top:10px;display:none;"> <!-- future GitFlow --> <div style="display: inline-block;vertical-align: top;"> <input type="checkbox" wicket:id="addGitflow" /> </div> <div style="display: inline-block;"> <b>Include a .gitflow file</b> <p>This will generate a config file which guides Git clients in setting up Gitflow branches.</p> </div> </div> <div wicket:id="addGitIgnore"></div> <div style="clear:both;padding-top:10px;"> <div style="display: inline-block;vertical-align: top;"> <input type="checkbox" wicket:id="addGitignore" /> </div> <div style="display:inline-block;"> <b><wicket:message key="gb.initWithGitignore"></wicket:message></b><br/> <p><wicket:message key="gb.initWithGitignoreDescription"></wicket:message></p> <p style="padding-top:5px;"><select class="span2" wicket:id="gitignore" /></p> </div> </div> <div wicket:id="addGitFlow"></div> </div> </div> src/main/java/com/gitblit/wicket/pages/NewRepositoryPage.java
@@ -22,12 +22,8 @@ import java.util.Collections; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.behavior.SimpleAttributeModifier; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; @@ -60,6 +56,8 @@ import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.AccessPolicyPanel; import com.gitblit.wicket.panels.CheckboxOption; import com.gitblit.wicket.panels.ConditionalChoiceOption; import com.gitblit.wicket.panels.RepositoryNamePanel; public class NewRepositoryPage extends RootSubPage { @@ -183,7 +181,10 @@ // add README addReadmeModel = Model.of(false); form.add(new CheckBox("addReadme", addReadmeModel)); form.add(new CheckboxOption("addReadme", getString("gb.initWithReadme"), getString("gb.initWithReadmeDescription"), addReadmeModel)); // add .gitignore File gitignoreDir = app().runtime().getFileOrFolder(Keys.git.gitignoreFolder, "${baseFolder}/gitignore"); @@ -198,29 +199,22 @@ } } Collections.sort(gitignores); gitignoreModel = Model.of(""); final DropDownChoice<String> gitignoreChoice = new DropDownChoice<String>("gitignore", gitignoreModel, gitignores); gitignoreChoice.setOutputMarkupId(true); form.add(gitignoreChoice.setEnabled(false)); addGitignoreModel = Model.of(false); final CheckBox gitignoreCheckbox = new CheckBox("addGitignore", addGitignoreModel); form.add(gitignoreCheckbox); form.add(new ConditionalChoiceOption<String>("addGitIgnore", getString("gb.initWithGitignore"), getString("gb.initWithGitignoreDescription"), addGitignoreModel, gitignoreModel, gitignores)); gitignoreCheckbox.add(new AjaxFormComponentUpdatingBehavior("onchange") { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { gitignoreChoice.setEnabled(addGitignoreModel.getObject()); target.addComponent(gitignoreChoice); } }); // TODO add .gitflow // TODO consider gitflow at creation (ticket-55) addGitflowModel = Model.of(false); form.add(new CheckBox("addGitflow", addGitflowModel)); form.add(new CheckboxOption("addGitFlow", "Include a .gitflow file", "This will generate a config file which guides Git clients in setting up Gitflow branches.", addGitflowModel).setVisible(false)); form.add(new Button("create")); src/main/java/com/gitblit/wicket/panels/ConditionalChoiceOption.html
New file @@ -0,0 +1,19 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd" xml:lang="en" lang="en"> <body> <wicket:panel> <div style="padding-top:4px;"> <div> <label style="font-weight:bold;" class="checkbox"><input type="checkbox" wicket:id="checkbox" /> <span wicket:id="name"></span></label> </div> <label class="checkbox" style="color:#777;"> <span wicket:id="description"></span> <p style="padding-top:5px;"><select class="span3" wicket:id="choice" /></p> </label> </div> </wicket:panel> </body> </html> src/main/java/com/gitblit/wicket/panels/ConditionalChoiceOption.java
New file @@ -0,0 +1,78 @@ /* * Copyright 2014 gitblit.com. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.gitblit.wicket.panels; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.model.IModel; import org.parboiled.common.StringUtils; /** * A re-usable conditional choice option panel. * * [x] title * description * [choices] * * @author James Moger * */ public class ConditionalChoiceOption<T> extends BasePanel { private static final long serialVersionUID = 1L; final CheckBox checkbox; final DropDownChoice<T> choice; public ConditionalChoiceOption(String wicketId, String title, String description, IModel<Boolean> checkboxModel, IModel<T> choiceModel, List<T> choices) { super(wicketId); add(new Label("name", title)); add(new Label("description", description).setVisible(!StringUtils.isEmpty(description))); this.checkbox = new CheckBox("checkbox", checkboxModel); checkbox.setOutputMarkupId(true); this.choice = new DropDownChoice<T>("choice", choiceModel, choices); choice.setOutputMarkupId(true); setup(); } private void setup() { add(checkbox); add(choice.setMarkupId("choice").setEnabled(choice.getChoices().size() > 0)); choice.setEnabled(checkbox.getModelObject()); checkbox.add(new AjaxFormComponentUpdatingBehavior("onchange") { private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { choice.setEnabled(checkbox.getModelObject()); target.addComponent(choice); if (!choice.isEnabled()) { choice.setModelObject(null); } } }); } }