package com.google.code.joto.ui.spy.logs;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JRadioButton;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import com.google.code.joto.eventrecorder.spy.log.EventStoreWriterLogbackAppender;
import com.google.code.joto.ui.JotoContext;
import com.google.code.joto.ui.capture.RecordEventsCaptureCategoryPanel;
import com.google.code.joto.util.ui.GridBagLayoutFormBuilder;
/**
*
*/
public class LogCallCaptureCategoryPanel extends RecordEventsCaptureCategoryPanel {
public static final String LOGS_CAPTURE_CATEGORY = "logs";
private EventStoreWriterLogbackAppender logAppenderSpy;
// ------------------------------------------------------------------------
public LogCallCaptureCategoryPanel(JotoContext jotoContext) {
super(jotoContext, LOGS_CAPTURE_CATEGORY);
// TODO ... code to move in model / outside ctor
// create + install appender to root logback Logger
logAppenderSpy = new EventStoreWriterLogbackAppender(filterCategoryModel.getResultFilteringEventWriter(), LOGS_CAPTURE_CATEGORY);
ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
rootLogger.addAppender(logAppenderSpy);
logAppenderSpy.start();
specificPanel.setLayout(new GridBagLayout());
GridBagLayoutFormBuilder b = new GridBagLayoutFormBuilder(specificPanel);
b.addLabelFillRow("Minimum Level");
ButtonGroup levelGroup = new ButtonGroup();
// b.addCompRow(createMinimumLevelRadioButton(levelGroup, Level.ALL));
b.addCompRow(createMinimumLevelRadioButton(levelGroup, Level.TRACE));
b.addCompRow(createMinimumLevelRadioButton(levelGroup, Level.DEBUG));
JRadioButton infoRadioButton = createMinimumLevelRadioButton(levelGroup, Level.INFO);
b.addCompRow(infoRadioButton);
infoRadioButton.setSelected(true);
b.addCompRow(createMinimumLevelRadioButton(levelGroup, Level.WARN));
b.addCompRow(createMinimumLevelRadioButton(levelGroup, Level.ERROR));
b.addCompRow(createMinimumLevelRadioButton(levelGroup, Level.OFF));
}
// ------------------------------------------------------------------------
private JRadioButton createMinimumLevelRadioButton(ButtonGroup levelGroup, final Level level) {
JRadioButton res = new JRadioButton(level.toString());
res.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
logAppenderSpy.setMinimumLevel(level);
}
});
return res;
}
}