diff --git a/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.html b/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.html index 0aa6cc4d15..321ca27f6a 100644 --- a/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.html +++ b/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.html @@ -18,11 +18,11 @@ </div> <div wicket:id="ideaDetails"></div> <div> - <wicket:enclosure child="partnerPanel"> + <div wicket:id="partnerEnclosure"> <b>Partner:</b><br /> <div wicket:id="partnerPanel"></div> - </wicket:enclosure> - <span class="right"><input type="submit" wicket:id="selectButton" value="Select project idea"/></span> + </div> + <span class="right"><input type="submit" wicket:id="selectButton" value="Select project idea"/></span> </div> </form> </wicket:panel> diff --git a/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.java index 9ae5be8196..6a437374b5 100644 --- a/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.java +++ b/src/main/java/se/su/dsv/scipro/project/panels/AcceptIdeaDialogPanel.java @@ -2,13 +2,16 @@ package se.su.dsv.scipro.project.panels; import java.util.TreeSet; +import org.apache.wicket.ajax.AbstractAjaxTimerBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.basic.EnclosureContainer; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; import org.apache.wicket.spring.injection.annot.SpringBean; +import org.apache.wicket.util.time.Duration; import se.su.dsv.scipro.data.dataobjects.ProjectClass; import se.su.dsv.scipro.data.dataobjects.Student; @@ -34,6 +37,7 @@ public class AcceptIdeaDialogPanel extends Panel { private static final long serialVersionUID = -9118352523380756043L; private AddRemoveStudentsPanel partnerPanel; + private Button button; public AcceptIdeaForm(String id, final IModel<SupervisorIdea> model, final User loggedInUser, final boolean unconfirmed) { super(id, model); @@ -41,6 +45,19 @@ public class AcceptIdeaDialogPanel extends Panel { add(new ProjectIdeaDetailsPanel("ideaDetails", model, unconfirmed, false)); addUnconfirmedContainer(model, loggedInUser, unconfirmed); //Info box with accept/decline buttons addButton(model, loggedInUser, unconfirmed); + setFocusOnButton(); //Workaround to make partner selection work without the need to refocus. + } + + private void setFocusOnButton() { + add(new AbstractAjaxTimerBehavior(Duration.milliseconds(1)) { + private static final long serialVersionUID = 8249890924500999472L; + + @Override + protected void onTimer(AjaxRequestTarget target) { + target.focusComponent(button); + stop(); + } + }); } private void addUnconfirmedContainer(final IModel<SupervisorIdea> model, final User loggedInUser, final boolean unconfirmed) { @@ -83,11 +100,13 @@ public class AcceptIdeaDialogPanel extends Panel { } }; partnerPanel.setVisible(model.getObject().getProjectClass().getCode().equals(ProjectClass.BACHELOR) && !unconfirmed); - add(partnerPanel); + EnclosureContainer partnerEnclosure = new EnclosureContainer("partnerEnclosure", partnerPanel); + partnerEnclosure.add(partnerPanel); + add(partnerEnclosure); } private void addButton(final IModel<SupervisorIdea> model, final User loggedInUser, final boolean unconfirmed) { - Button button = new Button("selectButton") { + button = new Button("selectButton") { private static final long serialVersionUID = 8805671593150004137L;