package magic.ui.screen.images.download; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import magic.translate.MText; import magic.ui.FontsAndBorders; import magic.ui.MagicImages; import magic.ui.ScreenController; import magic.ui.theme.Theme; import magic.ui.utility.MagicStyle; import magic.ui.widget.TexturedPanel; import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") class DownloadDialogPanel extends TexturedPanel implements PropertyChangeListener { private static final String _S1 = "Setup card images"; private final DialogMainPanel mainPanel; DownloadDialogPanel() { setPreferredSize(new Dimension(460, 520)); setBorder( BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(Color.DARK_GRAY), BorderFactory.createMatteBorder(0, 8, 8, 8, MagicStyle.getTheme().getColor(Theme.COLOR_TITLE_BACKGROUND))) ); mainPanel = getMainPanel(); setLayout(new MigLayout("flowy, insets 0")); add(getDialogCaptionLabel(), "w 100%, h 26!"); add(mainPanel, "w 100%, h 100%"); doSetStyle(this); setOpaque(false); setBackground(MagicStyle.getTranslucentColor(Color.WHITE, 240)); } private DialogMainPanel getMainPanel() { final DialogMainPanel panel = new DialogMainPanel(); panel.addPropertyChangeListener(DialogMainPanel.CP_CLOSE, this); panel.addPropertyChangeListener(DialogMainPanel.CP_RUN_BACKGROUND, this); return panel; } private JLabel getDialogCaptionLabel() { final JLabel lbl = new JLabel(MText.get(_S1)); lbl.setOpaque(true); lbl.setBackground(MagicStyle.getTheme().getColor(Theme.COLOR_TITLE_BACKGROUND)); lbl.setForeground(MagicStyle.getTheme().getColor(Theme.COLOR_TITLE_FOREGROUND)); lbl.setFont(FontsAndBorders.FONT1.deriveFont(14f)); lbl.setHorizontalAlignment(SwingConstants.CENTER); return lbl; } private void doCloseScreen() { MagicImages.clearCache(); ScreenController.closeActiveScreen(false); } private void doHideScreen() { MagicImages.clearCache(); ScreenController.hideActiveScreen(); } @Override public void propertyChange(PropertyChangeEvent evt) { switch (evt.getPropertyName()) { case DialogMainPanel.CP_CLOSE: doCloseScreen(); break; case DialogMainPanel.CP_RUN_BACKGROUND: doHideScreen(); break; } } boolean isBusy() { return mainPanel.isBusy(); } private void doSetStyle(JPanel panel) { synchronized (panel.getTreeLock()) { for (Component c : panel.getComponents()) { if (c instanceof JPanel) { doSetStyle((JPanel) c); } c.setFocusable(false); } if (this != panel) { panel.setOpaque(false); } } } }