/**
* Copyright (c) 2012 by JP Moresmau
* This code is made available under the terms of the Eclipse Public License,
* version 1.0 (EPL). See http://www.eclipse.org/legal/epl-v10.html
*/
package net.sf.eclipsefp.haskell.ui.internal.refactoring.wizards;
import net.sf.eclipsefp.haskell.ui.internal.refactoring.RenameDelegate;
import net.sf.eclipsefp.haskell.ui.internal.util.UITexts;
import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
import org.eclipse.osgi.util.NLS;
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.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.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
* User page for rename: type in the new name and the scope of replacement (project or workspace)
* @author JP Moresmau
*
*/
public class RenamePage1 extends UserInputWizardPage {
private final RenameDelegate delegate;
public RenamePage1( final RenameDelegate delegate ) {
super( UITexts.renameProcessor_name );
this.delegate=delegate;
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
@Override
public void createControl( final Composite arg0 ) {
Composite c=new Composite( arg0,SWT.NONE );
c.setLayout( new GridLayout(3,false) );
Label l=new Label(c,SWT.NONE);
l.setText( UITexts.renameProcessor_newname );
final Text t=new Text(c,SWT.BORDER);
GridData gd=new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan=2;
t.setLayoutData( gd );
boolean valid=false;
// we found something to rename
if (this.delegate.getNewName()!=null){
t.setText( this.delegate.getNewName() );
valid=true;
} else {
setErrorMessage( UITexts.renameProcessor_empty );
}
t.setFocus();
t.selectAll();
l=new Label(c,SWT.NONE);
gd=new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.horizontalSpan=2;
l.setLayoutData( gd );
l.setText( UITexts.renameProcessor_scope );
final Button bProject=new Button( c, SWT.RADIO );
gd=new GridData(GridData.FILL_HORIZONTAL);
bProject.setLayoutData( gd );
bProject.setText(NLS.bind( UITexts.renameProcessor_scope_project,delegate.getInfo().getSourceFile().getProject().getName()));
bProject.setSelection( true );
l=new Label(c,SWT.NONE);
gd=new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.horizontalSpan=2;
l.setLayoutData( gd );
final Button bWorkspace=new Button( c, SWT.RADIO );
gd=new GridData(GridData.FILL_HORIZONTAL);
bWorkspace.setLayoutData( gd );
bWorkspace.setText(UITexts.renameProcessor_scope_workspace);
if (valid){
t.addModifyListener( new ModifyListener() {
@Override
public void modifyText( final ModifyEvent paramModifyEvent ) {
String s=t.getText();
delegate.setNewName( s );
if (s.length()>0){
setErrorMessage( null );
} else {
setErrorMessage( UITexts.renameProcessor_newname_empty );
}
}
} );
} else {
t.setEditable( false );
}
SelectionListener sl=new SelectionAdapter() {
/* (non-Javadoc)
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
@Override
public void widgetSelected( final SelectionEvent e ) {
if (bProject.getSelection()){
delegate.setProject( delegate.getInfo().getSourceFile().getProject() );
} else {
delegate.setProject(null);
}
}
};
bProject.addSelectionListener( sl );
bWorkspace.addSelectionListener( sl );
c.setTabList( new Control[]{t,bProject,bWorkspace} );
setControl( c );
}
}