package com.redhat.ceylon.eclipse.code.refactor; 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.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; public class ChangeVersionInputPage extends UserInputWizardPage { public ChangeVersionInputPage(String name) { super(name); } public void createControl(Composite parent) { Composite result = new Composite(parent, SWT.NONE); setControl(result); GridLayout layout = new GridLayout(); layout.numColumns = 2; result.setLayout(layout); Label title = new Label(result, SWT.LEFT); title.setText("Change " + getRenameVersionRefactoring().getCount() + " occurrences of module version \"" + getRenameVersionRefactoring().getModule().getVersion() + "\""); GridData gd = new GridData(); gd.horizontalSpan=2; title.setLayoutData(gd); Label label = new Label(result, SWT.RIGHT); label.setText("Change to: "); final Text text = new Text(result, SWT.SINGLE|SWT.BORDER); text.setText(getRenameVersionRefactoring().getNewVersion()); text.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); text.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent event) { String name = text.getText(); validateVersion(name); getRenameVersionRefactoring().setNewVersion(name); } }); text.addKeyListener(new SubwordIterator(text)); text.selectAll(); text.setFocus(); } private ChangeVersionRefactoring getRenameVersionRefactoring() { return (ChangeVersionRefactoring) getRefactoring(); } void validateVersion(String name) { if (name.isEmpty()) { setErrorMessage("Empty version"); setPageComplete(false); } else { setErrorMessage(null); setPageComplete(true); } } }