package org.limewire.ui.swing.pro; import java.awt.Dimension; import javax.swing.JDialog; import javax.swing.JLayeredPane; import javax.swing.SwingUtilities; import org.limewire.concurrent.FutureEvent; import org.limewire.core.api.Application; import org.limewire.listener.EventListener; import org.limewire.listener.SwingEDTEvent; import org.limewire.ui.swing.components.FocusJOptionPane; import org.limewire.ui.swing.components.PanelResizer; import org.limewire.ui.swing.settings.InstallSettings; import org.limewire.ui.swing.util.GuiUtils; import org.limewire.ui.swing.util.I18n; import com.google.inject.Inject; import com.google.inject.Provider; public class ProNagController { private final boolean isFirstLaunch; private final Application application; private final ProNag proNag; private final Provider<OldStyleProNag> oldProNag; private JLayeredPane nagContainer; private boolean allowNagFromStartup; private boolean nagShown; @Inject ProNagController(Application application, ProNag proNag, Provider<OldStyleProNag> oldProNag) { isFirstLaunch = !InstallSettings.UPGRADED_TO_5.getValue(); this.proNag = proNag; this.application = application; this.oldProNag = oldProNag; } public void allowProNag(JLayeredPane layeredPane) { if (!application.isProVersion()) { nagContainer = layeredPane; allowNagFromStartup = true; } showNagIfOk(); } private void showNagIfOk() { if(allowNagFromStartup && !nagShown) { assert SwingUtilities.isEventDispatchThread(); nagShown = true; if(!InstallSettings.USE_OLD_PRO_DIALOG.getValue()) { proNag.loadContents(isFirstLaunch).addFutureListener(new EventListener<FutureEvent<Void>>() { @Override @SwingEDTEvent public void handleEvent(FutureEvent<Void> event) { switch (event.getType()) { case SUCCESS: nagContainer.addComponentListener(new PanelResizer(proNag)); nagContainer.add(proNag, JLayeredPane.MODAL_LAYER); proNag.resize(); } } }); } else { OldStyleProNag nag = oldProNag.get(); JDialog dialog = FocusJOptionPane.createDialog(I18n.tr("Upgrade to Pro!"), null, nag); dialog.setLocationRelativeTo(GuiUtils.getMainFrame()); dialog.setSize(new Dimension(380, 240)); dialog.getRootPane().setDefaultButton(nag.getDefaultButton()); dialog.setModal(true); dialog.setVisible(true); } } } }