package forge;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
/**
* @author Forge
* @version $Id: $
*/
public class GUI_Filter extends javax.swing.JDialog {
/**
* Constant <code>serialVersionUID=-8475271235196182185L</code>
*/
private static final long serialVersionUID = -8475271235196182185L;
private JLabel nameLabel;
private JTextField nameTextField;
private JLabel cardTextLabel;
private JTextField cardTextField;
private JPanel colorPanel;
private JPanel bottomPanel;
private JCheckBox jCheckBoxColorless;
private JCheckBox jCheckBoxWhite;
private JCheckBox jCheckBoxRed;
private JCheckBox jCheckBoxGreen;
private JCheckBox jCheckBoxBlue;
private JLabel colorLabel;
private JLabel typeLabel;
private JCheckBox jCheckBoxPlaneswalker;
private JCheckBox jCheckBoxArtifact;
private JCheckBox jCheckBoxCreature;
private JCheckBox jCheckBoxEnchant;
private JCheckBox jCheckBoxInstant;
private JCheckBox jCheckBoxLand;
private JCheckBox jCheckBoxSorcery;
private JPanel typePanel;
private JCheckBox jCheckBoxBlack;
private JButton jButtonOk;
private JPanel topPanel;
private DeckDisplay deckDisplay;
/**
* <p>Constructor for GUI_Filter.</p>
*
* @param g a {@link javax.swing.JFrame} object.
* @param display a {@link forge.DeckDisplay} object.
*/
public GUI_Filter(JFrame g, DeckDisplay display) {
super(g);
deckDisplay = display;
initGUI();
}
/**
* <p>initGUI.</p>
*/
private void initGUI() {
try {
this.isResizable();
getContentPane().setLayout(new MigLayout("fill"));
getContentPane().add(getTopPanel(), "span 3, wrap");
getContentPane().add(getColorPanel(), "aligny top, growy");
getContentPane().add(getTypePanel(), "aligny top, wrap");
getContentPane().add(getBottomPanel(), "align center, span 3");
setVisible(true);
Dimension screen = getToolkit().getScreenSize();
int x = (screen.width - 340) / 2;
int y = (screen.height - 500) / 2;
this.setBounds(x, y, 340, 500);
this.setResizable(true);
this.setTitle("Filter");
setIconImage(null);
this.addWindowListener(new WListener());
} catch (Exception e) {
e.printStackTrace();
}
}
private JTextField getNameTextField() {
if (nameTextField == null) {
nameTextField = new JTextField(30);
nameTextField.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return nameTextField;
}
private JLabel getNameLabel() {
if (nameLabel == null) {
nameLabel = new JLabel();
nameLabel.setText("Name:");
nameLabel.setFont(new Font("Segoe UI", 0, 16));
}
return nameLabel;
}
private JPanel getTopPanel() {
if (topPanel == null) {
topPanel = new JPanel();
topPanel.setLayout(new MigLayout());
topPanel.add(
getNameLabel(), "gap");
topPanel.add(
getNameTextField(), "span 3, wrap");
topPanel.add(
getCardTextLabel(), "gap");
topPanel.add(
getCardTextField(), "span 3, wrap");
}
return topPanel;
}
/**
* <p>Getter for the field <code>colorPanel</code>.</p>
*
* @return a {@link javax.swing.JPanel} object.
*/
private JPanel getColorPanel() {
if (colorPanel == null) {
colorPanel = new JPanel();
colorPanel.setLayout(new MigLayout());
colorPanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
colorPanel.setBackground(new java.awt.Color(192, 192, 192));
colorPanel.add(getColorLabel(), "align, wrap");
colorPanel.add(getJCheckBoxBlack(), "wrap");
colorPanel.add(getJCheckBoxColorless(), "wrap");
colorPanel.add(getJCheckBoxWhite(), "wrap");
colorPanel.add(getJCheckBoxRed(), "wrap");
colorPanel.add(getJCheckBoxGreen(), "wrap");
colorPanel.add(getJCheckBoxBlue(), "wrap");
}
return colorPanel;
}
private JPanel getBottomPanel() {
if (bottomPanel == null) {
bottomPanel = new JPanel();
bottomPanel.setLayout(new MigLayout());
bottomPanel.add(getJButtonOk(), "align, span 3, grow");
}
return bottomPanel;
}
/**
* <p>Getter for the field <code>jCheckBoxBlue</code>.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxBlue() {
if (jCheckBoxBlue == null) {
jCheckBoxBlue = new JCheckBox();
jCheckBoxBlue.setText("Blue");
jCheckBoxBlue.setSelected(true);
jCheckBoxBlue.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxBlue.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxBlue;
}
/**
* <p>Getter for the field <code>jCheckBoxGreen</code>.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxGreen() {
if (jCheckBoxGreen == null) {
jCheckBoxGreen = new JCheckBox();
jCheckBoxGreen.setText("Green");
jCheckBoxGreen.setSelected(true);
jCheckBoxGreen.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxGreen.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxGreen;
}
/**
* <p>Getter for the field <code>jCheckBoxRed</code>.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxRed() {
if (jCheckBoxRed == null) {
jCheckBoxRed = new JCheckBox();
jCheckBoxRed.setText("Red");
jCheckBoxRed.setSelected(true);
jCheckBoxRed.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxRed.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxRed;
}
/**
* <p>Getter for the field <code>jCheckBoxWhite</code>.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxWhite() {
if (jCheckBoxWhite == null) {
jCheckBoxWhite = new JCheckBox();
jCheckBoxWhite.setText("White");
jCheckBoxWhite.setSelected(true);
jCheckBoxWhite.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxWhite.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxWhite;
}
/**
* <p>Getter for the field <code>jCheckBoxColorless</code>.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxColorless() {
if (jCheckBoxColorless == null) {
jCheckBoxColorless = new JCheckBox();
jCheckBoxColorless.setText("Colorless");
jCheckBoxColorless.setSelected(true);
jCheckBoxColorless.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxColorless.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxColorless;
}
/**
* <p>Getter for the field <code>jButtonOk</code>.</p>
*
* @return a {@link javax.swing.JButton} object.
*/
private JButton getJButtonOk() {
if (jButtonOk == null) {
jButtonOk = new JButton();
jButtonOk.setText("OK");
jButtonOk.addMouseListener(new CustomListener());
}
return jButtonOk;
}
/**
* <p>Getter for the field <code>jCheckBoxBlack</code>.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxBlack() {
if (jCheckBoxBlack == null) {
jCheckBoxBlack = new JCheckBox();
jCheckBoxBlack.setText("Black");
jCheckBoxBlack.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxBlack.setSelected(true);
jCheckBoxBlack.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxBlack;
}
/**
* <p>Getter for the field <code>typePanel</code>.</p>
*
* @return a {@link javax.swing.JPanel} object.
*/
private JPanel getTypePanel() {
if (typePanel == null) {
typePanel = new JPanel();
typePanel.setLayout(new MigLayout());
typePanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
typePanel.setBackground(new java.awt.Color(192, 192, 192));
typePanel.add(getTypeLabel(), "align, wrap");
typePanel.add(getJCheckBoxSorcery(), "wrap");
typePanel.add(getJCheckBoxPlaneswalker(), "wrap");
typePanel.add(getJCheckBoxLand(), "wrap");
typePanel.add(getJCheckBoxInstant(), "wrap");
typePanel.add(getJCheckBoxEnchant(), "wrap");
typePanel.add(getJCheckBoxCreature(), "wrap");
typePanel.add(getJCheckBoxArtifact(), "wrap");
}
return typePanel;
}
/**
* <p>Getter for the field <code>colorLabel</code>.</p>
*
* @return a {@link javax.swing.JLabel} object.
*/
private JLabel getColorLabel() {
if (colorLabel == null) {
colorLabel = new JLabel();
colorLabel.setText("Color");
colorLabel.setFont(new java.awt.Font("Segoe UI", 0, 14));
}
return colorLabel;
}
/**
* <p>Getter for the field <code>typeLabel</code>.</p>
*
* @return a {@link javax.swing.JLabel} object.
*/
private JLabel getTypeLabel() {
if (typeLabel == null) {
typeLabel = new JLabel();
typeLabel.setText("Type");
typeLabel.setFont(new java.awt.Font("Segoe UI", 0, 14));
}
return typeLabel;
}
/**
* <p>getJCheckBoxSorcery.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxSorcery() {
if (jCheckBoxSorcery == null) {
jCheckBoxSorcery = new JCheckBox();
jCheckBoxSorcery.setText("Sorcery");
jCheckBoxSorcery.setSelected(true);
jCheckBoxSorcery.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxSorcery.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxSorcery;
}
/**
* <p>getJCheckBoxPlaneswalker.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxPlaneswalker() {
if (jCheckBoxPlaneswalker == null) {
jCheckBoxPlaneswalker = new JCheckBox();
jCheckBoxPlaneswalker.setText("Planeswalker");
jCheckBoxPlaneswalker.setSelected(true);
jCheckBoxPlaneswalker.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxPlaneswalker.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxPlaneswalker;
}
/**
* <p>getJCheckBoxLand.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxLand() {
if (jCheckBoxLand == null) {
jCheckBoxLand = new JCheckBox();
jCheckBoxLand.setText("Land");
jCheckBoxLand.setSelected(true);
jCheckBoxLand.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxLand.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxLand;
}
/**
* <p>getJCheckBoxInstant.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxInstant() {
if (jCheckBoxInstant == null) {
jCheckBoxInstant = new JCheckBox();
jCheckBoxInstant.setText("Instant");
jCheckBoxInstant.setSelected(true);
jCheckBoxInstant.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxInstant.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxInstant;
}
/**
* <p>getJCheckBoxEnchant.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxEnchant() {
if (jCheckBoxEnchant == null) {
jCheckBoxEnchant = new JCheckBox();
jCheckBoxEnchant.setText("Enchant");
jCheckBoxEnchant.setSelected(true);
jCheckBoxEnchant.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxEnchant.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxEnchant;
}
/**
* <p>getJCheckBoxCreature.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxCreature() {
if (jCheckBoxCreature == null) {
jCheckBoxCreature = new JCheckBox();
jCheckBoxCreature.setText("Creature");
jCheckBoxCreature.setSelected(true);
jCheckBoxCreature.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxCreature.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxCreature;
}
/**
* <p>getJCheckBoxArtifact.</p>
*
* @return a {@link javax.swing.JCheckBox} object.
*/
private JCheckBox getJCheckBoxArtifact() {
if (jCheckBoxArtifact == null) {
jCheckBoxArtifact = new JCheckBox();
jCheckBoxArtifact.setText("Artifact");
jCheckBoxArtifact.setSelected(true);
jCheckBoxArtifact.setBackground(new java.awt.Color(192, 192, 192));
jCheckBoxArtifact.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return jCheckBoxArtifact;
}
/**
* <p>getCardTextField.</p>
*
* @return a {@link javax.swing.JTextField} object.
*/
private JTextField getCardTextField() {
if (cardTextField == null) {
cardTextField = new JTextField(30);
cardTextField.addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
FilterCardTable();
}
}
});
}
return cardTextField;
}
/**
* <p>Getter for the field <code>cardTextLabel</code>.</p>
*
* @return a {@link javax.swing.JLabel} object.
*/
private JLabel getCardTextLabel() {
if (cardTextLabel == null) {
cardTextLabel = new JLabel();
cardTextLabel.setText("Card Text:");
cardTextLabel.setFont(new java.awt.Font("Segoe UI", 0, 16));
}
return cardTextLabel;
}
/**
*
*/
public class CustomListener implements MouseListener {
public void mouseClicked(MouseEvent e) {
FilterCardTable();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class WListener implements WindowListener {
public void windowActivated(WindowEvent arg0) {
}
public void windowClosed(WindowEvent arg0) {
}
public void windowClosing(WindowEvent arg0) {
Gui_DeckEditor g = (Gui_DeckEditor) deckDisplay;
g.setEnabled(true);
}
public void windowDeactivated(WindowEvent arg0) {
}
public void windowDeiconified(WindowEvent arg0) {
}
public void windowIconified(WindowEvent arg0) {
}
public void windowOpened(WindowEvent arg0) {
}
}
/**
* <p>FilterCardTable.</p>
*/
private void FilterCardTable() {
String name = nameTextField.getText();
String cText = cardTextField.getText();
CardList filterCardList;
CardFilter filter = new CardFilter();
Gui_DeckEditor g = (Gui_DeckEditor) deckDisplay;
g.blackCheckBox.setSelected(true);
g.blackCheckBox.setEnabled(true);
g.blueCheckBox.setSelected(true);
g.blueCheckBox.setEnabled(true);
g.greenCheckBox.setSelected(true);
g.greenCheckBox.setEnabled(true);
g.redCheckBox.setSelected(true);
g.redCheckBox.setEnabled(true);
g.whiteCheckBox.setSelected(true);
g.whiteCheckBox.setEnabled(true);
g.colorlessCheckBox.setSelected(true);
g.colorlessCheckBox.setEnabled(true);
g.artifactCheckBox.setSelected(true);
g.artifactCheckBox.setEnabled(true);
g.creatureCheckBox.setSelected(true);
g.creatureCheckBox.setEnabled(true);
g.enchantmentCheckBox.setSelected(true);
g.enchantmentCheckBox.setEnabled(true);
g.instantCheckBox.setSelected(true);
g.instantCheckBox.setEnabled(true);
g.landCheckBox.setSelected(true);
g.landCheckBox.setEnabled(true);
g.planeswalkerCheckBox.setSelected(true);
g.planeswalkerCheckBox.setEnabled(true);
g.sorceryCheckBox.setSelected(true);
g.sorceryCheckBox.setEnabled(true);
g.setEnabled(true);
if (name != "") {
if (cText != "") {
filterCardList = filter.cardListNameFilter(AllZone.getCardFactory(), name);
if (filterCardList.size() == 0) {
JOptionPane.showMessageDialog(null, "Sorry, cards with name: " + name + " not found.",
"Filter", JOptionPane.INFORMATION_MESSAGE);
} else {
filterCardList = filter.CardListTextFilter(filterCardList, cText);
if (filterCardList.size() == 0) {
JOptionPane.showMessageDialog(null, "Sorry, cards with text: " + cText + " not found.",
"Filter", JOptionPane.INFORMATION_MESSAGE);
} else {
if (jCheckBoxBlack.isSelected() == false) {
filterCardList = filter.CardListColorFilter(filterCardList, "black");
g.blackCheckBox.setSelected(false);
g.blackCheckBox.setEnabled(false);
}
if (jCheckBoxBlue.isSelected() == false) {
filterCardList = filter.CardListColorFilter(filterCardList, "blue");
g.blueCheckBox.setSelected(false);
g.blueCheckBox.setEnabled(false);
}
if (jCheckBoxGreen.isSelected() == false) {
filterCardList = filter.CardListColorFilter(filterCardList, "green");
g.greenCheckBox.setSelected(false);
g.greenCheckBox.setEnabled(false);
}
if (jCheckBoxRed.isSelected() == false) {
filterCardList = filter.CardListColorFilter(filterCardList, "red");
g.redCheckBox.setSelected(false);
g.redCheckBox.setEnabled(false);
}
if (jCheckBoxWhite.isSelected() == false) {
filterCardList = filter.CardListColorFilter(filterCardList, "white");
g.whiteCheckBox.setSelected(false);
g.whiteCheckBox.setEnabled(false);
}
if (jCheckBoxColorless.isSelected() == false) {
filterCardList = filter.CardListColorFilter(filterCardList, "colorless");
g.colorlessCheckBox.setSelected(false);
g.colorlessCheckBox.setEnabled(false);
}
if (jCheckBoxArtifact.isSelected() == false) {
filterCardList = filter.CardListTypeFilter(filterCardList, "artifact");
g.artifactCheckBox.setSelected(false);
g.artifactCheckBox.setEnabled(false);
}
if (jCheckBoxCreature.isSelected() == false) {
filterCardList = filter.CardListTypeFilter(filterCardList, "creature");
g.creatureCheckBox.setSelected(false);
g.creatureCheckBox.setEnabled(false);
}
if (jCheckBoxEnchant.isSelected() == false) {
filterCardList = filter.CardListTypeFilter(filterCardList, "enchantment");
g.enchantmentCheckBox.setSelected(false);
g.enchantmentCheckBox.setEnabled(false);
}
if (jCheckBoxInstant.isSelected() == false) {
filterCardList = filter.CardListTypeFilter(filterCardList, "instant");
g.instantCheckBox.setSelected(false);
g.instantCheckBox.setEnabled(false);
}
if (jCheckBoxLand.isSelected() == false) {
filterCardList = filter.CardListTypeFilter(filterCardList, "land");
g.landCheckBox.setSelected(false);
g.landCheckBox.setEnabled(false);
}
if (jCheckBoxPlaneswalker.isSelected() == false) {
filterCardList = filter.CardListTypeFilter(filterCardList, "planeswalker");
g.planeswalkerCheckBox.setSelected(false);
g.planeswalkerCheckBox.setEnabled(false);
}
if (jCheckBoxSorcery.isSelected() == false) {
filterCardList = filter.CardListTypeFilter(filterCardList, "sorcery");
g.sorceryCheckBox.setSelected(false);
g.sorceryCheckBox.setEnabled(false);
}
deckDisplay.updateDisplay(filterCardList, deckDisplay.getBottom());
}
}
}
}
dispose();
}
}