Java tutorial
/* * TrollHammer - Auctions at home over the Internet ! * Copyright (C) 2006 ZOG Team, contact information on trollhammer.berlios.de * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package trollhammer; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; import com.jgoodies.forms.builder.PanelBuilder; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import java.util.Set; import java.util.Vector; import java.util.Collections; import java.util.Comparator; import java.util.GregorianCalendar; import java.text.SimpleDateFormat; class HdVPanel extends JComponent implements ActionListener { private FormLayout layout = null; private FreshPanel listeObjetsPanel = null; private CoolPanel infoAdjPanel = null; private CoolPanel selectPanel = null; private CoolPanel imgPanel = null; private JScrollPane descrObjetPane = null; private JTextField nomObjetTextField = null; private JTextArea descrObjetTextArea = null; private CoolPanel milieuPanel = null; private CoolPanel statutVentePanel = null; private JScrollPane statutVentePane = null; private JTextArea statutVenteArea = null; private CoolPanel objEnCoursPanel = null; private JLabel imgObjEnCoursLabel = null; private ImageIcon imgObjEnCours = null; private FreshPanel sallePanel = null; private CoolPanel logPanel = null; private JScrollPane logPane = null; //inside Pane private String log = null; private JTextArea logArea = null; private CoolPanel adjPanel = null; private CoolPanel encherePanel = null; private JButton enchereButton = null; private CoolPanel chatPanel = null; private JTextField chatField = null; private JButton chatButton = null; private CoolPanel cmdPanel = null; private JButton logOutButton = null; private JButton cdmButton = null; private JButton kickButton = null; private boolean modo = false; private JLabel nbCdMLabel = null; private JLabel prixEnCours = null; private JLabel prochaineEnchere = null; private Vector<HdVObjet> vobjs = null; private JList lobjs = null; private JLabel adjEnCours = null; private ButtonGroup grpl = null; private String victime = null; private ButtonGroup ObjetsVentegrp = null; private Window mw; // afficher les messages "vente en cours" ? utilis // pour s'assurer qu'on ne le fait qu'au login private boolean afficher_message_encours = false; public HdVPanel(boolean modo, Window mw) { this.modo = modo; this.mw = mw; } private void initHdVComponents() { //majChamps(); //nullPointerException quand tu nous tiens..... //Liste des objets listeObjetsPanel = new FreshPanel('x', true); //Informations adjudications prixEnCours = new JLabel(Client.client.getPrixCourant() + ".-"); infoAdjPanel = new CoolPanel("pref:grow, right:pref", "pref, pref"); nbCdMLabel = new JLabel("0"); infoAdjPanel.addLabel("Prix d'adjudication: ", new CellConstraints(1, 1)); infoAdjPanel.addC(prixEnCours, new CellConstraints(2, 1)); infoAdjPanel.addLabel("Nombre de coups de marteau: ", new CellConstraints(1, 2)); infoAdjPanel.addC(nbCdMLabel, new CellConstraints(2, 2)); //Informations sur l'objets slectionn selectPanel = new CoolPanel("pref,left:pref:grow,pref", "pref,center:pref,pref,pref,pref,fill:pref:grow"); selectPanel.setColumnGroups(new int[][] { { 1, 3 } }); imgPanel = new CoolPanel("center:pref:grow", "pref:grow,pref,pref,pref,pref:grow"); imgPanel.setRowGroups(new int[][] { { 1, 4 } }); imgPanel.setPreferredSize(new Dimension(150, 150)); imgPanel.setBorder(BorderFactory.createEtchedBorder()); imgPanel.addC(new JLabel("Image"), new CellConstraints(1, 2)); imgPanel.addC(new JLabel("non disponible"), new CellConstraints(1, 3)); nomObjetTextField = new JTextField(); nomObjetTextField.setEditable(false); descrObjetTextArea = new JTextArea(); descrObjetTextArea.setColumns(17); descrObjetTextArea.setEditable(false); descrObjetTextArea.setWrapStyleWord(true); descrObjetTextArea.setLineWrap(true); descrObjetPane = new JScrollPane(descrObjetTextArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); descrObjetPane.setWheelScrollingEnabled(true); //selectPanel.addLabel("Image: ", new CellConstraints(1,1,3,1)); selectPanel.addC(imgPanel, new CellConstraints(2, 2, CellConstraints.CENTER, CellConstraints.CENTER)); selectPanel.addLabel("Nom : ", new CellConstraints(1, 3, 3, 1)); selectPanel.addC(nomObjetTextField, new CellConstraints(1, 4, 3, 1)); selectPanel.addLabel("Description : ", new CellConstraints(1, 5, 3, 1)); selectPanel.addC(descrObjetPane, new CellConstraints(1, 6, 3, 1)); //Salle && objet en cours... grpl = new ButtonGroup(); milieuPanel = new CoolPanel("pref:grow", "pref,pref,fill:pref:grow"); statutVentePanel = new CoolPanel("fill:pref:grow", "fill:pref:grow"); objEnCoursPanel = new CoolPanel("center:pref:grow", "pref"); statutVenteArea = new JTextArea(); statutVenteArea.setEditable(true); statutVenteArea.setWrapStyleWord(true); statutVenteArea.setLineWrap(true); statutVenteArea.setBackground(milieuPanel.getBackground()); // triche : choper la fonte d'un label statutVenteArea.setFont(nbCdMLabel.getFont()); statutVentePane = new JScrollPane(statutVenteArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); Dimension size = statutVentePane.getPreferredSize(); statutVentePane.setPreferredSize(new Dimension(size.width, 3 * size.height)); statutVentePanel.addC(statutVentePane, new CellConstraints(1, 1)); imgObjEnCoursLabel = new JLabel((ImageIcon) null, SwingConstants.CENTER); imgObjEnCoursLabel.setPreferredSize(new Dimension(55, 55)); objEnCoursPanel.addC(imgObjEnCoursLabel, new CellConstraints(1, 1)); sallePanel = new FreshPanel('y', true); milieuPanel.addC(statutVentePanel, new CellConstraints(1, 1)); milieuPanel.addC(objEnCoursPanel, new CellConstraints(1, 2)); milieuPanel.addC(sallePanel, new CellConstraints(1, 3)); //Log logPanel = new CoolPanel("fill:pref:grow", "fill:pref:grow"); logArea = new JTextArea(log); logArea.setEditable(false); logArea.setWrapStyleWord(true); logArea.setLineWrap(true); logPane = new JScrollPane(logArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); logPane.setWheelScrollingEnabled(true); this.afficher_message_encours = true; // ceci vite que la fentre de chat modifie sa taille et fasse foirer // le layout en poussant tout le bas de l'interface hors-fentre. logPane.setPreferredSize(logPane.getSize()); logPanel.addC(logPane, new CellConstraints(1, 1)); //Adjudication en cours if (Client.client.getDernierEncherisseur() == null) adjEnCours = new JLabel("Aucune..."); else if (Client.client.getDernierEncherisseur().equals(Client.session.getLogin())) adjEnCours = new JLabel("EN VOTRE FAVEUR"); else adjEnCours = new JLabel("CONTRE VOUS!"); adjPanel = new CoolPanel("fill:pref:grow", "pref,pref:grow"); adjPanel.addLabel("Adjudication en cours: ", new CellConstraints(1, 1, CellConstraints.CENTER, CellConstraints.CENTER)); adjPanel.add(adjEnCours, new CellConstraints(1, 2, CellConstraints.CENTER, CellConstraints.CENTER)); //enchre prochaineEnchere = new JLabel(Client.client.getNouveauPrix() + ".-"); encherePanel = new CoolPanel("pref:grow,right:pref,", "pref:grow,pref"); enchereButton = new JButton("Enchrir!"); enchereButton.setActionCommand("encherir"); enchereButton.addActionListener(this); encherePanel.addLabel("Prochain prix d'adjudication: ", new CellConstraints(1, 1)); encherePanel.addC(prochaineEnchere, new CellConstraints(2, 1)); encherePanel.addC(enchereButton, new CellConstraints(1, 2, CellConstraints.CENTER, CellConstraints.CENTER)); //Chat chatPanel = new CoolPanel("fill:pref:grow", "pref, pref"); chatField = new JTextField(); chatField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { chatButton.doClick(); } }); chatButton = new JButton("Envoyer"); chatButton.setActionCommand("sendchat"); chatButton.addActionListener(this); chatPanel.addC(chatField, new CellConstraints(1, 1)); chatPanel.addC(chatButton, new CellConstraints(1, 2, CellConstraints.CENTER, CellConstraints.CENTER)); //Panel des commandes cmdPanel = new CoolPanel("pref,pref,pref", "pref"); logOutButton = new JButton("Dconnecter"); logOutButton.setActionCommand("disconnect"); logOutButton.addActionListener(this); cmdPanel.addC(logOutButton, new CellConstraints(1, 1)); if (modo) { cdmButton = new JButton("Coup de Marteau"); cdmButton.setActionCommand("trollhammer"); cdmButton.addActionListener(this); cdmButton.setEnabled(false); kickButton = new JButton("Expulser"); kickButton.setActionCommand("kick"); kickButton.addActionListener(this); kickButton.setEnabled(false); cmdPanel.addC(cdmButton, new CellConstraints(2, 1)); cmdPanel.addC(kickButton, new CellConstraints(3, 1)); } } private JComponent buildHdVPanel() { initHdVComponents(); layout = new FormLayout("10dlu, pref, pref:grow, pref, 10dlu", //5cols "fill:pref, fill:pref, fill:pref, fill:pref:grow, fill:pref, fill:pref, fill:pref" //7rows ); PanelBuilder builder = new PanelBuilder(layout); builder.setDefaultDialogBorder(); CellConstraints cc = new CellConstraints(); builder.addLabel("Liste des objets: ", cc.xyw(2, 1, 2)); builder.addLabel("Informations Adjudication: ", cc.xy(4, 1)); builder.add(listeObjetsPanel, cc.xyw(2, 2, 2)); builder.add(infoAdjPanel, cc.xy(4, 2)); builder.addLabel("Informations sur l'objet slectionn: ", cc.xy(2, 3)); //builder.addLabel("Salle: ", cc.xy(3,3)); builder.addLabel("Log: ", cc.xy(4, 3)); builder.add(selectPanel, cc.xy(2, 4)); builder.add(milieuPanel, cc.xy(3, 4)); builder.add(logPanel, cc.xy(4, 4)); builder.addLabel("Chat: ", cc.xy(4, 5)); builder.add(adjPanel, cc.xy(2, 6)); builder.add(encherePanel, cc.xy(3, 6)); builder.add(chatPanel, cc.xy(4, 6)); builder.add(cmdPanel, cc.xyw(2, 7, 3)); return builder.getPanel(); } public JComponent getComponent() { return buildHdVPanel(); } public void actionPerformed(ActionEvent event) { Logger.log("Window", 2, event.getActionCommand() + " mouahahahahahahahahahHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA"); if (event.getActionCommand().equals("disconnect")) { mw.doLogout(); } else if (event.getActionCommand().equals("sendchat")) { Client.hi.ecrireChat(chatField.getText()); chatField.setText(""); } else if (event.getActionCommand().equals("trollhammer")) { Client.hi.executerModo(ActionModo.CoupDeMassePAF); } else if (event.getActionCommand().equals("encherir")) { //enchereButton.setEnabled(false); verifierEnchere(); Client.hi.executer(Action.Encherir); } else if (event.getActionCommand().equals("kick")) { //ben il faut kicker ^^ //jr : et je vais le faire. MOUAHAHAH. //la slection de victime se fait via le champ du mme nom, //mis jour ds qu'un bouton d'utilisateur est slectionn. //(par le ActionListener qu'est HdV, donne aux boutons). //le reset de victime est assur par l'update de la liste //(car aprs un update plus rien n'est slectionn) if (victime != null) { kickButton.setEnabled(false); Client.hi.kicker(victime); this.victime = null; } } else if (event.getActionCommand().equals("setvictime")) { // seulement les HdVUsers lancent ceci. On peut donc faire // un cast sur l'objet dclencheur. //HdVUser selectionne = (HdVUser) event.getSource(); //this.victime = selectionne.getLogin(); //becholey: pask on se la pte comme des porcs!! this.victime = ((HdVUser) event.getSource()).getLogin(); kickButton.setEnabled(true); } else if (event.getActionCommand().equals("afficheObjet")) { //HdVObjet objetSelectionne = (HdVObjet) event.getSource(); //descrObjetTextArea.setText(objetSelectionne.getDescription()); //becholey: pask on se la pte enocre plus comme des porcs!! nomObjetTextField.setText(((HdVObjet) event.getSource()).getNom()); descrObjetTextArea.setText(((HdVObjet) event.getSource()).getDescription()); imgPanel.removeAll(); imgPanel.addC(new JLabel(((HdVObjet) event.getSource()).getImage(), SwingConstants.CENTER), new CellConstraints(1, 3)); imgPanel.updateUI(); } } /** Ajoute du texte la fin du contenu du panneau de log. * Gnralisation de ce qui se faisait au dpart uniquement pour le chat, * cette mthode permet d'avoir l'autoscrolling du texte pour tous les messages * rajouts dans le panneau de log. */ void texteLog(String texte) { // jr : autoscroll pour le log. Cet autoscroll ne s'active que si // le texte est dj scroll tout en bas, sinon, il ne se passe rien. // technique trouve sur les forums Java de Sun. // est-ce que la scrollbar est dj tout en bas ? JScrollBar vbar = logPane.getVerticalScrollBar(); boolean autoScroll = ((vbar.getValue() + vbar.getVisibleAmount()) == vbar.getMaximum()); // rajouter le texte qui vient d'arriver logArea.append(texte); // scroller si dj en bas. if (autoScroll) logArea.setCaretPosition(logArea.getDocument().getLength()); } /** Idem que texteLog(String texte), mais fait un saut de ligne la fin. */ void texteLogln(String texte) { this.texteLog(texte + "\n"); } /* relai (partiel) des mthodes de HI */ void affichageChat(String m, String i) { this.texteLog("<" + i + "> " + m + "\n"); } public void affichageVente(Vente v) //version avec JRadionButton { listeObjetsPanel.add(new JLabel("Veuillez patienter...")); Logger.log("HdVPanel", 2, LogType.DBG, "Affichage Vente"); vobjs = new Vector<HdVObjet>(); for (int i : v.getOIds()) { //Logger.log("HdVPanel",0,"@@@ for.. @@@"); Objet o = Client.objectmanager.getObjet(i); if (o != null) { vobjs.add(new HdVObjet(o)); } } //Affichage de l'objet en cours !!!!!!!!DOIT TRE SYNCRO!!!!!!! // jr : rajout test de taille, comme a vente vide ou pas de vente // ne fait pas d'exception quand on essaie d'avoir le firstElement // d'un vecteur... vide... // C'est cela qui est l'origine du bug qui quitte l'interface // la fin de la dernire vente planifie (comme montr dans notre... // dmo...) if (vobjs.size() > 0) { imgObjEnCours = new ImageIcon(vobjs.firstElement().getImage().getImage()); int h = imgObjEnCours.getIconHeight(); int w = imgObjEnCours.getIconWidth(); Logger.log("HdVPanel", 2, "imgObjEnCours h: " + h + ", w: " + w); if (w > h) imgObjEnCours.setImage(imgObjEnCours.getImage().getScaledInstance(50, -1, Image.SCALE_SMOOTH)); else imgObjEnCours.setImage(imgObjEnCours.getImage().getScaledInstance(-1, 50, Image.SCALE_SMOOTH)); imgObjEnCoursLabel.setIcon(imgObjEnCours); } affichageListeObjets(); majChamps(); /* affichage du statut de la vente - en cours, ou si c'est la prochaine, * heure de dmarrage. */ boolean en_cours = Client.ventemanager.isInVenteEnCours(Client.client.getDate()); if (en_cours) { statutVenteArea.setText("Vente en cours : " + v.getNom()); } else { GregorianCalendar date = new GregorianCalendar(); date.setTimeInMillis(v.getDate()); SimpleDateFormat df = new SimpleDateFormat(); statutVenteArea .setText("Prochaine vente : " + v.getNom() + "\n" + "Date : " + df.format(date.getTime())); } } private void affichageListeObjets() { listeObjetsPanel.removeAll(); ObjetsVentegrp = new ButtonGroup(); for (HdVObjet o : vobjs) { o.addActionListener(this); o.setActionCommand("afficheObjet"); listeObjetsPanel.add(o); ObjetsVentegrp.add(o); //Logger.log("HdVPanel",0,"@@@ ADD add ADD @@@"); } // update graphique SwingUtilities.invokeLater(new Runnable() { public void run() { listeObjetsPanel.validate(); listeObjetsPanel.repaint(); } }); } void affichageListeParticipants(Set<Participant> pl) { grpl = new ButtonGroup(); sallePanel.removeAll(); this.victime = null; // reset de la victime ! // liste ordonne des participants Vector<Participant> participants = new Vector<Participant>(); participants.addAll(pl); // classement de la liste des Participants. Collections.sort(participants, new Comparator<Participant>() { public int compare(Participant p1, Participant p2) { return (p1.getLogin()).compareTo(p2.getLogin()); } public boolean equals(Participant p1, Participant p2) { return (p1.getLogin()).equals(p2.getLogin()); } }); for (Participant p : participants) { HdVUser u = null; String selflogin = Client.session.getLogin(); if (p.getStatut() == StatutLogin.Connecte_Utilisateur) { // false == utilisateur pas modo u = new HdVUser(p.getLogin(), false, selflogin); } else if (p.getStatut() == StatutLogin.Connecte_Moderateur) { // true == utilisateur modo u = new HdVUser(p.getLogin(), true, selflogin); } if (u != null) { // assurer la mise jour de la victime du kick // (seulement si modo, sinon on override l'icne // "slectionn" pour qu'elle soit identique // l'icne dselectionn !) if (modo) { u.addActionListener(this); u.setActionCommand("setvictime"); } else { u.setSelectedIcon(u.getIcon()); } grpl.add(u); sallePanel.add(u); } } // update graphique (en differe pour eviter les problemes de synchro) SwingUtilities.invokeLater(new Runnable() { public void run() { sallePanel.validate(); sallePanel.repaint(); } }); // pask on s'la pte!!! } void affichage(Evenement e) { switch (e) { case CoupDeMassePAF1: texteLogln("- PREMIER COUP DE MARTEAU -"); nbCdMLabel.setText("1"); /* if(modo && Client.session.getLogin(). equals(Client.humain.getVente().getSuperviseur())) { enchereButton.setEnabled(false); }*/ verifierEnchere(); break; case CoupDeMassePAF2: texteLogln("- SECOND COUP DE MARTEAU -"); nbCdMLabel.setText("2"); /* if(modo && Client.session.getLogin(). equals(Client.humain.getVente().getSuperviseur())) { enchereButton.setEnabled(false); }*/ verifierEnchere(); break; case Adjuge: nbCdMLabel.setText("3"); // gicler si besoin est... texteLogln("- ADJUDICATION -\n" + "Objet : " //le nom de l'objet qui vient d'tre vendu (ouf!) + Client.objectmanager.getObjet(Client.ventemanager.getVenteEnCours().getFirst()).getNom() + "\n" + "Vendu : " + Client.client.getDernierEncherisseur() + "\n" + "Au prix de " + Client.client.getPrixCourant() + ".-"); nbCdMLabel.setText("0"); /* if(modo && Client.session.getLogin(). equals(Client.humain.getVente().getSuperviseur())) { enchereButton.setEnabled(false); }*/ //verifierEnchere(); System.out.println( "login : " + Client.session.getLogin() + " et superviseur : " + Client.client.getSuperviseur()); if (modo && Client.session.getLogin().equals(Client.client.getSuperviseur())) { enchereButton.setEnabled(false); } else { enchereButton.setEnabled(true); } verifierCDM(); break; case VenteAutomatique: texteLogln("- Vente en mode automatique -"); verifierEnchere(); verifierCDM(); /* if(modo) { cdmButton.setEnabled(true); } */ break; default: } } void affichageEnchere(Integer prix, String i) { texteLogln(i + " enchrit " + prix); // ractiver le bouton enchrir si l'enchrisseur // n'est pas soi-mme ! (et si on n'est pas superviseur) /* if(!i.equals(Client.session.getLogin()) && !Client.session.getLogin().equals(Client.client.getSuperviseur())) { enchereButton.setEnabled(true); } else { enchereButton.setEnabled(false); }*/ verifierEnchere(); verifierCDM(); majChamps(); } private void majChamps() { //majEncherePanel(); //majAdjPanel(); //majInfoAdjPanel(); Logger.log("HdVPanel", 0, "### MAJCHAMPS.........###"); if (Client.client.getDernierEncherisseur() == null) adjEnCours.setText("Aucune..."); else if (Client.client.getDernierEncherisseur().equals(Client.session.getLogin())) adjEnCours.setText("EN VOTRE FAVEUR"); else adjEnCours.setText("CONTRE VOUS!"); prochaineEnchere.setText(Client.client.getNouveauPrix() + ".-"); prixEnCours.setText(Client.client.getPrixCourant() + ".-"); SwingUtilities.invokeLater(new Runnable() { public void run() { adjPanel.validate(); adjPanel.repaint(); encherePanel.validate(); encherePanel.repaint(); infoAdjPanel.validate(); infoAdjPanel.repaint(); imgObjEnCoursLabel.validate(); imgObjEnCoursLabel.repaint(); } }); // pask on s'la pte!!! } void message(Notification n) { switch (n) { case DebutVente: texteLogln("- Dmarrage de vente -"); //enchereButton.setEnabled(true); verifierEnchere(); verifierCDM(); /* if(modo) { cdmButton.setEnabled(true); } */ break; case VenteEnCours: if (!afficher_message_encours) { texteLogln("- Vente en cours -"); // on l'a affich, on ne le refait plus // avant... la prochaine instance de HdVPanel afficher_message_encours = false; } //enchereButton.setEnabled(true); verifierEnchere(); verifierCDM(); break; case FinVente: texteLogln("- Fin de la vente -"); //enchereButton.setEnabled(false); verifierEnchere(); verifierCDM(); /* if(modo) { cdmButton.setEnabled(false); } */ imgPanel.removeAll(); descrObjetTextArea.setText(""); imgPanel.addC(new JLabel("Image"), new CellConstraints(1, 2)); imgPanel.addC(new JLabel("non disponible"), new CellConstraints(1, 3)); break; } } /** Fonction appelle par Window chaque fois que l'utilisateur slectionne * l'Onglet Htel Des Ventes, permet d'initialiser les boutons 'dsactiv'. */ void initTab() { // jr : actions a prendre par dfaut l'affichage du tab. verifierEnchere(); verifierCDM(); if (modo) { kickButton.setEnabled(false); } statutVenteArea.setText("Aucune vente planifie"); } /* rajout p.r. Design : afficher quand un utilisateur devient * superviseur de vente, pour dire que la vente passe en manuel ! */ void superviseur(String i) { texteLogln("- Vente en mode manuel -"); texteLogln("- commissaire priseur : " + i + " -"); verifierEnchere(); verifierCDM(); /* if(modo) { if(i.equals(Client.session.getLogin())) { cdmButton.setEnabled(true); //enchereButton.setEnabled(false); } else { cdmButton.setEnabled(false); //enchereButton.setEnabled(true); } } */ } /* vrifier si le coup de masse ou l'enchre sont possibles, et activer * ou dsactiver les boutons pour en consquence. */ void verifierEnchere() { boolean en_cours = Client.ventemanager.isInVenteEnCours(Client.client.getDate()); String login = Client.session.getLogin(); String superviseur = Client.client.getSuperviseur(); String dernier_encherisseur = Client.client.getDernierEncherisseur(); if (en_cours) { if (modo && login.equals(superviseur)) { enchereButton.setEnabled(false); } else { if (login.equals(dernier_encherisseur)) { enchereButton.setEnabled(false); } else { enchereButton.setEnabled(true); } } } else { enchereButton.setEnabled(false); } /* if(Client.humain.getVente() != null) { if(modo && Client.session.getLogin().equals( Client.humain.getVente().getSuperviseur())) { enchereButton.setEnabled(false); } else if( Client.session.getLogin().equals( Client.client.getDernierEncherisseur()) ) { enchereButton.setEnabled(false); } else { enchereButton.setEnabled(true); } } else { enchereButton.setEnabled(false); } encherePanel.validate(); encherePanel.repaint(); */ } void verifierCDM() { if (modo) { boolean en_cours = Client.ventemanager.isInVenteEnCours(Client.client.getDate()); //boolean en_cours = Client.humain.getVente() != null ? true : false; String login = Client.session.getLogin(); String superviseur = Client.client.getSuperviseur(); String dernier_encherisseur = Client.client.getDernierEncherisseur(); if (en_cours) { if ((superviseur == null || login.equals(superviseur)) && !login.equals(dernier_encherisseur)) { cdmButton.setEnabled(true); } else { cdmButton.setEnabled(false); } } else { cdmButton.setEnabled(false); } cmdPanel.validate(); cmdPanel.repaint(); } } }