Objects/employees returned from the AC-comp is not erased when a user cancels the dialog.

This commit is contained in:
Tom Vahlman 2012-03-21 18:44:47 +01:00
parent aa22f41c41
commit eab085f589
2 changed files with 66 additions and 57 deletions
src/main/java/se/su/dsv/scipro/admin/panels

@ -41,32 +41,33 @@ public class ManualMatchPanel extends Panel {
private Fragment currentFragment;
private Fragment alternateFragment;
private AutoCompleteObjectField<Employee, Long> autoCompleteObjectField;
private ConfirmerAjaxSubmitLink saveButton;
public ManualMatchPanel(String id, final IModel<Match> matchModel, final Component feedbackPanel, final Match.Status status) {
super(id);
Component localFeedback = new FeedbackPanel("localFeedback");
ConfirmerAjaxSubmitLink saveButton = createSubmitLink(matchModel, feedbackPanel, status, localFeedback);
autoCompleteObjectField = createDsvAutocompleteComponent(matchModel.getObject().getProjectIdea(), status, saveButton);
AutoCompleteObjectField<Employee, Long> autoCompleteObjectField =
createDsvAutocompleteComponent(matchModel.getObject().getProjectIdea(), status);
autoCompleteObjectField.setOutputMarkupId(true);
saveButton = createSubmitLink(matchModel, feedbackPanel, status, localFeedback, autoCompleteObjectField);
saveButton.setOutputMarkupId(true);
setOutputMarkupPlaceholderTag(true);
Form<Employee> matchForm = new Form<Employee>("matchForm");
currentFragment = createButtonFragment(status, matchForm);
currentFragment = createButtonFragment(status, matchForm, autoCompleteObjectField);
currentFragment.setOutputMarkupId(true);
alternateFragment = createMatchFragment(saveButton, matchForm, localFeedback);
alternateFragment = createMatchFragment(matchForm, localFeedback, autoCompleteObjectField);
alternateFragment.setOutputMarkupId(true);
add(currentFragment);
}
private ConfirmerAjaxSubmitLink createSubmitLink(final IModel<Match> matchModel, final Component feedbackPanel, final Match.Status status, final Component localFeedback) {
private ConfirmerAjaxSubmitLink createSubmitLink(final IModel<Match> matchModel, final Component feedbackPanel, final Match.Status status,
final Component localFeedback, final AutoCompleteObjectField<Employee, Long> autoCompleteObjectField) {
return new ConfirmerAjaxSubmitLink("saveButton") {
private static final long serialVersionUID = -1820883998549197409L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
if(autoCompleteObjectField.getModelObject() == null) {
Session.get().info("No match could be created because the supervisor was incorrect.");
Session.get().info("No match could be created because no supervisor was selected.");
target.addComponent(localFeedback);
} else {
matchModel.getObject().setSupervisor(autoCompleteObjectField.getModelObject() != null ? autoCompleteObjectField.getModelObject():null);
@ -87,7 +88,8 @@ public class ManualMatchPanel extends Panel {
};
}
private Fragment createButtonFragment(final Match.Status status, final Form<Employee> matchForm) {
private Fragment createButtonFragment(final Match.Status status, final Form<Employee> matchForm,
final AutoCompleteObjectField<Employee, Long> autoCompleteObjectField) {
Fragment buttonFragment = new Fragment("main", "buttonFragment", this) {
private static final long serialVersionUID = 2699118307386334814L;
@ -104,10 +106,7 @@ public class ManualMatchPanel extends Panel {
@Override
public void onClick(AjaxRequestTarget target) {
swapFragment();
if (target != null) {
target.addComponent(currentFragment);
}
swapAndAddToTarget(target, autoCompleteObjectField);
}
@Override
public boolean isVisible() {
@ -120,10 +119,7 @@ public class ManualMatchPanel extends Panel {
@Override
public void onClick(AjaxRequestTarget target) {
swapFragment();
if (target != null) {
target.addComponent(currentFragment);
}
swapAndAddToTarget(target, autoCompleteObjectField);
}
@Override
public boolean isVisible() {
@ -135,7 +131,27 @@ public class ManualMatchPanel extends Panel {
return buttonFragment;
}
private Fragment createMatchFragment(final ConfirmerAjaxSubmitLink saveButton, final Form<Employee> matchForm, Component localFeedback) {
private void swapAndAddToTarget(AjaxRequestTarget target, final AutoCompleteObjectField autoCompleteObjectField) {
swapFragment();
if (target != null) {
autoCompleteObjectField.setModelObject(null);
autoCompleteObjectField.clearInput();
saveButton.setMessageContentHTML("No supervisor was selected.");
target.addComponent(currentFragment);
target.addComponent(autoCompleteObjectField);
target.addComponent(saveButton);
}
}
private void swapFragment() {
Fragment tempFragment = currentFragment;
currentFragment.replaceWith(alternateFragment);
currentFragment = alternateFragment;
alternateFragment = tempFragment;
}
private Fragment createMatchFragment(final Form<Employee> matchForm, Component localFeedback, final AutoCompleteObjectField<Employee, Long> autoCompleteObjectField ) {
Fragment matchFragment = new Fragment("main", "matchFragment", this) {
private static final long serialVersionUID = -7770434904843562942L;
@ -146,22 +162,15 @@ public class ManualMatchPanel extends Panel {
}
};
autoCompleteObjectField.setModelObject(null);
saveButton.setOutputMarkupId(true);
localFeedback.setOutputMarkupId(true);
matchForm.add(localFeedback);
matchForm.add(autoCompleteObjectField);
matchForm.add(saveButton);
matchForm.add(new AjaxFallbackLink<Object>("cancelButton") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
swapFragment();
if (target != null) {
target.addComponent(currentFragment);
}
swapAndAddToTarget(target, autoCompleteObjectField);
}
});
matchFragment.add(matchForm);
@ -169,7 +178,7 @@ public class ManualMatchPanel extends Panel {
return matchFragment;
}
public AutoCompleteObjectField<Employee, Long> createDsvAutocompleteComponent(final ProjectIdea projectIdea, final Match.Status status, final ConfirmerAjaxSubmitLink saveButton) {
public AutoCompleteObjectField<Employee, Long> createDsvAutocompleteComponent(final ProjectIdea projectIdea, final Match.Status status) {
return new AutoCompleteObjectField<Employee, Long>("autoComplete", Employee.class) {
private static final long serialVersionUID = 7734889540424308421L;
@ -225,13 +234,6 @@ public class ManualMatchPanel extends Panel {
};
}
private void swapFragment() {
Fragment tempFragment = currentFragment;
currentFragment.replaceWith(alternateFragment);
currentFragment = alternateFragment;
alternateFragment = tempFragment;
}
/**
*
* This method is used to return a match message that an employee was matched or suggested to a project idea .

@ -32,20 +32,24 @@ public class ManualSetReviewerPanel extends Panel {
private Fragment currentFragment;
private Fragment alternateFragment;
private AutoCompleteObjectField<Employee, Long> autocompleteReviewerField;
private ConfirmerAjaxSubmitLink saveButton;
public ManualSetReviewerPanel(String id, IModel<ProjectIdea> projectIdeaModel, Component feedbackPanel) {
super(id);
Component localFeedback = new FeedbackPanel("localFeedback");
ConfirmerAjaxSubmitLink saveButton = createSubmitLink(projectIdeaModel, feedbackPanel, localFeedback);
autocompleteReviewerField = createDsvAutocompleteComponent(projectIdeaModel.getObject(), saveButton);
AutoCompleteObjectField<Employee, Long> autocompleteReviewerField = createDsvAutocompleteComponent(projectIdeaModel.getObject());
saveButton = createSubmitLink(projectIdeaModel, feedbackPanel, localFeedback, autocompleteReviewerField);
saveButton.setOutputMarkupId(true);
autocompleteReviewerField.setOutputMarkupId(true);
setOutputMarkupPlaceholderTag(true);
Form<Employee> reviewerForm = new Form<Employee>("reviewerForm");
currentFragment = createButtonFragment(reviewerForm);
alternateFragment = createReviewerFragment(saveButton, reviewerForm, localFeedback);
currentFragment = createButtonFragment(reviewerForm, autocompleteReviewerField);
alternateFragment = createReviewerFragment(reviewerForm, localFeedback, autocompleteReviewerField );
add(currentFragment);
}
private ConfirmerAjaxSubmitLink createSubmitLink(final IModel<ProjectIdea> projectIdeaModel, final Component feedbackPanel, final Component localFeedback) {
private ConfirmerAjaxSubmitLink createSubmitLink(final IModel<ProjectIdea> projectIdeaModel, final Component feedbackPanel,
final Component localFeedback, final AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
return new ConfirmerAjaxSubmitLink("saveButton") {
private static final long serialVersionUID = -1852298712407811714L;
@ -53,7 +57,7 @@ public class ManualSetReviewerPanel extends Panel {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
if(autocompleteReviewerField.getModelObject() == null) {
Session.get().info("No match could be created because the reviewer was incorrect.");
Session.get().info("No reviewer could be selected because the data was incorrect.");
target.addComponent(localFeedback);
} else {
ProjectIdea projectIdea = projectIdeaModel.getObject();
@ -77,7 +81,7 @@ public class ManualSetReviewerPanel extends Panel {
private Fragment createButtonFragment(final Form<Employee> reviewerForm) {
private Fragment createButtonFragment(final Form<Employee> reviewerForm, final AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
Fragment buttonFragment = new Fragment("main", "buttonFragment", this) {
private static final long serialVersionUID = 2383077895140299047L;
@ -93,17 +97,26 @@ public class ManualSetReviewerPanel extends Panel {
@Override
public void onClick(AjaxRequestTarget target) {
swapFragment();
if (target != null) {
target.addComponent(currentFragment);
}
swapAndAddToTarget(target, autocompleteReviewerField);
}
});
buttonFragment.setOutputMarkupPlaceholderTag(true);
return buttonFragment;
}
private Fragment createReviewerFragment(ConfirmerAjaxSubmitLink saveButton, final Form<Employee> reviewerForm, Component localFeedback) {
private void swapAndAddToTarget(AjaxRequestTarget target, final AutoCompleteObjectField autoCompleteObjectField) {
swapFragment();
if (target != null) {
autoCompleteObjectField.setModelObject(null);
autoCompleteObjectField.clearInput();
saveButton.setMessageContentHTML("No supervisor was selected.");
target.addComponent(currentFragment);
target.addComponent(autoCompleteObjectField);
target.addComponent(saveButton);
}
}
private Fragment createReviewerFragment(final Form<Employee> reviewerForm, Component localFeedback, final AutoCompleteObjectField<Employee, Long> autocompleteReviewerField) {
Fragment reviewerFragment = new Fragment("main", "reviewerFragment", this) {
private static final long serialVersionUID = -1831632235479216987L;
@ -115,23 +128,17 @@ public class ManualSetReviewerPanel extends Panel {
}
};
autocompleteReviewerField.setModelObject(null);
reviewerForm.add(autocompleteReviewerField);
saveButton.setOutputMarkupId(true);
localFeedback.setOutputMarkupId(true);
reviewerForm.add(localFeedback);
reviewerForm.add(saveButton);
reviewerForm.add(new AjaxFallbackLink<Object>("cancelButton") {
private static final long serialVersionUID = 5413209640805412939L;
@Override
public void onClick(AjaxRequestTarget target) {
swapFragment();
if (target != null) {
target.addComponent(currentFragment);
}
swapAndAddToTarget(target, autocompleteReviewerField);
}
});
reviewerFragment.add(reviewerForm);
@ -139,7 +146,7 @@ public class ManualSetReviewerPanel extends Panel {
return reviewerFragment;
}
public AutoCompleteObjectField<Employee, Long> createDsvAutocompleteComponent(final ProjectIdea projectIdea, final ConfirmerAjaxSubmitLink saveButton) {
public AutoCompleteObjectField<Employee, Long> createDsvAutocompleteComponent(final ProjectIdea projectIdea) {
return new AutoCompleteObjectField<Employee, Long>("reviewerTextField", Employee.class) {
private static final long serialVersionUID = 8639430940925886127L;