From 5a072ea76095a5b7c05e3ac0fcfafb7d3c3e2b01 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 2 Apr 2017 11:32:25 +0200 Subject: [PATCH] * Some minor changes to sleep command (fixes #2992). --- .../java/mage/client/components/MageUI.java | 3 +- .../mage/client/components/tray/MageTray.java | 5 +- .../client/dialog/TableWaitingDialog.java | 15 +-- .../main/java/mage/client/game/GamePanel.java | 121 +++++++++--------- .../java/mage/client/table/TablesPanel.java | 6 +- .../client/tournament/TournamentPanel.java | 5 +- .../mage/client/util/audio/MusicPlayer.java | 9 +- .../client/util/gui/BufferedImageBuilder.java | 6 +- .../org/mage/plugins/card/CardPluginImpl.java | 13 +- .../card/dl/sources/GrabbagImageSource.java | 3 +- .../dl/sources/WizardCardsImageSource.java | 44 +++---- .../plugins/card/images/DownloadPictures.java | 43 +++---- 12 files changed, 133 insertions(+), 140 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/components/MageUI.java b/Mage.Client/src/main/java/mage/client/components/MageUI.java index 48c14687f4a..138fe5f886e 100644 --- a/Mage.Client/src/main/java/mage/client/components/MageUI.java +++ b/Mage.Client/src/main/java/mage/client/components/MageUI.java @@ -3,6 +3,7 @@ package mage.client.components; import java.awt.Component; import java.util.EnumMap; import java.util.Map; +import java.util.concurrent.TimeUnit; import javax.swing.JButton; public class MageUI { @@ -94,7 +95,7 @@ public class MageUI { final JButton j = getButton(name); Thread.sleep(waitBeforeClick); while (!j.isEnabled()) { - Thread.sleep(10); + TimeUnit.MILLISECONDS.sleep(10); } Thread t = new Thread(() -> j.doClick()); t.start(); diff --git a/Mage.Client/src/main/java/mage/client/components/tray/MageTray.java b/Mage.Client/src/main/java/mage/client/components/tray/MageTray.java index c193da98e34..43810b3e3e9 100644 --- a/Mage.Client/src/main/java/mage/client/components/tray/MageTray.java +++ b/Mage.Client/src/main/java/mage/client/components/tray/MageTray.java @@ -1,7 +1,7 @@ package mage.client.components.tray; import java.awt.*; - +import java.util.concurrent.TimeUnit; import mage.client.MageFrame; import org.apache.log4j.Logger; import org.mage.plugins.card.utils.impl.ImageManagerImpl; @@ -21,7 +21,6 @@ public enum MageTray { private int state = 0; - public void install() { if (!SystemTray.isSupported()) { log.warn("SystemTray is not supported"); @@ -97,7 +96,7 @@ public enum MageTray { int i = 0; while (state != 3) { trayIcon.setImage(i == 0 ? mainImage : flashedImage); - Thread.sleep(600); + TimeUnit.MILLISECONDS.sleep(600); i = i == 0 ? 1 : 0; } trayIcon.setImage(mainImage); diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java index 9a690da6c33..d6492a0a391 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java @@ -39,19 +39,17 @@ import java.util.Optional; import java.util.UUID; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; import javax.swing.Icon; import javax.swing.SwingWorker; import javax.swing.table.AbstractTableModel; - import mage.client.MageFrame; import mage.client.SessionHandler; import mage.client.chat.ChatPanelBasic; import mage.client.components.MageComponents; import mage.client.components.tray.MageTray; - import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_ORDER; import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_WIDTH; - import mage.client.util.GUISizeHelper; import mage.client.util.audio.AudioManager; import mage.client.util.gui.TableUtil; @@ -419,15 +417,8 @@ class UpdateSeatsTask extends SwingWorker { @Override protected Void doInBackground() throws Exception { while (!isCancelled()) { - SessionHandler.getTable(roomId, tableId).ifPresent(tableView -> { - - this.publish(tableView); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }); + SessionHandler.getTable(roomId, tableId).ifPresent(this::publish); + TimeUnit.SECONDS.sleep(1); } return null; } diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index d68e842327e..1e239242160 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -31,6 +31,7 @@ import java.awt.AWTEvent; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; +import static java.awt.Component.LEFT_ALIGNMENT; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; @@ -59,6 +60,7 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.GroupLayout; @@ -80,7 +82,6 @@ import javax.swing.border.EmptyBorder; import javax.swing.border.LineBorder; import javax.swing.plaf.basic.BasicSplitPaneDivider; import javax.swing.plaf.basic.BasicSplitPaneUI; - import mage.cards.Card; import mage.cards.action.ActionCallback; import mage.choices.Choice; @@ -100,9 +101,7 @@ import mage.client.dialog.PickChoiceDialog; import mage.client.dialog.PickNumberDialog; import mage.client.dialog.PickPileDialog; import mage.client.dialog.PreferencesDialog; - import static mage.client.dialog.PreferencesDialog.*; - import mage.client.dialog.ShowCardsDialog; import mage.client.game.FeedbackPanel.FeedbackMode; import mage.client.plugins.adapters.MageActionCallback; @@ -119,13 +118,11 @@ import mage.constants.Constants; import mage.constants.EnlargeMode; import mage.constants.PhaseStep; import mage.constants.PlayerAction; - import static mage.constants.PlayerAction.TRIGGER_AUTO_ORDER_ABILITY_FIRST; import static mage.constants.PlayerAction.TRIGGER_AUTO_ORDER_ABILITY_LAST; import static mage.constants.PlayerAction.TRIGGER_AUTO_ORDER_NAME_FIRST; import static mage.constants.PlayerAction.TRIGGER_AUTO_ORDER_NAME_LAST; import static mage.constants.PlayerAction.TRIGGER_AUTO_ORDER_RESET_ALL; - import mage.constants.Zone; import mage.game.events.PlayerQueryEvent; import mage.view.AbilityPickerView; @@ -534,8 +531,8 @@ public final class GamePanel extends javax.swing.JPanel { this.pnlReplay.setVisible(false); this.gameChatPanel.clear(); - SessionHandler.getGameChatId(gameId).ifPresent(uuid -> - this.gameChatPanel.connect(uuid)); + SessionHandler.getGameChatId(gameId).ifPresent(uuid + -> this.gameChatPanel.connect(uuid)); if (!SessionHandler.watchGame(gameId)) { removeGame(); } @@ -816,13 +813,15 @@ public final class GamePanel extends javax.swing.JPanel { cardsView.put(player.getTopCard().getId(), player.getTopCard()); handleGameInfoWindow(revealed, ShowType.REVEAL_TOP_LIBRARY, player.getName() + "'s top library card", cardsView); } - } else { + } else if (!players.isEmpty()) { logger.warn("Couldn't find player."); logger.warn(" uuid:" + player.getPlayerId()); logger.warn(" players:"); for (PlayAreaPanel p : players.values()) { logger.warn(String.valueOf(p)); } + } else { + // can happen at the game start before player list is initiated } } if (!menuNameSet) { @@ -1776,24 +1775,24 @@ public final class GamePanel extends javax.swing.JPanel { pnlReplay.setLayout(gl_pnlReplay); gl_pnlReplay.setHorizontalGroup( gl_pnlReplay.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(gl_pnlReplay.createSequentialGroup() - .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btnStopReplay, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnNextPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnSkipForward, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_pnlReplay.createSequentialGroup() + .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnStopReplay, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnNextPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnSkipForward, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) ); gl_pnlReplay.setVerticalGroup( gl_pnlReplay.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(btnSkipForward, 0, 0, Short.MAX_VALUE) - .addComponent(btnNextPlay, 0, 0, Short.MAX_VALUE) - .addComponent(btnStopReplay, 0, 0, Short.MAX_VALUE) - .addComponent(btnPlay, 0, 0, Short.MAX_VALUE) - .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 31, Short.MAX_VALUE) + .addComponent(btnSkipForward, 0, 0, Short.MAX_VALUE) + .addComponent(btnNextPlay, 0, 0, Short.MAX_VALUE) + .addComponent(btnStopReplay, 0, 0, Short.MAX_VALUE) + .addComponent(btnPlay, 0, 0, Short.MAX_VALUE) + .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 31, Short.MAX_VALUE) ); // Game info panel (buttons on the right panel) @@ -1867,8 +1866,8 @@ public final class GamePanel extends javax.swing.JPanel { } }; String[] phases = {"Untap", "Upkeep", "Draw", "Main1", - "Combat_Start", "Combat_Attack", "Combat_Block", "Combat_Damage", "Combat_End", - "Main2", "Cleanup", "Next_Turn"}; + "Combat_Start", "Combat_Attack", "Combat_Block", "Combat_Damage", "Combat_End", + "Main2", "Cleanup", "Next_Turn"}; for (String name : phases) { createPhaseButton(name, phasesMouseAdapter); } @@ -1905,46 +1904,46 @@ public final class GamePanel extends javax.swing.JPanel { javax.swing.GroupLayout gl_helperHandButtonsStackArea = new javax.swing.GroupLayout(pnlHelperHandButtonsStackArea); gl_helperHandButtonsStackArea.setHorizontalGroup( gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) - .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() - // .addGap(0) - .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) - .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() - .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) - .addComponent(helper, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(handContainer, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ) - .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) - .addComponent(pnlShortCuts, 410, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) - .addComponent(stackObjects, 410, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) - ) + .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() + // .addGap(0) + .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) + .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() + .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) + .addComponent(helper, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(handContainer, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ) - .addGap(0) - //.addComponent(jPhases, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() - .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE) - .addComponent(phasesContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - ))) + .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) + .addComponent(pnlShortCuts, 410, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) + .addComponent(stackObjects, 410, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) + ) + ) + .addGap(0) + //.addComponent(jPhases, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() + .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE) + .addComponent(phasesContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + ))) ); gl_helperHandButtonsStackArea.setVerticalGroup( gl_helperHandButtonsStackArea.createParallelGroup(Alignment.TRAILING) - .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() - .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) - .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE) - .addComponent(phasesContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() + .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) + .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE) + .addComponent(phasesContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + ) + //.addPreferredGap(ComponentPlacement.RELATED) + .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) + .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() + .addGap(2) + .addComponent(pnlShortCuts, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(stackObjects, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) ) - //.addPreferredGap(ComponentPlacement.RELATED) - .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING) - .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() - .addGap(2) - .addComponent(pnlShortCuts, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(stackObjects, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - ) - .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() - .addComponent(helper, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(handContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - ) + .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup() + .addComponent(helper, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(handContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) ) ) + ) ); pnlHelperHandButtonsStackArea.setLayout(gl_helperHandButtonsStackArea); @@ -1977,11 +1976,11 @@ public final class GamePanel extends javax.swing.JPanel { this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSplitPane0, javax.swing.GroupLayout.DEFAULT_SIZE, 1078, Short.MAX_VALUE) + .addComponent(jSplitPane0, javax.swing.GroupLayout.DEFAULT_SIZE, 1078, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSplitPane0, javax.swing.GroupLayout.DEFAULT_SIZE, 798, Short.MAX_VALUE) + .addComponent(jSplitPane0, javax.swing.GroupLayout.DEFAULT_SIZE, 798, Short.MAX_VALUE) ); } @@ -2433,7 +2432,7 @@ class ReplayTask extends SwingWorker> { protected Void doInBackground() throws Exception { while (!isCancelled()) { SessionHandler.nextPlay(gameId); - Thread.sleep(1000); + TimeUnit.SECONDS.sleep(1); } return null; } diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index 5a6be71f1a9..ae58b90a16b 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -1450,7 +1450,7 @@ class UpdateTablesTask extends SwingWorker> { if (!tables.isEmpty()) { this.publish(tables); } - Thread.sleep(3000); + TimeUnit.SECONDS.sleep(3); } return null; } @@ -1494,7 +1494,7 @@ class UpdatePlayersTask extends SwingWorker> { protected Void doInBackground() throws Exception { while (!isCancelled()) { this.publish(SessionHandler.getRoomUsers(roomId)); - Thread.sleep(3000); + TimeUnit.SECONDS.sleep(3); } return null; } @@ -1636,7 +1636,7 @@ class UpdateMatchesTask extends SwingWorker> { if (!matches.isEmpty()) { this.publish(matches); } - Thread.sleep(10000); + TimeUnit.SECONDS.sleep(10); } return null; } diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java index 27a93236c37..12367d4384c 100644 --- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java +++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java @@ -44,13 +44,12 @@ import java.util.Optional; import java.util.UUID; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Icon; import javax.swing.SwingWorker; import javax.swing.table.AbstractTableModel; - -import mage.cards.o.Opt; import mage.client.MageFrame; import mage.client.SessionHandler; import mage.client.chat.ChatPanelBasic; @@ -730,7 +729,7 @@ class UpdateTournamentTask extends SwingWorker { protected Void doInBackground() throws Exception { while (!isCancelled()) { this.publish(SessionHandler.getTournament(tournamentId)); - Thread.sleep(2000); + TimeUnit.SECONDS.sleep(2); } return null; } diff --git a/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java b/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java index d77d81ef09d..3ce0b81d7ec 100644 --- a/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java +++ b/Mage.Client/src/main/java/mage/client/util/audio/MusicPlayer.java @@ -1,7 +1,8 @@ package mage.client.util.audio; -import java.io.File; import java.awt.List; +import java.io.File; +import java.util.concurrent.TimeUnit; import javax.sound.sampled.*; import mage.client.constants.Constants; import mage.client.dialog.PreferencesDialog; @@ -75,7 +76,7 @@ public class MusicPlayer { player.breaked_out = true; player.breaked = true; try { - Thread.sleep(100); + TimeUnit.MILLISECONDS.sleep(100); } catch (Exception e) { log.error("Thread error: " + e); } @@ -119,7 +120,7 @@ public class MusicPlayer { public void run() { try { - Thread.sleep(100); + TimeUnit.MILLISECONDS.sleep(100); } catch (Exception e) { } while (!stopped) { @@ -130,7 +131,7 @@ public class MusicPlayer { PlayThread.start(); while (!(breaked || breaked_out)) { try { - Thread.sleep(10); + TimeUnit.MILLISECONDS.sleep(10); } catch (Exception e) { log.error("Thread error: " + e); } diff --git a/Mage.Client/src/main/java/mage/client/util/gui/BufferedImageBuilder.java b/Mage.Client/src/main/java/mage/client/util/gui/BufferedImageBuilder.java index 97e2c45741c..83b586d04db 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/BufferedImageBuilder.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/BufferedImageBuilder.java @@ -3,6 +3,7 @@ package mage.client.util.gui; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; +import java.util.concurrent.TimeUnit; /** * Utility class for creating BufferedImage object from Image instance. @@ -65,7 +66,7 @@ public class BufferedImageBuilder { }); while (!imageLoadStatus.widthDone && !imageLoadStatus.heightDone) { try { - Thread.sleep(300); + TimeUnit.MILLISECONDS.sleep(300); } catch (InterruptedException e) { } @@ -73,8 +74,9 @@ public class BufferedImageBuilder { } static class ImageLoadStatus { + public boolean widthDone = false; public boolean heightDone = false; } -} \ No newline at end of file +} diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java index cc75bff9cfc..394df55cfe8 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -12,6 +12,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.concurrent.TimeUnit; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JLayeredPane; @@ -33,6 +34,7 @@ import org.apache.log4j.Logger; import org.mage.card.arcane.Animation; import org.mage.card.arcane.CardPanel; import org.mage.card.arcane.CardPanelComponentImpl; +import org.mage.card.arcane.CardPanelRenderImpl; import org.mage.card.arcane.ManaSymbols; import org.mage.plugins.card.dl.DownloadGui; import org.mage.plugins.card.dl.DownloadJob; @@ -43,7 +45,6 @@ import org.mage.plugins.card.dl.sources.GathererSets; import org.mage.plugins.card.dl.sources.GathererSymbols; import org.mage.plugins.card.images.ImageCache; import org.mage.plugins.card.info.CardInfoPaneImpl; -import org.mage.card.arcane.CardPanelRenderImpl; /** * {@link CardPlugin} implementation. @@ -108,10 +109,10 @@ public class CardPluginImpl implements CardPlugin { cardWidthMin = (int) GUISizeHelper.battlefieldCardMinDimension.getWidth(); cardWidthMax = (int) GUISizeHelper.battlefieldCardMaxDimension.getWidth(); } - + /** - * Temporary card rendering shim. Split card rendering isn't implemented yet, so - * use old component based rendering for the split cards. + * Temporary card rendering shim. Split card rendering isn't implemented + * yet, so use old component based rendering for the split cards. */ private CardPanel makePanel(CardView view, UUID gameId, boolean loadImage, ActionCallback callback, boolean isFoil, Dimension dimension) { String fallback = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_RENDERING_FALLBACK, "false"); @@ -584,7 +585,7 @@ public class CardPluginImpl implements CardPlugin { Animation.showCard(card, count > 0 ? count : 1); try { while ((card).getAlpha() + 0.05f < 1) { - Thread.sleep(30); + TimeUnit.MILLISECONDS.sleep(30); } } catch (Exception e) { e.printStackTrace(); @@ -598,7 +599,7 @@ public class CardPluginImpl implements CardPlugin { Animation.hideCard(card, count > 0 ? count : 1); try { while ((card).getAlpha() - 0.05f > 0) { - Thread.sleep(30); + TimeUnit.MILLISECONDS.sleep(30); } } catch (Exception e) { e.printStackTrace(); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java index 2799f503aa3..e7750f0801a 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GrabbagImageSource.java @@ -29,6 +29,7 @@ package org.mage.plugins.card.dl.sources; import java.io.IOException; import java.util.HashMap; +import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; import org.mage.plugins.card.images.CardDownloadData; @@ -1697,7 +1698,7 @@ public class GrabbagImageSource implements CardImageSource { public void doPause(String httpImageUrl) { if (!httpImageUrl.startsWith("/MTG")) { try { - Thread.sleep(2000); + TimeUnit.SECONDS.sleep(2); } catch (InterruptedException ex) { } } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java index 047bb90f240..d75337f6bb4 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java @@ -24,8 +24,7 @@ * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. -*/ - + */ package org.mage.plugins.card.dl.sources; import java.io.BufferedReader; @@ -41,6 +40,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import java.util.prefs.Preferences; import mage.client.MageFrame; import mage.client.dialog.PreferencesDialog; @@ -271,12 +271,12 @@ public class WizardCardsImageSource implements CardImageSource { public String getNextHttpImageUrl() { return null; } - + @Override public String getFileForHttpImage(String httpImageUrl) { return null; } - + private Map getSetLinks(String cardSet) { ConcurrentHashMap setLinks = new ConcurrentHashMap<>(); ExecutorService executor = Executors.newFixedThreadPool(10); @@ -289,7 +289,7 @@ public class WizardCardsImageSource implements CardImageSource { int firstMultiverseIdLastPage = 0; Pages: while (page < 999) { - String searchUrl = "http://gatherer.wizards.com/Pages/Search/Default.aspx?page=" + page +"&output=spoiler&method=visual&action=advanced&set=+[%22" + URLSetName + "%22]"; + String searchUrl = "http://gatherer.wizards.com/Pages/Search/Default.aspx?page=" + page + "&output=spoiler&method=visual&action=advanced&set=+[%22" + URLSetName + "%22]"; Document doc = getDocument(searchUrl); Elements cardsImages = doc.select("img[src^=../../Handlers/]"); if (cardsImages.isEmpty()) { @@ -320,7 +320,7 @@ public class WizardCardsImageSource implements CardImageSource { while (!executor.isTerminated()) { try { - Thread.sleep(1000); + TimeUnit.SECONDS.sleep(1); } catch (InterruptedException ie) { } } @@ -339,7 +339,7 @@ public class WizardCardsImageSource implements CardImageSource { int proxyPort = Integer.parseInt(prefs.get("proxyPort", "0")); URL url = new URL(urlString); Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyServer, proxyPort)); - HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy); + HttpURLConnection uc = (HttpURLConnection) url.openConnection(proxy); uc.connect(); @@ -359,7 +359,7 @@ public class WizardCardsImageSource implements CardImageSource { Document landDoc = getDocument(urlLandDocument); Elements variations = landDoc.select("a.variationlink"); Map links = new HashMap<>(); - if(!variations.isEmpty()) { + if (!variations.isEmpty()) { int landNumber = 1; for (Element variation : variations) { Integer landMultiverseId = Integer.parseInt(variation.attr("onclick").replaceAll("[^\\d]", "")); @@ -374,7 +374,7 @@ public class WizardCardsImageSource implements CardImageSource { } private static String generateLink(int landMultiverseId) { - return "/Handlers/Image.ashx?multiverseid=" +landMultiverseId + "&type=card"; + return "/Handlers/Image.ashx?multiverseid=" + landMultiverseId + "&type=card"; } private int getLocalizedMultiverseId(String preferedLanguage, Integer multiverseId) throws IOException { @@ -396,7 +396,7 @@ public class WizardCardsImageSource implements CardImageSource { Document cardLanguagesDoc = getDocument(cardLanguagesUrl); Elements languageTableRows = cardLanguagesDoc.select("tr.cardItem"); HashMap localizedIds = new HashMap<>(); - if(!languageTableRows.isEmpty()) { + if (!languageTableRows.isEmpty()) { for (Element languageTableRow : languageTableRows) { Elements languageTableColumns = languageTableRow.select("td"); Integer localizedId = Integer.parseInt(languageTableColumns.get(0).select("a").first().attr("href").replaceAll("[^\\d]", "")); @@ -408,14 +408,14 @@ public class WizardCardsImageSource implements CardImageSource { } private String normalizeName(String name) { - //Split card - if(name.contains("//")) { - name = name.substring(0, name.indexOf('(') - 1); - } - //Special timeshifted name - if(name.startsWith("XX")) { - name = name.substring(name.indexOf('(') + 1, name.length() - 1); - } + //Split card + if (name.contains("//")) { + name = name.substring(0, name.indexOf('(') - 1); + } + //Special timeshifted name + if (name.startsWith("XX")) { + name = name.substring(name.indexOf('(') + 1, name.length() - 1); + } return name.replace("\u2014", "-").replace("\u2019", "'") .replace("\u00C6", "AE").replace("\u00E6", "ae") .replace("\u00C3\u2020", "AE") @@ -445,7 +445,7 @@ public class WizardCardsImageSource implements CardImageSource { if (link == null) { int length = collectorId.length(); - if (Character.isLetter(collectorId.charAt(length -1))) { + if (Character.isLetter(collectorId.charAt(length - 1))) { length -= 1; } @@ -507,17 +507,17 @@ public class WizardCardsImageSource implements CardImageSource { } } - + @Override public int getTotalImages() { return -1; } - + @Override public boolean isTokenSource() { return false; } - + @Override public void doPause(String httpImageUrl) { } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index 22d2d9f5ba9..e93a4f881d4 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java @@ -1,5 +1,22 @@ package org.mage.plugins.card.images; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.*; +import java.nio.file.AccessDeniedException; +import java.util.*; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.stream.FileImageOutputStream; +import javax.swing.*; import mage.cards.repository.CardInfo; import mage.client.constants.Constants; import mage.client.dialog.PreferencesDialog; @@ -15,23 +32,6 @@ import org.mage.plugins.card.dl.sources.*; import org.mage.plugins.card.properties.SettingsManager; import org.mage.plugins.card.utils.CardImageUtils; -import javax.imageio.IIOImage; -import javax.imageio.ImageIO; -import javax.imageio.ImageWriteParam; -import javax.imageio.ImageWriter; -import javax.imageio.stream.FileImageOutputStream; -import javax.swing.*; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.*; -import java.net.*; -import java.nio.file.AccessDeniedException; -import java.util.*; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicBoolean; - public class DownloadPictures extends DefaultBoundedRangeModel implements Runnable { private static final Logger logger = Logger.getLogger(DownloadPictures.class); @@ -316,7 +316,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab List cardsToDownload = Collections.synchronizedList(new ArrayList<>()); allCardsUrls.parallelStream().forEach(card -> { TFile file = new TFile(CardImageUtils.generateImagePath(card)); - logger.debug(card.getName() + " (is_token=" + card.isToken() + "). Image is here:" + file.getAbsolutePath() + " (exists=" + file.exists() +')'); + logger.debug(card.getName() + " (is_token=" + card.isToken() + "). Image is here:" + file.getAbsolutePath() + " (exists=" + file.exists() + ')'); if (!file.exists()) { logger.debug("Missing: " + file.getAbsolutePath()); cardsToDownload.add(card); @@ -345,9 +345,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab return list; } - - try(InputStreamReader input = new InputStreamReader(in); - BufferedReader reader = new BufferedReader(input)) { + try (InputStreamReader input = new InputStreamReader(in); + BufferedReader reader = new BufferedReader(input)) { String line = reader.readLine(); while (line != null) { @@ -486,7 +485,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab executor.shutdown(); while (!executor.isTerminated()) { try { - Thread.sleep(1000); + TimeUnit.SECONDS.sleep(1); } catch (InterruptedException ie) { } }