blob: 553ee167c1ff0070369afdd8cc78b0c38b01a319 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Zeeshan Ansari, Mark Chen, Burim Isai, Waseem Sheikh, Mumtaz Vauhkonen.
* 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:
* Zeeshan Ansari
* Mark Chen
* Burim Isai
* Waseem Sheihk
* Mumtaz Vauhkonen
*******************************************************************************/
package org.eclipse.photran.internal.ui.refactoring;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
import org.eclipse.photran.core.IFortranAST;
import org.eclipse.photran.internal.core.lexer.Token;
import org.eclipse.photran.internal.core.refactoring.IfConstructStatementConversionRefactoring;
import org.eclipse.photran.internal.core.vpg.PhotranVPG;
import org.eclipse.photran.internal.core.vpg.refactoring.VPGRefactoring;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.ui.IEditorActionDelegate;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
/**
* Handles the If Statement/Construct action in the Fortran editor's Refactoring popup menu and in
* the Refactor menu in the workbench menu bar.
*
* @author Zeeshan Ansari
* @author Mark Chen
* @author Mumtaz Vauhkonrn
* @author Burim Isai
* @author Waseem Sheikh
*/
public class IfConstructStatementConversionAction extends AbstractFortranRefactoringActionDelegate
implements IWorkbenchWindowActionDelegate, IEditorActionDelegate
{
public IfConstructStatementConversionAction()
{
super(IfConstructStatementConversionRefactoring.class,
FortranIfConstructStatementConversionWizard.class);
}
@Override
protected VPGRefactoring<IFortranAST, Token, PhotranVPG> getRefactoring(List<IFile> files)
{
IfConstructStatementConversionRefactoring r = new IfConstructStatementConversionRefactoring();
r.initialize(getFortranEditor().getIFile(), getFortranEditor().getSelection());
return r;
}
public static class FortranIfConstructStatementConversionWizard extends
AbstractFortranRefactoringWizard
{
protected IfConstructStatementConversionRefactoring ifConstructStatementConversionRefactoring;
public FortranIfConstructStatementConversionWizard(
IfConstructStatementConversionRefactoring r)
{
super(r);
this.ifConstructStatementConversionRefactoring = r;
}
@Override
protected void doAddUserInputPages()
{
if (ifConstructStatementConversionRefactoring.isStmtNode())
{
addPage(new UserInputWizardPage(ifConstructStatementConversionRefactoring.getName())
{
protected Button shouldAddEmptyElseBlock;
public void createControl(Composite parent)
{
Composite top = new Composite(parent, SWT.NONE);
initializeDialogUnits(top);
setControl(top);
top.setLayout(new GridLayout(2, false));
Composite group = top;
new Label(group, SWT.NONE).setText(""); //$NON-NLS-1$
shouldAddEmptyElseBlock = new Button(group, SWT.CHECK);
shouldAddEmptyElseBlock.setText(Messages.IfConstructStatementConversionAction_AddEmptyElseBlock);
shouldAddEmptyElseBlock.setSelection(false);
shouldAddEmptyElseBlock.addSelectionListener(new SelectionListener()
{
public void widgetDefaultSelected(SelectionEvent e)
{
widgetSelected(e);
}
public void widgetSelected(SelectionEvent e)
{
if (shouldAddEmptyElseBlock.getSelection())
ifConstructStatementConversionRefactoring.setAddEmptyElseBlock();
}
});
}
});
}
else
{
addPage(new UserInputWizardPage(ifConstructStatementConversionRefactoring.getName())
{
public void createControl(Composite parent)
{
Composite top = new Composite(parent, SWT.NONE);
initializeDialogUnits(top);
setControl(top);
top.setLayout(new GridLayout(1, false));
Label lbl = new Label(top, SWT.NONE);
lbl.setText(Messages.bind(
Messages.RefactoringAction_ClickOKToRunTheRefactoring,
ifConstructStatementConversionRefactoring.getName()));
}
});
}
}
}
}