/* * Forge: Play Magic: the Gathering. * Copyright (C) 2011 Forge Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package forge.gui; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.event.MouseInputAdapter; import forge.properties.ForgeProps; import forge.properties.NewConstants; import forge.util.CopyFiles; import forge.util.FileFinder; /** *

* GUI_ImportPicture class. *

* * @author Forge * @version $Id$ */ public class GuiImportPicture extends JDialog { /** Constant serialVersionUID=-4191539152208389089L. */ private static final long serialVersionUID = -4191539152208389089L; private JPanel jContentPane = null; private JLabel jLabel = null; private JLabel jLabel1 = null; private JLabel jLabelSource = null; private JButton jButtonSource = null; private JPanel jPanel = null; private JCheckBox jCheckBox = null; private JButton jButtonStart = null; /** The frame. */ private final GuiImportPicture frame; private JLabel jLabelHDDFree = null; private JLabel jLabelNeedSpace = null; /** The j label total files. */ private JLabel jLabelTotalFiles = null; private List listFiles; private ArrayList fileCopyList; private long freeSpaceM; private int filesForCopy; private String oldText; private JProgressBar jProgressBar = null; /** *

* Constructor for GUI_ImportPicture. *

* * @param owner * a {@link javax.swing.JFrame} object. */ public GuiImportPicture(final JFrame owner) { super(owner); this.frame = this; this.initialize(); } /** * This method initializes this. */ private void initialize() { final Dimension screen = this.getToolkit().getScreenSize(); final Rectangle bounds = this.getBounds(); bounds.width = 400; bounds.height = 295; this.setSize(new Dimension(400, 295)); this.setResizable(false); bounds.x = (screen.width - bounds.width) / 2; bounds.y = (screen.height - bounds.height) / 2; this.setBounds(bounds); this.setModal(true); this.setTitle("Import Picture"); this.setContentPane(this.getJContentPane()); } /** * This method initializes jContentPane. * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (this.jContentPane == null) { this.jLabelTotalFiles = new JLabel(); this.jLabelTotalFiles.setBounds(new Rectangle(15, 180, 248, 16)); this.jLabelTotalFiles.setText("Total files for copying: Unknown."); this.jLabelNeedSpace = new JLabel(); this.jLabelNeedSpace.setBounds(new Rectangle(15, 150, 177, 16)); this.jLabelNeedSpace.setText("HDD Need Space: Unknown."); this.jLabelHDDFree = new JLabel(); this.jLabelHDDFree.setBounds(new Rectangle(15, 119, 177, 16)); final File file = ForgeProps.getFile(NewConstants.IMAGE_BASE); final long freeSpace = file.getFreeSpace(); this.freeSpaceM = freeSpace / 1024 / 1024; // MiB here is not a typo; it is the unit for megabytes calculated // by powers of 1024 instead of 1000. this.jLabelHDDFree.setText("HDD Free Space: " + this.freeSpaceM + " MiB"); this.jLabelSource = new JLabel(); this.jLabelSource.setBounds(new Rectangle(63, 45, 267, 17)); this.jLabelSource.setBorder(BorderFactory.createLineBorder(Color.black, 1)); this.jLabelSource.setText(""); this.jLabel1 = new JLabel(); this.jLabel1.setBounds(new Rectangle(16, 45, 48, 17)); this.jLabel1.setText("Source:"); this.jLabel = new JLabel(); this.jLabel.setBounds(new Rectangle(15, 15, 360, 19)); this.jLabel.setText("Please select source directory:"); this.jContentPane = new JPanel(); this.jContentPane.setLayout(null); this.jContentPane.add(this.jLabel, null); this.jContentPane.add(this.jLabel1, null); this.jContentPane.add(this.jLabelSource, null); this.jContentPane.add(this.getJButtonSource(), null); this.jContentPane.add(this.getJPanel(), null); this.jContentPane.add(this.getJButtonStart(), null); this.jContentPane.add(this.jLabelHDDFree, null); this.jContentPane.add(this.jLabelNeedSpace, null); this.jContentPane.add(this.jLabelTotalFiles, null); this.jContentPane.add(this.getJProgressBar(), null); } return this.jContentPane; } /** * This method initializes jButtonSource. * * @return javax.swing.JButton */ private JButton getJButtonSource() { if (this.jButtonSource == null) { this.jButtonSource = new JButton(); this.jButtonSource.setBounds(new Rectangle(329, 45, 47, 17)); this.jButtonSource.setText("..."); this.jButtonSource.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(final java.awt.event.MouseEvent e) { JFileChooser chooser; String choosertitle; choosertitle = "Select source directory."; chooser = new JFileChooser(); chooser.setCurrentDirectory(new java.io.File(".")); chooser.setDialogTitle(choosertitle); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false); GuiImportPicture.this.oldText = GuiImportPicture.this.jLabelSource.getText(); GuiImportPicture.this.jLabelSource.setText("Please wait..."); if (chooser.showOpenDialog(GuiImportPicture.this.frame) == JFileChooser.APPROVE_OPTION) { final FileFinder ff = new FileFinder(); try { GuiImportPicture.this.listFiles = ff.findFiles(chooser.getSelectedFile().toString(), ".+\\.jpg"); } catch (final Exception e2) { e2.printStackTrace(); } GuiImportPicture.this.jLabelSource.setText(chooser.getSelectedFile().toString()); if (GuiImportPicture.this.jCheckBox.isSelected()) { GuiImportPicture.this.filesForCopy = ff.getFilesNumber(); GuiImportPicture.this.jLabelTotalFiles.setText("Total files for copying: " + GuiImportPicture.this.filesForCopy); GuiImportPicture.this.jLabelNeedSpace.setText("HDD Need Space: " + (ff.getDirectorySize() / 1024 / 1024) + " MB"); GuiImportPicture.this.jProgressBar.setValue(0); if ((GuiImportPicture.this.freeSpaceM > (ff.getDirectorySize() / 1024 / 1024)) && (GuiImportPicture.this.filesForCopy > 0)) { GuiImportPicture.this.jButtonStart.setEnabled(true); } } else { String fName; int start; long filesToCopySize; GuiImportPicture.this.filesForCopy = 0; filesToCopySize = 0; GuiImportPicture.this.fileCopyList = new ArrayList(); for (int i = 0; i < GuiImportPicture.this.listFiles.size(); i++) { fName = GuiImportPicture.this.listFiles.get(i).getName(); start = fName.indexOf("full"); fName = fName.substring(0, start - 1) + fName.substring(start + 4, fName.length() - 4); fName = GuiDisplayUtil.cleanString(fName) + ".jpg"; final File file = new File(ForgeProps.getFile(NewConstants.IMAGE_BASE), fName); if (!file.exists()) { GuiImportPicture.this.filesForCopy = GuiImportPicture.this.filesForCopy + 1; filesToCopySize = filesToCopySize + GuiImportPicture.this.listFiles.get(i).length(); GuiImportPicture.this.fileCopyList.add(GuiImportPicture.this.listFiles.get(i)); } } GuiImportPicture.this.jLabelTotalFiles.setText("Total files for copying: " + GuiImportPicture.this.filesForCopy); GuiImportPicture.this.jLabelNeedSpace.setText("HDD Need Space: " + (filesToCopySize / 1024 / 1024) + " MB"); GuiImportPicture.this.jProgressBar.setValue(0); if ((GuiImportPicture.this.freeSpaceM > (filesToCopySize / 1024 / 1024)) && (GuiImportPicture.this.filesForCopy > 0)) { GuiImportPicture.this.jButtonStart.setEnabled(true); } } } else { if (GuiImportPicture.this.oldText.equals("")) { GuiImportPicture.this.jLabelSource.setText(""); } else { GuiImportPicture.this.jLabelSource.setText(GuiImportPicture.this.oldText); } } } }); } return this.jButtonSource; } /** * This method initializes jPanel. * * @return javax.swing.JPanel */ private JPanel getJPanel() { if (this.jPanel == null) { final GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new Insets(0, 0, 0, 120); gridBagConstraints.gridy = 0; this.jPanel = new JPanel(); this.jPanel.setLayout(new GridBagLayout()); this.jPanel.setBounds(new Rectangle(15, 74, 362, 31)); this.jPanel.setBorder(BorderFactory.createLineBorder(Color.black, 1)); this.jPanel.add(this.getJCheckBox(), gridBagConstraints); } return this.jPanel; } /** * This method initializes jCheckBox. * * @return javax.swing.JCheckBox */ private JCheckBox getJCheckBox() { if (this.jCheckBox == null) { this.jCheckBox = new JCheckBox(); this.jCheckBox.setSelected(false); this.jCheckBox.setText("Overwriting picture in resource folder"); this.jCheckBox.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(final java.awt.event.MouseEvent e) { GuiImportPicture.this.jButtonStart.setEnabled(false); if (GuiImportPicture.this.jLabelSource.getText() != "") { final FileFinder ff = new FileFinder(); try { GuiImportPicture.this.listFiles = ff.findFiles(GuiImportPicture.this.jLabelSource.getText() .toString(), ".+\\.jpg"); } catch (final Exception e2) { e2.printStackTrace(); } if (GuiImportPicture.this.jCheckBox.isSelected()) { GuiImportPicture.this.filesForCopy = ff.getFilesNumber(); GuiImportPicture.this.jLabelTotalFiles.setText("Total files for copying: " + GuiImportPicture.this.filesForCopy); GuiImportPicture.this.jLabelNeedSpace.setText("HDD Need Space: " + (ff.getDirectorySize() / 1024 / 1024) + " MB"); GuiImportPicture.this.jProgressBar.setValue(0); if ((GuiImportPicture.this.freeSpaceM > (ff.getDirectorySize() / 1024 / 1024)) && (GuiImportPicture.this.filesForCopy > 0)) { GuiImportPicture.this.jButtonStart.setEnabled(true); } } else { String fName; int start; long filesToCopySize; GuiImportPicture.this.filesForCopy = 0; filesToCopySize = 0; GuiImportPicture.this.fileCopyList = new ArrayList(); for (int i = 0; i < GuiImportPicture.this.listFiles.size(); i++) { fName = GuiImportPicture.this.listFiles.get(i).getName(); start = fName.indexOf("full"); fName = fName.substring(0, start - 1) + fName.substring(start + 4, fName.length() - 4); fName = GuiDisplayUtil.cleanString(fName) + ".jpg"; final File file = new File(ForgeProps.getFile(NewConstants.IMAGE_BASE), fName); if (!file.exists()) { GuiImportPicture.this.filesForCopy = GuiImportPicture.this.filesForCopy + 1; filesToCopySize = filesToCopySize + GuiImportPicture.this.listFiles.get(i).length(); GuiImportPicture.this.fileCopyList.add(GuiImportPicture.this.listFiles.get(i)); } } GuiImportPicture.this.jLabelTotalFiles.setText("Total files for copying: " + GuiImportPicture.this.filesForCopy); GuiImportPicture.this.jLabelNeedSpace.setText("HDD Need Space: " + (filesToCopySize / 1024 / 1024) + " MB"); GuiImportPicture.this.jProgressBar.setValue(0); if ((GuiImportPicture.this.freeSpaceM > (filesToCopySize / 1024 / 1024)) && (GuiImportPicture.this.filesForCopy > 0)) { GuiImportPicture.this.jButtonStart.setEnabled(true); } } } } }); } return this.jCheckBox; } /** * This method initializes jButtonStart. * * @return javax.swing.JButton */ private JButton getJButtonStart() { if (this.jButtonStart == null) { this.jButtonStart = new JButton(); this.jButtonStart.setEnabled(false); this.jButtonStart.setBounds(new Rectangle(136, 239, 123, 17)); this.jButtonStart.setText("Import"); // jButtonStart.addMouseListener(new CustomListener()); this.jButtonStart.addMouseListener(new MouseInputAdapter() { @Override public void mouseClicked(final MouseEvent e) { if (GuiImportPicture.this.jButtonStart.isEnabled()) { GuiImportPicture.this.jLabelTotalFiles.setText("Please wait while all files are copying."); if (GuiImportPicture.this.jCheckBox.isSelected()) { GuiImportPicture.this.jButtonStart.setEnabled(false); GuiImportPicture.this.jCheckBox.setEnabled(false); GuiImportPicture.this.jButtonSource.setEnabled(false); final CopyFiles cFiles = new CopyFiles(GuiImportPicture.this.listFiles, GuiImportPicture.this.jLabelTotalFiles, GuiImportPicture.this.jProgressBar, GuiImportPicture.this.jCheckBox, GuiImportPicture.this.jButtonSource); cFiles.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(final PropertyChangeEvent evt) { if ("progress".equals(evt.getPropertyName())) { GuiImportPicture.this.jProgressBar.setValue((Integer) evt.getNewValue()); } } }); cFiles.execute(); } else { GuiImportPicture.this.jButtonStart.setEnabled(false); GuiImportPicture.this.jCheckBox.setEnabled(false); GuiImportPicture.this.jButtonSource.setEnabled(false); final CopyFiles cFiles = new CopyFiles(GuiImportPicture.this.fileCopyList, GuiImportPicture.this.jLabelTotalFiles, GuiImportPicture.this.jProgressBar, GuiImportPicture.this.jCheckBox, GuiImportPicture.this.jButtonSource); cFiles.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(final PropertyChangeEvent evt) { if ("progress".equals(evt.getPropertyName())) { GuiImportPicture.this.jProgressBar.setValue((Integer) evt.getNewValue()); } } }); } } } }); } return this.jButtonStart; } /** * This method initializes jProgressBar. * * @return javax.swing.JProgressBar */ private JProgressBar getJProgressBar() { if (this.jProgressBar == null) { this.jProgressBar = new JProgressBar(); this.jProgressBar.setBounds(new Rectangle(15, 210, 363, 18)); this.jProgressBar.setMinimum(0); this.jProgressBar.setMaximum(100); } return this.jProgressBar; } } // @jve:decl-index=0:visual-constraint="10,10"