/* * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ package mage.client.deckeditor.collection.viewer; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.GridBagLayout; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.dialog.PreferencesDialog; import mage.client.plugins.impl.Plugins; import mage.client.util.sets.ConstructedFormats; import org.apache.log4j.Logger; /** * Pane with big card and mage book. * * @author nantuko */ public final class CollectionViewerPanel extends JPanel { private static final Logger logger = Logger.getLogger(CollectionViewerPanel.class); protected static final String LAYOYT_CONFIG_KEY = "collectionViewerLayoutConfig"; private static final String FORMAT_CONFIG_KEY = "collectionViewerFormat"; public CollectionViewerPanel() { initComponents(); try { String format = PreferencesDialog.getCachedValue(CollectionViewerPanel.FORMAT_CONFIG_KEY, ConstructedFormats.getDefault()); formats.setSelectedItem(format); } catch (Exception e) { logger.fatal("Error setting selected format", e); } } public void cleanUp() { this.hidePopup(); this.bigCard = null; } public void initComponents() { jPanel1 = new javax.swing.JPanel(); jPanel1.setOpaque(false); bigCard = new BigCard(); BoxLayout boxlayout = new BoxLayout(jPanel1, BoxLayout.PAGE_AXIS); jPanel1.setLayout(boxlayout); btnExit = new javax.swing.JButton(); btnExit.setAlignmentX(Component.LEFT_ALIGNMENT); jPanel1.add(btnExit); JLabel label1 = new JLabel("Choose format:"); label1.setAlignmentX(Component.LEFT_ALIGNMENT); label1.setForeground(Color.white); jPanel1.add(label1); formats = new JComboBox<>(ConstructedFormats.getTypes()); formats.setSelectedItem(ConstructedFormats.getDefault()); formats.setPreferredSize(new Dimension(250, 25)); formats.setMaximumSize(new Dimension(250, 25)); formats.setAlignmentX(Component.LEFT_ALIGNMENT); jPanel1.add(formats); JLabel label2 = new JLabel("Choose size:"); label2.setAlignmentX(Component.LEFT_ALIGNMENT); label2.setForeground(Color.white); jPanel1.add(label2); small3x3 = new JRadioButton("3x3"); small3x3.setForeground(Color.white); boolean selected3x3 = MageFrame.getPreferences().get(LAYOYT_CONFIG_KEY, MageBook.LAYOUT_3x3).equals(MageBook.LAYOUT_3x3); small3x3.setSelected(selected3x3); small3x3.addActionListener(e -> { big4x4.setSelected(false); mageBook.updateSize(MageBook.LAYOUT_3x3); MageFrame.getPreferences().put(LAYOYT_CONFIG_KEY, MageBook.LAYOUT_3x3); }); jPanel1.add(small3x3); big4x4 = new JRadioButton("4x4"); big4x4.setForeground(Color.white); big4x4.setSelected(!selected3x3); big4x4.addActionListener(e -> { small3x3.setSelected(false); mageBook.updateSize(MageBook.LAYOUT_4x4); MageFrame.getPreferences().put(LAYOYT_CONFIG_KEY, MageBook.LAYOUT_4x4); }); jPanel1.add(big4x4); JLabel label3 = new JLabel("Switch tabs:"); label3.setAlignmentX(Component.LEFT_ALIGNMENT); label3.setForeground(Color.white); jPanel1.add(label3); JPanel buttonPanel = new JPanel(); buttonPanel.setPreferredSize(new Dimension(200, 100)); buttonPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 100)); buttonPanel.setOpaque(false); buttonPanel.setAlignmentX(Component.LEFT_ALIGNMENT); jPanel1.add(buttonPanel); JButton prev = new JButton("Prev"); prev.addActionListener(e -> mageBook.prev()); buttonPanel.add(prev); JButton next = new JButton("Next"); next.addActionListener(e -> mageBook.next()); buttonPanel.add(next); JLabel label4 = new JLabel("Show cards or tokens:"); label3.setAlignmentX(Component.LEFT_ALIGNMENT); label3.setForeground(Color.white); jPanel1.add(label4); JCheckBox cardsOrTokens = new JCheckBox("Display Cards"); cardsOrTokens.setSelected(true); cardsOrTokens.setToolTipText("Select to show Cards or Tokens(and emblems) for the chosen set"); cardsOrTokens.addActionListener(e -> mageBook.cardsOrTokens(cardsOrTokens.isSelected())); jPanel1.add(cardsOrTokens); formats.addActionListener(e -> { if (mageBook != null) { String format = (String)formats.getSelectedItem(); MageFrame.getPreferences().put(CollectionViewerPanel.FORMAT_CONFIG_KEY, format); mageBook.updateDispayedSets(format); } }); jPanel1.add(Box.createVerticalGlue()); bigCard.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); bigCard.setAlignmentX(Component.LEFT_ALIGNMENT); bigCard.setAlignmentY(Component.BOTTOM_ALIGNMENT); jPanel1.add(bigCard); jPanel2 = new MageBookContainer(); jPanel2.setOpaque(false); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 261, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 604, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, 615, Short.MAX_VALUE) ); btnExit.setText("Exit"); btnExit.addActionListener(evt -> btnExitActionPerformed(evt)); } private void btnExitActionPerformed(java.awt.event.ActionEvent evt) { this.removeCollectionViewer(); } private void hidePopup() { Plugins.instance.getActionCallback().mouseExited(null, null); } public void removeCollectionViewer() { this.cleanUp(); Component c = this.getParent(); while (c != null && !(c instanceof CollectionViewerPane)) { c = c.getParent(); } if (c != null) { ((CollectionViewerPane)c).removeFrame(); } } private final class MageBookContainer extends JPanel { public MageBookContainer() { super(); initComponents(); } public void initComponents() { jPanel = new JPanel(); jScrollPane1 = new JScrollPane(jPanel); jScrollPane1.getViewport().setBackground(new Color(0,0,0,0)); jPanel.setLayout(new GridBagLayout()); // centers mage book jPanel.setBackground(new Color(0, 0, 0, 0)); mageBook = new MageBook(bigCard); jPanel.add(mageBook); setLayout(new java.awt.BorderLayout()); add(jScrollPane1, java.awt.BorderLayout.CENTER); } private JPanel jPanel; private javax.swing.JScrollPane jScrollPane1; } public void showCards() { if (mageBook != null) { mageBook.showCards(); } } private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private mage.client.cards.BigCard bigCard; private javax.swing.JButton btnExit; private JComboBox formats; private MageBook mageBook; private JRadioButton small3x3; private JRadioButton big4x4; }