/******************************************************************************* * 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); // } // } // } }