Skip to content

Commit

Permalink
meeting scheduling: fix panel orientation
Browse files Browse the repository at this point in the history
  • Loading branch information
ge0ffrey committed Nov 22, 2015
1 parent fe9bf53 commit ee6ffd5
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 41 deletions.
Expand Up @@ -133,8 +133,10 @@ public void addLayoutComponent(Component component, Object o) {
} }
if (c.isFillCollisions()) { if (c.isFillCollisions()) {
if (collisionIndex != 0 || occupiedCollisionIndexes.contains(FILL_COLLISIONS_FLAG)) { if (collisionIndex != 0 || occupiedCollisionIndexes.contains(FILL_COLLISIONS_FLAG)) {
throw new IllegalArgumentException("There is a collision with fillCollisions (" throw new IllegalArgumentException("There is a collision in the cell range ("
+ c.isFillCollisions() + ")."); + (c.getX() == c.getXEnd() - 1 ? c.getX() : c.getX() + "-" + (c.getXEnd() - 1))
+ ", " + (c.getY() == c.getYEnd() - 1 ? c.getY() : c.getY() + "-" + (c.getYEnd() - 1))
+ ").");
} }
collisionIndex = FILL_COLLISIONS_FLAG; collisionIndex = FILL_COLLISIONS_FLAG;
} }
Expand Down
Expand Up @@ -47,15 +47,15 @@ public class MeetingSchedulingPanel extends SolutionPanel {


public static final String LOGO_PATH = "/org/optaplanner/examples/meetingscheduling/swingui/meetingschedulingLogo.png"; public static final String LOGO_PATH = "/org/optaplanner/examples/meetingscheduling/swingui/meetingschedulingLogo.png";


private final TimeTablePanel<Room, TimeGrain> roomsPanel; private final TimeTablePanel<TimeGrain, Room> roomsPanel;
private final TimeTablePanel<Person, TimeGrain> personsPanel; private final TimeTablePanel<TimeGrain, Person> personsPanel;


public MeetingSchedulingPanel() { public MeetingSchedulingPanel() {
setLayout(new BorderLayout()); setLayout(new BorderLayout());
JTabbedPane tabbedPane = new JTabbedPane(); JTabbedPane tabbedPane = new JTabbedPane();
roomsPanel = new TimeTablePanel<Room, TimeGrain>(); roomsPanel = new TimeTablePanel<TimeGrain, Room>();
tabbedPane.add("Rooms", new JScrollPane(roomsPanel)); tabbedPane.add("Rooms", new JScrollPane(roomsPanel));
personsPanel = new TimeTablePanel<Person, TimeGrain>(); personsPanel = new TimeTablePanel<TimeGrain, Person>();
tabbedPane.add("Persons", new JScrollPane(personsPanel)); tabbedPane.add("Persons", new JScrollPane(personsPanel));
add(tabbedPane, BorderLayout.CENTER); add(tabbedPane, BorderLayout.CENTER);
setPreferredSize(PREFERRED_SCROLLABLE_VIEWPORT_SIZE); setPreferredSize(PREFERRED_SCROLLABLE_VIEWPORT_SIZE);
Expand Down Expand Up @@ -85,69 +85,62 @@ public void resetPanel(Solution solution) {
} }


private void defineGrid(MeetingSchedule meetingSchedule) { private void defineGrid(MeetingSchedule meetingSchedule) {
JButton footprint = SwingUtils.makeSmallButton(new JButton("AAAAA BB CC DDDDD")); roomsPanel.defineColumnHeaderByKey(HEADER_COLUMN); // Room header
int footprintWidth = footprint.getPreferredSize().width; personsPanel.defineColumnHeaderByKey(HEADER_COLUMN); // Person header
for (TimeGrain timeGrain : meetingSchedule.getTimeGrainList()) {
roomsPanel.defineColumnHeader(timeGrain);
personsPanel.defineColumnHeader(timeGrain);
}
roomsPanel.defineColumnHeader(null); // Unassigned timeGrain
personsPanel.defineColumnHeader(null); // Unassigned timeGrain


roomsPanel.defineColumnHeaderByKey(HEADER_COLUMN_GROUP1); // Day header roomsPanel.defineRowHeaderByKey(HEADER_ROW); // TimeGrain header
roomsPanel.defineColumnHeaderByKey(HEADER_COLUMN); // Period header
for (Room room : meetingSchedule.getRoomList()) { for (Room room : meetingSchedule.getRoomList()) {
roomsPanel.defineColumnHeader(room, footprintWidth); roomsPanel.defineRowHeader(room);
} }
roomsPanel.defineColumnHeader(null, footprintWidth); // Unassigned roomsPanel.defineRowHeader(null); // Unassigned


personsPanel.defineColumnHeaderByKey(HEADER_COLUMN_GROUP1); // Day header personsPanel.defineRowHeaderByKey(HEADER_ROW); // TimeGrain header
personsPanel.defineColumnHeaderByKey(HEADER_COLUMN); // Period header
for (Person person : meetingSchedule.getPersonList()) { for (Person person : meetingSchedule.getPersonList()) {
personsPanel.defineColumnHeader(person, footprintWidth); personsPanel.defineRowHeader(person);
} }

roomsPanel.defineRowHeaderByKey(HEADER_ROW); // Room header
personsPanel.defineRowHeaderByKey(HEADER_ROW); // Teacher header
for (TimeGrain timeGrain : meetingSchedule.getTimeGrainList()) {
roomsPanel.defineRowHeader(timeGrain);
personsPanel.defineRowHeader(timeGrain);
}
roomsPanel.defineRowHeader(null); // Unassigned timeGrain
personsPanel.defineRowHeader(null); // Unassigned timeGrain
} }


private void fillCells(MeetingSchedule meetingSchedule) { private void fillCells(MeetingSchedule meetingSchedule) {
roomsPanel.addCornerHeader(HEADER_COLUMN_GROUP1, HEADER_ROW, createTableHeader(new JLabel("Day")));
roomsPanel.addCornerHeader(HEADER_COLUMN, HEADER_ROW, createTableHeader(new JLabel("Time"))); roomsPanel.addCornerHeader(HEADER_COLUMN, HEADER_ROW, createTableHeader(new JLabel("Time")));
fillRoomCells(meetingSchedule); fillRoomCells(meetingSchedule);
personsPanel.addCornerHeader(HEADER_COLUMN_GROUP1, HEADER_ROW, createTableHeader(new JLabel("Day")));
personsPanel.addCornerHeader(HEADER_COLUMN, HEADER_ROW, createTableHeader(new JLabel("Time"))); personsPanel.addCornerHeader(HEADER_COLUMN, HEADER_ROW, createTableHeader(new JLabel("Time")));
fillTeacherCells(meetingSchedule); fillPersonCells(meetingSchedule);
fillTimeUnitCells(meetingSchedule); fillTimeGrainCells(meetingSchedule);
fillMeetingAssignmentCells(meetingSchedule); fillMeetingAssignmentCells(meetingSchedule);
} }


private void fillRoomCells(MeetingSchedule meetingSchedule) { private void fillRoomCells(MeetingSchedule meetingSchedule) {
for (Room room : meetingSchedule.getRoomList()) { for (Room room : meetingSchedule.getRoomList()) {
roomsPanel.addColumnHeader(room, HEADER_ROW, roomsPanel.addRowHeader(HEADER_COLUMN, room,
createTableHeader(new JLabel(room.getLabel(), SwingConstants.CENTER))); createTableHeader(new JLabel(room.getLabel(), SwingConstants.CENTER)));
} }
roomsPanel.addColumnHeader(null, HEADER_ROW, roomsPanel.addRowHeader(HEADER_COLUMN, null,
createTableHeader(new JLabel("Unassigned", SwingConstants.CENTER))); createTableHeader(new JLabel("Unassigned", SwingConstants.CENTER)));
} }


private void fillTeacherCells(MeetingSchedule meetingSchedule) { private void fillPersonCells(MeetingSchedule meetingSchedule) {
for (Person person : meetingSchedule.getPersonList()) { for (Person person : meetingSchedule.getPersonList()) {
personsPanel.addColumnHeader(person, HEADER_ROW, personsPanel.addRowHeader(HEADER_COLUMN, person,
createTableHeader(new JLabel(person.getLabel(), SwingConstants.CENTER))); createTableHeader(new JLabel(person.getLabel(), SwingConstants.CENTER)));
} }
} }


private void fillTimeUnitCells(MeetingSchedule meetingSchedule) { private void fillTimeGrainCells(MeetingSchedule meetingSchedule) {
for (TimeGrain timeGrain : meetingSchedule.getTimeGrainList()) { for (TimeGrain timeGrain : meetingSchedule.getTimeGrainList()) {
roomsPanel.addRowHeader(HEADER_COLUMN, timeGrain, roomsPanel.addColumnHeader(timeGrain, HEADER_ROW,
createTableHeader(new JLabel(timeGrain.getLabel()))); createTableHeader(new JLabel(timeGrain.getLabel())));
personsPanel.addRowHeader(HEADER_COLUMN, timeGrain, personsPanel.addColumnHeader(timeGrain, HEADER_ROW,
createTableHeader(new JLabel(timeGrain.getLabel()))); createTableHeader(new JLabel(timeGrain.getLabel())));
} }
roomsPanel.addRowHeader(HEADER_COLUMN_GROUP1, null, HEADER_COLUMN, null, roomsPanel.addColumnHeader(null, HEADER_ROW,
createTableHeader(new JLabel("Unassigned"))); createTableHeader(new JLabel("Unassigned")));
personsPanel.addRowHeader(HEADER_COLUMN_GROUP1, null, HEADER_COLUMN, null, personsPanel.addColumnHeader(null, HEADER_ROW,
createTableHeader(new JLabel("Unassigned"))); createTableHeader(new JLabel("Unassigned")));
} }


Expand All @@ -160,12 +153,12 @@ private void fillMeetingAssignmentCells(MeetingSchedule meetingSchedule) {
TimeGrain lastTimeGrain = startingTimeGrain == null ? null : TimeGrain lastTimeGrain = startingTimeGrain == null ? null :
meetingSchedule.getTimeGrainList().get( meetingSchedule.getTimeGrainList().get(
startingTimeGrain.getGrainIndex() + meetingAssignment.getMeeting().getDurationInGrains()); startingTimeGrain.getGrainIndex() + meetingAssignment.getMeeting().getDurationInGrains());
roomsPanel.addCell(meetingAssignment.getRoom(), startingTimeGrain, roomsPanel.addCell(startingTimeGrain, meetingAssignment.getRoom(),
meetingAssignment.getRoom(), lastTimeGrain, lastTimeGrain, meetingAssignment.getRoom(),
createButton(meetingAssignment, color)); createButton(meetingAssignment, color));
for (RequiredAttendance requiredAttendance : meetingAssignment.getMeeting().getRequiredAttendanceList()) { for (RequiredAttendance requiredAttendance : meetingAssignment.getMeeting().getRequiredAttendanceList()) {
personsPanel.addCell(requiredAttendance.getPerson(), startingTimeGrain, personsPanel.addCell(startingTimeGrain, requiredAttendance.getPerson(),
requiredAttendance.getPerson(), lastTimeGrain, lastTimeGrain, requiredAttendance.getPerson(),
createButton(meetingAssignment, color)); createButton(meetingAssignment, color));
} }
} }
Expand Down

0 comments on commit ee6ffd5

Please sign in to comment.