/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package mage.client.dialog; import java.awt.Component; import java.util.ArrayList; import javax.swing.JCheckBox; import javax.swing.JOptionPane; import mage.cards.repository.ExpansionInfo; import mage.cards.repository.ExpansionRepository; /** * * @author BrodyL */ public class RandomPacksSelectorDialog extends javax.swing.JDialog { /** * Creates new form RandomPacksSelectorDialog */ private boolean boxesCreated; private boolean isRandomDraft; private boolean isRichManDraft; private String title = ""; public final static String randomDraftDescription = ("The selected packs will be randomly distributed to players. Each player may open different packs. Duplicates will be avoided."); public RandomPacksSelectorDialog(boolean isRandomDraft, boolean isRichManDraft) { initComponents(); setType(isRandomDraft, isRichManDraft); this.pnlApply.setToolTipText(randomDraftDescription); this.pnlSelect.setToolTipText(randomDraftDescription); boxesCreated = false; } public void setType(boolean isRandomDraft, boolean isRichManDraft) { this.isRandomDraft = isRandomDraft; this.isRichManDraft = isRichManDraft; if (this.isRandomDraft) { title = "Random Booster Draft Packs Selector"; } else if (this.isRichManDraft) { title = "Rich Man Booster Draft Packs Selector"; } setTitle(title); } public void showDialog() { createCheckboxes(); pnlPacks.setVisible(true); pnlPacks.revalidate(); pnlPacks.repaint(); this.pack(); this.revalidate(); this.repaint(); this.setVisible(true); this.setModal(true); } public void setSelectedPacks(ArrayList<String> packs){ if (!boxesCreated){ createCheckboxes(); } for (Component pack : pnlPacks.getComponents()) { JCheckBox thePack = (JCheckBox) pack; if (packs.contains(thePack.getText())) { thePack.setSelected(true); } else{ thePack.setSelected(false); } } } public ArrayList<String> getSelectedPacks() { ArrayList<String> returnVal = new ArrayList<>(); for (Component pack: pnlPacks.getComponents()){ JCheckBox thePack = (JCheckBox) pack; if (thePack.isSelected()){ returnVal.add(thePack.getText()); } } return returnVal; } private void createCheckboxes() { if (!boxesCreated) { ExpansionInfo[] allExpansions = ExpansionRepository.instance.getWithBoostersSortedByReleaseDate(); for (ExpansionInfo exp : allExpansions) { JCheckBox pack = new JCheckBox(); pack.setSelected(true); pack.setText(exp.getCode()); pack.setToolTipText(exp.getName()); pnlPacks.add(pack); } pnlPacks.setVisible(true); this.pack(); boxesCreated = true; pnlPacks.validate(); } } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { pnlPacks = new java.awt.Panel(); pnlSelect = new javax.swing.JPanel(); btnNone = new javax.swing.JButton(); btnAll = new javax.swing.JButton(); pnlApply = new javax.swing.JPanel(); btnApply = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); setTitle(title); setModal(true); setModalExclusionType(java.awt.Dialog.ModalExclusionType.APPLICATION_EXCLUDE); setPreferredSize(new java.awt.Dimension(600, 450)); setResizable(false); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); pnlPacks.setLayout(new java.awt.GridLayout(11, 12)); pnlSelect.setLayout(new javax.swing.BoxLayout(pnlSelect, javax.swing.BoxLayout.LINE_AXIS)); btnNone.setText("Select none"); btnNone.setActionCommand("none"); btnNone.addActionListener(evt -> btnNoneActionPerformed(evt)); pnlSelect.add(btnNone); btnAll.setText("Select all"); btnAll.addActionListener(evt -> btnAllActionPerformed(evt)); pnlSelect.add(btnAll); pnlApply.setLayout(new javax.swing.BoxLayout(pnlApply, javax.swing.BoxLayout.LINE_AXIS)); btnApply.setText("Apply"); if (isRandomDraft) { btnApply.setToolTipText("At least 2 packs must be selected"); } else if (isRichManDraft) { btnApply.setToolTipText("At least 1 pack must be selected"); } btnApply.addActionListener(evt -> btnApplyActionPerformed(evt)); pnlApply.add(btnApply); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(pnlSelect, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 300, Short.MAX_VALUE) .addComponent(pnlApply, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addComponent(pnlPacks, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(pnlPacks, javax.swing.GroupLayout.PREFERRED_SIZE, 372, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(pnlApply, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(pnlSelect, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); }// </editor-fold>//GEN-END:initComponents private void btnAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAllActionPerformed setAllCheckBoxes(true); }//GEN-LAST:event_btnAllActionPerformed private void btnNoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNoneActionPerformed setAllCheckBoxes(false); }//GEN-LAST:event_btnNoneActionPerformed private void btnApplyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnApplyActionPerformed this.doApply(); }//GEN-LAST:event_btnApplyActionPerformed private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing this.doApply(); }//GEN-LAST:event_formWindowClosing public void doApply() { if (getSelectedPacks().size() < 2 && isRandomDraft) { JOptionPane.showMessageDialog(this, "At least 2 sets must be selected", "Error", JOptionPane.ERROR_MESSAGE); } else if (getSelectedPacks().size() < 1 && isRichManDraft) { JOptionPane.showMessageDialog(this, "At least 1 set must be selected", "Error", JOptionPane.ERROR_MESSAGE); } else { this.setVisible(false); } } private void setAllCheckBoxes(boolean value) { for (Component pack : pnlPacks.getComponents()) { JCheckBox thePack = (JCheckBox) pack; thePack.setSelected(value); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnAll; private javax.swing.JButton btnApply; private javax.swing.JButton btnNone; private javax.swing.JPanel pnlApply; private java.awt.Panel pnlPacks; private javax.swing.JPanel pnlSelect; // End of variables declaration//GEN-END:variables }