fixed bug to avoid the need to refocus on partner selection when authors accepting supervisor ideas. added an enclosure container as well to avoid wicket warnings

This commit is contained in:
Emil Siverhall 2012-07-31 10:32:14 +02:00
parent 77f88e5f0c
commit 9d9729caa1
2 changed files with 24 additions and 5 deletions
src/main/java/se/su/dsv/scipro/project/panels

@ -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>

@ -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;