/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.dlect.ui.prefs; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import java.awt.GridBagConstraints; import java.util.Set; import java.util.TreeMap; import org.dlect.controller.MainController; import org.dlect.events.Event; import org.dlect.events.EventListener; import org.dlect.events.wrapper.Wrappers; import org.dlect.model.Database; import org.dlect.model.Database.DatabaseEventID; import org.dlect.model.Semester; import org.dlect.model.Semester.SemesterEventID; /** * * @author lee */ public class CoursePreferencePanel extends PreferencePanel implements EventListener { private static final long serialVersionUID = 1L; private final TreeMap<Semester, SemesterRowGroupHandler> semesterCtls = Maps.newTreeMap(); public CoursePreferencePanel(MainController ctl) { super(ctl); initComponents(); Wrappers.addSwingListenerTo(this, ctl, Database.class, Semester.class); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; shownLabel = new javax.swing.JLabel(); paddingPanel = new javax.swing.JPanel(); endPaddingPanel = new javax.swing.JPanel(); setLayout(new java.awt.GridBagLayout()); shownLabel.setText("Shown"); shownLabel.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createMatteBorder(0, 1, 1, 0, new java.awt.Color(0, 0, 0)), javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; add(shownLabel, gridBagConstraints); paddingPanel.setBorder(javax.swing.BorderFactory.createMatteBorder(0, 0, 1, 0, new java.awt.Color(0, 0, 0))); paddingPanel.setLayout(new java.awt.GridLayout(1, 0)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(paddingPanel, gridBagConstraints); endPaddingPanel.setBorder(javax.swing.BorderFactory.createMatteBorder(0, 1, 1, 0, new java.awt.Color(0, 0, 0))); endPaddingPanel.setPreferredSize(new java.awt.Dimension(0, 0)); endPaddingPanel.setLayout(new java.awt.GridLayout(1, 0)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; add(endPaddingPanel, gridBagConstraints); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel endPaddingPanel; private javax.swing.JPanel paddingPanel; private javax.swing.JLabel shownLabel; // End of variables declaration//GEN-END:variables public void doRefresh() { MainController mc = getController(); ImmutableSortedSet<Semester> semesters = mc.getDatabaseHandler().getDatabase().getSemesters(); Set<Semester> toRemove = Sets.newHashSet(semesterCtls.keySet()); toRemove.removeAll(semesters); for (Semester s : toRemove) { semesterCtls.remove(s).removeFromLayout(this); } int row = 1; for (Semester s : semesters) { SemesterRowGroupHandler get = semesterCtls.get(s); if (get == null) { get = new SemesterRowGroupHandler(s, mc); semesterCtls.put(s, get); get.createItems(); } GridBagConstraints gbc = new GridBagConstraints(); gbc.gridy = row; int change = get.doLayout(this, gbc); row += change; } } @Override public void doSave() { } @Override public void doPreShow() { doRefresh(); } @Override public String getTabName() { return "Courses"; } @Override public String getTabTooltip() { return "Choose which courses you would like displayed on the main screen"; } @Override public boolean isModified() { return false; } @Override public void processEvent(Event e) { if (e.getEventID().equals(DatabaseEventID.SEMESTER) || e.getEventID().equals(SemesterEventID.SUBJECT)) { doRefresh(); } } }