package fr.yogourt.swing;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.SystemColor;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import com.jcraft.jsch.JSchException;
import fr.yogourt.controleur.AbstractControler;
import fr.yogourt.controleur.AdresseControleur;
import fr.yogourt.model.AbstractModel;
import fr.yogourt.model.AdresseX400;
import fr.yogourt.model.Observateur;
public class AfficheAdrx400 extends JFrame implements Observateur {
private static final long serialVersionUID = 1L;
protected static final String GuiExecutor = null;
protected Clipboard clipbd;
private JPanel jContentPane;
private JTextField adressejTextField;
private JButton chercherjButton;
private JTextPane resultatProdjTextPane;
private JTextPane resultatTestjTextPane;
private JLabel testjLabel;
public String reponse215;
public String gln;
private JMenuBar jJMenuBar;
private JMenu jMenuFichier;
private JMenuItem jMenuItemColler;
private JMenuItem jMenuItemCopier;
private JMenu jMenuAPropos;
private JMenuItem jMenuItemQuitter;
private JMenuItem jMenuItemAPropos;
private JScrollPane resultatjScrollPane;
private DataTable data;
private JTable resultatjTable;
private JLabel rechAdrjLabel;
private JPanel jContentPane1;
private JPanel jContentPane2;
private JPanel jContentPane3;
private JPanel jContentPane4;
private JLabel tableauJLabel;
private JLabel prodjLabel;
private JPanel contentPane;
private AbstractControler controler;
private static AfficheAdrx400 frame;
private JTextField getAdressejTextField() {
if (adressejTextField == null) {
adressejTextField = new JTextField();
adressejTextField.setPreferredSize(new Dimension(300, 20));
adressejTextField.setHorizontalAlignment(JTextField.LEFT);
adressejTextField.addActionListener(new RechercheListener());
}
return adressejTextField;
}
/**
* This method initializes chercherjButton
*
* @return javax.swing.JButton
*/
private JButton getChercherjButton() {
if (chercherjButton == null) {
chercherjButton = new JButton();
chercherjButton.setText("Chercher");
chercherjButton.setPreferredSize(new Dimension(90, 20));
chercherjButton.addActionListener(new RechercheListener());
}
return chercherjButton;
}
private JTextPane getResultatProdjTextPane() {
if (resultatProdjTextPane == null) {
resultatProdjTextPane = new JTextPane();
resultatProdjTextPane.setPreferredSize(new Dimension(760, 80));
}
return resultatProdjTextPane;
}
private JTextPane getResultatTestjTextPane() {
if (resultatTestjTextPane == null) {
resultatTestjTextPane = new JTextPane();
resultatTestjTextPane.setPreferredSize(new Dimension(760, 80));
}
return resultatTestjTextPane;
}
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
try {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getJMenuFichier());
jJMenuBar.add(getJMenuAPropos());
} catch (java.lang.Throwable e) {}
}
return jJMenuBar;
}
private JMenu getJMenuFichier() {
if (jMenuFichier == null) {
try {
jMenuFichier = new JMenu();
jMenuFichier.setText("Fichier");
jMenuFichier.add(getJMenuItemCopier());
jMenuFichier.add(getJMenuItemColler());
jMenuFichier.add(getJMenuItemQuitter());
} catch (java.lang.Throwable e) {}
}
return jMenuFichier;
}
private JMenu getJMenuAPropos() {
if (jMenuAPropos == null) {
try {
jMenuAPropos = new JMenu();
jMenuAPropos.setText("A Propos");
jMenuAPropos.add(getJMenuItemAPropos());
} catch (java.lang.Throwable e) {}
}
return jMenuAPropos;
}
private JMenuItem getJMenuItemQuitter() {
if (jMenuItemQuitter == null) {
try {
jMenuItemQuitter = new JMenuItem();
jMenuItemQuitter.setText("Quitter");
jMenuItemQuitter.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
} catch (java.lang.Throwable e) {}
}
return jMenuItemQuitter;
}
private JMenuItem getJMenuItemColler() {
if (jMenuItemColler == null) {
try {
jMenuItemColler = new JMenuItem();
jMenuItemColler.setText("Coller Gln");
jMenuItemColler.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
Transferable clipData = clipbd.getContents(AfficheAdrx400.this);
try{
String clipString = (String)clipData.getTransferData(DataFlavor.stringFlavor);
adressejTextField.setText(clipString.trim());
} catch(Exception ex) {
System.err.println("Not String flavor");
}
}
});
} catch (java.lang.Throwable e) {}
}
return jMenuItemColler;
}
private JMenuItem getJMenuItemCopier() {
if (jMenuItemCopier == null) {
try {
jMenuItemCopier = new JMenuItem();
jMenuItemCopier.setText("Copier Gln");
jMenuItemCopier.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String selection = adressejTextField.getText();
if(selection == null)
return;
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString,clipString);
}
});
} catch (java.lang.Throwable e) {}
}
return jMenuItemCopier;
}
private JMenuItem getJMenuItemAPropos() {
if (jMenuItemAPropos == null) {
try {
jMenuItemAPropos = new JMenuItem();
jMenuItemAPropos.setText("A Propos");
jMenuItemAPropos.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JOptionPane.showMessageDialog(contentPane,
"Recheche Adresse X400\n D�velopp� dans le cadre de Logilec.",
"A Propos",
JOptionPane.PLAIN_MESSAGE);
}
});
} catch (java.lang.Throwable e) {}
}
return jMenuItemAPropos;
}
private JTable getResultatjTable() {
if (resultatjTable == null) {
try {
data = new DataTable();
resultatjTable = new JTable(data);
resultatjTable.getColumnModel().getColumn(0).setPreferredWidth(100);
resultatjTable.getColumnModel().getColumn(1).setPreferredWidth(100);
resultatjTable.getColumnModel().getColumn(2).setPreferredWidth(90);
resultatjTable.getColumnModel().getColumn(3).setPreferredWidth(400);
resultatjTable.getColumnModel().getColumn(4).setPreferredWidth(10);
resultatjTable.getColumnModel().getColumn(5).setPreferredWidth(30);
} catch (java.lang.Throwable e) {}
}
return resultatjTable;
}
private JScrollPane getResultatjScrollPane() {
if (resultatjScrollPane == null) {
try {
resultatjScrollPane = new JScrollPane();
resultatjScrollPane.setPreferredSize(new Dimension(760, 300));
resultatjScrollPane.setViewportView(getResultatjTable());
} catch (java.lang.Throwable e) {}
}
return resultatjScrollPane;
}
private JPanel getJContentPane() {
if (jContentPane == null) {
rechAdrjLabel = new JLabel();
rechAdrjLabel.setText("Adresse ou occurence recherch�e");
rechAdrjLabel.setHorizontalAlignment(SwingConstants.CENTER);
rechAdrjLabel.setPreferredSize(new Dimension(260, 20));
testjLabel = new JLabel();
testjLabel.setText("Adresse de Test");
testjLabel.setHorizontalAlignment(SwingConstants.CENTER);
testjLabel.setPreferredSize(new Dimension(760, 20));
prodjLabel = new JLabel();
prodjLabel.setText("Adresse de Production");
prodjLabel.setHorizontalAlignment(SwingConstants.CENTER);
prodjLabel.setPreferredSize(new Dimension(760, 20));
tableauJLabel = new JLabel();
tableauJLabel.setText("Tableau des R�sultats");
tableauJLabel.setHorizontalAlignment(SwingConstants.CENTER);
tableauJLabel.setPreferredSize(new Dimension(760, 20));
jContentPane1 = new JPanel();
jContentPane1.setPreferredSize(new Dimension(780, 30));
jContentPane1.setBorder(BorderFactory.createLineBorder(SystemColor.inactiveCaption, 1));
jContentPane1.add(rechAdrjLabel, null);
jContentPane1.add(getAdressejTextField(), null);
jContentPane1.add(getChercherjButton(), null);
jContentPane2 = new JPanel();
jContentPane2.setPreferredSize(new Dimension(780, 120));
jContentPane2.setBorder(BorderFactory.createLineBorder(SystemColor.inactiveCaption, 1));
jContentPane2.add(testjLabel, null);
jContentPane2.add(getResultatTestjTextPane(), null);
jContentPane3 = new JPanel();
jContentPane3.setPreferredSize(new Dimension(780, 120));
jContentPane3.setBorder(BorderFactory.createLineBorder(SystemColor.inactiveCaption, 1));
jContentPane3.add(prodjLabel, null);
jContentPane3.add(getResultatProdjTextPane(), null);
jContentPane4 = new JPanel();
jContentPane4.setPreferredSize(new Dimension(780, 345));
jContentPane4.setBorder(BorderFactory.createLineBorder(SystemColor.inactiveCaption, 1));
jContentPane4.add(tableauJLabel, null);
jContentPane4.add(getResultatjScrollPane(), null);
FlowLayout layout = new FlowLayout();
jContentPane = new JPanel();
jContentPane.add(jContentPane1);
jContentPane.add(jContentPane2);
jContentPane.add(jContentPane3);
jContentPane.add(jContentPane4);
jContentPane.setLayout(layout);
}
return jContentPane;
}
public static void main(String[] args) {
Runnable gui = new Runnable() {
public void run() {
//Instanciation du mod�le
AbstractModel model = null;
model = new AdresseX400("");
//Creation du controleur
AbstractControler controler = new AdresseControleur(model);
// Look and feel du system sur lequel est lanc� l'application
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {}
//creation de la fenetre
frame = new AfficheAdrx400(controler);
frame.setTitle("Recherche sur Service EDI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//ajout de la fenetre comme observer du modele
model.addObservateur(frame);
}
};
SwingUtilities.invokeLater(gui);
}
public AfficheAdrx400(AbstractControler controler) {
this.controler = controler;
this.initialize();
}
private void initialize(){
this.setContentPane(getJContentPane());
this.setJMenuBar(getJJMenuBar());
this.setSize(new Dimension(800, 760));
clipbd = this.getToolkit().getSystemClipboard();
this.setVisible(true);
}
//************************************************
// IMPLEMENTATION DU PATTERN OBSERVATEUR
//************************************************
public void update(List<AdresseX400> listeadr) {
for (AdresseX400 adr:listeadr) {
String message = adr.gln;
if (adr.alias != "" && adr.alias.matches("[0-9]{13}")){
message += " alias sur "+adr.alias;
}
else if (adr.alias != ""){
message += " occurence recherch�e : "+adr.alias;
}
message += "\n"+adr.adresse;
if (adr.tp == "Test") {
resultatTestjTextPane.setText(message);
data.addAdresse(adr);
adressejTextField.setText("Recherche sur station de prod en cours !");
}
else {
resultatProdjTextPane.setText(message);
data.addAdresse(adr);
adressejTextField.setText("");
}
}
adressejTextField.requestFocus();
}
//**********************************************
// LES LISTENERS POUR LE BOUTON Chercher
// et l'action de la touche Entr�e sur le champs de recherche
//**********************************************
class RechercheListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
String str = adressejTextField.getText();
adressejTextField.setText("Recherche sur station de Test en cours !");
try {
controler.recherche(str);
} catch (JSchException e) {
e.printStackTrace();
}
}
}
}