package jdepend.client.ui.result.panel; import java.awt.BorderLayout; import java.util.HashMap; import java.util.Map; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import jdepend.framework.exception.JDependException; import jdepend.framework.ui.component.TextViewer; import jdepend.framework.ui.dialog.CooperDialog; import jdepend.framework.ui.graph.GraphUtil; import jdepend.framework.ui.graph.model.GraphData; import jdepend.framework.ui.graph.model.GraphDataItem; import jdepend.framework.util.MetricsFormat; import jdepend.model.JDependUnit; import jdepend.model.profile.model.ComponentProfile; import jdepend.model.util.MetricsTool; public class InstabilityDialog extends CooperDialog { public InstabilityDialog(jdepend.model.Component component) { super(component.getName() + " 不稳定性"); getContentPane().setLayout(new BorderLayout()); JTabbedPane pane = new JTabbedPane(); StringBuilder instabilityText = getText(component); final TextViewer resultViewer = new TextViewer(); resultViewer.setText(instabilityText.toString()); resultViewer.setCaretPosition(0); JScrollPane textPane = new JScrollPane(resultViewer); resultViewer.setScrollPane(textPane); pane.addTab("图形", this.createGraph(component)); pane.addTab("文本", textPane); this.add(pane); } private JComponent createGraph(JDependUnit unit) { GraphData graph = new GraphData(); graph.setAddJScrollPane(false); ComponentProfile componentProfile = unit.getResult().getRunningContext().getProfileFacade() .getComponentProfile(); float stabilityWithCountScale = componentProfile.getStabilityWithCountScale(); Float instabilityWithCount = MetricsFormat.toFormattedMetrics(MetricsTool.instabilityWithCount(unit)); Float instabilityWithIntensity = MetricsFormat.toFormattedMetrics(MetricsTool.instabilityWithIntensity(unit)); GraphDataItem item = null; Map<Object, Object> datas = null; if (stabilityWithCountScale == 0F || stabilityWithCountScale == 0.5F) { item = new GraphDataItem(); item.setTitle("数量稳定性"); item.setType(GraphDataItem.PIE); datas = new HashMap<Object, Object>(); datas.put("传出", instabilityWithCount); datas.put("传入", 1 - instabilityWithCount); item.setDatas(datas); graph.addItem(item); } if (stabilityWithCountScale == 1F || stabilityWithCountScale == 0.5F) { item = new GraphDataItem(); item.setTitle("强度稳定性"); item.setType(GraphDataItem.PIE); datas = new HashMap<Object, Object>(); datas.put("传出", instabilityWithIntensity); datas.put("传入", 1 - instabilityWithIntensity); 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 StringBuilder getText(JDependUnit unit) { StringBuilder instabilityText = new StringBuilder(); ComponentProfile componentProfile = unit.getResult().getRunningContext().getProfileFacade() .getComponentProfile(); float stabilityWithCountScale = componentProfile.getStabilityWithCountScale(); if (stabilityWithCountScale == 0F || stabilityWithCountScale == 0.5F) { instabilityText.append("Ce:"); instabilityText.append(unit.getEfferentCoupling()); instabilityText.append("\n"); instabilityText.append("Ca:"); instabilityText.append(unit.getAfferentCoupling()); instabilityText.append("\n"); instabilityText.append("Ce/(Ca+Ce):"); instabilityText.append(MetricsFormat.toFormattedMetrics(MetricsTool.instabilityWithCount(unit))); instabilityText.append("\n"); instabilityText.append("\n"); if (stabilityWithCountScale == 0.5F) { instabilityText.append("instabilityWithCount:"); instabilityText.append(MetricsFormat.toFormattedMetrics(MetricsTool.instabilityWithCount(unit) * stabilityWithCountScale)); instabilityText.append("\n"); instabilityText.append("\n"); } } if (stabilityWithCountScale == 1F || stabilityWithCountScale == 0.5F) { instabilityText.append("CeCoupling:"); instabilityText.append(MetricsFormat.toFormattedMetrics(unit.ceCoupling())); instabilityText.append("\n"); instabilityText.append("CaCoupling:"); instabilityText.append(MetricsFormat.toFormattedMetrics(unit.caCoupling())); instabilityText.append("\n"); instabilityText.append("CeCoupling/(CaCoupling+CeCoupling):"); instabilityText.append(MetricsFormat.toFormattedMetrics(MetricsTool.instabilityWithIntensity(unit))); instabilityText.append("\n"); instabilityText.append("\n"); if (stabilityWithCountScale == 0.5F) { instabilityText.append("instabilityWithIntensity:"); instabilityText.append(MetricsFormat.toFormattedMetrics(MetricsTool.instabilityWithIntensity(unit) * (1 - stabilityWithCountScale))); instabilityText.append("\n"); instabilityText.append("\n"); } } instabilityText.append("instabilityWithCountScale:"); instabilityText.append(MetricsFormat.toFormattedMetrics(stabilityWithCountScale)); instabilityText.append("\n"); instabilityText.append("instabilityWithIntensity:"); instabilityText.append(MetricsFormat.toFormattedMetrics(unit.getStability())); instabilityText.append("\n"); return instabilityText; } }