package jdepend.client.ui.remote.analyzer;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import jdepend.client.core.remote.analyzer.AnalyzerRemoteMgr;
import jdepend.client.core.remote.analyzer.AnalyzerSummaryInfo;
import jdepend.client.ui.JDependCooper;
import jdepend.client.ui.analyzer.AnalyzerPanel;
import jdepend.framework.exception.JDependException;
import jdepend.framework.ui.dialog.CooperDialog;
import jdepend.framework.util.BundleUtil;
public final class AnalyzerDownloadDialog extends CooperDialog {
private JDependCooper frame;
private String currentClassName;
private DefaultTableModel model;
private List<AnalyzerSummaryInfo> analyzers;
private String type;
private AnalyzerPanel analyzerPanel;
private AnalyzerRemoteMgr analyzerRemoteMgr;
public AnalyzerDownloadDialog(JDependCooper frame, AnalyzerPanel analyzerPanel, String type) {
super();
this.analyzerRemoteMgr = new AnalyzerRemoteMgr();
this.frame = frame;
this.analyzerPanel = analyzerPanel;
this.type = type;
this.setTitle("分析器列表");
model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
JTable table = new JTable(model);
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JTable table = (JTable) e.getSource();
int currentRow = table.rowAtPoint(e.getPoint());
currentClassName = (String) table.getModel().getValueAt(currentRow, 2);
if (currentRow >= 0) {
table.setRowSelectionInterval(currentRow, currentRow);
}
}
});
model.addColumn("名称");
model.addColumn("提示");
model.addColumn("类名");
model.addColumn("上传用户名");
model.addColumn("上传时间");
try {
this.refresh();
} catch (JDependException e) {
e.printStackTrace();
}
this.add(BorderLayout.CENTER, new JScrollPane(table));
JPanel buttonBar = new JPanel();
buttonBar.setLayout(new FlowLayout());
JButton downButton = new JButton("下载");
downButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
downAnalyzer();
AnalyzerDownloadDialog.this.analyzerPanel.refresh();
dispose();
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(AnalyzerDownloadDialog.this, ex.getMessage(), "alert",
JOptionPane.ERROR_MESSAGE);
}
}
});
buttonBar.add(downButton);
JButton closeButton = new JButton(BundleUtil.getString(BundleUtil.Command_Close));
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
buttonBar.add(closeButton);
this.add(BorderLayout.SOUTH, buttonBar);
}
private void downAnalyzer() throws JDependException {
if (this.currentClassName == null) {
throw new JDependException("请选择下载的分析器。");
} else {
this.analyzerRemoteMgr.download(this.currentClassName);
}
}
private void refresh() throws JDependException {
model.setRowCount(0);
analyzers = this.analyzerRemoteMgr.getRemoteAnalyzers(type);
Object[] row;
for (AnalyzerSummaryInfo analyzer : analyzers) {
row = new Object[5];
row[0] = analyzer.getName();
row[1] = analyzer.getTip();
row[2] = analyzer.getClassName();
row[3] = analyzer.getUserName();
row[4] = analyzer.getCreateDate();
model.addRow(row);
}
}
}