removed old edit project panel, some cleanup in present one

This commit is contained in:
fred-fri 2012-05-10 12:53:43 +09:00
parent 427a3a6b1e
commit 3c45bac2ee
3 changed files with 0 additions and 565 deletions

@ -1,80 +0,0 @@
<!DOCTYPE html>
<html
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<wicket:panel>
<!-- <table class="rounded-corner"> -->
<!-- <tr> -->
<!-- <th class="rounded-left-top"><a href="#" wicket:id="idSort">Id</a></th> -->
<!-- <th><a href="#" wicket:id="lastModifiedSort">Modified</a></th> -->
<!-- <th><a href="#" wicket:id="titleSort">Title</a></th> -->
<!-- <th><a href="#" wicket:id="headSupervisorSort">Head supervisor</a></th> -->
<!-- <th class="rounded-right-top">Edit</th> -->
<!-- </tr> -->
<!-- <tr wicket:id="projectDataView"> -->
<!-- <td><span wicket:id="id">[id]</span></td> -->
<!-- <td><span wicket:id="modified"></span></td> -->
<!-- <td><span wicket:id="title">[title]</span></td> -->
<!-- <td><span wicket:id="headSupervisor">[A Person]</span></td> -->
<!-- <td><a href=# wicket:id="editLink">Edit</a></td> -->
<!-- </tr> -->
<!-- </table> -->
<!-- <div class="span-18 last"> -->
<!-- <span wicket:id="navigator">[dataview navigator]</span> -->
<!-- </div> -->
<!-- <div class="span-18 last"> -->
<!-- <a href=# wicket:id="createLink">Create new project</a> -->
<!-- </div> -->
<!-- <div class="span-18 last"> -->
<!-- <div wicket:id="feedback"></div> -->
<!-- </div> -->
<!-- <div class="last form-border" wicket:id="formContainer"> -->
<form wicket:id="projectCreationForm">
<div>
<wicket:enclosure child="identifier">
<div class="info-box rounded-box">This project is synchronized with remote systems, changes made to it may be overwritten if the remote system updates the projects data (external identifier: <span wicket:id="identifier">externalId</span>)</div>
</wicket:enclosure>
</div>
<label for="projectTitle">Project title</label>
<div>
<input type="text" id="projectTitle" wicket:id="titleField" size="40"></input>
</div>
<div>
<label for="projectClass">Type of project</label>
</div>
<span wicket:id="projectClass"> <input type="radio"
id="projectClass" />
</span>
<div>
<label for="students">Participating students</label>
</div>
<div wicket:id="projectParticipants" id="students"></div>
<div>
<label for="headSupervisor">Head supervisor</label>
</div>
<div wicket:id="headSupervisor" id="headSupervisor"></div>
<div>
<label for="followers">Add/edit project followers</label>
</div>
<div class="last append-bottom" wicket:id="followers" id="followers"></div>
<div class="last">
<!-- <input type="submit" name="Save" title="Save" value="Save" /> -->
<input type="button" wicket:id="saveButton" value="Save"/>
</div>
</form>
<!-- </div> -->
</wicket:panel>
</body>
</html>

@ -1,419 +0,0 @@
package se.su.dsv.scipro.project.panels;
import edu.emory.mathcs.backport.java.util.Collections;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.apache.wicket.Component;
import org.apache.wicket.Response;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.RadioChoice;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.validation.validator.StringValidator;
import org.odlabs.wiquery.core.effects.EffectBehavior;
import org.odlabs.wiquery.core.effects.EffectSpeed;
import org.odlabs.wiquery.core.effects.basic.Delay;
import org.odlabs.wiquery.core.effects.fading.FadeOut;
import org.wicketstuff.objectautocomplete.ObjectAutoCompleteBuilder;
import org.wicketstuff.objectautocomplete.ObjectAutoCompleteField;
import org.wicketstuff.objectautocomplete.ObjectAutoCompleteRenderer;
import org.wicketstuff.objectautocomplete.ObjectReadOnlyRenderer;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.admin.pages.ProjectContainer;
import se.su.dsv.scipro.components.autocomplete.*;
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dao.interfaces.RoleDao;
import se.su.dsv.scipro.data.dataobjects.*;
import se.su.dsv.scipro.data.facade.ProjectFacade;
import se.su.dsv.scipro.security.auth.roles.Roles;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
import se.su.dsv.scipro.io.ExternalExporter;
import se.su.dsv.scipro.io.ExternalImporter;
import se.su.dsv.scipro.io.exceptions.ExternalExportException;
import se.su.dsv.scipro.io.exceptions.ExternalImportException;
import edu.emory.mathcs.backport.java.util.Collections;
//@Authorization(authorizedRoles={Roles.SYSADMIN,Roles.ADMIN})
public abstract class EditProjectPanel extends Panel {
private static final long serialVersionUID = 1L;
// public static final String MAIN_MENU_LABEL = "Manage Projects";
@SpringBean
private ProjectDao projectDao;
@SpringBean
private ProjectClassDao projectClassDao;
@SpringBean
private RoleDao roleDao;
@SpringBean
private ProjectFacade facade;
@SpringBean
private ExternalExporter externalExporter;
// private final WebMarkupContainer formContainer;
private ProjectCreationForm form;
private CompoundPropertyModel<ProjectContainer> projectModel;
private boolean createNewProject;
public abstract void onUpdate(AjaxRequestTarget target);
public EditProjectPanel(String id, Project project, boolean createNewProject){
super(id);
this.createNewProject = createNewProject;
FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
feedbackPanel.add(new EffectBehavior(new Delay(5000))).add(new EffectBehavior(new FadeOut(EffectSpeed.SLOW)));
// add(feedbackPanel);
// formContainer = new WebMarkupContainer("formContainer");
// formContainer.setOutputMarkupId(true);
// formContainer.setOutputMarkupPlaceholderTag(true);
// add(formContainer);
projectModel = new CompoundPropertyModel<ProjectContainer>(new ProjectContainer(project));
form = new ProjectCreationForm("projectCreationForm", projectModel);
add(form);
// formContainer.add(form);
// formContainer.setVisible(false);
// AjaxLink<Void> createLink = new AjaxLink<Void>("createLink"){
// private static final long serialVersionUID = 1L;
//
// @Override
// public void onClick(AjaxRequestTarget target) {
// //updateCreationForm(projectDao.findAll().get(0));
// updateCreationForm(new Project());
// //target.addComponent(formContainer);
// target.addComponent(WiQueryCoreEffectsHelper.slideDown(formContainer, EffectSpeed.FAST));
// }
// };
// add(createLink);
// }
// private void updateCreationForm(Project project){
// formContainer.setVisible(true);
// formContainer.removeAll();
//
// projectModel.setObject(new ProjectContainer(project));
// form = new ProjectCreationForm("projectCreationForm",projectModel);
//
// formContainer.add(form);
// }
}
private class ProjectCreationForm extends Form<ProjectContainer> {
private static final long serialVersionUID = 1L;
private RequiredTextField<String> titleField;
private MultiObjectAutoCompleteField<Student, Long> participantsSelector;
private ObjectAutoCompleteField<Employee, Long> headSupervisorSelector;
private TeamMemberMultiObjectAutoCompleteField<ProjectTeamMember, Long> projectTeamMemberSelector;
public ProjectCreationForm(String id, IModel<ProjectContainer> model) {
super(id,model);
// boolean editEnabled = true;//Allow for confing this some way, preferrably via db-settings.
boolean editEnabled = SciProSession.get().authorizedForRole(Roles.SYSADMIN);
titleField = new RequiredTextField<String>("titleField",new PropertyModel<String>(projectModel,"title"));
titleField.add(new StringValidator.MaximumLengthValidator(200));
add(titleField);
final Label externalIdentifier = new Label("identifier",new PropertyModel<Long>(projectModel,"originalProject.identifier"));
add(externalIdentifier);
externalIdentifier.setVisible(projectModel.getObject().getOriginalProject().getIdentifier() != null);
List<ProjectClass> projectClassChoices = projectClassDao.findAll();
Collections.sort(projectClassChoices);
RadioChoice<ProjectClass> projectClass = new RadioChoice<ProjectClass>("projectClass", projectClassChoices);
projectClass.setRequired(true);
add(projectClass);
addProjectParticipantsSelection();
addHeadSupervisorSelection();
addProjectFollowerSelector();
titleField.setEnabled(editEnabled);
participantsSelector.setEnabled(editEnabled);
headSupervisorSelector.setEnabled(editEnabled);
projectTeamMemberSelector.setEnabled(editEnabled);
projectClass.setEnabled(editEnabled);
add(new AjaxButton("saveButton") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
submit();
onUpdate(target);
}
}.setVisible(SciProSession.get().authorizedForRole(Roles.SYSADMIN)));
}
public void submit(){
boolean success = true;
Project project = getModelObject().recreateProject();
project.getProjectParticipants().addAll(participantsSelector.getSelectedObjects());
if(project.getProjectParticipants().isEmpty()){
success = false;
error("Please add at least one participant");
}
if(headSupervisorSelector.getModelObject() != null)
project.setHeadSupervisor((Employee) roleDao.load(headSupervisorSelector.getModelObject()));
if (projectTeamMemberSelector.getModelObject() !=null){
TreeSet newSet = new TreeSet();
for (ProjectFollower pf : project.getProjectFollowers()){
User x = pf.getFollower().getUser();
for (ProjectTeamMember ptm : projectTeamMemberSelector.getModelObject()){
User y = ptm.getUser();
if (x.equals(y)){
newSet.add(pf);
}
}
}
project.setProjectFollowers(newSet);
}
if(success){
boolean newProject = project.getId() == null;
//project = projectDao.save(project);
if(newProject){
//System.out.println("should try to export");
/*try{
/*externalExporter.createProject(project);
final Set<Student> students = project.getProjectParticipants();
String projectId = project.getIdentifier().toString();
for(Student s : students){
externalExporter.addStudentToProject(s, project);
}
final Employee headSupervisor = project.getHeadSupervisor();
externalExporter.addContributorsToProject(headSupervisor, projectId, project);
*/
// facade.generateChecklists(project);
info("New project saved");
/*}catch(ExternalExportException eie){
//System.out.println(project.getIdentifier().toString());
externalExporter.deleteProject(project.getIdentifier().toString());
System.out.println("error mess: " + eie.getMessage());
} */
}
else{
/*try{
System.out.println("Should try to update thesis in daisy");
externalExporter.updateProject(project);
System.out.println("updated :"+ project.getTitle());
/*final Set<Student> students = project.getProjectParticipants();
String projectId = project.getIdentifier().toString();
for(Student s : students){
externalExporter.addStudentToProject(s, projectId, project);
}
final Employee headSupervisor = project.getHeadSupervisor();
externalExporter.addContributorsToProject(headSupervisor, projectId, project);*/
/*}catch(ExternalExportException eie){
//System.out.println(project.getIdentifier().toString());
//externalExporter.deleteProject(project.getIdentifier().toString());
System.out.println("error mess: " + eie.getMessage());
}*/
info("Project saved");
}
// formContainer.setVisible(false);
}
}
private void addProjectParticipantsSelection(){
AutoCompletionChoicesProvider<Student> provider = new AutoCompletionChoicesProvider<Student>(){
private static final long serialVersionUID = 1L;
@Override
public Iterator<Student> getChoices(String input) {
return roleDao.findStudentQuery(input.toLowerCase(), 6).iterator();
}
};
MultiObjectAutoCompleteRenderer<Student> renderer = new MultiObjectAutoCompleteRenderer<Student>(){
private static final long serialVersionUID = 1L;
public String getTextValue(Student s){
return s.getUser().toString();
}
protected String getIdValue(Student s){
return s.getId().toString();
}
};
MultiObjectAutoCompleteObjectConverter<Long, Student> objectConverter = new MultiObjectAutoCompleteObjectConverter<Long, Student>(){
private static final long serialVersionUID = 1L;
public Student convertToObject(Long id) {
return (Student) roleDao.load(id);
}
};
MultiObjectAutoCompleteBuilder<Student, Long> builder = new MultiObjectAutoCompleteBuilder<Student, Long>(provider);
builder.autoCompleteRenderer(renderer);
builder.idType(Long.class);
builder.objectConverter(objectConverter);
//builder.resultListItemCssClass(Arrays.asList(new String[]{"icon", "icon-project"}));
participantsSelector = builder.build("projectParticipants");
participantsSelector.setSelectedObjects(new ArrayList<Student>(projectModel.getObject().getProjectParticipants()));
add(participantsSelector);
}//addProjectParticipantsSelection
private void addHeadSupervisorSelection(){
org.wicketstuff.objectautocomplete.AutoCompletionChoicesProvider<Employee> provider = new org.wicketstuff.objectautocomplete.AutoCompletionChoicesProvider<Employee>(){
private static final long serialVersionUID = 1L;
@Override
public Iterator<Employee> getChoices(String input) {
return roleDao.findEmployeeQuery(input.toLowerCase(), 6).iterator();
}
};
ObjectAutoCompleteRenderer<Employee> renderer = new ObjectAutoCompleteRenderer<Employee>(){
private static final long serialVersionUID = 1L;
@Override
protected String getTextValue(Employee e){
return e.getUser().toString();
}
@Override
protected String getIdValue(Employee e){
return e.getId().toString();
}
};
ObjectAutoCompleteBuilder<Employee, Long> builder = new ObjectAutoCompleteBuilder<Employee, Long>(provider);
builder.autoCompleteRenderer(renderer);
builder.idType(Long.class);
builder.searchLinkText("[Edit]");
builder.readOnlyRenderer(new ObjectReadOnlyRenderer<Long>(){
private static final long serialVersionUID = 1L;
@Override
public Component getObjectRenderer(String id, final IModel<Long> pModel, IModel<String> pSearchTextModel) {
return new Label(id, new IModel<String>(){
private static final long serialVersionUID = 1L;
private final IModel<Long> idModel = pModel;
@Override
public String getObject(){
return roleDao.load(idModel.getObject()).getUser().toString();
}
@Override
public void detach() {
//Ignore
}
@Override
public void setObject(String object) {
//Ignore
}
});
}
});
headSupervisorSelector = builder.build("headSupervisor",new PropertyModel<Long>(projectModel, "headSupervisorId"));
headSupervisorSelector.setRequired(true);
add(headSupervisorSelector);
}//addHeadSupervisorSelection()
private void addProjectFollowerSelector(){
AutoCompletionChoicesProvider<ProjectTeamMember> provider = new AutoCompletionChoicesProvider<ProjectTeamMember>(){
private static final long serialVersionUID = 1L;
@Override
public Iterator<ProjectTeamMember> getChoices(String input) {
return roleDao.findProjectTeamMemberQuery(input.toLowerCase(), 6).iterator();
}
};
MultiObjectAutoCompleteRenderer<ProjectTeamMember> renderer = new MultiObjectAutoCompleteRenderer<ProjectTeamMember>(){
private static final long serialVersionUID = 1L;
@Override
public String getTextValue(ProjectTeamMember p){
return p.getUser().toString();
}
@Override
protected String getIdValue(ProjectTeamMember p){
return p.getId().toString();
}
@Override
protected void renderObject(ProjectTeamMember object, Response response, String criteria) {
response.write("<li idvalue=\"" + getIdValueForObject(object) + "\" textvalue=\"" + getTextValueForObject(object) + "\">");
renderChoice(object, response, criteria);
response.write("</li>");
}
};
MultiObjectAutoCompleteObjectConverter<Long, ProjectTeamMember> objectConverter = new MultiObjectAutoCompleteObjectConverter<Long, ProjectTeamMember>(){
private static final long serialVersionUID = 1L;
public ProjectTeamMember convertToObject(Long id) {
return (ProjectTeamMember) roleDao.load(id);
}
};
TeamMemberMultiObjectAutoCompleteBuilder<ProjectTeamMember, Long> builder = new TeamMemberMultiObjectAutoCompleteBuilder<ProjectTeamMember, Long>(provider);
builder.autoCompleteRenderer(renderer);
builder.idType(Long.class);
builder.objectConverter(objectConverter);
//builder.resultListItemCssClass(Arrays.asList(new String[]{"icon", "icon-project"}));
projectTeamMemberSelector = builder.build("followers",new PropertyModel<List<ProjectTeamMember>>(projectModel,"projectTeamMembers"), projectModel);
projectTeamMemberSelector.setSelectedObjects(projectModel.getObject().getProjectTeamMembers());
add(projectTeamMemberSelector);
}//addProjectFollowerSelector
}//ProjectCreationForm
}

@ -98,11 +98,6 @@ public class ProjectManagementPanel extends Panel {
@Override
public void onUpdate(AjaxRequestTarget target) {
// dialog.close(target);
// ajaxRefresh(target);
// target.addComponent(dialog);
setResponsePage(ProjectManagementPage.class);
}
@ -137,18 +132,6 @@ public class ProjectManagementPanel extends Panel {
@Override
public void onClick(AjaxRequestTarget target) {
// dialog.replace(new EditProjectPanel("panel", p) {
// private static final long serialVersionUID = 1L;
//
// @Override
// public void onUpdate(AjaxRequestTarget target) {
// dialog.close(target);
// ajaxRefresh(target);
// }
//
// });
dialog.replace(new AdminEditProject("panel", new Model<Project>(p)) {
private static final long serialVersionUID = -633068454448962134L;
@ -156,10 +139,6 @@ public class ProjectManagementPanel extends Panel {
public void onUpdate(AjaxRequestTarget target) {
dialog.close(target);
ajaxRefresh(target);
// target.addComponent(dialog);
// cd g
}
@Override
@ -264,9 +243,6 @@ public class ProjectManagementPanel extends Panel {
private void sortSetup() {
final Set<String> sortString = new HashSet<String>(); //make a set with columns you want to be sortable
sortString.add(new String("title"));
// sortString.add(new String("creator")); //this doesnt work because it sorts on user id, not name
// sortString.add(new String("numberOfQuestions"));
for (final String s : sortString) { //create links for sorting using the set
Link<Void> link = new Link<Void>(s + "Sort") {
private static final long serialVersionUID = 1L;
@ -291,62 +267,20 @@ public class ProjectManagementPanel extends Panel {
add(dialog);
dialog.add(new EmptyPanel("panel"));
// dialog.add(new EditProjectPanel("panel", new Project()){
// private static final long serialVersionUID = 1L;
// @Override
// public void onUpdate(AjaxRequestTarget target) {
// // target.addComponent(dialog);
// // dialog.close();
// // ajaxRefresh(target);
// setResponsePage(AdminCheckListPage.class);
// }
//
// });
//create new link.
AjaxLink<Void> newLink = new AjaxLink<Void>("newLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
// CheckListTemplate dummy = new CheckListTemplate();
// dummy.setCategories(new ArrayList<ChecklistCategory>());
// dummy.setCreator(SciProSession.get().getUser());
// dummy.setName("New checklisttemplate (change this to a real name)");
// dummy.setQuestions(new ArrayList<String>());
// dummy.setTemplateNumber(checklistTemplateDao.findTemplates().size()-1);
// dialog.replace(new FunctionalEditChecklistTemplatePanel("panel", dummy));
// dialog.replace(new EditProjectPanel("panel", new Project()) {
// private static final long serialVersionUID = 1L;
//
// @Override
// public void onUpdate(AjaxRequestTarget target) {
// // target.addComponent(dialog);
// // dialog.close();
// // ajaxRefresh(target);
// setResponsePage(ProjectManagementPage.class);
// }
//
// });
dialog.replace(new AdminEditProject("panel", new Model<Project>(new Project())) {
private static final long serialVersionUID = -9078483322668302904L;
@Override
public void onUpdate(AjaxRequestTarget target) {
dialog.close(target);
ajaxRefresh(target);
// target.addComponent(dialog);
// setResponsePage(ProjectManagementPage.class);
}
@Override
public boolean isEditable() {
return SciProSession.get().authorizedForRole(Roles.SYSADMIN);