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.JavaClassUnitProfile; import jdepend.service.profile.scope.ProfileScopeFacade; public class JavaClassUnitProfileSettingPanel extends ModelProfileSettingPanel { private JavaClassUnitProfile javaClassUnitProfile; private List<JCheckBox> abstractClassRuleCheckBoxes; private List<JCheckBox> stableRuleCheckBoxes; private static final int ItemHeight = 50; public JavaClassUnitProfileSettingPanel(JavaClassUnitProfile javaClassUnitProfile) { this.javaClassUnitProfile = javaClassUnitProfile; this.init(); this.refresh(); } private void init() { this.add(this.leftPanel()); this.add(this.rightPanel()); } protected Component leftPanel() { JPanel content = new JPanel(new BorderLayout()); JPanel left = new JPanel(new BorderLayout()); // 类的抽象性 List<String> allAbstractClassRules = JavaClassUnitProfile.getAllAbstractClassRules(); JPanel abstractClassRulePanel = new JPanel(new GridLayout(allAbstractClassRules.size(), 1)); abstractClassRulePanel.setBorder(new TitledBorder("判断类抽象性规则")); abstractClassRulePanel.setPreferredSize(new Dimension(this.getWidth(), ItemHeight * allAbstractClassRules.size())); this.abstractClassRuleCheckBoxes = new ArrayList<JCheckBox>(); JCheckBox abstractClassRuleCheckBox; for (String abstractClassRule : allAbstractClassRules) { abstractClassRuleCheckBox = new JCheckBox(abstractClassRule); abstractClassRuleCheckBoxes.add(abstractClassRuleCheckBox); abstractClassRulePanel.add(abstractClassRuleCheckBox); } left.add(BorderLayout.NORTH, abstractClassRulePanel); // 类的稳定性 List<String> allStableRules = JavaClassUnitProfile.getAllStableRules(); JPanel stableRulePanel = new JPanel(new GridLayout(allStableRules.size(), 1)); stableRulePanel.setBorder(new TitledBorder("判断类稳定性规则")); stableRulePanel.setPreferredSize(new Dimension(this.getWidth(), ItemHeight * allStableRules.size())); this.stableRuleCheckBoxes = new ArrayList<JCheckBox>(); JCheckBox stableRuleCheckBox; for (String stableRule : allStableRules) { stableRuleCheckBox = new JCheckBox(stableRule); stableRuleCheckBoxes.add(stableRuleCheckBox); stableRulePanel.add(stableRuleCheckBox); } left.add(BorderLayout.CENTER, stableRulePanel); content.add(BorderLayout.NORTH, left); content.add(BorderLayout.CENTER, this.getOtherPanel()); return content; } @Override protected void restore() { this.javaClassUnitProfile = ProfileScopeFacade.getInstance().getDefaultProfileFacade() .getJavaClassUnitProfile(); this.refresh(); } @Override public void refresh() { for (JCheckBox abstractClassRuleCheckBox : abstractClassRuleCheckBoxes) { if (javaClassUnitProfile.getAbstractClassRules().contains(abstractClassRuleCheckBox.getText())) { abstractClassRuleCheckBox.setSelected(true); } else { abstractClassRuleCheckBox.setSelected(false); } } for (JCheckBox stableRuleCheckBox : stableRuleCheckBoxes) { if (javaClassUnitProfile.getStableRules().contains(stableRuleCheckBox.getText())) { stableRuleCheckBox.setSelected(true); } else { stableRuleCheckBox.setSelected(false); } } } @Override public void validateData() throws ProfileValidateException { } @Override public void save(MaintainProfileFacade maintainProfileFacade) { JavaClassUnitProfile newJavaClassUnitProfile = new JavaClassUnitProfile(); List<String> abstractClassRules = new ArrayList<String>(); for (JCheckBox abstractClassRuleCheckBox : abstractClassRuleCheckBoxes) { if (abstractClassRuleCheckBox.isSelected()) { abstractClassRules.add(abstractClassRuleCheckBox.getText()); } } newJavaClassUnitProfile.setAbstractClassRules(abstractClassRules); List<String> stableClassRules = new ArrayList<String>(); for (JCheckBox stableRuleCheckBox : stableRuleCheckBoxes) { if (stableRuleCheckBox.isSelected()) { stableClassRules.add(stableRuleCheckBox.getText()); } } newJavaClassUnitProfile.setStableRules(stableClassRules); maintainProfileFacade.setJavaClassUnitProfile(newJavaClassUnitProfile); } @Override protected String getExplain() { return javaClassUnitProfile.getExplain(); } }