Package org.erlide.wrangler.refactoring.duplicatedcode.ui

Source Code of org.erlide.wrangler.refactoring.duplicatedcode.ui.SimilarSearchInputDialog

/*******************************************************************************
* Copyright (c) 2010 György Orosz.
* 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:
*     György Orosz - initial API and implementation
******************************************************************************/
package org.erlide.wrangler.refactoring.duplicatedcode.ui;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
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.Shell;
import org.eclipse.swt.widgets.Text;
import org.erlide.wrangler.refactoring.ui.AbstractInputDialog;

/**
* Input dialog for getting input for Similar expression search refactoring
*
* @author Gyorgy Orosz
*
*/
public class SimilarSearchInputDialog extends AbstractInputDialog {

    private Button onlyInFileCheckBoxButton;
    private float simScore;
    private boolean workOnlyInCurrentFile = true;
    private Text simScoreText;

    /**
     * Constructor
     *
     * @param parentShell
     *            SWT shell
     * @param title
     *            dialog title
     */
    public SimilarSearchInputDialog(final Shell parentShell, final String title) {
        super(parentShell, title);
    }

    @Override
    protected Control createDialogArea(final Composite parent) {
        final Composite composite = (Composite) super.createDialogArea(parent);

        final Label simScoreLabel = new Label(composite, SWT.WRAP);
        simScoreLabel.setText("Similarity score (between 0.1 and 1.0):");
        final GridData simScoreData = new GridData(GridData.GRAB_HORIZONTAL
                | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL
                | GridData.VERTICAL_ALIGN_CENTER);
        simScoreData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
        simScoreLabel.setLayoutData(simScoreData);
        simScoreLabel.setFont(parent.getFont());

        simScoreText = new Text(composite, getInputTextStyle());
        simScoreText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
                | GridData.HORIZONTAL_ALIGN_FILL));
        simScoreText.setText("0.8");
        simScoreText.addModifyListener(new ModifyListener() {

            @Override
            public void modifyText(final ModifyEvent e) {
                validateInput();
            }

        });

        onlyInFileCheckBoxButton = new Button(composite, SWT.CHECK);
        onlyInFileCheckBoxButton.setText("Detect similar code snippets in the project");

        onlyInFileCheckBoxButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
                | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL
                | GridData.VERTICAL_ALIGN_CENTER));
        onlyInFileCheckBoxButton.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(final SelectionEvent e) {
                validateInput();

            }

            @Override
            public void widgetDefaultSelected(final SelectionEvent e) {
                validateInput();

            }

        });

        errorMessageText = new Text(composite, SWT.READ_ONLY | SWT.WRAP);
        errorMessageText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
                | GridData.HORIZONTAL_ALIGN_FILL));
        errorMessageText.setBackground(errorMessageText.getDisplay().getSystemColor(
                SWT.COLOR_WIDGET_BACKGROUND));

        setErrorMessage("");

        applyDialogFont(composite);
        validateInput();
        return composite;
    }

    @Override
    protected void validateInput() {
        String errorMsg = null;
        workOnlyInCurrentFile = !onlyInFileCheckBoxButton.getSelection();
        try {
            simScore = Float.parseFloat(simScoreText.getText());
            setErrorMessage(null);
        } catch (final Exception e) {
            errorMsg = "Please type correct values!";
            setErrorMessage(errorMsg);
        }

    }

    /**
     * Gets the user typed similarity score value
     *
     * @return similarity score value
     */
    public double getSimScore() {
        return simScore;
    }

    /**
     * Returns the value of the checkbox 'run refactoring in only current
     * module'
     *
     * @return true if the refactoring should run only in the current module
     */
    public boolean onlyinFile() {
        return workOnlyInCurrentFile;
    }

}
TOP

Related Classes of org.erlide.wrangler.refactoring.duplicatedcode.ui.SimilarSearchInputDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.