org.jboss.tools.common.jdt.debug.ui.launching.JBossConnectTab.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.tools.common.jdt.debug.ui.launching.JBossConnectTab.java

Source

/*************************************************************************************
 * Copyright (c) 2008-2011 Red Hat, Inc. 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:
 *     JBoss by Red Hat - Initial implementation.
 ************************************************************************************/
package org.jboss.tools.common.jdt.debug.ui.launching;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.internal.ui.SWTFactory;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
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.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.jboss.tools.common.jdt.debug.RemoteDebugActivator;
import org.jboss.tools.common.jdt.debug.ui.Messages;
import org.jboss.tools.common.jdt.debug.ui.RemoteDebugUIActivator;

/**
 * 
 * @author snjeza
 *
 */
public class JBossConnectTab extends AbstractLaunchConfigurationTab {

    private Group messageGroup;
    private Button jbossConfigurationButton;
    private Image image;

    public JBossConnectTab() {
        super();
        image = RemoteDebugUIActivator
                .imageDescriptorFromPlugin(RemoteDebugUIActivator.PLUGIN_ID, "/icons/jboss.gif").createImage();
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(org.eclipse.swt.widgets.Composite)
     */
    public void createControl(Composite parent) {
        Font font = parent.getFont();
        Composite comp = SWTFactory.createComposite(parent, font, 1, 1, GridData.FILL_BOTH);
        GridLayout layout = new GridLayout();
        layout.verticalSpacing = 0;
        comp.setLayout(layout);

        createVerticalSpacer(comp, 2);
        jbossConfigurationButton = createCheckButton(comp, "JBoss Remote Configuration");
        jbossConfigurationButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                setDirty(true);
                updateLaunchConfigurationDialog();
            }

        });
        createVerticalSpacer(comp, 2);
        messageGroup = new Group(comp, SWT.NONE);
        messageGroup.setText(Messages.JavaConnectTab_Warning);
        messageGroup.setLayout(new GridLayout(3, false));
        GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);
        messageGroup.setLayoutData(gd);

        Label noteLabel = new Label(messageGroup, SWT.NONE);
        gd = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false);
        noteLabel.setLayoutData(gd);
        Image image = JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING);
        image.setBackground(noteLabel.getBackground());
        noteLabel.setImage(image);

        Text noteText = new Text(messageGroup, SWT.WRAP | SWT.READ_ONLY);
        gd = new GridData(SWT.FILL, SWT.FILL, true, false);
        GC gc = new GC(parent);
        gd.heightHint = Dialog.convertHeightInCharsToPixels(gc.getFontMetrics(), 3);
        gc.dispose();
        noteText.setLayoutData(gd);
        noteText.setText(Messages.JavaConnectTab_JDK_Required);

        messageGroup.setVisible(!RemoteDebugActivator.getDefault().isJdk());

        Button addJDK = new Button(messageGroup, SWT.PUSH);
        addJDK.setText(Messages.JavaConnectTab_Add_JDK);
        gd = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
        addJDK.setLayoutData(gd);
        addJDK.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                String preferenceId = "org.eclipse.jdt.debug.ui.preferences.VMPreferencePage"; //$NON-NLS-1$
                PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getShell(), preferenceId, null,
                        null);
                dialog.open();
                updateLaunchConfigurationDialog();
                messageGroup.setVisible(!RemoteDebugActivator.getDefault().isJdk());
            }
        });

        setControl(comp);
    }

    private void updateMarkAsJBossFromConfig(ILaunchConfiguration config) {
        boolean markAsJBoss = false;
        try {
            markAsJBoss = config.getAttribute(RemoteDebugActivator.JBOSS_REMOTE_JAVA_APPLICATION, false);
        } catch (CoreException ce) {
            RemoteDebugUIActivator.log(ce);
        }
        jbossConfigurationButton.setSelection(markAsJBoss);
    }

    public void performApply(ILaunchConfigurationWorkingCopy config) {
        config.setAttribute(RemoteDebugActivator.JBOSS_REMOTE_JAVA_APPLICATION,
                jbossConfigurationButton.getSelection());
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
     */
    public void setDefaults(ILaunchConfigurationWorkingCopy config) {
        config.setAttribute(RemoteDebugActivator.JBOSS_REMOTE_JAVA_APPLICATION, false);
    }

    /* (non-Javadoc)
    * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#isValid(org.eclipse.debug.core.ILaunchConfiguration)
    */
    public boolean isValid(ILaunchConfiguration config) {
        setErrorMessage(null);
        setMessage(null);
        return true;
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getName()
     */
    public String getName() {
        return "JBoss Preferences";
    }

    /**
     * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getId()
     * 
     * @since 3.3
     */
    public String getId() {
        return "org.jboss.tools.common.jdt.debug.ui.launching.launchConfigurationTabGroup.JBossRemoteJavaApplication2"; //$NON-NLS-1$
    }

    @Override
    public void initializeFrom(ILaunchConfiguration configuration) {
        updateMarkAsJBossFromConfig(configuration);
    }

    @Override
    public Image getImage() {
        return image;
    }

    @Override
    public void dispose() {
        image.dispose();
        super.dispose();
    }

}