package magic.ui.screen; import java.awt.Color; import javax.swing.JLabel; import javax.swing.SwingConstants; import magic.awt.MagicFont; import magic.ui.MagicImages; import magic.ui.theme.Theme; import magic.ui.utility.MagicStyle; import magic.ui.widget.TexturedPanel; import magic.ui.widget.throbber.AbstractThrobber; import magic.ui.widget.throbber.ImageThrobber; import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") class ScreenLoadingPanel extends TexturedPanel { private final Runnable runnable; private final boolean needsCardData; private AbstractThrobber throbber; private final JLabel lbl = new JLabel(); ScreenLoadingPanel(Runnable r, boolean cdata) { this.needsCardData = cdata; this.runnable = r; setDefaultProperties(); setLayout(); } void setMessage(String text) { lbl.setText("... " + text + " ..."); } private void setLayout() { setLayout(new MigLayout("flowy, ay center", "[fill, grow, center]")); add(throbber); add(lbl); } private void setDefaultProperties() { final Color refBG = MagicStyle.getTheme().getColor(Theme.COLOR_TITLE_BACKGROUND); final Color thisBG = MagicStyle.getTranslucentColor(refBG, 220); setBackground(thisBG.darker()); throbber = new ImageThrobber.Builder( MagicImages.loadImage("round-shield.png")).build(); lbl.setFont(MagicFont.BelerenBold.get().deriveFont(22f)); lbl.setForeground(Color.WHITE); lbl.setHorizontalAlignment(SwingConstants.CENTER); lbl.setText("..."); // need to set some default text for smooth layout. } Runnable getRunnable() { return runnable; } boolean isCardDataNeeded() { return needsCardData; } }