org.jboss.tools.usage.internal.reporting.UsageReportEnablementDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.tools.usage.internal.reporting.UsageReportEnablementDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2010 Red Hat, Inc.
 * Distributed under license by Red Hat, Inc. All rights reserved.
 * This program is 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:
 *     Red Hat, Inc. - initial API and implementation
 ******************************************************************************/
package org.jboss.tools.usage.internal.reporting;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.window.IShellProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Shell;
import org.jboss.tools.usage.branding.IUsageBranding;
import org.jboss.tools.usage.internal.JBossToolsUsageActivator;
import org.jboss.tools.usage.util.BrowserUtil;

/**
 * @author Andre Dietisheim
 */
public class UsageReportEnablementDialog extends Dialog {

    private boolean reportEnabled;
    private IUsageBranding branding;
    //private ForceActiveShellAdapter forceActiveShellAdapter = new ForceActiveShellAdapter();

    public UsageReportEnablementDialog(IShellProvider parentShell, IUsageBranding branding) {
        super(parentShell);
        this.branding = branding;
    }

    public UsageReportEnablementDialog(Shell parentShell, IUsageBranding branding) {
        super(parentShell);
        this.branding = branding;
    }

    protected void buttonPressed(int buttonId) {
        this.reportEnabled = (buttonId == IDialogConstants.OK_ID);
        if (IDialogConstants.NO_ID == buttonId) {
            noPressed();
        }
        super.buttonPressed(buttonId);
    }

    /**
     * Notifies that the no button of this dialog has been pressed.
     * <p>
     * The <code>Dialog</code> implementation of this framework method sets this
     * dialog's return code to <code>Window.OK</code> and closes the dialog.
     * </p>
     */
    protected void noPressed() {
        setReturnCode(OK);
        close();
    }

    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        shell.setText(branding.getStartupAllowReportingTitle());
        //forceActiveShellAdapter.attachTo(shell);
    }

    @Override
    public boolean close() {
        //forceActiveShellAdapter.removeFrom(getShell());
        return super.close();

    }

    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.YES_LABEL, false);
        createButton(parent, IDialogConstants.NO_ID, IDialogConstants.NO_LABEL, false);
    }

    protected Control createDialogArea(Composite parent) {
        Composite composite = (Composite) super.createDialogArea(parent);
        createUsageReportingWidgets(parent, composite);
        applyDialogFont(composite);

        return composite;
    }

    private void createUsageReportingWidgets(Composite parent, Composite composite) {
        // message
        Link link = new Link(composite, SWT.WRAP);
        link.setFont(parent.getFont());

        link.setText(branding.getStartupAllowReportingMessage());
        link.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                BrowserUtil.checkedCreateExternalBrowser(branding.getStartupAllowReportingDetailLink(),
                        JBossToolsUsageActivator.PLUGIN_ID, JBossToolsUsageActivator.getDefault().getLog());
            }
        });
        GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
                .hint(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH, SWT.DEFAULT).applyTo(link);
    }

    public boolean isReportEnabled() {
        return reportEnabled;
    }

    //   private class ForceActiveShellAdapter extends ShellAdapter {
    //
    //      public void shellDeactivated(ShellEvent e) {
    //         Shell shell = getShell();
    //         if (shell != null
    //               && !shell.isDisposed())
    //         shell.forceActive();
    //      }
    //      
    //      private void attachTo(Shell shell) {
    //         if (shell != null
    //               && !shell.isDisposed()) {
    //            shell.addShellListener(this);
    //         }
    //      }
    //
    //      private void removeFrom(Shell shell) {
    //         if (shell != null
    //               && !shell.isDisposed()) {
    //            shell.removeShellListener(this);
    //         }
    //      }
    //   }
}