/***** BEGIN LICENSE BLOCK ***** * Version: CPL 1.0/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Common Public * License Version 1.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.eclipse.org/legal/cpl-v10.html * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * Copyright (C) 2006 Mirko Stocker <me@misto.ch> * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the CPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the CPL, the GPL or the LGPL. ***** END LICENSE BLOCK *****/ package org.rubypeople.rdt.refactoring.ui.pages; import org.eclipse.swt.SWT; 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.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.rubypeople.rdt.refactoring.core.movefield.MoveFieldConfig; import org.rubypeople.rdt.refactoring.core.movefield.MoveFieldRefactoring; public class MoveFieldPage extends RefactoringWizardPage { private final class ReferenceSelectionListener implements SelectionListener { private final Combo combo; public ReferenceSelectionListener(final Combo combo) { this.combo = combo; } public void widgetDefaultSelected(final SelectionEvent event) { } public void widgetSelected(final SelectionEvent event) { config.setTargetReference(combo.getText()); } } private final class ClassNameSelectionListener implements SelectionListener { private final Combo combo; public ClassNameSelectionListener(final Combo combo) { this.combo = combo; } public void widgetDefaultSelected(final SelectionEvent event) {} public void widgetSelected(final SelectionEvent event) { config.setTargetClass(combo.getText()); } } private final MoveFieldConfig config; public MoveFieldPage(final MoveFieldConfig config) { super(MoveFieldRefactoring.NAME); this.config = config; setTitle(MoveFieldRefactoring.NAME); } public void createControl(final Composite parent) { final Composite composite = new Composite(parent, SWT.None); composite.setLayout(new GridLayout(2, false)); createTitleLabel(composite); createClassLabel(composite); createClassComboBox(composite); createReferenceLabel(composite); createReferenceComboBox(composite); setControl(composite); } private void createReferenceComboBox(final Composite composite) { final Combo combobox = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY); combobox.setVisibleItemCount(10); for (String fieldName : config.getReferenceCandidates()) { if (config.getTargetReference() == null) { config.setTargetReference(fieldName); combobox.setText(fieldName); } combobox.add(fieldName); } combobox.select(0); combobox.addSelectionListener(new ReferenceSelectionListener(combobox)); } private void createReferenceLabel(final Composite composite) { final Label referenceLabel = new Label(composite, SWT.NONE); // what should we ask? //referenceLabel.setText("Class is referenced by:"); referenceLabel.setText(Messages.MoveFieldPage_AccessibleBy); } private void createClassComboBox(final Composite composite) { final Combo combobox = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY); combobox.setVisibleItemCount(10); for(String name : config.getTargetClassCandidates()) { if(config.getTargetClass() == null) { config.setTargetClass(name); } combobox.add(name); } combobox.select(0); combobox.addSelectionListener(new ClassNameSelectionListener(combobox)); } private void createClassLabel(final Composite composite) { final Label moveToClassLabel = new Label(composite, SWT.NONE); moveToClassLabel.setText(Messages.MoveFieldPage_MoveToClass); } private void createTitleLabel(final Composite composite) { final Label title = new Label(composite, SWT.NONE); title.setText(Messages.MoveFieldPage_Target + config.getSelectedFieldName() + "':"); //$NON-NLS-1$ final GridData gridData = new GridData(); gridData.horizontalSpan = 2; title.setLayoutData(gridData); } }