/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License, Version 1.0,
* which accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
*/
package net.rim.ejde.internal.ui.dialogs;
import java.net.MalformedURLException;
import java.net.URL;
import net.rim.ejde.internal.core.ContextManager;
import net.rim.ejde.internal.ui.preferences.PreferenceConstants;
import net.rim.ejde.internal.util.Messages;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.browser.IWebBrowser;
import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
public class VCWarningDialog extends MessageDialog {
private static final Logger _log = Logger.getLogger( VCWarningDialog.class );
public static IPreferenceStore store = ContextManager.getDefault().getPreferenceStore();
private Button _checkBoxButton;
private String _href = Messages.VC2008DownloadLink;
/**
* Creates a new dialog
*
* @see MessageDialog#MessageDialog(org.eclipse.swt.widgets.Shell, java.lang.String, org.eclipse.swt.graphics.Image,
* java.lang.String, int, java.lang.String[], int)
*/
public VCWarningDialog( Shell shell, String title, String message ) {
super( shell, title, null, message, WARNING, new String[] { "OK" }, 0 ); // yes is the default
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.MessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createCustomArea( Composite parent ) {
Composite composite = new Composite( parent, SWT.NONE );
composite.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
_checkBoxButton = new Button( parent, SWT.CHECK );
_checkBoxButton.setText( Messages.DontAskMeAgainMsg );
_checkBoxButton.setSelection( false );
return composite;
}
protected Control createMessageArea( Composite composite ) {
// create composite
// create image
Image image = getImage();
if( image != null ) {
imageLabel = new Label( composite, SWT.NULL );
image.setBackground( imageLabel.getBackground() );
imageLabel.setImage( image );
GridDataFactory.fillDefaults().align( SWT.CENTER, SWT.BEGINNING ).applyTo( imageLabel );
}
// create message
if( message != null ) {
Link _link = new Link( composite, SWT.TOP );
_link.setText( message + " The required package can be installed from: <a href=" + _href
+ "> MS VC2008 Redistributable Package</a>" );
GridDataFactory.fillDefaults().align( SWT.FILL, SWT.BEGINNING ).grab( true, false )
.hint( convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH ), SWT.DEFAULT )
.applyTo( _link );
_link.addSelectionListener( new SelectionListener() {
public void widgetDefaultSelected( SelectionEvent e ) {
// Do Nothing
}
public void widgetSelected( SelectionEvent e ) {
_log.debug( e.text );
IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
try {
IWebBrowser browser = support.createBrowser( IWorkbenchBrowserSupport.AS_EXTERNAL
| IWorkbenchBrowserSupport.NAVIGATION_BAR, null, null, null );
browser.openURL( new URL( e.text ) );
} catch( PartInitException e1 ) {
// TODO Auto-generated catch block
_log.error( "enable to open external broswer" );
} catch( MalformedURLException e2 ) {
// TODO Auto-generated catch block
_log.error( "enable to open external broswer" );
}
}
} );
}
return composite;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
*/
protected void buttonPressed( int buttonId ) {
// ContextManager.getDefault().getPreferenceStore().setValue( PreferenceConstants.POP_FOR_MISSING_VC,
// _checkBoxButton.getSelection());
IEclipsePreferences pref = ( new InstanceScope() ).getNode( ContextManager.PLUGIN_ID );
pref.putBoolean( PreferenceConstants.POP_FOR_MISSING_VC, !_checkBoxButton.getSelection() );
_log.debug( "setting " + PreferenceConstants.POP_FOR_MISSING_VC + "to " + !_checkBoxButton.getSelection() );
super.buttonPressed( buttonId );
}
}