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

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

/*******************************************************************************
* 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 necessary input for duplicated code detection
* refactoring
*
* @author Gyorgy Orosz
*
*/
public class DuplicateCodeDetectionInputDialog extends AbstractInputDialog {

    private int minToks;

    private int minClones;

    private boolean workOnlyInCurrentFile;

    private Text minToksText;

    private Text minClonesText;

    private Button onlyInFileCheckBoxButton;

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

    /**
     * Gets the value of minimal tokens
     *
     * @return number of minimal tokens
     */
    public int getMinToks() {
        return minToks;
    }

    /**
     * Gets the value of minimal clone numbers
     *
     * @return minimal clones number
     */
    public int getMinClones() {
        return minClones;
    }

    /**
     * Gets the value of the 'run only in the current module' checkbox
     *
     * @return true, if the refactoring will be run in only the current module
     */
    public boolean onlyInFile() {
        return workOnlyInCurrentFile;
    }

    /*
     * @Override protected void buttonPressed(int buttonId) {
     * super.buttonPressed(buttonId); }
     */

    @Override
    protected void createButtonsForButtonBar(final Composite parent) {
        super.createButtonsForButtonBar(parent);

        minToksText.setFocus();
        minToksText.setText("");
        minToksText.selectAll();

    }

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

        final Label minTokslabel = new Label(composite, SWT.WRAP);
        minTokslabel.setText("Minimal numbers of tokens a code clone should have:");
        final GridData minToksData = new GridData(GridData.GRAB_HORIZONTAL
                | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL
                | GridData.VERTICAL_ALIGN_CENTER);
        minToksData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
        minTokslabel.setLayoutData(minToksData);
        minTokslabel.setFont(parent.getFont());

        minToksText = new Text(composite, getInputTextStyle());
        minToksText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
                | GridData.HORIZONTAL_ALIGN_FILL));
        minToksText.setText("20");
        minToksText.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(final ModifyEvent e) {
                validateInput();
            }
        });

        final Label minClonesLabel = new Label(composite, SWT.WRAP);
        minClonesLabel.setText("Minimum number of appearance times:");
        final GridData minClonesData = new GridData( // GridData.GRAB_HORIZONTAL
                // |
                GridData.GRAB_VERTICAL // | GridData.HORIZONTAL_ALIGN_FILL
                        | GridData.VERTICAL_ALIGN_CENTER);
        minClonesData.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
        minClonesLabel.setLayoutData(minClonesData);
        minClonesLabel.setFont(parent.getFont());
        minClonesText = new Text(composite, getInputTextStyle());
        minClonesText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
                | GridData.HORIZONTAL_ALIGN_FILL));
        minClonesText.setText("2");
        minClonesText.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(final ModifyEvent e) {
                validateInput();
            }
        });

        onlyInFileCheckBoxButton = new Button(composite, SWT.CHECK);
        onlyInFileCheckBoxButton.setText("Detect duplicates in the project");
        onlyInFileCheckBoxButton.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
                | GridData.HORIZONTAL_ALIGN_FILL));
        onlyInFileCheckBoxButton.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetDefaultSelected(final SelectionEvent e) {
            }

            @Override
            public void widgetSelected(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("Please use only integers!");

        applyDialogFont(composite);
        return composite;
    }

    @Override
    protected void validateInput() {
        String errorMsg = null;
        try {
            workOnlyInCurrentFile = !onlyInFileCheckBoxButton.getSelection();
            minToks = Integer.parseInt(minToksText.getText());
            minClones = Integer.parseInt(minClonesText.getText());
            setErrorMessage(null);
        } catch (final Exception e) {
            errorMsg = "Minimal number of clones and tokens should be integers.";
            setErrorMessage(errorMsg);
        }

    }
}
TOP

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

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.