/**
* Copyright (c) 2008 Aptana, Inc.
*
* 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. If redistributing this code,
* this entire header must remain intact.
*/
package org.rubypeople.rdt.refactoring.ui.pages;
import org.eclipse.jface.dialogs.IMessageProvider;
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.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.rubypeople.rdt.internal.refactoring.RefactoringMessages;
import org.rubypeople.rdt.refactoring.core.extractconstant.ConstantExtractor;
import org.rubypeople.rdt.refactoring.ui.LabeledTextField;
import org.rubypeople.rdt.refactoring.util.NameValidator;
public class ExtractConstantPage extends UserInputWizardPage {
private ConstantExtractor extractor;
public ExtractConstantPage(ConstantExtractor extractor) {
super(RefactoringMessages.ExtractConstantWizard_defaultPageTitle);
setDescription(RefactoringMessages.ExtractConstantInputPage_enter_name);
this.extractor = extractor;
}
public void createControl(Composite parent) {
Composite control = new Composite(parent, SWT.None);
setControl(control);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.verticalSpacing = 8;
control.setLayout(layout);
final LabeledTextField labeledText = new LabeledTextField(control, RefactoringMessages.ExtractConstantInputPage_constant_name, extractor.getConstantName());
GridData layoutData = new GridData(GridData.FILL_HORIZONTAL);
labeledText.setLayoutData(layoutData);
labeledText.getText().addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
String newName = labeledText.getText().getText();
extractor.setConstantName(newName);
checkInput(newName);
}
private void checkInput(String newName) {
if (NameValidator.isValidConstantName(newName)) {
ExtractConstantPage.this.setMessage(null);
ExtractConstantPage.this.setPageComplete(true);
} else {
ExtractConstantPage.this.setMessage(RefactoringMessages.bind(RefactoringMessages.ExtractConstantInputPage_invalid_name, newName), IMessageProvider.ERROR);
ExtractConstantPage.this.setPageComplete(false);
}
}
});
final Button replaceAllInstance = new Button(control, SWT.CHECK);
GridData checkData = new GridData();
replaceAllInstance.setLayoutData(checkData);
replaceAllInstance.setText(RefactoringMessages.ExtractConstantInputPage_replace_all_occurrences);
replaceAllInstance.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
extractor.setReplaceAllInstances(replaceAllInstance.getSelection());
}
});
}
}