DeckAnalysis moved to package with deckeditors, Default deckeditor has a button to invoke interactive deck import.

This commit is contained in:
Maxmtg
2011-09-20 23:05:42 +00:00
parent 470b64e453
commit 0f6fbfe728
6 changed files with 133 additions and 24 deletions

View File

@@ -17,9 +17,9 @@ import net.slightlymagic.braids.util.UtilFunctions;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Window;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Collection;
@@ -267,7 +267,7 @@ public final class GuiUtils {
*
* @param frame a fully laid-out frame
*/
public static void centerFrame(final Frame frame) {
public static void centerFrame(final Window frame) {
Dimension screen = frame.getToolkit().getScreenSize();
Rectangle bounds = frame.getBounds();
bounds.width = frame.getWidth();

View File

@@ -1,4 +1,4 @@
package forge;
package forge.gui.deckeditor;
import java.awt.Color;
import java.awt.Dimension;
@@ -28,6 +28,8 @@ import javax.swing.border.BevelBorder;
import javax.swing.event.MouseInputAdapter;
import javax.swing.table.DefaultTableModel;
import forge.CardList;
import forge.MyRandom;
import forge.card.CardRules;
import forge.card.CardType;
import forge.item.CardPrinted;
@@ -48,7 +50,7 @@ import net.miginfocom.swing.MigLayout;
* @author Forge
* @version $Id$
*/
public class GUI_DeckAnalysis extends javax.swing.JDialog {
public class DeckAnalysis extends javax.swing.JDialog {
/** Constant <code>serialVersionUID=-8475271235196182185L</code> */
private static final long serialVersionUID = -8475271235196182185L;
@@ -110,7 +112,7 @@ public class GUI_DeckAnalysis extends javax.swing.JDialog {
* @param tb
* a {@link forge.gui.deckeditor.TableModel} object.
*/
public GUI_DeckAnalysis(JFrame g, ItemPoolView<CardPrinted> deckView) {
public DeckAnalysis(JFrame g, ItemPoolView<CardPrinted> deckView) {
super(g);
deck = deckView;

View File

@@ -23,7 +23,6 @@ import forge.Command;
import forge.Singletons;
import forge.error.ErrorViewer;
import forge.game.GameType;
//import forge.view.swing.OldGuiNewGame;
import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.item.InventoryItem;
@@ -46,6 +45,8 @@ public final class DeckEditor extends DeckEditorBase {
private JButton removeButton = new JButton();
private JButton addButton = new JButton();
private JButton importButton = new JButton();
private JButton analysisButton = new JButton();
private JButton clearFilterButton = new JButton();
@@ -134,12 +135,14 @@ public final class DeckEditor extends DeckEditorBase {
Font fButtons = new java.awt.Font("Dialog", 0, 13);
removeButton.setFont(fButtons);
addButton.setFont(fButtons);
importButton.setFont(fButtons);
clearFilterButton.setFont(fButtons);
analysisButton.setFont(fButtons);
}
addButton.setText("Add to Deck");
removeButton.setText("Remove from Deck");
importButton.setText("Import a Deck");
clearFilterButton.setText("Clear Filter");
analysisButton.setText("Deck Analysis");
@@ -147,6 +150,8 @@ public final class DeckEditor extends DeckEditorBase {
public void actionPerformed(final ActionEvent e) { removeButtonClicked(e); } });
addButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) { addButton_actionPerformed(e); } });
importButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) { importButton_actionPerformed(e); } });
clearFilterButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(final ActionEvent e) { clearFilterButton_actionPerformed(e); } });
analysisButton.addActionListener(new java.awt.event.ActionListener() {
@@ -168,9 +173,9 @@ public final class DeckEditor extends DeckEditorBase {
// x 768 screen size
this.setTitle("Deck Editor");
Container pane = this.getContentPane();
Container content = this.getContentPane();
MigLayout layout = new MigLayout("fill");
pane.setLayout(layout);
content.setLayout(layout);
boolean isFirst = true;
for (JCheckBox box : filterBoxes.allTypes) {
@@ -179,31 +184,32 @@ public final class DeckEditor extends DeckEditorBase {
growParameter = "cell 0 0, egx checkbox, grow, split 14";
isFirst = false;
}
this.getContentPane().add(box, growParameter);
content.add(box, growParameter);
box.addItemListener(itemListenerUpdatesDisplay);
}
for (JCheckBox box : filterBoxes.allColors) {
this.getContentPane().add(box, "grow");
content.add(box, "grow");
box.addItemListener(itemListenerUpdatesDisplay);
}
this.getContentPane().add(clearFilterButton, "wmin 100, hmin 25, wmax 140, hmax 25, grow");
content.add(clearFilterButton, "wmin 100, hmin 25, wmax 140, hmax 25, grow");
this.getContentPane().add(filterNameTypeSet, "cell 0 1, grow");
this.getContentPane().add(top.getTableDecorated(), "cell 0 2 1 2, pushy, grow");
this.getContentPane().add(top.getLabel(), "cell 0 4");
content.add(filterNameTypeSet, "cell 0 1, grow");
content.add(top.getTableDecorated(), "cell 0 2 1 2, pushy, grow");
content.add(top.getLabel(), "cell 0 4");
this.getContentPane().add(addButton, "w 100, h 49, sg button, cell 0 5, split 4");
this.getContentPane().add(removeButton, "w 100, h 49, sg button");
content.add(addButton, "w 100, h 49, sg button, cell 0 5, split 5");
content.add(removeButton, "w 100, h 49, sg button");
content.add(importButton, "w 100, h 49, sg button, gapleft 40px");
// Label is used to push the analysis button to the right to separate analysis button from add/remove card ones
this.getContentPane().add(jLabelAnalysisGap, "wmin 100, grow");
this.getContentPane().add(analysisButton, "w 100, h 49, wrap");
content.add(jLabelAnalysisGap, "wmin 100, growx");
content.add(analysisButton, "w 100, h 49, wrap");
this.getContentPane().add(bottom.getTableDecorated(), "cell 0 6, grow");
this.getContentPane().add(bottom.getLabel(), "cell 0 7");
content.add(bottom.getTableDecorated(), "cell 0 6, grow");
content.add(bottom.getLabel(), "cell 0 7");
this.getContentPane().add(cardView, "cell 1 0 1 8, flowy, grow");
content.add(cardView, "cell 1 0 1 8, flowy, grow");
top.getTable().addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(final MouseEvent e) { if (e.getClickCount() == 2) { addCardToDeck(); } } });
@@ -278,4 +284,12 @@ public final class DeckEditor extends DeckEditorBase {
customMenu.notifyDeckChange();
}
void importButton_actionPerformed(ActionEvent e) {
DeckEditorBase g = this;
DeckImport dImport = new DeckImport(g);
dImport.setVisible(true);
g.setEnabled(false);
}
}

View File

@@ -11,7 +11,6 @@ import javax.swing.event.DocumentListener;
import net.slightlymagic.maxmtg.Predicate;
import forge.GUI_DeckAnalysis;
import forge.deck.Deck;
import forge.game.GameType;
import forge.item.CardPrinted;
@@ -57,7 +56,7 @@ public abstract class DeckEditorBase extends JFrame implements DeckDisplay {
JOptionPane.INFORMATION_MESSAGE);
} else {
DeckEditorBase g = DeckEditorBase.this;
GUI_DeckAnalysis dAnalysis = new GUI_DeckAnalysis(g, deck);
DeckAnalysis dAnalysis = new DeckAnalysis(g, deck);
dAnalysis.setVisible(true);
g.setEnabled(false);
}

View File

@@ -0,0 +1,93 @@
package forge.gui.deckeditor;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
import net.miginfocom.swing.MigLayout;
import forge.Singletons;
import forge.gui.GuiUtils;
/**
* Dialog for quick import of decks
*
*/
public class DeckImport extends JDialog {
private static final long serialVersionUID = -5837776824284093004L;
private JTextArea txtInput = new JTextArea();
private JEditorPane htmlOutput = new JEditorPane();
private JScrollPane scrollInput = new JScrollPane(txtInput);
private JScrollPane scrollOutput = new JScrollPane(htmlOutput);
private JButton cmdAccept = new JButton("Import Deck");
private JButton cmdCancel = new JButton("Cancel");
DeckEditorBase host;
public DeckImport(DeckEditorBase g) {
host = g;
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
host.setEnabled(true);
}
});
int wWidth = 800;
int wHeight = 600;
setPreferredSize(new java.awt.Dimension(wWidth, wHeight));
setSize(wWidth, wHeight);
GuiUtils.centerFrame(this);
setResizable(false);
setTitle("Deck Import (wip)");
if (!Singletons.getModel().getPreferences().lafFonts) {
Font fButtons = new java.awt.Font("Dialog", 0, 13);
cmdAccept.setFont(fButtons);
cmdCancel.setFont(fButtons);
txtInput.setFont(fButtons);
htmlOutput.setFont(fButtons);
}
scrollInput.setBorder(new TitledBorder(BorderFactory.createEtchedBorder(), "Paste or type a decklist"));
scrollOutput.setBorder(new TitledBorder(BorderFactory.createEtchedBorder(), "Expect the recognized lines to appear"));
scrollInput.setViewportBorder(BorderFactory.createLoweredBevelBorder());
scrollOutput.setViewportBorder(BorderFactory.createLoweredBevelBorder());
getContentPane().setLayout(new MigLayout("fill"));
getContentPane().add(scrollInput, "cell 0 0, w 50%, growy, pushy");
getContentPane().add(scrollOutput, "cell 1 0, w 50%, growy, pushy");
getContentPane().add(cmdAccept, "cell 0 1, w 100, align r");
getContentPane().add(cmdCancel, "cell 1 1, w 100, align l");
cmdCancel.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
processWindowEvent(new WindowEvent(DeckImport.this, WindowEvent.WINDOW_CLOSING)); } });
cmdAccept.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(DeckImport.this, "This dialog still in development, don't expect any changes to deck yet.");
processWindowEvent(new WindowEvent(DeckImport.this, WindowEvent.WINDOW_CLOSING)); } });
}
}