Hello I am quite new to GWT and Java. I am doing an assigment which helps students select courses. The application starts and the user clicks on a department. When they click on the department the courses offered by that department are shown with check boxes next to each course. This all works fine, however what I need to do is have a separate panel called the "summary panel" that shows a summary of the users selections. The summary panel also needs to be updated on each change in the course selection.
Question:
How do I code this "summary panel" to show the users selections. In other words when a user has checked a course how do I show the contents of what the user checked(course name, course id, instructor, and day) I need to have a separate panel to show the summary of the course that was checked? My Code is below: Thanks
package cs701.client;
import java.util.ArrayList;
import java.util.List;
import cs701.client.Course;
import cs701.client.Department;
import cs701.shared.FieldVerifier;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.HorizontalSplitPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.VerticalSplitPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HTMLPanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class HW4_bleicherm implements EntryPoint {
private Widget selectedDepartmentRow;
private Department selectedDepartment;
private VerticalPanel coursesWidget;
public void onModuleLoad() {
RootPanel rootPanel = RootPanel.get();
rootPanel.setSize("450", "300");
DockPanel mainPanel = new DockPanel();
mainPanel.setBorderWidth(5);
mainPanel.setSize("482px", "422px");
mainPanel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER);
Widget header = createHeaderWidget();
mainPanel.add(header, DockPanel.NORTH);
mainPanel.setCellHeight(header, "30px");
HorizontalSplitPanel departmentsAndCourses =
new HorizontalSplitPanel();
departmentsAndCourses.setSplitPosition("200px");
mainPanel.add(departmentsAndCourses, DockPanel.CENTER);
departmentsAndCourses.setSize("458px", "309px");
RootPanel.get().add(mainPanel, 0, 10);
Widget departments = createDepartmentsWidget();
departmentsAndCourses.setLeftWidget(departments);
Widget courses = createCoursesWidget();
departmentsAndCourses.setRightWidget(courses);
}
/**
* Creates the header part of the layout.
*/
protected Widget createHeaderWidget() {
return new Label("Computer Science Course Selection Guide");
}
/**
* Creates the widget that displays the list of
* departments on the left side of the screen
*/
protected Widget createDepartmentsWidget() {
VerticalPanel departmentList = new VerticalPanel();
departmentList.setWidth("100%");
List<Department> departments = getAllDepartments();
for (final Department ins : departments) {
Widget departmentRow = createDepartmentRow(ins);
departmentList.add(departmentRow);
}
return departmentList;
}
/**
* Creates the widget that displays the list of
* checked courses
* @param checkbox
*
*/
/**
* Creates the widget that displays the department
* in the department list
*/
protected Widget createDepartmentRow(final Department department) {
final Label row = new Label(department.getName());
row.setWordWrap(false);
row.setStyleName("departmentRow");
row.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent e) {
if (row.equals(selectedDepartmentRow)) {
return; // do nothing as it is already selected
}
markSelected(selectedDepartmentRow, false);
markSelected(row, true);
selectedDepartmentRow = row;
selectedDepartment = department;
updateCoursesList();
}
});
return row;
}
/**
* Marks the department row as selected/unselected
*/
protected void markSelected(Widget departmentRow, boolean selected) {
if (departmentRow == null) {
return;
}
if (selected) {
departmentRow.addStyleName("selectedDepartment");
departmentRow.removeStyleName("unselectedDepartment");
} else {
departmentRow.addStyleName("unselectedDepartment");
departmentRow.removeStyleName("selectedDepartment");
}
}
/**
* Updates the courses shown on the right side of the screen
* that are offered by the selected department.
*/
public void updateCoursesList() {
List<Course> courses = getCoursesForSelectedDepartment();
coursesWidget.clear();
for (Course c : courses) {
Widget courseRow = createCourseRow(c);
coursesWidget.add(courseRow);
}
}
/**
* Creates the widget that will display the list of courses
* on the right side of the screen
*/
public Widget createCoursesWidget() {
coursesWidget = new VerticalPanel();
coursesWidget.setWidth("100%");
return coursesWidget;
}
/**
* Creates the widget that displays courses in the courses list.
* Shows the name of the course along with a checkbox next to the course.
*/
public Widget createCourseRow(Course course) {
HorizontalPanel row = new HorizontalPanel();
CheckBox checkbox = new CheckBox();
row.add(checkbox);
row.add(new Label(course.getCourseName()));
return row;
}
/**
* Returns a list of all available departments.
*/
public List<Department> getAllDepartments() {
List<Department> departmentList = new ArrayList<Department>();
departmentList.add(new Department("MET", "MET"));
departmentList.add(new Department("CAS", "CAS"));
return departmentList;
}
/**
* Returns a list of courses offered by the
* selected department.
*/
public List<Course> getCoursesForSelectedDepartment() {
List<Course> courses = new ArrayList<Course>();
if (selectedDepartment == null) {
return courses;
}
else if (selectedDepartment.getId().equals("MET")) {
courses.add(new Course("CS341", "Data Structures","Maslanka","Wednesday"));
courses.add(new Course("CS702","Advanced Web Application Development","Kalathur","Tuesday"));
return courses;
}
else if (selectedDepartment.getId().equals("CAS")) {
courses.add(new Course("CS105","Databases","Sullivan","Monday"));
courses.add(new Course("CS455","Computer Networks","Crovella","Thursday"));
return courses;
}
return courses;
}
}