org.eclipse.jst.j2ee.internal.dialogs.RuntimeSelectionDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jst.j2ee.internal.dialogs.RuntimeSelectionDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2005, 2007 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.jst.j2ee.internal.dialogs;

import java.text.MessageFormat;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.jst.j2ee.internal.dialogs.Messages;

/**
 * @author Administrator
 *
 */
public class RuntimeSelectionDialog extends MessageDialog {
    private IProject project = null;
    private String configuredMessage;

    /**
     * @param parentShell
     * @param dialogTitle
     * @param dialogTitleImage
     * @param dialogMessage
     * @param dialogImageType
     * @param dialogButtonLabels
     * @param defaultIndex
     */
    public RuntimeSelectionDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage,
            String dialogMessage, int dialogImageType, String[] dialogButtonLabels, int defaultIndex,
            IProject project) {
        super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels,
                defaultIndex);
        this.project = project;
        this.configuredMessage = MessageFormat.format(J2EEUIMessages.getResourceString("DEPLOY_RUNTIME_CONFIGURED"), //$NON-NLS-1$
                new Object[] { project.getName() });
    }

    @Override
    protected Control createCustomArea(Composite parent) {

        //Composite composite = new Composite(parent, 0);
        createHyperLink(parent);
        return parent;

    }

    private void createHyperLink(Composite parent) {
        Hyperlink link = new Hyperlink(parent, SWT.None);
        GridData layout = new GridData(GridData.HORIZONTAL_ALIGN_END);
        layout.horizontalSpan = 2;
        link.setLayoutData(layout);
        link.setUnderlined(true);
        Color color = new Color(parent.getDisplay(), new RGB(0, 0, 255));
        link.setForeground(color);
        link.setText(Messages.RuntimeSelectionDialog_Configure_Target_Runtime_);
        link.addHyperlinkListener(new IHyperlinkListener() {
            public static final String DATA_NO_LINK = "PropertyAndPreferencePage.nolink"; //$NON-NLS-1$

            public void linkEntered(org.eclipse.ui.forms.events.HyperlinkEvent e) {
            }

            public void linkExited(org.eclipse.ui.forms.events.HyperlinkEvent e) {
            }

            public void linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent e) {
                String id = getPreferencePageID();
                PreferencesUtil.createPropertyDialogOn(getShell(), project, id, new String[] { id }, DATA_NO_LINK)
                        .open(); //
                //(getShell(), id, new String[]{id}, DATA_NO_LINK).open();
                try {
                    updateWidgets();
                } catch (Exception ie) {

                }
            }

            private String getPreferencePageID() {
                return "org.eclipse.wst.common.project.facet.ui.internal.RuntimesPropertyPage"; //$NON-NLS-1$
            }
        });

    }

    private void updateWidgets() {
        if (getTargetRuntime() != null) {
            messageLabel.setText(configuredMessage);
            imageLabel.setImage(this.getInfoImage());
        } else {
            messageLabel.setText(message);
            imageLabel.setImage(getErrorImage());
        }

    }

    private IRuntime getTargetRuntime() {
        try {
            IRuntime runtime = J2EEProjectUtilities.getServerRuntime(project);
            return runtime;
        } catch (CoreException e) {
            J2EEUIPlugin.logError(e);
        }
        return null;
    }

}