/*
* 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 net.rim.ejde.internal.core.ContextManager;
import net.rim.ejde.internal.model.preferences.PreprocessorPreferences;
import net.rim.ejde.internal.util.Messages;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
public class PreprocessHookInstallDialog extends MessageDialog {
private static final Logger _log = Logger.getLogger( PreprocessHookInstallDialog.class );
private static boolean _isDialogOn = false;
private Button _checkBoxButton;
/**
* 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 PreprocessHookInstallDialog( String title, String message ) {
super( ContextManager.getActiveWorkbenchShell(), title, null, message, QUESTION, new String[] {
Messages.PreprocessHookInstallDialogButtonLabel, IDialogConstants.CANCEL_LABEL }, 0 ); // yes is the default
}
/**
* Convenience method to open dialog.
*/
public static synchronized int openQuestion( String title, String message ) {
_log.info( "Preprocess hook setting dialog is open" );
PreprocessHookInstallDialog dialog = new PreprocessHookInstallDialog( title, message );
int result = dialog.open();
_log.info( "Preprocess hook setting dialog is closed" );
return result;
}
/**
* Sets if the dialog is on.
*
* @param on
*/
public static void setIsDialogOn( boolean on ) {
_isDialogOn = on;
}
/*
* (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( !PreprocessorPreferences.getPopForPreprocessHookMissing() );
return composite;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
*/
protected void buttonPressed( int buttonId ) {
PreprocessorPreferences.setPopForPreprocessHookMissing( !_checkBoxButton.getSelection() );
super.buttonPressed( buttonId );
}
/**
* Checks if the dialog is on or has ever been on. Since it always forces a reset we never need to open more than one.
*
* @return
*/
public static boolean isDialogOn() {
return _isDialogOn;
}
}