package org.wiztools.restclient.ui.restest;
import java.awt.*;
import java.util.Collections;
import javax.annotation.PostConstruct;
import javax.swing.*;
import org.wiztools.restclient.bean.TestExceptionResult;
import org.wiztools.restclient.bean.TestResult;
import org.wiztools.restclient.ui.UIUtil;
/**
*
* @author subwiz
*/
class ResTestPanelImpl extends JPanel implements ResTestPanel {
private TestResult lastTestResult;
private final JLabel jl_runCount = new JLabel("");
private final JLabel jl_failureCount = new JLabel("");
private final JLabel jl_errorCount = new JLabel("");
private final FailureTableModel tm_failures = new FailureTableModel();
private final FailureTableModel tm_errors = new FailureTableModel();
private JScrollPane jsp_jt_failures;
private JScrollPane jsp_jt_errors;
private final JTextArea jta_trace = new JTextArea();
private JScrollPane jsp_jta_trace;
private final JLabel jl_status = new JLabel();
private final JLabel jl_icon = new JLabel();
private final Icon ICON_DEFAULT = UIUtil.getIconFromClasspath("org/wiztools/restclient/test/eye.png");
private final Icon ICON_SUCCESS = UIUtil.getIconFromClasspath("org/wiztools/restclient/test/accept.png");
private final Icon ICON_FAILURE = UIUtil.getIconFromClasspath("org/wiztools/restclient/test/cross.png");
@PostConstruct
protected void init() {
JPanel jp = this;
jp.setLayout(new BorderLayout(5, 5));
// North
JPanel jp_north = new JPanel();
jp_north.setLayout(new BorderLayout(5, 5));
jl_icon.setIcon(ICON_DEFAULT);
jp_north.add(jl_icon, BorderLayout.WEST);
jp_north.add(jl_status, BorderLayout.CENTER);
jp.add(jp_north, BorderLayout.NORTH);
JTabbedPane jtp = new JTabbedPane();
JPanel jp_summary = new JPanel();
jp_summary.setLayout(new GridLayout(3, 1));
// Block to abstract local variables
{
JPanel jp_t;
JLabel jl_t;
// Set the font
jl_runCount.setFont(UIUtil.FONT_BIG);
jl_failureCount.setFont(UIUtil.FONT_BIG);
jl_errorCount.setFont(UIUtil.FONT_BIG);
// Tests Run
jp_t = new JPanel();
jp_t.setLayout(new BorderLayout());
jl_t = new JLabel("Tests Run: ");
jl_t.setFont(UIUtil.FONT_BIG);
jp_t.add(jl_t, BorderLayout.CENTER);
jp_t.add(jl_runCount, BorderLayout.EAST);
jp_summary.add(jp_t);
// Tests Failures
jp_t = new JPanel();
jp_t.setLayout(new BorderLayout());
jl_t = new JLabel("Tests Failures: ");
jl_t.setFont(UIUtil.FONT_BIG);
jp_t.add(jl_t, BorderLayout.CENTER);
jp_t.add(jl_failureCount, BorderLayout.EAST);
jp_summary.add(jp_t);
// Tests Errors
jp_t = new JPanel();
jp_t.setLayout(new BorderLayout());
jl_t = new JLabel("Tests Errors: ");
jl_t.setFont(UIUtil.FONT_BIG);
jp_t.add(jl_t, BorderLayout.CENTER);
jp_t.add(jl_errorCount, BorderLayout.EAST);
jp_summary.add(jp_t);
}
// Add to the summary tab:
{
JPanel jp_t = new JPanel();
jp_t.setLayout(new FlowLayout(FlowLayout.LEFT));
jp_t.add(jp_summary);
jtp.add("Summary", jp_t);
}
// Add failures tab:
{
JTable jt = new JTable(tm_failures);
Dimension d = jt.getPreferredSize();
d.height = d.height / 2;
jt.setPreferredScrollableViewportSize(d);
jsp_jt_failures = new JScrollPane(jt);
jtp.add("Failures", jsp_jt_failures);
}
// Add errors tab:
{
JTable jt = new JTable(tm_errors);
Dimension d = jt.getPreferredSize();
d.height = d.height / 2;
jt.setPreferredScrollableViewportSize(d);
jsp_jt_errors = new JScrollPane(jt);
jtp.add("Errors", jsp_jt_errors);
}
// Add trace tab:
{
jta_trace.setEditable(false);
jsp_jta_trace = new JScrollPane(jta_trace);
jtp.add("Trace", jsp_jta_trace);
}
jp.add(jtp, BorderLayout.CENTER);
}
@Override
public Component getComponent() {
return this;
}
@Override
public void setTestResult(TestResult result) {
if(result == null){
return;
}
lastTestResult = result;
int runCount = result.getRunCount();
int failureCount = result.getFailureCount();
int errorCount = result.getErrorCount();
if(failureCount > 0 || errorCount > 0){
jl_icon.setIcon(ICON_FAILURE);
}
else{
jl_icon.setIcon(ICON_SUCCESS);
}
jl_status.setText(
"Tests run: " + runCount + ", Failures: "
+ failureCount + ", Errors: " + errorCount);
jl_runCount.setText(String.valueOf(runCount));
jl_failureCount.setText(String.valueOf(failureCount));
jl_errorCount.setText(String.valueOf(errorCount));
tm_failures.setData(result.getFailures());
tm_errors.setData(result.getErrors());
Dimension d = jsp_jta_trace.getPreferredSize();
jta_trace.setText(result.toString());
jta_trace.setCaretPosition(0);
jsp_jta_trace.setPreferredSize(d);
}
@Override
public TestResult getTestResult(){
return lastTestResult;
}
@Override
public void clear() {
// Clear Summary tab:
jl_icon.setIcon(ICON_DEFAULT);
jl_runCount.setText("");
jl_failureCount.setText("");
jl_errorCount.setText("");
jl_status.setText("");
// Clear Failures tab:
tm_failures.setData(Collections.<TestExceptionResult>emptyList());
// Clear Errors tab:
tm_errors.setData(Collections.<TestExceptionResult>emptyList());
// Clear trace tab:
jta_trace.setText("");
}
}