package net.codjo.dataprocess.gui.util.LoginTracker; import net.codjo.dataprocess.client.UserLoginTrackerClientHelper; import net.codjo.dataprocess.common.util.UserLoginTracker; import net.codjo.dataprocess.gui.util.GuiUtils; import net.codjo.mad.gui.framework.MutableGuiContext; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.KeyStroke; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; import javax.swing.table.DefaultTableModel; /** * */ public class LoginTrackerGui { private JInternalFrame frame; private MutableGuiContext ctxt; private int delay; private JPanel mainPanel; private JButton quitButton; private JTable usersJTable; private JButton refreshButton; LoginTrackerGui(MutableGuiContext ctxt, final JInternalFrame frame, int delay) { this.frame = frame; this.ctxt = ctxt; this.delay = delay; usersJTable.setModel(new MyDefaultTableModel()); InputMap inputMap = frame.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); inputMap.put(KeyStroke.getKeyStroke("ESCAPE"), "cancel"); frame.getActionMap().put("cancel", new javax.swing.AbstractAction() { public void actionPerformed(ActionEvent evt) { frame.dispose(); } }); quitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { frame.dispose(); } }); refreshButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { refreshData(); } }); frame.addInternalFrameListener(new InternalFrameAdapter() { @Override public void internalFrameOpened(InternalFrameEvent e) { refreshData(); } }); } private void refreshData() { DefaultTableModel tableModel = (DefaultTableModel)usersJTable.getModel(); removeAllRows(tableModel); try { List<UserLoginTracker> userLoginTrackerList = UserLoginTrackerClientHelper.getUserList(ctxt); SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); for (UserLoginTracker userLoginTracker : userLoginTrackerList) { Date date = dateFormat.parse(userLoginTracker.getDate()); Date now = Calendar.getInstance().getTime(); if (now.getTime() - date.getTime() <= delay) { tableModel.addRow(new String[]{userLoginTracker.getUserName(), userLoginTracker.getRepository(), userLoginTracker.getHostname(), userLoginTracker.getIpaddr()}); } } } catch (Exception ex) { GuiUtils.showErrorDialog(frame, getClass(), "Erreur interne", ex); } } private static void removeAllRows(DefaultTableModel tableModel) { while (tableModel.getRowCount() != 0) { tableModel.removeRow(0); } } public JPanel getMainPanel() { return mainPanel; } private static class MyDefaultTableModel extends DefaultTableModel { private MyDefaultTableModel() { addColumn("Utilisateur"); addColumn("R�f�rentiel de traitements"); addColumn("Hostname"); addColumn("Adresse IP"); } @Override public boolean isCellEditable(int row, int column) { return false; } } }