package com.rapidminer.gui.properties; import java.awt.Dialog.ModalityType; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.function.BooleanSupplier; import javax.swing.JPanel; import com.rapidminer.RapidMiner; import com.rapidminer.core.license.ProductConstraintManager; import com.rapidminer.gui.ApplicationFrame; import com.rapidminer.gui.tools.dialogs.ButtonDialog; import com.rapidminer.gui.tools.dialogs.ButtonDialog.ButtonDialogBuilder; import com.rapidminer.gui.tools.dialogs.ButtonDialog.ButtonDialogBuilder.DefaultButtons; import com.rapidminer.license.StudioLicenseConstants; import com.rapidminer.tools.ParameterService; /** * Listener for the {@link SettingsDialog} that checks if additional permissions are activated. In * case of an activation a dialog with the warning is shown, but only once per session. * * @author Joao Pedro Pinheiro * @since 7.4 */ public class AdditionalPermissionsListener extends WindowAdapter { /** stores if the beta features are activated when the listener is constructed */ private boolean permissionsActiveBefore; /** * Constructs a Listener for extra permissions activation */ AdditionalPermissionsListener() { permissionsActiveBefore = Boolean.parseBoolean( ParameterService.getParameterValue(RapidMiner.PROPERTY_RAPIDMINER_UPDATE_ADDITIONAL_PERMISSIONS)); } @Override public void windowClosed(WindowEvent e) { boolean permissionsActiveNow = Boolean.parseBoolean( ParameterService.getParameterValue(RapidMiner.PROPERTY_RAPIDMINER_UPDATE_ADDITIONAL_PERMISSIONS)); if (!permissionsActiveBefore && permissionsActiveNow) { BooleanSupplier isAllowed = () -> ProductConstraintManager.INSTANCE.getActiveLicense() .getPrecedence() >= StudioLicenseConstants.UNLIMITED_LICENSE_PRECEDENCE || ProductConstraintManager.INSTANCE.isTrialLicense(); if (ProductConstraintManager.INSTANCE.isInitialized() && isAllowed.getAsBoolean()) { ButtonDialog dialog = new ButtonDialogBuilder("additional_permissions") .setOwner(ApplicationFrame.getApplicationFrame()) .setButtons(DefaultButtons.OK_BUTTON, DefaultButtons.CANCEL_BUTTON) .setModalityType(ModalityType.APPLICATION_MODAL).setContent(new JPanel(), ButtonDialog.DEFAULT_SIZE) .build(); dialog.getRootPane().getDefaultButton().setText("Grant"); dialog.getRootPane().getDefaultButton().setMnemonic('G'); dialog.setVisible(true); if (!dialog.wasConfirmed()) { ParameterService.setParameterValue(RapidMiner.PROPERTY_RAPIDMINER_UPDATE_ADDITIONAL_PERMISSIONS, String.valueOf(false)); ParameterService.saveParameters(); } } else { ParameterService.setParameterValue(RapidMiner.PROPERTY_RAPIDMINER_UPDATE_ADDITIONAL_PERMISSIONS, String.valueOf(false)); ParameterService.saveParameters(); ButtonDialog smallLicenseDialog = new ButtonDialogBuilder("small_license") .setOwner(ApplicationFrame.getApplicationFrame()).setButtons(DefaultButtons.OK_BUTTON) .setModalityType(ModalityType.APPLICATION_MODAL).setContent(new JPanel(), ButtonDialog.MESSAGE) .build(); smallLicenseDialog.setVisible(true); } } } }