mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
DeckAnalysis moved to package with deckeditors, Default deckeditor has a button to invoke interactive deck import.
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
93
src/main/java/forge/gui/deckeditor/DeckImport.java
Normal file
93
src/main/java/forge/gui/deckeditor/DeckImport.java
Normal 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)); } });
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user