net.rim.ejde.internal.ui.dialogs.PreprocessHookInstallDialog.java Source code

Java tutorial

Introduction

Here is the source code for net.rim.ejde.internal.ui.dialogs.PreprocessHookInstallDialog.java

Source

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