/** * Rafraichir la liste des statuts * * @param reconstruireListe forcer la reconstruction de la liste */ private void refreshStatuts(boolean reconstruireListe) { if (ContestOrg.get().is(ContestOrg.STATE_OPEN)) { // Ne plus écouter les évenements sur la liste des statuts this.jcb_statut.removeItemListener(this); // Déterminer s'il faut inclure ou non le statut "homologué" boolean isStatutHomologueActive = ContestOrg.get().getCtrlParticipants().isStatutHomologueActive(); if (this.jtable.getSelectedRow() != -1) { // Récupérer le statut du participant sélectionné InfosModelParticipant.Statut statut = (InfosModelParticipant.Statut) this.jtable .getModel() .getValueAt( this.jtable .getRowSorter() .convertRowIndexToModel(this.jtable.getSelectedRow()), this.jtable.getModel().getColumnCount() - 1); // Reconstruire la liste des statuts ? if (statut == InfosModelParticipant.Statut.HOMOLOGUE) { if (this.index_homologue == -1) { reconstruireListe = true; isStatutHomologueActive = true; } } else if (this.index_homologue != -1 && !ContestOrg.get().getCtrlParticipants().isStatutHomologueActive()) { reconstruireListe = true; isStatutHomologueActive = false; } } // Recontruire la liste des statuts if (reconstruireListe) { this.jcb_statut.removeAllItems(); boolean typeParticipantEquipe = ContestOrg.get().getCtrlParticipants().getTypeParticipants() == InfosModelConcours.PARTICIPANTS_EQUIPES; if (isStatutHomologueActive) { this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.ABSENT.getNomEquipe() : InfosModelParticipant.Statut.ABSENT.getNomJoueur()); this.index_absent = 0; this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.PRESENT.getNomEquipe() : InfosModelParticipant.Statut.PRESENT.getNomJoueur()); this.index_present = 1; this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.HOMOLOGUE.getNomEquipe() : InfosModelParticipant.Statut.HOMOLOGUE.getNomJoueur()); this.index_homologue = 2; this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.FORFAIT.getNomEquipe() : InfosModelParticipant.Statut.FORFAIT.getNomJoueur()); this.index_forfait = 3; this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.DISQUALIFIE.getNomEquipe() : InfosModelParticipant.Statut.DISQUALIFIE.getNomJoueur()); this.index_disqualifie = 4; } else { this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.ABSENT.getNomEquipe() : InfosModelParticipant.Statut.ABSENT.getNomJoueur()); this.index_absent = 0; this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.PRESENT.getNomEquipe() : InfosModelParticipant.Statut.PRESENT.getNomJoueur()); this.index_present = 1; this.index_homologue = -1; this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.FORFAIT.getNomEquipe() : InfosModelParticipant.Statut.FORFAIT.getNomJoueur()); this.index_forfait = 2; this.jcb_statut.addItem( typeParticipantEquipe ? InfosModelParticipant.Statut.DISQUALIFIE.getNomEquipe() : InfosModelParticipant.Statut.DISQUALIFIE.getNomJoueur()); this.index_disqualifie = 3; } } // Sélectionné le statut correspondant au participant sélectionné dans le tableau if (this.jtable.getSelectedRow() != -1) { // Récupérer le statut du participant sélectionné InfosModelParticipant.Statut statut = (InfosModelParticipant.Statut) this.jtable .getModel() .getValueAt( this.jtable .getRowSorter() .convertRowIndexToModel(this.jtable.getSelectedRow()), this.jtable.getModel().getColumnCount() - 1); // Sélectionner le statut du participant dans la liste des statut if (statut == InfosModelParticipant.Statut.ABSENT) { this.jcb_statut.setSelectedIndex(this.index_absent); } else if (statut == InfosModelParticipant.Statut.PRESENT) { this.jcb_statut.setSelectedIndex(this.index_present); } else if (statut == InfosModelParticipant.Statut.HOMOLOGUE) { this.jcb_statut.setSelectedIndex(this.index_homologue); } else if (statut == InfosModelParticipant.Statut.FORFAIT) { this.jcb_statut.setSelectedIndex(this.index_forfait); } else { this.jcb_statut.setSelectedIndex(this.index_disqualifie); } } else { this.jcb_statut.setSelectedIndex(this.index_absent); } // Ecouter à nouveau les évenemtns sur la liste des statuts this.jcb_statut.addItemListener(this); } }
/** * Constructeur * * @param w_parent fenêtre parent */ public JPPrincipalParticipants(Window w_parent) { // Appeller le constructeur du parent super(w_parent); // Ecouter le controleur principal ContestOrg.get().addListener(this); // Panneau du haut this.jb_categories = new JButton("Catégories", new ImageIcon("img/farm/16x16/folders.png")); this.jb_poules = new JButton("Poules", new ImageIcon("img/farm/16x16/table_multiple.png")); this.jb_nouveau = new JButton("Nouvelle équipe", new ImageIcon("img/farm/16x16/add.png")); this.jb_importer = new JButton("Importer équipes", new ImageIcon("img/farm/16x16/application_get.png")); this.jb_exporter = new JButton("Exporter", new ImageIcon("img/farm/16x16/application_go.png")); this.jb_categories.setEnabled(false); this.jb_poules.setEnabled(false); this.jb_nouveau.setEnabled(false); this.jb_importer.setEnabled(false); this.jb_exporter.setEnabled(false); this.jb_categories.setToolTipText("Configurer les catégories"); this.jb_poules.setToolTipText("Configurer les poules"); this.jb_nouveau.setToolTipText("Ajouter une équipe"); this.jb_importer.setToolTipText("Importer une liste d'équipes"); this.jb_exporter.setToolTipText("Exporter des informations sur les équipes"); this.jp_haut.add(this.jb_categories); this.jp_haut.add(this.jb_poules); this.jp_haut.add(this.jb_nouveau); this.jp_haut.add(this.jb_importer); this.jp_haut.add(this.jb_exporter); // Panneau de contenu this.jtree = new JTree(ContestOrg.get().getCtrlParticipants().getTreeModelPoules()); this.jtree.setCellRenderer(new TreeCellRendererParticipants()); this.jtree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); this.jtree.addTreeSelectionListener(this); this.jtree.setBorder(new LineBorder(new Color(254, 254, 254), 4)); this.jtree.setToggleClickCount(-1); this.jtable = new JTable(ContestOrg.get().getCtrlParticipants().getTableModelParticipants()); this.jtable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); this.jtable.getSelectionModel().addListSelectionListener(this); this.jtable .getColumnModel() .getColumn(4 - 9 + this.jtable.getColumnCount()) .setCellRenderer(new TableCellRenderers.Rang()); this.jtable .getColumnModel() .getColumn(5 - 9 + this.jtable.getColumnCount()) .setCellRenderer(new TableCellRenderers.NbPoints()); this.jtable .getColumnModel() .getColumn(6 - 9 + this.jtable.getColumnCount()) .setCellRenderer(new TableCellRenderers.NbVictoires()); this.jtable .getColumnModel() .getColumn(8 - 9 + this.jtable.getColumnCount()) .setCellRenderer(new TableCellRenderers.Statut()); TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(this.jtable.getModel()); sorter.setStringConverter(new TableStringConverterParticipants()); this.jtable.setRowSorter(sorter); this.jtable.addMouseListener(this); JScrollPane jsp = new JScrollPane(this.jtree); jsp.setPreferredSize(new Dimension(180, jsp.getPreferredSize().height)); this.jp_contenu.add( new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jsp, new JScrollPane(this.jtable))); // Panneau du bas this.jcb_statut = new JComboBox(); this.jcb_statut.addItem(InfosModelParticipant.Statut.ABSENT.getNomEquipe()); this.index_absent = 0; this.jcb_statut.addItem(InfosModelParticipant.Statut.PRESENT.getNomEquipe()); this.index_present = 1; this.jcb_statut.addItem(InfosModelParticipant.Statut.HOMOLOGUE.getNomEquipe()); this.index_homologue = 2; this.jcb_statut.addItem(InfosModelParticipant.Statut.FORFAIT.getNomEquipe()); this.index_forfait = 3; this.jcb_statut.addItem(InfosModelParticipant.Statut.DISQUALIFIE.getNomEquipe()); this.index_disqualifie = 4; this.jb_editer = new JButton("Editer équipe", new ImageIcon("img/farm/16x16/pencil.png")); this.jb_supprimer = new JButton("Supprimer équipes", new ImageIcon("img/farm/16x16/delete.png")); this.jcb_statut.setEnabled(false); this.jb_editer.setEnabled(false); this.jb_supprimer.setEnabled(false); this.jcb_statut.setToolTipText("Modifier le statut des équipes séléctionnées"); this.jb_editer.setToolTipText("Editer l'équipe séléctionnée"); this.jb_supprimer.setToolTipText("Supprimer les équipes séléctionnées"); this.jp_bas.add(this.jcb_statut); this.jp_bas.add(this.jb_editer); this.jp_bas.add(this.jb_supprimer); // Ecouter les boutons this.jb_categories.addActionListener(this); this.jb_poules.addActionListener(this); this.jb_nouveau.addActionListener(this); this.jb_importer.addActionListener(this); this.jb_exporter.addActionListener(this); this.jb_editer.addActionListener(this); this.jb_supprimer.addActionListener(this); // Ecouter la liste des statuts this.jcb_statut.addItemListener(this); }