content: /*******************************************************************************
   * Copyright (c) 2000, 2007 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.wst.jsdt.internal.ui.refactoring.reorg;
  
  import org.eclipse.ltk.core.refactoring.Refactoring;
  import org.eclipse.ltk.core.refactoring.RefactoringStatus;
  import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.events.SelectionAdapter;
  import org.eclipse.swt.events.SelectionEvent;
  import org.eclipse.swt.layout.GridData;
  import org.eclipse.swt.widgets.Button;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenamePackageProcessor;
  import org.eclipse.wst.jsdt.internal.ui.IJavaHelpContextIds;
  import org.eclipse.wst.jsdt.internal.ui.JavaPluginImages;
  import org.eclipse.wst.jsdt.internal.ui.refactoring.RefactoringMessages;
  import org.eclipse.wst.jsdt.internal.ui.util.RowLayouter;
  
  
  public class RenamePackageWizard extends RenameRefactoringWizard {
  	
  	public RenamePackageWizard(Refactoring refactoring) {
  		super(refactoring, 
  			RefactoringMessages.RenamePackageWizard_defaultPageTitle, 
  			RefactoringMessages.RenamePackageWizard_inputPage_description, 
  			JavaPluginImages.DESC_WIZBAN_REFACTOR_PACKAGE,
  			IJavaHelpContextIds.RENAME_PACKAGE_WIZARD_PAGE);
  	}
  	
  	protected RenameInputWizardPage createInputPage(String message, String initialSetting) {
  		return new RenamePackageInputWizardPage(message, IJavaHelpContextIds.RENAME_PACKAGE_WIZARD_PAGE, initialSetting) {
  			protected RefactoringStatus validateTextField(String text) {
  				return validateNewName(text);
  			}	
  		};
  	}
  
  	private static class RenamePackageInputWizardPage extends RenameInputWizardPage {
  		
  		private Button fRenameSubpackages;
  		public RenamePackageInputWizardPage(String message, String contextHelpId, String initialValue) {
  			super(message, contextHelpId, true, initialValue);
  		}
  	
  		protected void addAdditionalOptions(Composite composite, RowLayouter layouter) {
  			fRenameSubpackages= new Button(composite, SWT.CHECK);
  			fRenameSubpackages.setText(RefactoringMessages.RenamePackageWizard_rename_subpackages);
  			boolean subpackagesSelection= getBooleanSetting(RenameRefactoringWizard.PACKAGE_RENAME_SUBPACKAGES, getRenamePackageProcessor().getRenameSubpackages());
  			fRenameSubpackages.setSelection(subpackagesSelection);
  			getRenamePackageProcessor().setRenameSubpackages(subpackagesSelection);
  			fRenameSubpackages.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  			fRenameSubpackages.addSelectionListener(new SelectionAdapter(){
  				public void widgetSelected(SelectionEvent e) {
  					getRenamePackageProcessor().setRenameSubpackages(fRenameSubpackages.getSelection());
  				}
  			});
  			layouter.perform(fRenameSubpackages);
  			
  			Label separator= new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL);
  			separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  			layouter.perform(separator);
  		}
  		
  		public void dispose() {
  			if (saveSettings() && fRenameSubpackages.isEnabled())
  				saveBooleanSetting(RenameRefactoringWizard.PACKAGE_RENAME_SUBPACKAGES, fRenameSubpackages);
  			super.dispose();
  		}
  		
  		private RenamePackageProcessor getRenamePackageProcessor() {
  			return (RenamePackageProcessor) ((RenameRefactoring) getRefactoring()).getProcessor();
  		}
  	}
  }
  