/****************************************************************************** * Copyright (C) 2007-2013 IFS Institute for Software and others * * 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 * * Original authors: * Reto Schuettel * Robin Stocker * Contributors: * Fabio Zadrozny <fabiofz@gmail.com> - initial implementation * Andrew Ferrazzutti <aferrazz@redhat.com> - ongoing maintenance ******************************************************************************/ /* * Copyright (C) 2007 Reto Schuettel, Robin Stocker * * IFS Institute for Software, HSR Rapperswil, Switzerland * */ package org.python.pydev.refactoring.ui.pages.extractlocal; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.swt.SWT; 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; import org.python.pydev.plugin.preferences.PydevPrefs; import org.python.pydev.refactoring.coderefactoring.extractlocal.ExtractLocalRefactoring; import org.python.pydev.refactoring.coderefactoring.extractlocal.ExtractLocalRequestProcessor; import org.python.pydev.refactoring.messages.Messages; import org.python.pydev.refactoring.ui.pages.core.eclipse.RowLayouter; import org.python.pydev.refactoring.ui.pages.core.eclipse.TextInputWizardPage; import org.python.pydev.shared_core.string.StringUtils; public class ExtractLocalInputPage extends TextInputWizardPage { public static final String PAGE_NAME = "ExtractLocalInputPage"; //$NON-NLS-1$ private static final String EXTRACT_LOCAL_REPLACE_DUPLICATES = "EXTRACT_LOCAL_REPLACE_DUPLICATES"; private Button replaceDuplicates; public ExtractLocalInputPage() { super(PAGE_NAME, true); } @Override public void createControl(Composite parent) { Composite result = new Composite(parent, SWT.NONE); setControl(result); /* Create Label and TextField, we use the faciltiies provided by our base class */ GridLayout layout = new GridLayout(); layout.numColumns = 2; result.setLayout(layout); RowLayouter layouter = new RowLayouter(2); Label label = new Label(result, SWT.NONE); label.setText(Messages.extractLocalVariableName); Text text = createTextInputField(result); text.selectAll(); text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); replaceDuplicates = new Button(result, SWT.CHECK); ExtractLocalRequestProcessor requestProcessor = getRequestProcessor(); replaceDuplicates.setText(StringUtils.format("Also replace &duplicates (%s references)?", requestProcessor.getDuplicatesSize())); IPreferenceStore preferences = PydevPrefs.getPreferences(); boolean replace = preferences.getBoolean(EXTRACT_LOCAL_REPLACE_DUPLICATES); replaceDuplicates.setSelection(replace); requestProcessor.setReplaceDuplicates(replace); replaceDuplicates.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { getRequestProcessor().setReplaceDuplicates(replaceDuplicates.getSelection()); IPreferenceStore preferences = PydevPrefs.getPreferences(); preferences.setValue(EXTRACT_LOCAL_REPLACE_DUPLICATES, replaceDuplicates.getSelection()); } }); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.horizontalSpan = 2; replaceDuplicates.setLayoutData(gridData); layouter.perform(label, text, 1); Dialog.applyDialogFont(result); } /* * @see org.eclipse.jdt.internal.ui.refactoring.TextInputWizardPage#textModified(java.lang.String) */ @Override protected void textModified(String text) { getRequestProcessor().setVariableName(text); super.textModified(text); } /* * @see org.eclipse.jdt.internal.ui.refactoring.TextInputWizardPage#validateTextField(String) */ @Override protected RefactoringStatus validateTextField(String text) { return getExtractlocalRefactoring().checkVarName(text); } private ExtractLocalRequestProcessor getRequestProcessor() { return getExtractlocalRefactoring().getRequestProcessor(); } private ExtractLocalRefactoring getExtractlocalRefactoring() { return (ExtractLocalRefactoring) getRefactoring(); } }