/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.tools.workbench.mappingsplugin.ui.project; import java.util.prefs.Preferences; import javax.swing.JComponent; import javax.swing.JOptionPane; import org.eclipse.persistence.tools.workbench.framework.context.WorkbenchContext; import org.eclipse.persistence.tools.workbench.framework.resources.ResourceRepository; import org.eclipse.persistence.tools.workbench.framework.uitools.SwingComponentFactory; import org.eclipse.persistence.tools.workbench.mappingsmodel.meta.MWClass; import org.eclipse.persistence.tools.workbench.uitools.app.PropertyValueModel; import org.eclipse.persistence.tools.workbench.uitools.app.SimplePropertyValueModel; import org.eclipse.persistence.tools.workbench.utility.string.StringTools; public final class ZeroArgConstructorPreference { public static final String MAINTAIN_ZERO_ARGUMENT_CONSTRUCTOR_PREFERENCE = "mantain zero argument constructor"; public static final String YES = "true"; public static final String NO = "false"; public static final String PROMPT = "prompt"; public static final String DEFAULT = PROMPT; private ZeroArgConstructorPreference() { super(); } public static void optionallyAddZeroArgumentConstructor(MWClass mwClass, WorkbenchContext context) { String maintainZeroArgCon = context.getApplicationContext().getPreferences().get(MAINTAIN_ZERO_ARGUMENT_CONSTRUCTOR_PREFERENCE, DEFAULT).intern(); if (maintainZeroArgCon == YES || (maintainZeroArgCon == PROMPT && promptForResponse(mwClass, context))) { mwClass.addZeroArgumentConstructor(); } } private static boolean promptForResponse(MWClass mwClass, WorkbenchContext context) { Preferences preferences = context.getApplicationContext().getPreferences(); ResourceRepository resourceRepository = context.getApplicationContext().getResourceRepository(); // build dialog panel String title = resourceRepository.getString("PREFERENCES.MAPPINGS.CLASS.MAINTAIN_ZERO_ARGUMENT_CONSTRUCTOR_DIALOG.title"); String message = resourceRepository.getString( "PREFERENCES.MAPPINGS.CLASS.MAINTAIN_ZERO_ARGUMENT_CONSTRUCTOR_DIALOG.message", new Object[] {mwClass.getName(), StringTools.CR} ); PropertyValueModel dontAskAgainHolder = new SimplePropertyValueModel(new Boolean(false)); JComponent dontAskAgainPanel = SwingComponentFactory.buildDoNotAskAgainPanel(message, dontAskAgainHolder, resourceRepository); // prompt user for response int response = JOptionPane.showConfirmDialog( context.getCurrentWindow(), dontAskAgainPanel, title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE ); if (dontAskAgainHolder.getValue().equals(Boolean.TRUE)) { String preference = PROMPT; if (response == JOptionPane.YES_OPTION) { preference = YES; } else if (response == JOptionPane.NO_OPTION) { preference = NO; } preferences.put(MAINTAIN_ZERO_ARGUMENT_CONSTRUCTOR_PREFERENCE, preference); } return response == JOptionPane.YES_OPTION; } }