package vue; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.ResourceBundle; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.border.TitledBorder; import modeles.evenements.ProjetChangedEvent; import modeles.evenements.ProjetListeAddedEvent; import controleurs.ProjetController; import controleurs.vuesabstraites.ProjetView; public class Activites extends ProjetView { private double progressStart = 0; private double progressEnd = 100; private double step; private JLabel labelAction; private JTextArea txtArea; private JProgressBar pb; private JFrame frame; private JPanel panel; private File logFile; private FileWriter sortie; private DateFormat format = new SimpleDateFormat("dd/MM/yyyy H:mm"); private ResourceBundle activites; public Activites(ProjetController controller, ResourceBundle activites) { super(controller); this.activites = activites; create(); } public JTextArea getTxtArea() { return txtArea; } public JPanel getPanel() { return panel; } @Override public JProgressBar getProgressBar() { return pb; } public void create() { frame = new JFrame(); frame.setTitle(activites.getString("txt_Activites")); JPanel panel = new JPanel(new FlowLayout()); panel.setOpaque(true); panel.setAlignmentY(Component.LEFT_ALIGNMENT); GridBagLayout layout = new GridBagLayout(); JPanel panelAction = new JPanel(); panelAction.setPreferredSize(new Dimension(440, 20)); panelAction.setLayout(layout); panelAction.setAlignmentY(Component.LEFT_ALIGNMENT); GridBagConstraints c = new GridBagConstraints(); labelAction = new JLabel(" "); labelAction.setPreferredSize(new Dimension(438, 20)); c.fill = GridBagConstraints.HORIZONTAL; c.gridx = 0; c.gridy = 0; panelAction.add(labelAction, c); GridBagLayout layout1 = new GridBagLayout(); JPanel panelProgress = new JPanel(); panelProgress.setLayout(layout1); GridBagConstraints c1 = new GridBagConstraints(); JLabel labelAvancement = new JLabel(activites.getString("txt_Etat") + " : "); c1.fill = GridBagConstraints.HORIZONTAL; c1.gridx = 0; c1.gridy = 1; panelProgress.add(labelAvancement, c1); pb = new JProgressBar(0, 100); pb.setPreferredSize(new Dimension(395, 25)); pb.setStringPainted(true); pb.setForeground(Color.WHITE); pb.setValue(0); c1.fill = GridBagConstraints.HORIZONTAL; c1.gridx = 1; c1.gridy = 1; panelProgress.add(pb, c1); txtArea = new JTextArea(); txtArea.setEditable(false); txtArea.setLineWrap(true); txtArea.setWrapStyleWord(true); txtArea.setForeground(Color.LIGHT_GRAY); // txtAppend.setPreferredSize(new Dimension(440, 210)); JScrollPane scrollTxtAppend = new JScrollPane(txtArea); scrollTxtAppend.setAutoscrolls(true); scrollTxtAppend.setBorder(new TitledBorder(activites .getString("txt_Details"))); scrollTxtAppend.setPreferredSize(new Dimension(440, 210)); GridBagLayout layout2 = new GridBagLayout(); JPanel panelDetails = new JPanel(); panelDetails.setPreferredSize(new Dimension(440, 210)); panelDetails.setLayout(layout2); GridBagConstraints c2 = new GridBagConstraints(); c2.fill = GridBagConstraints.HORIZONTAL; c2.gridx = 0; c2.gridy = 0; panelDetails.add(scrollTxtAppend, c); // BOUTONS int largeurBouton = 100; int hauteurBouton = 25; GridBagLayout l8 = new GridBagLayout(); JPanel panel8 = new JPanel(); panel8.setLayout(l8); GridBagConstraints c8 = new GridBagConstraints(); JButton bOk = new JButton(activites.getString("txt_Fermer")); bOk.setVisible(true); bOk.setPreferredSize(new Dimension(largeurBouton, hauteurBouton)); bOk.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { close(); } }); JButton bEffacer = new JButton(activites.getString("txt_Effacer")); bEffacer.setVisible(true); bEffacer.setPreferredSize(new Dimension(largeurBouton, hauteurBouton)); bEffacer.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { getTxtArea().setText(""); } }); c8.gridx = 0; c8.gridy = 0; panel8.add(bEffacer, c8); c8.gridx = 1; c8.gridy = 0; panel8.add(bOk, c8); panel.add(panelAction); panel.add(panelProgress); panel.add(panelDetails); panel.add(panel8); frame.setContentPane(panel); frame.pack(); frame.setSize(450, 330); frame.setResizable(false); frame.setLocation(0, 0); frame.setIconImage(Toolkit.getDefaultToolkit().getImage( "./images/csi.jpg")); // frame.setVisible(true); } @Override public void appendTxtArea(String txt) { txtArea.append(txt); txtArea.scrollRectToVisible(new Rectangle(0, txtArea.getHeight() - 2, 1, 1)); } @Override public void updateProgress() { progressStart += step; pb.setValue((int) progressStart); // pb.setValue(i); } public void changeActionTitle(String newActionTitle) { // frame.setTitle(newActionTitle); } @Override public void resetProgress() { pb.setValue(0); } @Override public void setLabelProgress(String txtLabelAction) { labelAction.setText(txtLabelAction); } @Override public void setStepProgress(int valueDepart) { progressStart = 0; step = (progressEnd - progressStart) / valueDepart; } @Override public void close() { frame.setVisible(false); } @Override public JPanel getInfosProjetPanel() { // TODO Auto-generated method stub return null; } @Override public JPanel getListesListePanel() { // TODO Auto-generated method stub return null; } @Override public JMenuBar getMenuBar() { // TODO Auto-generated method stub return null; } @Override public void showActivites() { frame.setVisible(true); } public void logAppendText(String text) { try { sortie = new FileWriter(logFile, true); sortie.append(format.format(new Date()) + " : " + text + " \n"); sortie.close(); } catch (IOException e) { System.out.println("Log/appendText : erreur d'I/O " + e); } } public File getLogFile() { return logFile; } public void setLogFile(File logFile) { this.logFile = logFile; } public void createLog(ProjetChangedEvent event) { logFile = new File(event.getNewRepertoire() + "/" + event.getNewNom() + ".log"); if (logFile.exists()) logAppendText(activites.getString("txt_Projet") + " \"" + event.getNewNom() + "\" : " + activites.getString("txt_NbreListes") + " = " + event.getNewNbreListes() + " | " + activites.getString("txt_CumulMessages") + " = " + event.getNewCumulMessages() + "\n"); } @Override public void projetChanged(ProjetChangedEvent event) { resetProgress(); setLabelProgress(activites.getString("txt_InformationProjet")); setStepProgress(1); createLog(event); appendTxtArea(activites.getString("txt_Projet") + " \"" + event.getNewNom() + "\" : " + activites.getString("txt_NbreListes") + " = " + event.getNewNbreListes() + " | " + activites.getString("txt_CumulMessages") + " = " + event.getNewCumulMessages() + "\n"); updateProgress(); } @Override public void projetListeAdded(ProjetListeAddedEvent event) { // TODO Auto-generated method stub } }