org.eclipse.jdt.internal.ui.refactoring.InputPageUtil.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jdt.internal.ui.refactoring.InputPageUtil.java

Source

/*******************************************************************************
 * Copyright (c) 2000, 2012 IBM Corporation 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
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.internal.ui.refactoring;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
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.Group;

import org.eclipse.jface.layout.PixelConverter;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.JFaceResources;

import org.eclipse.jface.text.Document;

import org.eclipse.jdt.core.dom.Modifier;

import org.eclipse.jdt.ui.PreferenceConstants;
import org.eclipse.jdt.ui.text.JavaSourceViewerConfiguration;

import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer;

public final class InputPageUtil {
    private InputPageUtil() {
        // static helper class
    }

    public static Composite createVisibilityControl(Composite parent,
            final IVisibilityChangeListener visibilityChangeListener, int[] availableVisibilities,
            int correctVisibility) {
        List<Integer> allowedVisibilities = convertToIntegerList(availableVisibilities);
        if (allowedVisibilities.size() == 1)
            return null;

        Group group = new Group(parent, SWT.NONE);
        group.setText(RefactoringMessages.VisibilityControlUtil_Access_modifier);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        group.setLayoutData(gd);
        GridLayout layout = new GridLayout();
        layout.makeColumnsEqualWidth = true;
        layout.numColumns = 4;
        group.setLayout(layout);

        String[] labels = new String[] { "&public", //$NON-NLS-1$
                "pro&tected", //$NON-NLS-1$
                RefactoringMessages.VisibilityControlUtil_defa_ult_4, "pri&vate" //$NON-NLS-1$
        };
        Integer[] data = new Integer[] { new Integer(Modifier.PUBLIC), new Integer(Modifier.PROTECTED),
                new Integer(Modifier.NONE), new Integer(Modifier.PRIVATE) };
        Integer initialVisibility = new Integer(correctVisibility);
        for (int i = 0; i < labels.length; i++) {
            Button radio = new Button(group, SWT.RADIO);
            Integer visibilityCode = data[i];
            radio.setText(labels[i]);
            radio.setData(visibilityCode);
            radio.setSelection(visibilityCode.equals(initialVisibility));
            radio.setEnabled(allowedVisibilities.contains(visibilityCode));
            radio.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent event) {
                    visibilityChangeListener.visibilityChanged(((Integer) event.widget.getData()).intValue());
                }
            });
        }
        group.setLayoutData((new GridData(GridData.FILL_HORIZONTAL)));
        return group;
    }

    private static List<Integer> convertToIntegerList(int[] array) {
        List<Integer> result = new ArrayList<Integer>(array.length);
        for (int i = 0; i < array.length; i++) {
            result.add(new Integer(array[i]));
        }
        return result;
    }

    /**
     * Creates a signature preview viewer in a parent composite with a 1-column GridLayout.
     * 
     * @param parent the parent 
     * @return the preview viewer
     * @since 3.9
     */
    public static JavaSourceViewer createSignaturePreview(Composite parent) {
        IPreferenceStore store = JavaPlugin.getDefault().getCombinedPreferenceStore();
        JavaSourceViewer signaturePreview = new JavaSourceViewer(parent, null, null, false,
                SWT.READ_ONLY | SWT.V_SCROLL | SWT.WRAP, store);
        signaturePreview.configure(new JavaSourceViewerConfiguration(
                JavaPlugin.getDefault().getJavaTextTools().getColorManager(), store, null, null));
        StyledText textWidget = signaturePreview.getTextWidget();
        textWidget.setFont(JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT));
        textWidget.setAlwaysShowScrollBars(false);
        signaturePreview.adaptBackgroundColor(parent);
        signaturePreview.setDocument(new Document());
        signaturePreview.setEditable(false);

        GridData gdata = new GridData(GridData.FILL_BOTH);
        gdata.widthHint = new PixelConverter(textWidget).convertWidthInCharsToPixels(50);
        gdata.heightHint = textWidget.getLineHeight() * 2;
        textWidget.setLayoutData(gdata);

        return signaturePreview;
    }
}