package jdepend.client.ui.result.panel; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.ToolTipManager; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; import jdepend.client.report.ui.BalanceComponentDialog; import jdepend.client.report.ui.ClassListDialog; import jdepend.client.report.ui.CohesionDialog; import jdepend.client.report.ui.CouplingDialog; import jdepend.client.report.util.ReportConstant; import jdepend.client.ui.JDependCooper; import jdepend.client.ui.componentconf.ChangedElementListDialog; import jdepend.client.ui.framework.CompareInfoWebWarpper; import jdepend.client.ui.result.framework.SubResultTabPanel; import jdepend.client.ui.shoppingcart.model.ShoppingCart; import jdepend.client.ui.util.AnalysisResultExportUtil; import jdepend.core.domain.WisdomAnalysisResult; import jdepend.core.score.ScoreFacade; import jdepend.core.score.ScoreInfo; import jdepend.framework.exception.JDependException; import jdepend.framework.ui.graph.GraphUtil; import jdepend.framework.ui.graph.model.GraphData; import jdepend.framework.ui.graph.model.GraphDataItem; import jdepend.framework.ui.util.JDependUIUtil; import jdepend.framework.util.BundleUtil; import jdepend.framework.util.MathUtil; import jdepend.framework.util.MetricsFormat; import jdepend.framework.util.VersionUtil; import jdepend.knowledge.domainanalysis.AdviseInfo; import jdepend.knowledge.domainanalysis.StructureCategory; import jdepend.model.JDependUnitMgr; import jdepend.model.Scored; import jdepend.model.result.AnalysisResult; import jdepend.util.refactor.AdjustHistory; import jdepend.util.refactor.CompareInfo; import jdepend.util.refactor.CompareObject; public final class ScorePanel extends SubResultTabPanel { private AnalysisResult result; private JDependCooper frame; private List<ScoreInfo> scorelist = new ArrayList<ScoreInfo>(); public ScorePanel(AnalysisResult result, JDependCooper frame) { this.result = result; this.frame = frame; } @Override protected void init(AnalysisResult result) { try { scorelist = ScoreFacade.getScoreList(); } catch (JDependException e) { e.printStackTrace(); } initComponents(); } private void initComponents() { this.setBackground(new java.awt.Color(255, 255, 255)); this.setBorder(new EmptyBorder(2, 2, 2, 2)); this.add(BorderLayout.NORTH, this.createTitleInfo()); this.add(BorderLayout.CENTER, this.createWorkspacePanel()); } private JComponent createTitleInfo() { JPanel content = new JPanel(new BorderLayout()); content.setBackground(new java.awt.Color(255, 255, 255)); JLabel executeInfo = new JLabel(); executeInfo.setFont(new java.awt.Font("宋体", 0, 10)); executeInfo.setForeground(new java.awt.Color(204, 204, 204)); executeInfo.setText(BundleUtil.getString(BundleUtil.Analysis_Time) + ":" + this.result.getRunningContext().getAnalyseDate() + " V" + VersionUtil.getVersion() + " BuildDate:" + VersionUtil.getBuildDate() + " Group:" + this.result.getRunningContext().getGroup() + " Command:" + this.result.getRunningContext().getCommand()); content.add(BorderLayout.WEST, executeInfo); JPanel buttons = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 0)); buttons.setBackground(new java.awt.Color(255, 255, 255)); JLabel addResultButton = new JLabel(); addResultButton.setIcon(new ImageIcon(JDependUIUtil.getImage("cart/add.png"))); addResultButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); addResultButton.setToolTipText("将当前结果加入到购物车"); addResultButton.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { try { ShoppingCart.getInstance().addProduct(result); frame.getStatusField().refresh(); } catch (JDependException e) { JOptionPane.showMessageDialog(ScorePanel.this, e.getMessage(), "alert", JOptionPane.ERROR_MESSAGE); } } }); buttons.add(addResultButton); JLabel exportResultButton = new JLabel(); exportResultButton.setIcon(new ImageIcon(JDependUIUtil.getImage("export.png"))); exportResultButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); exportResultButton.setToolTipText("将当前结果导出"); exportResultButton.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { try { AnalysisResultExportUtil.exportResult(frame, result); } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(frame, "导出失败!", "alert", JOptionPane.ERROR_MESSAGE); } } }); buttons.add(exportResultButton); content.add(BorderLayout.EAST, buttons); return content; } private JPanel createWorkspacePanel() { JPanel workspacePanel = new JPanel(new GridLayout(1, 2)); workspacePanel.setBackground(new java.awt.Color(255, 255, 255)); JPanel leftPanel = new JPanel(new BorderLayout()); JPanel scorePanel = new JPanel(new BorderLayout()); scorePanel.setBorder(new TitledBorder(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_TotalScore))); scorePanel.setBackground(new java.awt.Color(255, 255, 255)); scorePanel.add(this.createLeftPanel()); leftPanel.add(BorderLayout.CENTER, scorePanel); workspacePanel.add(leftPanel); JPanel subitemPanel = new JPanel(new GridLayout(4, 1)); subitemPanel.setBackground(new java.awt.Color(255, 255, 255)); JPanel dPanel = new JPanel(new BorderLayout()); dPanel.setBorder(new TitledBorder(BundleUtil.getString(BundleUtil.Metrics_D))); dPanel.setBackground(new java.awt.Color(255, 255, 255)); dPanel.add(this.createItem(AnalysisResult.Metrics_D, result.getDistance())); subitemPanel.add(dPanel); JPanel balancePanel = new JPanel(new BorderLayout()); balancePanel.setBorder(new TitledBorder(BundleUtil.getString(BundleUtil.Metrics_Balance))); balancePanel.setBackground(new java.awt.Color(255, 255, 255)); balancePanel.add(this.createItem(AnalysisResult.Metrics_Balance, result.getBalance())); subitemPanel.add(balancePanel); JPanel encapsulationPanel = new JPanel(new BorderLayout()); encapsulationPanel.setBorder(new TitledBorder(BundleUtil.getString(BundleUtil.Metrics_Encapsulation))); encapsulationPanel.setBackground(new java.awt.Color(255, 255, 255)); encapsulationPanel.add(this.createItem(AnalysisResult.Metrics_Encapsulation, result.getEncapsulation())); subitemPanel.add(encapsulationPanel); JPanel relationRationalityPanel = new JPanel(new BorderLayout()); relationRationalityPanel.setBorder(new TitledBorder(BundleUtil .getString(BundleUtil.Metrics_RelationRationality))); relationRationalityPanel.setBackground(new java.awt.Color(255, 255, 255)); relationRationalityPanel.add(this.createItem(AnalysisResult.Metrics_RelationRationality, result.getRelationRationality())); subitemPanel.add(relationRationalityPanel); workspacePanel.add(subitemPanel); return workspacePanel; } private JPanel createItem(String itemName, final Float scoreValue) { JPanel itemPanel = new JPanel(new BorderLayout()); itemPanel.setBackground(new java.awt.Color(255, 255, 255)); itemPanel.setBorder(new EmptyBorder(2, 2, 2, 2)); JPanel scorePanel = new JPanel(new GridLayout(2, 1)); scorePanel.setBackground(new java.awt.Color(255, 255, 255)); JPanel scoreItemPanel = new JPanel(new GridLayout(1, 4, 4, 0)); scoreItemPanel.setBackground(new java.awt.Color(255, 255, 255)); JLabel scoreTitle = new JLabel(); scoreTitle.setFont(new java.awt.Font("宋体", 1, 18)); String title = BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_Score) + ":"; scoreTitle.setText(title); scoreItemPanel.add(scoreTitle); JLabel score = new JLabel(); score.setFont(new java.awt.Font("宋体", 1, 18)); if (scoreValue != null) { score.setText(MetricsFormat.toFormattedMetrics(scoreValue).toString()); } else { score.setText(Scored.NoValue); } scoreItemPanel.add(score); JLabel scoreCompareLabel = this.getComparedLabel(scoreValue, itemName); if (scoreCompareLabel != null) { scoreItemPanel.add(scoreCompareLabel); } if (itemName.equals(AnalysisResult.Metrics_TotalScore)) { score.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { ScoreSummaryDialog d = new ScoreSummaryDialog(frame); d.setVisible(true); } }); JDependUIUtil.addClickTipEffect(score); JLabel mm = new JLabel("MM"); mm.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { MMDialog motive = new MMDialog(); motive.setModal(true); motive.setVisible(true); } }); JDependUIUtil.addClickTipEffect(mm); scoreItemPanel.add(mm); } scorePanel.add(scoreItemPanel); JLabel fullScore = new JLabel(); fullScore.setBackground(new java.awt.Color(153, 153, 153)); fullScore.setFont(new java.awt.Font("宋体", 0, 10)); fullScore.setForeground(new java.awt.Color(204, 204, 204)); if (itemName.equals(AnalysisResult.Metrics_TotalScore)) { fullScore.setText(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_FullScore) + ":" + result.getFullScore()); } else if (itemName.equals(AnalysisResult.Metrics_RelationRationality)) { fullScore.setText(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_FullScore) + ":" + result.getRelationRationalityScale()); } else if (itemName.equals(AnalysisResult.Metrics_D)) { fullScore.setText(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_FullScore) + ":" + result.getDistanceScale()); } else if (itemName.equals(AnalysisResult.Metrics_Balance)) { fullScore.setText(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_FullScore) + ":" + result.getBalanceScale()); } else if (itemName.equals(AnalysisResult.Metrics_Encapsulation)) { fullScore.setText(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_FullScore) + ":" + result.getEncapsulationScale()); } scorePanel.add(fullScore); itemPanel.add(BorderLayout.WEST, scorePanel); JPanel scoreScope = new JPanel(); if (scorelist.size() > 0) { ScoreFacade.sort(scorelist, itemName); final ScoreInfo lScore = scorelist.get(0); final ScoreInfo hScore = scorelist.get(scorelist.size() - 1); scoreScope = this.createScope(lScore, hScore, itemName); } itemPanel.add(BorderLayout.EAST, scoreScope); itemPanel.add(BorderLayout.SOUTH, this.createAdvisePanel(itemName)); return itemPanel; } private JLabel getComparedLabel(Object value, String metrics) { try { final CompareInfo info = AdjustHistory.getInstance().compare(new CompareObject(value, null, metrics) { @Override public Object getOriginalityValue(AnalysisResult result) { if (this.getMetrics().equals(AnalysisResult.Metrics_TotalScore)) { return result.getScore(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_D)) { return result.getDistance(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_Balance)) { return result.getBalance(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_RelationRationality)) { return result.getRelationRationality(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_Encapsulation)) { return result.getEncapsulation(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_LC)) { return result.getSummary().getLineCount(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_CN)) { return result.getSummary().getClassCount(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_ComponentCount)) { return result.getComponents().size(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_RelationCount)) { return result.getRelations().size(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_RelationComponentScale)) { return result.calRelationComponentScale(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_Coupling)) { return result.getSummary().getCoupling(); } else if (this.getMetrics().equals(AnalysisResult.Metrics_Cohesion)) { return result.getSummary().getCohesion(); } return null; } }); if (info != null && info.isDiff()) { JLabel labelDirection = new JLabel() { @Override public String getToolTipText(MouseEvent e) { return "Originality:" + info.getOriginality(); } }; ToolTipManager.sharedInstance().registerComponent(labelDirection); CompareInfoWebWarpper warpper = new CompareInfoWebWarpper(info); labelDirection.setText(warpper.getCompare()); labelDirection.setForeground(warpper.getDirectionColor()); return labelDirection; } else { return null; } } catch (JDependException e1) { e1.printStackTrace(); return null; } } /** * 左侧分数面板 * * @return */ private JComponent createLeftPanel() { JPanel leftPanel = new JPanel(new BorderLayout()); leftPanel.setBackground(new java.awt.Color(255, 255, 255)); leftPanel.add(BorderLayout.NORTH, this.createItem(AnalysisResult.Metrics_TotalScore, result.getScore())); JPanel otherPanel = new JPanel(new BorderLayout()); otherPanel.setBackground(new java.awt.Color(255, 255, 255)); JPanel descPanel = new JPanel(new GridLayout(8, 1)); descPanel.setBackground(new java.awt.Color(255, 255, 255)); JPanel panel = null; JLabel valuePanel = null; JLabel itemCompareLabel = null; panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); JLabel ruleLabel = new JLabel("使用的规则"); panel.add(ruleLabel); JDependUIUtil.addClickTipEffect(ruleLabel); ruleLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { CurrentProfileSettingDialog d = new CurrentProfileSettingDialog(frame); d.setModal(true); d.setVisible(true); } }); descPanel.add(panel); panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); panel.add(new JLabel(BundleUtil.getString(BundleUtil.Metrics_LC) + ":")); panel.add(new JLabel("" + result.getSummary().getLineCount())); itemCompareLabel = this.getComparedLabel(result.getSummary().getLineCount(), AnalysisResult.Metrics_LC); if (itemCompareLabel != null) { panel.add(itemCompareLabel); } descPanel.add(panel); panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); panel.add(new JLabel(BundleUtil.getString(BundleUtil.Metrics_CN) + ":")); valuePanel = new JLabel("" + result.getSummary().getClassCount()); JDependUIUtil.addClickTipEffect(valuePanel); valuePanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { frame.getResultPanel().setTab(2, 0); } }); panel.add(valuePanel); itemCompareLabel = this.getComparedLabel(result.getSummary().getClassCount(), AnalysisResult.Metrics_CN); if (itemCompareLabel != null) { panel.add(itemCompareLabel); } descPanel.add(panel); panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); panel.add(new JLabel(BundleUtil.getString(BundleUtil.Metrics_ComponentCount) + ":")); valuePanel = new JLabel("" + result.getComponents().size()); JDependUIUtil.addClickTipEffect(valuePanel); valuePanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { frame.getResultPanel().setTab(1, 0); } }); panel.add(valuePanel); itemCompareLabel = this.getComparedLabel(result.getComponents().size(), AnalysisResult.Metrics_ComponentCount); if (itemCompareLabel != null) { panel.add(itemCompareLabel); } descPanel.add(panel); panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); panel.add(new JLabel(BundleUtil.getString(BundleUtil.Metrics_RelationCount) + ":")); valuePanel = new JLabel("" + result.getRelations().size()); JDependUIUtil.addClickTipEffect(valuePanel); valuePanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { frame.getResultPanel().setTab(1, 1); } }); panel.add(valuePanel); itemCompareLabel = this.getComparedLabel(result.getRelations().size(), AnalysisResult.Metrics_RelationCount); if (itemCompareLabel != null) { panel.add(itemCompareLabel); } descPanel.add(panel); panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); panel.add(new JLabel(BundleUtil.getString(BundleUtil.Metrics_RelationComponentScale) + ":")); panel.add(new JLabel("" + result.calRelationComponentScale())); itemCompareLabel = this.getComparedLabel(result.calRelationComponentScale(), AnalysisResult.Metrics_RelationComponentScale); if (itemCompareLabel != null) { panel.add(itemCompareLabel); } descPanel.add(panel); panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); panel.add(new JLabel(BundleUtil.getString(BundleUtil.Metrics_Coupling) + ":")); valuePanel = new JLabel("" + result.getSummary().getCoupling()); JDependUIUtil.addClickTipEffect(valuePanel); valuePanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { CouplingDialog d = new CouplingDialog(); d.setModal(true); d.setVisible(true); } }); panel.add(valuePanel); itemCompareLabel = this.getComparedLabel(result.getSummary().getCoupling(), AnalysisResult.Metrics_Coupling); if (itemCompareLabel != null) { panel.add(itemCompareLabel); } descPanel.add(panel); panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBackground(new java.awt.Color(255, 255, 255)); panel.add(new JLabel(BundleUtil.getString(BundleUtil.Metrics_Cohesion) + ":")); valuePanel = new JLabel("" + result.getSummary().getCohesion()); JDependUIUtil.addClickTipEffect(valuePanel); valuePanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { CohesionDialog d = new CohesionDialog(); d.setModal(true); d.setVisible(true); } }); panel.add(valuePanel); itemCompareLabel = this.getComparedLabel(result.getSummary().getCohesion(), AnalysisResult.Metrics_Cohesion); if (itemCompareLabel != null) { panel.add(itemCompareLabel); } descPanel.add(panel); otherPanel.add(BorderLayout.SOUTH, descPanel); Map<String, String> diffElements = result.getDiffElements(); if (diffElements != null && diffElements.size() > 0) { JPanel tipPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); tipPanel.setBackground(new java.awt.Color(255, 255, 255)); tipPanel.add(new JLabel(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_ElementChangeTip))); JLabel tipClickLabel = new JLabel( BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_ElementChangeTip_This)); JDependUIUtil.addClickTipEffect(tipClickLabel); tipClickLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { ChangedElementListDialog d = new ChangedElementListDialog(frame); d.setModal(true); d.setVisible(true); } }); tipPanel.add(tipClickLabel); otherPanel.add(BorderLayout.NORTH, tipPanel); } JPanel contentpanel = new JPanel(new GridLayout(1, 2)); contentpanel.add(otherPanel); contentpanel.add(this.createGraphScore()); leftPanel.add(BorderLayout.CENTER, contentpanel); return leftPanel; } private JComponent createGraphScore() { GraphData graph = new GraphData(); graph.setAddJScrollPane(false); GraphDataItem item = null; Map<Object, Object> datas = null; if (this.result.getDistance() != null) { item = new GraphDataItem(); item.setTitle(BundleUtil.getString(BundleUtil.Metrics_D)); item.setType(GraphDataItem.PIE); datas = new HashMap<Object, Object>(); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_Score), this.result.getDistance() / result.getDistanceScale()); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_ScoreDifference), 1F - this.result.getDistance() / result.getDistanceScale()); item.setDatas(datas); graph.addItem(item); } if (this.result.getBalance() != null) { item = new GraphDataItem(); item.setTitle(BundleUtil.getString(BundleUtil.Metrics_Balance)); item.setType(GraphDataItem.PIE); datas = new HashMap<Object, Object>(); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_Score), this.result.getBalance() / result.getBalanceScale()); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_ScoreDifference), 1F - this.result.getBalance() / result.getBalanceScale()); item.setDatas(datas); graph.addItem(item); } if (this.result.getEncapsulation() != null) { item = new GraphDataItem(); item.setTitle(BundleUtil.getString(BundleUtil.Metrics_Encapsulation)); item.setType(GraphDataItem.PIE); datas = new HashMap<Object, Object>(); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_Score), this.result.getEncapsulation() / result.getEncapsulationScale()); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_ScoreDifference), 1F - this.result.getEncapsulation() / result.getEncapsulationScale()); item.setDatas(datas); graph.addItem(item); } if (this.result.getRelationRationality() != null) { item = new GraphDataItem(); item.setTitle(BundleUtil.getString(BundleUtil.Metrics_RelationRationality)); item.setType(GraphDataItem.PIE); datas = new HashMap<Object, Object>(); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_Score), this.result.getRelationRationality() / result.getRelationRationalityScale()); datas.put(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_ScoreDifference), 1F - this.result.getRelationRationality() / result.getRelationRationalityScale()); item.setDatas(datas); graph.addItem(item); } JPanel contentPanel = new JPanel(new BorderLayout()); contentPanel.setBackground(new java.awt.Color(255, 255, 255)); try { contentPanel.add(GraphUtil.createGraph(graph)); } catch (JDependException e) { e.printStackTrace(); } return contentPanel; } private JPanel createAdvisePanel(String itemName) { JPanel advisePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); advisePanel.setBackground(new java.awt.Color(255, 255, 255)); WisdomAnalysisResult wisdomAnalysisResult = new WisdomAnalysisResult(result); JLabel adviseLabel = null; JLabel descLabel = null; if (itemName.equals(AnalysisResult.Metrics_TotalScore)) { adviseLabel = new JLabel(); try { AdviseInfo advise = wisdomAnalysisResult.getAdvise(StructureCategory.LowScoreItemIdentifier); if (advise != null) { adviseLabel.setText(advise.getDesc() + ReportConstant.toMetricsName(advise.getComponentNameInfo())); advisePanel.add(adviseLabel); } } catch (JDependException e) { e.printStackTrace(); } } else if (itemName.equals(AnalysisResult.Metrics_D)) { try { AdviseInfo advise = wisdomAnalysisResult.getAdvise(StructureCategory.DDomainAnalysis); if (advise != null) { descLabel = new JLabel(); descLabel.setText(advise.getDesc()); adviseLabel = new JLabel(); adviseLabel.setFont(new java.awt.Font("宋体", 1, 15)); // NOI18N adviseLabel.setText(advise.getComponentNameInfo()); JDependUIUtil.addClickTipEffect(adviseLabel); adviseLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jdepend.model.Component component = result.getTheComponent(((JLabel) evt.getSource()) .getText()); ComponentDetailDialog d = new ComponentDetailDialog(component); d.setModal(true); d.setVisible(true); } }); advisePanel.add(adviseLabel); advisePanel.add(descLabel); } } catch (JDependException e) { e.printStackTrace(); } } else if (itemName.equals(AnalysisResult.Metrics_Balance)) { try { AdviseInfo advise = wisdomAnalysisResult.getAdvise(StructureCategory.CohesionDomainAnalysis); if (advise != null) { descLabel = new JLabel(); descLabel.setText(advise.getDesc()); adviseLabel = new JLabel(); adviseLabel.setFont(new java.awt.Font("宋体", 1, 15)); // NOI18N adviseLabel.setText(advise.getComponentNameInfo()); JDependUIUtil.addClickTipEffect(adviseLabel); adviseLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jdepend.model.Component component = result.getTheComponent(((JLabel) evt.getSource()) .getText()); BalanceComponentDialog d = new BalanceComponentDialog(frame, component); d.setModal(true); d.setVisible(true); } }); advisePanel.add(descLabel); advisePanel.add(adviseLabel); } } catch (JDependException e) { e.printStackTrace(); } } else if (itemName.equals(AnalysisResult.Metrics_Encapsulation)) { try { final AdviseInfo advise = wisdomAnalysisResult.getAdvise(StructureCategory.EncapsulationDomainAnalysis); if (advise != null) { descLabel = new JLabel(); descLabel.setText(advise.getDesc()); adviseLabel = new JLabel(); adviseLabel.setFont(new java.awt.Font("宋体", 1, 15)); // NOI18N adviseLabel.setText(advise.getComponentNameInfo()); JDependUIUtil.addClickTipEffect(adviseLabel); adviseLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jdepend.model.Component component = result.getTheComponent(advise.getComponentNameInfo()); ClassListDialog d = new ClassListDialog(frame, component); d.setModal(true); d.setVisible(true); } }); advisePanel.add(descLabel); advisePanel.add(adviseLabel); } } catch (JDependException e) { e.printStackTrace(); } } else if (itemName.equals(AnalysisResult.Metrics_RelationRationality)) { Float rs = result.getAttentionRelationScale(); adviseLabel = new JLabel(); if (MathUtil.isZero(rs)) { adviseLabel.setText(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_RelationNormal)); } else { adviseLabel.setText(BundleUtil.getString(BundleUtil.Metrics_AttentionRelationScale) + ":" + MetricsFormat.toFormattedPercent(rs)); JDependUIUtil.addClickTipEffect(adviseLabel); adviseLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { frame.getResultPanel().setTab(1, 1); } }); } advisePanel.add(adviseLabel); } return advisePanel; } private JPanel createScope(ScoreInfo lScoreInfo, ScoreInfo hScoreInfo, String itemName) { Float lScore = null; String lScoreId; Float hScore = null; String hScoreId; lScoreId = lScoreInfo.id; hScoreId = hScoreInfo.id; if (itemName.equals(AnalysisResult.Metrics_TotalScore)) { lScore = lScoreInfo.score; hScore = hScoreInfo.score; } else if (itemName.equals(AnalysisResult.Metrics_D)) { lScore = lScoreInfo.distance; hScore = hScoreInfo.distance; } else if (itemName.equals(AnalysisResult.Metrics_Balance)) { lScore = lScoreInfo.balance; hScore = hScoreInfo.balance; } else if (itemName.equals(AnalysisResult.Metrics_Encapsulation)) { lScore = lScoreInfo.encapsulation; hScore = hScoreInfo.encapsulation; } else if (itemName.equals(AnalysisResult.Metrics_RelationRationality)) { lScore = lScoreInfo.relation; hScore = hScoreInfo.relation; } return this.createScope(lScore, lScoreId, hScore, hScoreId); } private JPanel createScope(final Float lScore, final String lScoreId, final Float hScore, final String hScoreId) { JPanel scoreScope = new JPanel(); FlowLayout flowLayout = new FlowLayout(); flowLayout.setAlignment(FlowLayout.RIGHT); scoreScope.setLayout(flowLayout); scoreScope.setBackground(new java.awt.Color(255, 255, 255)); JLabel scopeTitle = new JLabel(BundleUtil.getString(BundleUtil.ClientWin_ScorePanel_ExistingScoreScope) + ":"); scopeTitle.setForeground(new java.awt.Color(204, 204, 204)); scoreScope.add(scopeTitle); JLabel lScoreJLablel = new JLabel(String.valueOf(lScore)); lScoreJLablel.setForeground(new java.awt.Color(204, 204, 204)); lScoreJLablel.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); scoreScope.add(lScoreJLablel); lScoreJLablel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { try { scoreScopeMouseClicked(lScoreId); } catch (JDependException e) { frame.getResultPanel().showError(e); } } }); JLabel interval = new JLabel("~"); interval.setForeground(new java.awt.Color(204, 204, 204)); scoreScope.add(interval); JLabel hScoreJLablel = new JLabel(String.valueOf(hScore)); hScoreJLablel.setForeground(new java.awt.Color(204, 204, 204)); hScoreJLablel.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); hScoreJLablel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { try { scoreScopeMouseClicked(hScoreId); } catch (JDependException e) { frame.getResultPanel().showError(e); } } }); scoreScope.add(hScoreJLablel); return scoreScope; } private void scoreScopeMouseClicked(String id) throws JDependException { AnalysisResult result = ScoreFacade.getTheResult(id); JDependUnitMgr.getInstance().setResult(result); frame.getResultPanelWrapper().showResults(false); } }