public HaarClassifierSettingsPanel(HaarClassifierDetection model){
super(new BorderLayout());
EventListener listener = new EventListener();
NiceJPanel rows = new NiceJPanel();
JPanel cascadeMenuPanel = new JPanel(new BorderLayout());
cascadeMenuPanel.setBorder(new TitledBorder("Cascade File"));
cascadeMenuPanel.add(cascadeMenu, BorderLayout.CENTER);
cascadeMenu.addActionListener(listener);
rows.addRow(cascadeMenuPanel);
JPanel scaleFactorPanel = new JPanel(new BorderLayout());
scaleFactorPanel.setBorder(new TitledBorder("Scale Factor for Scan Window"));
scaleFactorPanel.add(scaleFactor, BorderLayout.CENTER);
scaleFactor.addChangeListener(listener);
rows.addRow(scaleFactorPanel);
JPanel minimumGroupMembersPanel = new JPanel(new BorderLayout());
minimumGroupMembersPanel.setBorder(new TitledBorder("Miminum Matches per Group"));
minimumGroupMembersPanel.add(minimumGroupMembers, BorderLayout.CENTER);
minimumGroupMembers.addChangeListener(listener);
minimumGroupMembersPanel.add(showAllMatches, BorderLayout.SOUTH);
showAllMatches.addActionListener(listener);
rows.addRow(minimumGroupMembersPanel);
JPanel scaleImagePanel = new JPanel(new BorderLayout());
scaleImagePanel.setBorder(new TitledBorder("Scale Image"));
scaleImagePanel.add(scaleImage, BorderLayout.CENTER);
scaleImage.addActionListener(listener);
rows.addRow(scaleImagePanel);
JPanel performHistogramEqualizationPanel = new JPanel(new BorderLayout());
performHistogramEqualizationPanel.setBorder(new TitledBorder("Scale Image"));
performHistogramEqualizationPanel.add(performHistogramEqualization, BorderLayout.CENTER);
performHistogramEqualization.addActionListener(listener);
rows.addRow(performHistogramEqualizationPanel);
this.add(rows, BorderLayout.NORTH);
this.model = model;
updateFromModel();