package jdepend.client.ui.property;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import jdepend.client.core.config.CommandConfMgr;
import jdepend.client.report.ui.ClassListPanel;
import jdepend.client.report.ui.MethodListDialog;
import jdepend.client.ui.JDependCooper;
import jdepend.client.ui.framework.JavaClassCompareTableCellRenderer;
import jdepend.framework.exception.JDependException;
import jdepend.framework.util.BundleUtil;
import jdepend.model.JDependUnitMgr;
import jdepend.model.JavaClassUnit;
import jdepend.model.result.AnalysisResult;
import jdepend.model.result.AnalysisResultListener;
public class ClassListPanelWrapper extends ClassListPanel{
private JDependCooper frame;
public ClassListPanelWrapper(JDependCooper frame) {
super(frame);
this.frame = frame;
}
@Override
protected void initClassList() {
super.initClassList();
JavaClassCompareTableCellRenderer renderer = new JavaClassCompareTableCellRenderer(this.extendUnits);
for (int i = 0; i < classListTable.getColumnCount(); i++) {
classListTable.getColumnModel().getColumn(i).setCellRenderer(renderer);
}
final JPopupMenu popupMenu = new JPopupMenu();
JMenuItem viewSrcItem = new JMenuItem(BundleUtil.getString(BundleUtil.Command_ViewSourceCode));
viewSrcItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
viewSrc();
}
});
popupMenu.add(viewSrcItem);
JMenuItem viewDetailItem = new JMenuItem(BundleUtil.getString(BundleUtil.Command_ViewDetail));
viewDetailItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
viewDetail();
}
});
popupMenu.add(viewDetailItem);
JMenuItem viewMethodListItem = new JMenuItem(BundleUtil.getString(BundleUtil.Command_ViewMethodList));
viewMethodListItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
viewMethodList();
}
});
popupMenu.add(viewMethodListItem);
popupMenu.add(this.createCasItem());
popupMenu.add(this.createCesItem());
popupMenu.addSeparator();
popupMenu.add(this.createMoveToItem(null));
popupMenu.add(this.createSaveAsItem());
classListTable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
JTable table = (JTable) e.getSource();
if (e.getButton() == 3) {
popupMenu.show(table, e.getX(), e.getY());
}
}
});
}
private void viewSrc() {
try {
String group = JDependUnitMgr.getInstance().getResult().getRunningContext().getGroup();
StringBuilder src = CommandConfMgr.getInstance().getTheGroup(group).getSrcContent(current);
frame.getResultPanel().addResult(current, src);
frame.getResultPanel().setLastedTab();
} catch (JDependException e) {
e.printStackTrace();
JOptionPane.showMessageDialog((Component) this, "读取Class源文件[" + current + "]失败!", "alert",
JOptionPane.ERROR_MESSAGE);
}
}
private void viewDetail() {
StringBuilder detail = new StringBuilder(JDependUnitMgr.getInstance().getResult().getTheClass(current)
.toString());
frame.getResultPanel().addResult(current, detail);
frame.getResultPanel().setLastedTab();
}
private void viewMethodList() {
JavaClassUnit javaClass = JDependUnitMgr.getInstance().getResult().getTheClass(current);
MethodListDialog d = new MethodListDialog(javaClass);
d.setModal(true);
d.setVisible(true);
}
}