/******************************************************************************* * Copyright (c) 2007, 2011 Spring IDE Developers * 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: * Spring IDE Developers - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.beans.ui.refactoring.ltk; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.ltk.ui.refactoring.RefactoringWizard; import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; /** * @author Christian Dupuis * @author Torsten Juergeleit * @author Martin Lippert * @since 2.0 */ public class RenameIdRefactoringInputPage extends UserInputWizardPage { private Text nameField; public RenameIdRefactoringInputPage(String name) { super(name); } public void createControl(Composite parent) { final RenameIdRefactoring refactoring = getRenameIdRefactoring(); Composite result = new Composite(parent, SWT.NONE); setControl(result); GridLayout layout = new GridLayout(); layout.numColumns = 2; result.setLayout(layout); Label label = new Label(result, SWT.NONE); label.setText("&" + refactoring.getType().getType() + " id:"); nameField = createNameField(result); GridData data = new GridData(); data.horizontalAlignment = GridData.END; final Button referenceButton = new Button(result, SWT.CHECK); referenceButton.setText("&Update references"); data = new GridData(GridData.FILL_HORIZONTAL); data.horizontalSpan = 2; data.verticalIndent = 2; referenceButton.setLayoutData(data); nameField.setText(refactoring.getBeanId()); nameField.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { handleInputChanged(); } }); referenceButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { ((RefactoringWizard) getWizard()) .setForcePreviewReview(referenceButton.getSelection()); refactoring.setUpdateReferences(referenceButton.getSelection()); } }); referenceButton.setSelection(true); ((RefactoringWizard) getWizard()).setForcePreviewReview(true); nameField.setFocus(); nameField.selectAll(); handleInputChanged(); } private Text createNameField(Composite result) { Text field = new Text(result, SWT.SINGLE | SWT.LEFT | SWT.BORDER); field.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); return field; } private RenameIdRefactoring getRenameIdRefactoring() { return (RenameIdRefactoring) getRefactoring(); } void handleInputChanged() { RefactoringStatus status = new RefactoringStatus(); RenameIdRefactoring refactoring = getRenameIdRefactoring(); status.merge(refactoring.setBeanId(nameField.getText())); setPageComplete(!status.hasError()); int severity = status.getSeverity(); String message = status.getMessageMatchingSeverity(severity); if (severity >= RefactoringStatus.INFO) { setMessage(message, severity); } else { setMessage("", NONE); //$NON-NLS-1$ } } }