/******************************************************************************* * Copyright © 2008, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.ide.rui.internal.nls; import java.util.HashMap; import java.util.List; import org.eclipse.edt.ide.rui.internal.HelpContextIDs; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; public class EditLocaleWizardPage extends NewLocaleWizardPage { private String originalCode; private String originalDescription; private String originalRuntimeCode; /** * @param pageName */ public EditLocaleWizardPage(String pageName, String title, Locale locale, List currentCodes, List currentDescriptions, HashMap combinations) { super(pageName, title, locale, currentCodes, currentDescriptions, combinations); originalCode = locale.getCode(); originalDescription = locale.getDescription(); originalRuntimeCode = locale.getRuntimeLocaleCode(); } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { Composite twoCols = new Composite(parent, SWT.NONE); createDialogControls(twoCols); setControl(twoCols); setPageComplete(validatePage()); PlatformUI.getWorkbench().getHelpSystem().setHelp(twoCols, HelpContextIDs.RUI_New_Locale_Wizard); Dialog.applyDialogFont(twoCols); } protected void createDialogControls(Composite twoCols) { super.createDialogControls(twoCols); // set defaults code.setText(locale.getCode()); description.setText(locale.getDescription()); runtimeLocaleChoicesCombo.setText(LocaleUtility.getRuntimeDescriptionForCode(locale.getRuntimeLocaleCode())); } protected boolean validatePage() { String error = ""; String code = this.code.getText(); String description = this.description.getText(); String runtimeCode = LocaleUtility.getRuntimeCodeForDescription(this.runtimeLocaleChoicesCombo.getText()); if (this.description.getText().equals("")) { //$NON-NLS-1$ error = RUINlsStrings.NewLocaleDialog_Please_enter_a_unique_locale_descri_; this.description.setFocus(); } else { if (code.equals("")) { //$NON-NLS-1$ error = RUINlsStrings.NewLocaleDialog_Please_enter_a_unique_locale_cod_; this.code.setFocus(); } else { if (error.length() == 0) { if (!description.equalsIgnoreCase(originalDescription)) { if (currentDescriptions.contains(this.description.getText())) { error = RUINlsStrings.NewLocaleDialog_The_description_is_not_uniqu_; this.description.setFocus(); } } } /** * if the user/runtime locale combination is unique then allow duplicate user locale code */ if (!code.equalsIgnoreCase(originalCode) || !runtimeCode.equalsIgnoreCase(originalRuntimeCode)) { if (this.currentUserLocaleRuntimeLocaleCombinations.containsKey(code)) { List runtimes = (List)this.currentUserLocaleRuntimeLocaleCombinations.get(code); if (runtimes.contains(runtimeCode)) { error = RUINlsStrings.NewLocaleDialog_locale_combo_already_exists; this.code.setFocus(); } } } } } if (error.length() > 0) { setMessage(error, IMessageProvider.ERROR); return false; } else { setMessage(null); locale.setCode(code); locale.setDescription(description); locale.setRuntimeLocaleCode(runtimeCode); return true; } } }