package jdepend.client.ui.profile.settingpanel;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
import jdepend.client.ui.profile.ProfileValidateException;
import jdepend.model.profile.MaintainProfileFacade;
import jdepend.model.profile.model.AreaComponentProfile;
import jdepend.service.profile.scope.ProfileScopeFacade;
public class AreaComponentProfileSettingPanel extends ModelProfileSettingPanel {
private AreaComponentProfile areaComponentProfile;
private List<JCheckBox> accordingCheckBoxes;
private static final int ItemHeight = 50;
public AreaComponentProfileSettingPanel(AreaComponentProfile areaComponentProfile) {
this.areaComponentProfile = areaComponentProfile;
this.init();
this.refresh();
}
private void init() {
this.add(this.leftPanel());
this.add(this.rightPanel());
}
protected Component leftPanel() {
JPanel content = new JPanel(new BorderLayout());
List<String> allAccordings = AreaComponentProfile.getAllAccordings();
JPanel left = new JPanel(new BorderLayout());
left.setPreferredSize(new Dimension(this.getWidth(), ItemHeight * allAccordings.size()));
JPanel accordingPanel = new JPanel(new GridLayout(allAccordings.size(), 1));
accordingPanel.setBorder(new TitledBorder("判断规则"));
this.accordingCheckBoxes = new ArrayList<JCheckBox>();
JCheckBox accordingCheckBox;
for (String according : allAccordings) {
accordingCheckBox = new JCheckBox(according);
accordingCheckBoxes.add(accordingCheckBox);
accordingPanel.add(accordingCheckBox);
}
left.add(BorderLayout.CENTER, accordingPanel);
content.add(BorderLayout.NORTH, left);
content.add(BorderLayout.CENTER, this.getOtherPanel());
return content;
}
@Override
protected void restore() {
this.areaComponentProfile = ProfileScopeFacade.getInstance().getDefaultProfileFacade()
.getAreaComponentProfile();
this.refresh();
}
@Override
public void refresh() {
for (JCheckBox accordingCheckBox : accordingCheckBoxes) {
if (areaComponentProfile.getAccordings().contains(accordingCheckBox.getText())) {
accordingCheckBox.setSelected(true);
} else {
accordingCheckBox.setSelected(false);
}
}
}
@Override
public void validateData() throws ProfileValidateException {
}
@Override
public void save(MaintainProfileFacade maintainProfileFacade) {
AreaComponentProfile newAreaComponentProfile = new AreaComponentProfile();
List<String> accordings = new ArrayList<String>();
for (JCheckBox accordingCheckBox : accordingCheckBoxes) {
if (accordingCheckBox.isSelected()) {
accordings.add(accordingCheckBox.getText());
}
}
newAreaComponentProfile.setAccordings(accordings);
maintainProfileFacade.setAreaComponentProfile(newAreaComponentProfile);
}
@Override
protected String getExplain() {
return areaComponentProfile.getExplain();
}
}