package husacct.control.presentation.util;
import husacct.ServiceProvider;
import husacct.common.locale.ILocaleService;
import husacct.common.services.IServiceListener;
import husacct.control.task.MainController;
import husacct.control.task.configuration.ConfigurationManager;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class ActionLogPanel extends JPanel{
private static final long serialVersionUID = 9105220354932171257L;
private MainController mainController;
private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
public ActionLogPanel(MainController mainController){
super();
this.mainController = mainController;
init();
}
private void init(){
this.setFocusable(false);
//this.setOpaque(false);
this.setBackground(new Color(172, 181, 189));
BorderLayout defaultBorderLayout = new BorderLayout();
this.setLayout(defaultBorderLayout);
Dimension preferredSize = new Dimension(250, 65);
this.setPreferredSize(preferredSize);
boolean showActionLog = ConfigurationManager.getProperty("ActionLogger").equals("true");
this.setVisible(showActionLog);
refreshActionLogPanel();
localeService.addServiceListener(new IServiceListener() {
@Override
public void update() {
refreshActionLogPanel();
}
});
}
@SuppressWarnings("serial")
private JScrollPane getActionsDialogScrollPaneContents(){
DefaultTableModel logTableModel = new DefaultTableModel();
JTable logTable = new JTable(logTableModel){
@Override
public boolean isCellEditable(int rowIndex, int colIndex) {
return false;
}
};
logTable.getTableHeader().setReorderingAllowed(false);
logTable.getTableHeader().setResizingAllowed(false);
logTable.setAutoCreateRowSorter(false);
logTableModel.addColumn(localeService.getTranslatedString("ActionLog"));
ArrayList<HashMap<String, String>> loggedActions = mainController.getActionLogController().getLoggedActionsArrayList();
for(HashMap<String, String> loggedUserAction : loggedActions){
logTableModel.addRow(new Object[]{loggedUserAction.get("message")});
}
JScrollPane output = new JScrollPane(logTable);
output.setOpaque(false);
Dimension preferredSize = new Dimension(250, 65);
output.setPreferredSize(preferredSize);
return output;
}
public void refreshActionLogPanel(){
this.removeAll();
JScrollPane scrollPane = getActionsDialogScrollPaneContents();
this.add(scrollPane, BorderLayout.SOUTH);
this.validate();
this.repaint();
JScrollBar vertical = scrollPane.getVerticalScrollBar();
vertical.setValue(vertical.getMaximum()+20);
}
}