diff --git a/.gitattributes b/.gitattributes index b944b81129c..0e8c1816f44 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10025,6 +10025,7 @@ res/quest/decks/quest7.dck -text res/quest/decks/quest8.dck -text res/quest/decks/quest9.dck -text res/quest/price.txt svneol=native#text/plain +res/quest/quest-opponent-icons.txt -text res/quest/quest.preferences -text res/quest/quest.properties svneol=native#text/plain res/quest/themes/-1[!!-~]-1[!!-~]Counters[!!-~]BG.thm -text @@ -10174,6 +10175,7 @@ src/main/java/forge/GameActionUtil.java svneol=native#text/plain src/main/java/forge/GameEntity.java -text src/main/java/forge/GuiDisplay4.java svneol=native#text/plain src/main/java/forge/GuiDisplayUtil.java svneol=native#text/plain +src/main/java/forge/GuiDownloadQuestImages.java -text src/main/java/forge/GuiInput.java svneol=native#text/plain src/main/java/forge/Gui_DownloadPictures_LQ.java svneol=native#text/plain src/main/java/forge/Gui_DownloadPrices.java svneol=native#text/plain diff --git a/res/lang/en.properties b/res/lang/en.properties index 28e58de5937..7d97034d37b 100644 --- a/res/lang/en.properties +++ b/res/lang/en.properties @@ -144,6 +144,7 @@ NewGame/menu/lookAndFeel=Display Options NewGame/menu/download=Download Card HQ Pictures NewGame/menu/downloadlq=Download Card LQ Pictures NewGame/menu/downloadsetlq=Download Card Set LQ Pictures +NewGame/menu/downloadquest=Download Quest Images NewGame/menu/importPicture=Import Pictures NewGame/menu/downloadPrice=Update Price NewGame/menu/cardSizes=Specify Max Card Size diff --git a/res/quest/quest-opponent-icons.txt b/res/quest/quest-opponent-icons.txt new file mode 100644 index 00000000000..dd9c1b1a600 --- /dev/null +++ b/res/quest/quest-opponent-icons.txt @@ -0,0 +1,177 @@ +http://www.cardforge.org/fpics/questAvatars/A%20Wolf%20in%20Sheeps%20Clothing.jpg +http://www.cardforge.org/fpics/questAvatars/Abraham%20Lincoln.jpg +http://www.cardforge.org/fpics/questAvatars/Albert%20Einstein.jpg +http://www.cardforge.org/fpics/questAvatars/Alice%20in%20Wonderland.jpg +http://www.cardforge.org/fpics/questAvatars/Ancient%20Battlefield.jpg +http://www.cardforge.org/fpics/questAvatars/Apu%20Nahasapeemapetilon.jpg +http://www.cardforge.org/fpics/questAvatars/Aquaman.jpg +http://www.cardforge.org/fpics/questAvatars/Aragorn.jpg +http://www.cardforge.org/fpics/questAvatars/Atomic%20Robo.jpg +http://www.cardforge.org/fpics/questAvatars/Bamm%20Bamm%20Rubble.jpg +http://www.cardforge.org/fpics/questAvatars/Barney%20Rubble.jpg +http://www.cardforge.org/fpics/questAvatars/Barroom%20Brawl.jpg +http://www.cardforge.org/fpics/questAvatars/Bart%20Simpson.jpg +http://www.cardforge.org/fpics/questAvatars/Batman.jpg +http://www.cardforge.org/fpics/questAvatars/Bela%20Lugosi.jpg +http://www.cardforge.org/fpics/questAvatars/Betty%20Rubble.jpg +http://www.cardforge.org/fpics/questAvatars/Blackbeard.jpg +http://www.cardforge.org/fpics/questAvatars/Blood%20Oath.jpg +http://www.cardforge.org/fpics/questAvatars/Boba%20Fett.jpg +http://www.cardforge.org/fpics/questAvatars/Boris%20Karloff.jpg +http://www.cardforge.org/fpics/questAvatars/Boromir.jpg +http://www.cardforge.org/fpics/questAvatars/Bridge%20Troll.jpg +http://www.cardforge.org/fpics/questAvatars/Buffy.jpg +http://www.cardforge.org/fpics/questAvatars/Bushwhacked.jpg +http://www.cardforge.org/fpics/questAvatars/C3PO.jpg +http://www.cardforge.org/fpics/questAvatars/Captain%20America.jpg +http://www.cardforge.org/fpics/questAvatars/Catwoman.jpg +http://www.cardforge.org/fpics/questAvatars/Chief_Wiggum.jpg +http://www.cardforge.org/fpics/questAvatars/Comic%20Book%20Guy.jpg +http://www.cardforge.org/fpics/questAvatars/Conan%20the%20Barbarian.jpg +http://www.cardforge.org/fpics/questAvatars/Cow.jpg +http://www.cardforge.org/fpics/questAvatars/Crocodile%20Dundee.jpg +http://www.cardforge.org/fpics/questAvatars/Crows%20in%20the%20Field.jpg +http://www.cardforge.org/fpics/questAvatars/Cyclops.jpg +http://www.cardforge.org/fpics/questAvatars/Da%20Vinci.jpg +http://www.cardforge.org/fpics/questAvatars/Darrin%20Stephens.jpg +http://www.cardforge.org/fpics/questAvatars/Darth%20Vader.jpg +http://www.cardforge.org/fpics/questAvatars/Data.jpg +http://www.cardforge.org/fpics/questAvatars/Deadpool.jpg +http://www.cardforge.org/fpics/questAvatars/Demon.jpg +http://www.cardforge.org/fpics/questAvatars/Dilbert.jpg +http://www.cardforge.org/fpics/questAvatars/Dino.jpg +http://www.cardforge.org/fpics/questAvatars/Doc%20Holiday.jpg +http://www.cardforge.org/fpics/questAvatars/Dogbert.jpg +http://www.cardforge.org/fpics/questAvatars/Dont%20Play%20With%20Matches.jpg +http://www.cardforge.org/fpics/questAvatars/Doran.jpg +http://www.cardforge.org/fpics/questAvatars/Dr%20No.jpg +http://www.cardforge.org/fpics/questAvatars/Dr%20Strangelove.jpg +http://www.cardforge.org/fpics/questAvatars/Dream.jpg +http://www.cardforge.org/fpics/questAvatars/Dungeon%20Crawling%20Black.jpg +http://www.cardforge.org/fpics/questAvatars/Dungeon%20Crawling%20Blue.jpg +http://www.cardforge.org/fpics/questAvatars/Dungeon%20Crawling%20Colorless.jpg +http://www.cardforge.org/fpics/questAvatars/Dungeon%20Crawling%20Gold.jpg +http://www.cardforge.org/fpics/questAvatars/Dungeon%20Crawling%20Green.jpg +http://www.cardforge.org/fpics/questAvatars/Dungeon%20Crawling%20Red.jpg +http://www.cardforge.org/fpics/questAvatars/Dungeon%20Crawling%20White.jpg +http://www.cardforge.org/fpics/questAvatars/Electro.jpg +http://www.cardforge.org/fpics/questAvatars/Elrond.jpg +http://www.cardforge.org/fpics/questAvatars/Endora.jpg +http://www.cardforge.org/fpics/questAvatars/Eomer.jpg +http://www.cardforge.org/fpics/questAvatars/Ezio.jpg +http://www.cardforge.org/fpics/questAvatars/Fat%20Albert.jpg +http://www.cardforge.org/fpics/questAvatars/Fin%20Fang%20Foom.jpg +http://www.cardforge.org/fpics/questAvatars/Frankenstein.jpg +http://www.cardforge.org/fpics/questAvatars/Fred%20Flintstone.jpg +http://www.cardforge.org/fpics/questAvatars/Frodo.jpg +http://www.cardforge.org/fpics/questAvatars/Galadriel.jpg +http://www.cardforge.org/fpics/questAvatars/Galahad.jpg +http://www.cardforge.org/fpics/questAvatars/Gambit.jpg +http://www.cardforge.org/fpics/questAvatars/Genghis%20Khan.jpg +http://www.cardforge.org/fpics/questAvatars/George%20of%20the%20Jungle.jpg +http://www.cardforge.org/fpics/questAvatars/Gimli.jpg +http://www.cardforge.org/fpics/questAvatars/Gold%20Finger.jpg +http://www.cardforge.org/fpics/questAvatars/Grampa%20Simpson.jpg +http://www.cardforge.org/fpics/questAvatars/Green%20Arrow.jpg +http://www.cardforge.org/fpics/questAvatars/Green%20Lantern.jpg +http://www.cardforge.org/fpics/questAvatars/Hagrid.jpg +http://www.cardforge.org/fpics/questAvatars/Han%20Solo.jpg +http://www.cardforge.org/fpics/questAvatars/Hans.jpg +http://www.cardforge.org/fpics/questAvatars/Harry%20Potter.jpg +http://www.cardforge.org/fpics/questAvatars/Hellboy.jpg +http://www.cardforge.org/fpics/questAvatars/Hercules.jpg +http://www.cardforge.org/fpics/questAvatars/Hermione%20Granger.jpg +http://www.cardforge.org/fpics/questAvatars/Higgins.jpg +http://www.cardforge.org/fpics/questAvatars/Hobbes.jpg +http://www.cardforge.org/fpics/questAvatars/Homer%20Simpson.jpg +http://www.cardforge.org/fpics/questAvatars/House%20Party.jpg +http://www.cardforge.org/fpics/questAvatars/Iceman.jpg +http://www.cardforge.org/fpics/questAvatars/Indiana%20Jones.jpg +http://www.cardforge.org/fpics/questAvatars/Jabba%20the%20Hut.jpg +http://www.cardforge.org/fpics/questAvatars/Jack%20Sparrow.jpg +http://www.cardforge.org/fpics/questAvatars/James%20Bond.jpg +http://www.cardforge.org/fpics/questAvatars/James%20T%20Kirk.jpg +http://www.cardforge.org/fpics/questAvatars/Joe%20Kidd.jpg +http://www.cardforge.org/fpics/questAvatars/Kang.jpg +http://www.cardforge.org/fpics/questAvatars/King%20Arthur.jpg +http://www.cardforge.org/fpics/questAvatars/King%20Edward.jpg +http://www.cardforge.org/fpics/questAvatars/King%20Goldemar.jpg +http://www.cardforge.org/fpics/questAvatars/King%20Kong.jpg +http://www.cardforge.org/fpics/questAvatars/Kojak.jpg +http://www.cardforge.org/fpics/questAvatars/Krypto.jpg +http://www.cardforge.org/fpics/questAvatars/Leprechaun.jpg +http://www.cardforge.org/fpics/questAvatars/Lisa%20Simpson.jpg +http://www.cardforge.org/fpics/questAvatars/Luke%20Skywalker.jpg +http://www.cardforge.org/fpics/questAvatars/Maggie%20Simpson.jpg +http://www.cardforge.org/fpics/questAvatars/Magneto.jpg +http://www.cardforge.org/fpics/questAvatars/Magnum.jpg +http://www.cardforge.org/fpics/questAvatars/Marge%20Simpson.jpg +http://www.cardforge.org/fpics/questAvatars/Mines%20of%20Kazum%20Durl.jpg +http://www.cardforge.org/fpics/questAvatars/Mister%20Fantastic.jpg +http://www.cardforge.org/fpics/questAvatars/Morpheus.jpg +http://www.cardforge.org/fpics/questAvatars/Mr%20Slate.jpg +http://www.cardforge.org/fpics/questAvatars/Napoleon.jpg +http://www.cardforge.org/fpics/questAvatars/Ned%20Flanders.jpg +http://www.cardforge.org/fpics/questAvatars/Neo.jpg +http://www.cardforge.org/fpics/questAvatars/Newton.jpg +http://www.cardforge.org/fpics/questAvatars/Oberon.jpg +http://www.cardforge.org/fpics/questAvatars/Odin.jpg +http://www.cardforge.org/fpics/questAvatars/Optimus%20Prime.jpg +http://www.cardforge.org/fpics/questAvatars/Pebbles%20Flintstone.jpg +http://www.cardforge.org/fpics/questAvatars/Picard.jpg +http://www.cardforge.org/fpics/questAvatars/Pinky%20and%20the%20Brain.jpg +http://www.cardforge.org/fpics/questAvatars/Pointy%20Haired%20Boss.jpg +http://www.cardforge.org/fpics/questAvatars/Princess%20Selenia.jpg +http://www.cardforge.org/fpics/questAvatars/Private%20Domain.jpg +http://www.cardforge.org/fpics/questAvatars/Professor%20X.jpg +http://www.cardforge.org/fpics/questAvatars/questAIicons.txt +http://www.cardforge.org/fpics/questAvatars/R2-D2.jpg +http://www.cardforge.org/fpics/questAvatars/Radagast.jpg +http://www.cardforge.org/fpics/questAvatars/Radiant.jpg +http://www.cardforge.org/fpics/questAvatars/Radioactive%20Man.jpg +http://www.cardforge.org/fpics/questAvatars/Ratbert.jpg +http://www.cardforge.org/fpics/questAvatars/Reactor%20Meltdown.jpg +http://www.cardforge.org/fpics/questAvatars/Redwall.jpg +http://www.cardforge.org/fpics/questAvatars/Repressed%20Magic.jpg +http://www.cardforge.org/fpics/questAvatars/Reverend%20Lovejoy.jpg +http://www.cardforge.org/fpics/questAvatars/Riddler.jpg +http://www.cardforge.org/fpics/questAvatars/Rocky.jpg +http://www.cardforge.org/fpics/questAvatars/Rogue.jpg +http://www.cardforge.org/fpics/questAvatars/Sabertooth.jpg +http://www.cardforge.org/fpics/questAvatars/Samantha%20Stephens.jpg +http://www.cardforge.org/fpics/questAvatars/Samwise%20Gamgee.jpg +http://www.cardforge.org/fpics/questAvatars/Saruman.jpg +http://www.cardforge.org/fpics/questAvatars/Sauron.jpg +http://www.cardforge.org/fpics/questAvatars/Scooby%20Doo.jpg +http://www.cardforge.org/fpics/questAvatars/Scotty.jpg +http://www.cardforge.org/fpics/questAvatars/Seabiscuit.jpg +http://www.cardforge.org/fpics/questAvatars/Secret%20Squirrel.jpg +http://www.cardforge.org/fpics/questAvatars/Sherlock%20Holmes.jpg +http://www.cardforge.org/fpics/questAvatars/Shrek.jpg +http://www.cardforge.org/fpics/questAvatars/Silver%20Samurai.jpg +http://www.cardforge.org/fpics/questAvatars/Silver%20Surfer.jpg +http://www.cardforge.org/fpics/questAvatars/Spiderman.jpg +http://www.cardforge.org/fpics/questAvatars/Spock.jpg +http://www.cardforge.org/fpics/questAvatars/Starfire.jpg +http://www.cardforge.org/fpics/questAvatars/Storm.jpg +http://www.cardforge.org/fpics/questAvatars/Sun%20Quan.jpg +http://www.cardforge.org/fpics/questAvatars/Superman.jpg +http://www.cardforge.org/fpics/questAvatars/Swan.jpg +http://www.cardforge.org/fpics/questAvatars/Tarzan.jpg +http://www.cardforge.org/fpics/questAvatars/Terminator.jpg +http://www.cardforge.org/fpics/questAvatars/The%20Backlash%20Machine.jpg +http://www.cardforge.org/fpics/questAvatars/The%20Court%20Jester.jpg +http://www.cardforge.org/fpics/questAvatars/The%20Desert%20Caravan.jpg +http://www.cardforge.org/fpics/questAvatars/The%20Great%20Gazoo.jpg +http://www.cardforge.org/fpics/questAvatars/The%20Kings%20Contest.jpg +http://www.cardforge.org/fpics/questAvatars/The%20Pied%20Piper.jpg +http://www.cardforge.org/fpics/questAvatars/The%20Thing.jpg +http://www.cardforge.org/fpics/questAvatars/Tom%20Bombadil.jpg +http://www.cardforge.org/fpics/questAvatars/Totoro.jpg +http://www.cardforge.org/fpics/questAvatars/Treebeard.jpg +http://www.cardforge.org/fpics/questAvatars/Uncle%20Owen.jpg +http://www.cardforge.org/fpics/questAvatars/Walle.jpg +http://www.cardforge.org/fpics/questAvatars/Wally.jpg +http://www.cardforge.org/fpics/questAvatars/White%20Knight.jpg +http://www.cardforge.org/fpics/questAvatars/Wilma%20Flintstone.jpg +http://www.cardforge.org/fpics/questAvatars/Wolverine.jpg \ No newline at end of file diff --git a/src/main/java/forge/GuiDownloadQuestImages.java b/src/main/java/forge/GuiDownloadQuestImages.java new file mode 100644 index 00000000000..f2f98f2c03f --- /dev/null +++ b/src/main/java/forge/GuiDownloadQuestImages.java @@ -0,0 +1,463 @@ +package forge; + +import com.esotericsoftware.minlog.Log; + +import forge.error.ErrorViewer; +import forge.properties.ForgeProps; +import forge.properties.NewConstants; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.*; +import java.net.ConnectException; +import java.net.InetSocketAddress; +import java.net.MalformedURLException; +import java.net.Proxy; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.StringTokenizer; + +import static java.lang.Integer.parseInt; +import static javax.swing.JOptionPane.DEFAULT_OPTION; +import static javax.swing.JOptionPane.PLAIN_MESSAGE; + + +/** + *
GuiDownloadQuestImages class.
+ * + * @author Forge + */ +public class GuiDownloadQuestImages extends DefaultBoundedRangeModel implements Runnable, NewConstants, NewConstants.LANG.Gui_DownloadPictures { + + private static final long serialVersionUID = -8596808503046590349L; + + /** Constanttypes */
+ public static final Proxy.Type[] types = Proxy.Type.values();
+
+ //proxy
+ private int type;
+ private JTextField addr, port;
+
+ //progress
+ private mCard[] cards;
+ private int card;
+ private boolean cancel;
+ private JProgressBar bar;
+
+ private JOptionPane dlg;
+ private JButton close;
+
+ private long times[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ private int tptr = 0;
+ private long lTime = System.currentTimeMillis();
+
+ /**
+ * getAverageTimePerCard.
+ * + * @return a int. + */ + private int getAverageTimePerCard() { + int aTime = 0; + int nz = 10; + + if (tptr > 9) + tptr = 0; + + times[tptr] = System.currentTimeMillis() - lTime; + lTime = System.currentTimeMillis(); + + int tTime = 0; + for (int i = 0; i < 10; i++) { + tTime += times[i]; + if (times[i] == 0) + nz--; + } + aTime = tTime / nz; + + tptr++; + + return aTime; + } + + + /** + *Constructor for GuiDownloadQuestImages.
+ * + * @param c an array of {@link forge.Gui_DownloadSetPictures_LQ.mCard} objects. + */ + private GuiDownloadQuestImages(mCard[] c) { + this.cards = c; + addr = new JTextField(ForgeProps.getLocalized(PROXY_ADDRESS)); + port = new JTextField(ForgeProps.getLocalized(PROXY_PORT)); + bar = new JProgressBar(this); + + JPanel p0 = new JPanel(); + p0.setLayout(new BoxLayout(p0, BoxLayout.Y_AXIS)); + + //Proxy Choice + ButtonGroup bg = new ButtonGroup(); + String[] labels = { + ForgeProps.getLocalized(NO_PROXY), ForgeProps.getLocalized(HTTP_PROXY), + ForgeProps.getLocalized(SOCKS_PROXY)}; + for (int i = 0; i < types.length; i++) { + JRadioButton rb = new JRadioButton(labels[i]); + rb.addChangeListener(new ProxyHandler(i)); + bg.add(rb); + p0.add(rb); + if (i == 0) rb.setSelected(true); + } + + //Proxy config + p0.add(addr); + p0.add(port); + + //Start + final JButton b = new JButton(ForgeProps.getLocalized(BUTTONS.START)); + b.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + new Thread(GuiDownloadQuestImages.this).start(); + b.setEnabled(false); + } + }); + + p0.add(Box.createVerticalStrut(5)); + + //Progress + p0.add(bar); + bar.setStringPainted(true); + //bar.setString(ForgeProps.getLocalized(BAR_BEFORE_START)); + bar.setString(card + "/" + cards.length); + //bar.setString(String.format(ForgeProps.getLocalized(card == cards.length? BAR_CLOSE:BAR_WAIT), this.card, cards.length)); + Dimension d = bar.getPreferredSize(); + d.width = 300; + bar.setPreferredSize(d); + + //JOptionPane + Object[] options = {b, close = new JButton(ForgeProps.getLocalized(BUTTONS.CANCEL))}; + dlg = new JOptionPane(p0, DEFAULT_OPTION, PLAIN_MESSAGE, null, options, options[1]); + } + + /** {@inheritDoc} */ + @Override + public int getMinimum() { + return 0; + } + + /** {@inheritDoc} */ + @Override + public int getValue() { + return card; + } + + /** {@inheritDoc} */ + @Override + public int getExtent() { + return 0; + } + + /** {@inheritDoc} */ + @Override + public int getMaximum() { + return cards == null ? 0 : cards.length; + } + + /** + *update.
+ * + * @param card a int. + */ + private void update(int card) { + this.card = card; + + final class Worker implements Runnable { + private int card; + + Worker(int card) { + this.card = card; + } + + public void run() { + fireStateChanged(); + + StringBuilder sb = new StringBuilder(); + + int a = getAverageTimePerCard(); + + if (card != cards.length) { + sb.append(card + "/" + cards.length + " - "); + + long t2Go = (cards.length - card) * a; + + boolean secOnly = true; + if (t2Go > 3600000) { + sb.append(String.format("%02d:", t2Go / 3600000)); + t2Go = t2Go % 3600000; + secOnly = false; + } + if (t2Go > 60000) { + sb.append(String.format("%02d:", t2Go / 60000)); + t2Go = t2Go % 60000; + secOnly = false; + } + if (!secOnly) + sb.append(String.format("%02d remaining.", t2Go / 1000)); + else + sb.append(String.format("0:%02d remaining.", t2Go / 1000)); + } else + sb.append(String.format(ForgeProps.getLocalized(BAR_CLOSE), card, cards.length)); + + bar.setString(sb.toString()); + //bar.setString(String.format(ForgeProps.getLocalized(card == cards.length? BAR_CLOSE:BAR_WAIT), card, + // cards.length)); + System.out.println(card + "/" + cards.length + " - " + a); + } + } + ; + EventQueue.invokeLater(new Worker(card)); + } + + /** + *Getter for the field dlg.
Setter for the field cancel.
run.
+ */ + public void run() { + BufferedInputStream in; + BufferedOutputStream out; + + //File base = ForgeProps.getFile(QUEST.OPPONENT_DIR); + + Random r = MyRandom.random; + + Proxy p = null; + if (type == 0) p = Proxy.NO_PROXY; + else try { + p = new Proxy(types[type], new InetSocketAddress(addr.getText(), parseInt(port.getText()))); + } catch (Exception ex) { + ErrorViewer.showError(ex, ForgeProps.getLocalized(ERRORS.PROXY_CONNECT), addr.getText(), + port.getText()); + return; + } + + if (p != null) { + byte[] buf = new byte[1024]; + int len; + //System.out.println("basedir: " + base); + for (update(0); card < cards.length && !cancel; update(card + 1)) { + try { + String url = cards[card].url; + String cName; + //base = ForgeProps.getFile(IMAGE_BASE); + cName = cards[card].name; + //if (Constant.Runtime.DevMode[0]) + // System.out.println(cName + " - " + url); + cName = cName.replace("%20"," "); + + File base = new File(cards[card].folder); + File f = new File(base, cName); + + System.out.println("Trying to download: "+cName+" "+cards[card].folder+" "+url); + + //test for folder existenceFile test = new File(base, cards[card].folder); + if (!base.exists()) { + // create folder + if (!base.mkdir()) + System.out.println("Can't create folder" + cards[card].folder); + } + + try { + in = new BufferedInputStream(new URL(url).openConnection(p).getInputStream()); + out = new BufferedOutputStream(new FileOutputStream(f)); + + while ((len = in.read(buf)) != -1) { + //user cancelled + if (cancel) { + in.close(); + out.flush(); + out.close(); + + //delete what was written so far + f.delete(); + + return; + }//if - cancel + + out.write(buf, 0, len); + }//while - read and write file + + in.close(); + out.flush(); + out.close(); + } + catch (ConnectException ce) { + System.out.println("Connection refused for url: " + url); + } + catch (MalformedURLException mURLe) { + System.out.println("Error - possibly missing URL for: " + cards[card].name); + //Log.error("LQ Pictures", "Malformed URL for: "+cards[card].name, mURLe); + } + } catch (FileNotFoundException fnfe) { + System.out.println("Error - the LQ picture for " + cards[card].name + " could not be found on the server. [" + cards[card].url + "] - " + fnfe.getMessage()); + } catch (Exception ex) { + Log.error("LQ Pictures", "Error downloading pictures", ex); + } + + // pause + + try { + Thread.sleep(r.nextInt(750) + 420); + } catch (InterruptedException e) { + Log.error("Quest Image Download", "Sleep Error", e); + } + }//for + } + close.setText(ForgeProps.getLocalized(BUTTONS.CLOSE)); + }//run + + /** + *startDownload.
+ * + * @param frame a {@link javax.swing.JFrame} object. + */ + public static void startDownload(JFrame frame) { + final mCard[] card = getNeededImages(); + + if (card.length == 0) { + JOptionPane.showMessageDialog(frame, ForgeProps.getLocalized(NO_MORE)); + return; + } + + GuiDownloadQuestImages download = new GuiDownloadQuestImages(card); + JDialog dlg = download.getDlg(frame); + dlg.setVisible(true); + dlg.dispose(); + download.setCancel(true); + }//startDownload() + + /** + *getNeededCards.
+ * + * @return an array of {@link forge.Gui_DownloadSetPictures_LQ.mCard} objects. + */ + private static mCard[] getNeededImages() { + //read all card names and urls + mCard[] questOpponents = readFile(QUEST.OPPONENT_ICONS, ForgeProps.getFile(QUEST.OPPONENT_DIR)); + ArrayListreadFile.
+ * + * @param ABC a {@link java.lang.String} object. + * @return an array of {@link forge.Gui_DownloadSetPictures_LQ.mCard} objects. + */ + private static mCard[] readFile(String filename, File dir) { + try { + FileReader zrc = new FileReader(ForgeProps.getFile(filename)); + BufferedReader in = new BufferedReader(zrc); + String line; + ArrayList