Java tutorial
/****************************************************************************** * Copyright (c) 2010-2013, Linagora * * 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: * Linagora - initial API and implementation *******************************************************************************/ package com.ebmwebsourcing.petals.services.su.refactoring; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IMessageProvider; 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.graphics.Point; import org.eclipse.swt.graphics.Rectangle; 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 com.ebmwebsourcing.petals.common.generation.JbiUtils; import com.ebmwebsourcing.petals.common.internal.provisional.refactoring.AbstractRefactoringWizardPage; import com.ebmwebsourcing.petals.common.internal.provisional.utils.StringUtils; /** * @author Vincent Zurczak - EBM WebSourcing */ public class SuRefactorUserPage extends AbstractRefactoringWizardPage { private Text text; private Button derivedButton, serviceNameButton; /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage * #createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(2, false); gridLayout.marginWidth = 10; gridLayout.marginHeight = 10; container.setLayout(gridLayout); container.setLayoutData(new GridData(GridData.FILL_BOTH)); initializeDialogUnits(container); Dialog.applyDialogFont(container); // Name Label l = new Label(container, SWT.NONE); l.setText("New name:"); this.text = new Text(container, SWT.SINGLE | SWT.BORDER); this.text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); this.text.setText(getInfo().getNewName()); this.text.selectAll(); this.text.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { getInfo().setNewName(SuRefactorUserPage.this.text.getText()); validate(); } }); // Update the service name this.serviceNameButton = new Button(container, SWT.CHECK); this.serviceNameButton.setText("Extract and update the service name"); GridData layoutData = new GridData(); layoutData.horizontalSpan = 2; layoutData.verticalIndent = 10; this.serviceNameButton.setLayoutData(layoutData); this.serviceNameButton.setSelection(true); getInfo().getOptions().put(RefactoringExtensionForSu.UPDATE_SERVICE_NAME, true); getInfo().getOptions().put(RefactoringExtensionForSu.UPDATE_DERIVED_NAMES, false); this.serviceNameButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Boolean update = getInfo().getOptions().get(RefactoringExtensionForSu.UPDATE_SERVICE_NAME); if (update == null) update = true; else update = !update; getInfo().getOptions().put(RefactoringExtensionForSu.UPDATE_SERVICE_NAME, update); validate(); } }); // Update the derived names this.derivedButton = new Button(container, SWT.CHECK); this.derivedButton.setText("Update the service name's derivations"); layoutData = new GridData(); layoutData.horizontalSpan = 2; this.derivedButton.setLayoutData(layoutData); this.derivedButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Boolean update = getInfo().getOptions().get(RefactoringExtensionForSu.UPDATE_DERIVED_NAMES); if (update == null) update = true; else update = !update; getInfo().getOptions().put(RefactoringExtensionForSu.UPDATE_DERIVED_NAMES, update); validate(); } }); setControl(container); validate(); } /** * Validates the input. */ private void validate() { this.derivedButton.setEnabled(this.serviceNameButton.getSelection()); String msg = null; if (this.serviceNameButton.getSelection() && !JbiUtils.isSuName(getInfo().getProject().getName())) msg = "The original project name does respect the SU naming convention.\nService name extraction cannot be performed."; boolean complete = true; if (getInfo().getProject().getName().equalsIgnoreCase(getInfo().getNewName())) complete = false; else if (StringUtils.isEmpty(getInfo().getNewName())) complete = false; setErrorMessage(msg); setPageComplete(complete && msg == null); if (msg == null) { if (!JbiUtils.isSuName(getInfo().getNewName())) msg = "The new project name does respect the SU naming convention."; setMessage(msg, IMessageProvider.WARNING); } } /* * (non-Javadoc) * @see org.eclipse.ltk.ui.refactoring.UserInputWizardPage * #setVisible(boolean) */ @Override public void setVisible(boolean visible) { super.setVisible(visible); Rectangle rect = getShell().getDisplay().getBounds(); if (visible) { this.text.forceFocus(); } else { getShell().setSize(rect.width * 4 / 5, rect.height * 4 / 5); } Point size = getShell().getSize(); getShell().setLocation((rect.width - size.x) / 2, (rect.height - size.y) / 2); } }