forked from External/mage
UI: added new download images dialog:
* new option to download all modern cards; * new option with language selection; * new button for sets fast search; * new language support: Chinese Traditional; * all sets are sorted by date and have released date; * fixed selection reset on source changes;
This commit is contained in:
parent
79370108eb
commit
617f4d4b4b
5 changed files with 1151 additions and 269 deletions
|
|
@ -0,0 +1,401 @@
|
|||
package mage.client.dialog;
|
||||
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.util.gui.FastSearchUtil;
|
||||
import mage.client.util.gui.MageDialogState;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
/**
|
||||
* @author JayDi85
|
||||
*/
|
||||
public class DownloadImagesDialog extends MageDialog {
|
||||
|
||||
public static final int RET_CANCEL = 0;
|
||||
public static final int RET_OK = 1;
|
||||
|
||||
private Dimension sizeModeMessageOnly;
|
||||
private Dimension sizeModeMessageAndControls;
|
||||
|
||||
|
||||
/**
|
||||
* Creates new form DownloadImagesDialog
|
||||
*/
|
||||
public DownloadImagesDialog() {
|
||||
initComponents();
|
||||
this.setModal(true);
|
||||
|
||||
// save default sizes
|
||||
//
|
||||
this.sizeModeMessageAndControls = new Dimension(580, 330); // dialog -> properties -> designer size
|
||||
//
|
||||
this.sizeModeMessageOnly = new Dimension(this.sizeModeMessageAndControls.getSize());
|
||||
sizeModeMessageOnly.height = 25 * 3;
|
||||
sizeModeMessageOnly.width = sizeModeMessageOnly.width / 2;
|
||||
|
||||
// Close the dialog when Esc is pressed
|
||||
String cancelName = "cancel";
|
||||
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), cancelName);
|
||||
ActionMap actionMap = getRootPane().getActionMap();
|
||||
actionMap.put(cancelName, new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
doClose(RET_CANCEL);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setWindowSize(int width, int heigth) {
|
||||
this.setSize(new Dimension(width, heigth));
|
||||
}
|
||||
|
||||
public void showDialog() {
|
||||
showDialog(null);
|
||||
}
|
||||
|
||||
public void showDialog(MageDialogState mageDialogState) {
|
||||
showDownloadControls(false); // call to change window size
|
||||
|
||||
// window settings
|
||||
if (this.isModal()) {
|
||||
MageFrame.getDesktop().add(this, JLayeredPane.MODAL_LAYER);
|
||||
} else {
|
||||
MageFrame.getDesktop().add(this, JLayeredPane.PALETTE_LAYER);
|
||||
}
|
||||
if (mageDialogState != null) {
|
||||
mageDialogState.setStateToDialog(this);
|
||||
} else {
|
||||
this.makeWindowCentered();
|
||||
}
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
public void setGlobalInfo(String info) {
|
||||
this.labelGlobal.setText(info);
|
||||
}
|
||||
|
||||
public void setCurrentInfo(String info) {
|
||||
this.labelInfo.setText(info);
|
||||
}
|
||||
|
||||
public JComboBox getSourcesCombo() {
|
||||
return this.comboSource;
|
||||
}
|
||||
|
||||
public JComboBox getLaunguagesCombo() {
|
||||
return this.comboLanguage;
|
||||
}
|
||||
|
||||
public JComboBox getSetsCombo() {
|
||||
return this.comboSets;
|
||||
}
|
||||
|
||||
public JButton getStartButton() {
|
||||
return this.buttonOK;
|
||||
}
|
||||
|
||||
public JButton getCancelButton() {
|
||||
return this.buttonCancel;
|
||||
}
|
||||
|
||||
public JProgressBar getProgressBar() {
|
||||
return this.progress;
|
||||
}
|
||||
|
||||
public void showLanguagesSupport(boolean haveSupport) {
|
||||
labelLanguage.setEnabled(haveSupport);
|
||||
comboLanguage.setEnabled(haveSupport);
|
||||
}
|
||||
|
||||
private void setTabTitle(int tabIndex, String title, String iconResourceName) {
|
||||
// tab caption with left sided icon
|
||||
// https://stackoverflow.com/questions/1782224/jtabbedpane-icon-on-left-side-of-tabs
|
||||
JLabel lbl = new JLabel(title);
|
||||
Icon icon = new ImageIcon(getClass().getResource(iconResourceName));
|
||||
lbl.setIcon(icon);
|
||||
lbl.setIconTextGap(5);
|
||||
lbl.setHorizontalTextPosition(SwingConstants.RIGHT);
|
||||
tabsList.setTabComponentAt(tabIndex, lbl);
|
||||
}
|
||||
|
||||
public void showDownloadControls(boolean needToShow) {
|
||||
// 2 modes:
|
||||
// - only message;
|
||||
// - message + download controls and buttons
|
||||
this.panelGlobal.setVisible(true);
|
||||
this.tabsList.setVisible(needToShow);
|
||||
this.panelCommands.setVisible(needToShow);
|
||||
|
||||
// auto-size form
|
||||
if (needToShow) {
|
||||
this.setWindowSize(this.sizeModeMessageAndControls.width, this.sizeModeMessageAndControls.height);
|
||||
} else {
|
||||
this.setWindowSize(this.sizeModeMessageOnly.width, this.sizeModeMessageOnly.height);
|
||||
}
|
||||
//this.setLocationRelativeTo(null); // center screen //FIX
|
||||
|
||||
// icons on tabs left side
|
||||
setTabTitle(0, "Standard download", "/buttons/card_panel.png");
|
||||
setTabTitle(1, "Custom download", "/buttons/list_panel.png");
|
||||
|
||||
// TODO: add manual mode as tab
|
||||
this.tabsList.getTabComponentAt(1).setEnabled(false);
|
||||
this.tabsList.setEnabledAt(1, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the return status of this dialog - one of RET_OK or RET_CANCEL
|
||||
*/
|
||||
public int getReturnStatus() {
|
||||
return returnStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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() {
|
||||
|
||||
panelGlobal = new javax.swing.JPanel();
|
||||
fillerGlobal1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 5), new java.awt.Dimension(0, 5), new java.awt.Dimension(32767, 5));
|
||||
labelGlobal = new javax.swing.JLabel();
|
||||
fillerglobal2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 5), new java.awt.Dimension(0, 5), new java.awt.Dimension(32767, 5));
|
||||
tabsList = new javax.swing.JTabbedPane();
|
||||
tabMain = new javax.swing.JPanel();
|
||||
panelInfo = new javax.swing.JPanel();
|
||||
fillerInfo1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 5), new java.awt.Dimension(0, 5), new java.awt.Dimension(32767, 5));
|
||||
labelInfo = new javax.swing.JLabel();
|
||||
fillerInfo2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 5), new java.awt.Dimension(0, 5), new java.awt.Dimension(32767, 5));
|
||||
panelSource = new javax.swing.JPanel();
|
||||
panelSourceLeft = new javax.swing.JPanel();
|
||||
labelSource = new javax.swing.JLabel();
|
||||
comboSource = new javax.swing.JComboBox<>();
|
||||
panelSourceRight = new javax.swing.JPanel();
|
||||
labelLanguage = new javax.swing.JLabel();
|
||||
comboLanguage = new javax.swing.JComboBox<>();
|
||||
panelMode = new javax.swing.JPanel();
|
||||
panelModeInner = new javax.swing.JPanel();
|
||||
labelMode = new javax.swing.JLabel();
|
||||
panelModeSelect = new javax.swing.JPanel();
|
||||
comboSets = new javax.swing.JComboBox<>();
|
||||
fillerMode1 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 32767));
|
||||
buttonSearchSet = new javax.swing.JButton();
|
||||
fillerMode = new javax.swing.Box.Filler(new java.awt.Dimension(130, 0), new java.awt.Dimension(130, 0), new java.awt.Dimension(130, 32767));
|
||||
fillerMain1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 10), new java.awt.Dimension(0, 10), new java.awt.Dimension(32767, 10));
|
||||
panelProgress = new javax.swing.JPanel();
|
||||
fillerProgress1 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 32767));
|
||||
progress = new javax.swing.JProgressBar();
|
||||
fillerProgress2 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 0), new java.awt.Dimension(5, 32767));
|
||||
fillerMain2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 32767));
|
||||
tabCustom = new javax.swing.JPanel();
|
||||
panelCommands = new javax.swing.JPanel();
|
||||
buttonOK = new javax.swing.JButton();
|
||||
buttonCancel = new javax.swing.JButton();
|
||||
|
||||
setTitle("Downloading images");
|
||||
setPreferredSize(new java.awt.Dimension(600, 400));
|
||||
getContentPane().setLayout(new java.awt.BorderLayout());
|
||||
|
||||
panelGlobal.setLayout(new javax.swing.BoxLayout(panelGlobal, javax.swing.BoxLayout.Y_AXIS));
|
||||
panelGlobal.add(fillerGlobal1);
|
||||
|
||||
labelGlobal.setText("Initializing image download...");
|
||||
labelGlobal.setAlignmentX(0.5F);
|
||||
panelGlobal.add(labelGlobal);
|
||||
panelGlobal.add(fillerglobal2);
|
||||
|
||||
getContentPane().add(panelGlobal, java.awt.BorderLayout.NORTH);
|
||||
|
||||
tabsList.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT);
|
||||
|
||||
tabMain.setLayout(new javax.swing.BoxLayout(tabMain, javax.swing.BoxLayout.Y_AXIS));
|
||||
|
||||
panelInfo.setLayout(new javax.swing.BoxLayout(panelInfo, javax.swing.BoxLayout.Y_AXIS));
|
||||
panelInfo.add(fillerInfo1);
|
||||
|
||||
labelInfo.setText("Missing: 12345 card images / 789 token images");
|
||||
labelInfo.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 7, 0, 0));
|
||||
panelInfo.add(labelInfo);
|
||||
panelInfo.add(fillerInfo2);
|
||||
|
||||
tabMain.add(panelInfo);
|
||||
|
||||
panelSource.setMaximumSize(new java.awt.Dimension(65536, 55));
|
||||
panelSource.setMinimumSize(new java.awt.Dimension(352, 55));
|
||||
panelSource.setPreferredSize(new java.awt.Dimension(593, 55));
|
||||
panelSource.setLayout(new javax.swing.BoxLayout(panelSource, javax.swing.BoxLayout.X_AXIS));
|
||||
|
||||
panelSourceLeft.setMinimumSize(new java.awt.Dimension(430, 30));
|
||||
panelSourceLeft.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEADING));
|
||||
|
||||
labelSource.setText("Images source to download:");
|
||||
panelSourceLeft.add(labelSource);
|
||||
|
||||
comboSource.setMaximumRowCount(10);
|
||||
comboSource.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
|
||||
comboSource.setMinimumSize(new java.awt.Dimension(300, 20));
|
||||
comboSource.setPreferredSize(new java.awt.Dimension(400, 25));
|
||||
panelSourceLeft.add(comboSource);
|
||||
|
||||
panelSource.add(panelSourceLeft);
|
||||
|
||||
panelSourceRight.setAlignmentX(0.0F);
|
||||
panelSourceRight.setMaximumSize(new java.awt.Dimension(130, 32767));
|
||||
panelSourceRight.setMinimumSize(new java.awt.Dimension(130, 30));
|
||||
panelSourceRight.setPreferredSize(new java.awt.Dimension(130, 100));
|
||||
panelSourceRight.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEADING));
|
||||
|
||||
labelLanguage.setText("Language:");
|
||||
panelSourceRight.add(labelLanguage);
|
||||
|
||||
comboLanguage.setMaximumRowCount(20);
|
||||
comboLanguage.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
|
||||
comboLanguage.setPreferredSize(new java.awt.Dimension(90, 25));
|
||||
panelSourceRight.add(comboLanguage);
|
||||
|
||||
panelSource.add(panelSourceRight);
|
||||
|
||||
tabMain.add(panelSource);
|
||||
|
||||
panelMode.setMaximumSize(new java.awt.Dimension(32869, 55));
|
||||
panelMode.setMinimumSize(new java.awt.Dimension(322, 55));
|
||||
panelMode.setPreferredSize(new java.awt.Dimension(100, 55));
|
||||
panelMode.setLayout(new javax.swing.BoxLayout(panelMode, javax.swing.BoxLayout.LINE_AXIS));
|
||||
|
||||
panelModeInner.setMinimumSize(new java.awt.Dimension(430, 43));
|
||||
panelModeInner.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
|
||||
|
||||
labelMode.setText("Sets to download:");
|
||||
labelMode.setAlignmentY(0.0F);
|
||||
panelModeInner.add(labelMode);
|
||||
|
||||
panelModeSelect.setLayout(new javax.swing.BoxLayout(panelModeSelect, javax.swing.BoxLayout.X_AXIS));
|
||||
|
||||
comboSets.setMaximumRowCount(20);
|
||||
comboSets.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"}));
|
||||
comboSets.setPreferredSize(new java.awt.Dimension(373, 25));
|
||||
panelModeSelect.add(comboSets);
|
||||
panelModeSelect.add(fillerMode1);
|
||||
|
||||
buttonSearchSet.setIcon(new javax.swing.ImageIcon(getClass().getResource("/buttons/search_24.png"))); // NOI18N
|
||||
buttonSearchSet.setToolTipText("Fast search your flag");
|
||||
buttonSearchSet.setAlignmentX(1.0F);
|
||||
buttonSearchSet.setPreferredSize(new java.awt.Dimension(25, 25));
|
||||
buttonSearchSet.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
buttonSearchSetActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
panelModeSelect.add(buttonSearchSet);
|
||||
|
||||
panelModeInner.add(panelModeSelect);
|
||||
|
||||
panelMode.add(panelModeInner);
|
||||
panelMode.add(fillerMode);
|
||||
|
||||
tabMain.add(panelMode);
|
||||
tabMain.add(fillerMain1);
|
||||
|
||||
panelProgress.setMaximumSize(new java.awt.Dimension(32777, 30));
|
||||
panelProgress.setMinimumSize(new java.awt.Dimension(20, 30));
|
||||
panelProgress.setPreferredSize(new java.awt.Dimension(564, 30));
|
||||
panelProgress.setLayout(new javax.swing.BoxLayout(panelProgress, javax.swing.BoxLayout.X_AXIS));
|
||||
panelProgress.add(fillerProgress1);
|
||||
|
||||
progress.setValue(75);
|
||||
progress.setMaximumSize(new java.awt.Dimension(32767, 25));
|
||||
progress.setString("123 of 12313 (120 cards/546 tokens) image downloads finished! Please wait! [123 Mb]");
|
||||
progress.setStringPainted(true);
|
||||
panelProgress.add(progress);
|
||||
panelProgress.add(fillerProgress2);
|
||||
|
||||
tabMain.add(panelProgress);
|
||||
tabMain.add(fillerMain2);
|
||||
|
||||
tabsList.addTab("Standard download", new javax.swing.ImageIcon(getClass().getResource("/buttons/card_panel.png")), tabMain); // NOI18N
|
||||
|
||||
tabCustom.setLayout(new javax.swing.BoxLayout(tabCustom, javax.swing.BoxLayout.Y_AXIS));
|
||||
tabsList.addTab("Custom download", new javax.swing.ImageIcon(getClass().getResource("/buttons/list_panel.png")), tabCustom); // NOI18N
|
||||
|
||||
getContentPane().add(tabsList, java.awt.BorderLayout.CENTER);
|
||||
|
||||
panelCommands.setAlignmentX(0.0F);
|
||||
panelCommands.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.TRAILING));
|
||||
|
||||
buttonOK.setText("Start download");
|
||||
buttonOK.setPreferredSize(new java.awt.Dimension(120, 30));
|
||||
panelCommands.add(buttonOK);
|
||||
getRootPane().setDefaultButton(buttonOK);
|
||||
|
||||
buttonCancel.setText("Cancel");
|
||||
buttonCancel.setPreferredSize(new java.awt.Dimension(80, 30));
|
||||
panelCommands.add(buttonCancel);
|
||||
|
||||
getContentPane().add(panelCommands, java.awt.BorderLayout.SOUTH);
|
||||
|
||||
pack();
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
/**
|
||||
* Closes the dialog
|
||||
*/
|
||||
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
|
||||
doClose(RET_CANCEL);
|
||||
}//GEN-LAST:event_closeDialog
|
||||
|
||||
private void buttonSearchSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSearchSetActionPerformed
|
||||
FastSearchUtil.showFastSearchForStringComboBox(comboSets, FastSearchUtil.DEFAULT_EXPANSION_SEARCH_MESSAGE);
|
||||
}//GEN-LAST:event_buttonSearchSetActionPerformed
|
||||
|
||||
private void doClose(int retStatus) {
|
||||
returnStatus = retStatus;
|
||||
setVisible(false);
|
||||
dispose();
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton buttonCancel;
|
||||
private javax.swing.JButton buttonOK;
|
||||
private javax.swing.JButton buttonSearchSet;
|
||||
private javax.swing.JComboBox<String> comboLanguage;
|
||||
private javax.swing.JComboBox<String> comboSets;
|
||||
private javax.swing.JComboBox<String> comboSource;
|
||||
private javax.swing.Box.Filler fillerGlobal1;
|
||||
private javax.swing.Box.Filler fillerInfo1;
|
||||
private javax.swing.Box.Filler fillerInfo2;
|
||||
private javax.swing.Box.Filler fillerMain1;
|
||||
private javax.swing.Box.Filler fillerMain2;
|
||||
private javax.swing.Box.Filler fillerMode;
|
||||
private javax.swing.Box.Filler fillerMode1;
|
||||
private javax.swing.Box.Filler fillerProgress1;
|
||||
private javax.swing.Box.Filler fillerProgress2;
|
||||
private javax.swing.Box.Filler fillerglobal2;
|
||||
private javax.swing.JLabel labelGlobal;
|
||||
private javax.swing.JLabel labelInfo;
|
||||
private javax.swing.JLabel labelLanguage;
|
||||
private javax.swing.JLabel labelMode;
|
||||
private javax.swing.JLabel labelSource;
|
||||
private javax.swing.JPanel panelCommands;
|
||||
private javax.swing.JPanel panelGlobal;
|
||||
private javax.swing.JPanel panelInfo;
|
||||
private javax.swing.JPanel panelMode;
|
||||
private javax.swing.JPanel panelModeInner;
|
||||
private javax.swing.JPanel panelModeSelect;
|
||||
private javax.swing.JPanel panelProgress;
|
||||
private javax.swing.JPanel panelSource;
|
||||
private javax.swing.JPanel panelSourceLeft;
|
||||
private javax.swing.JPanel panelSourceRight;
|
||||
private javax.swing.JProgressBar progress;
|
||||
private javax.swing.JPanel tabCustom;
|
||||
private javax.swing.JPanel tabMain;
|
||||
private javax.swing.JTabbedPane tabsList;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
private int returnStatus = RET_CANCEL;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue