Package org.eclipse.wst.sse.ui.internal.contentassist

Source Code of org.eclipse.wst.sse.ui.internal.contentassist.OptionalMessageDialog

/*******************************************************************************
* Copyright (c) 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are 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:
*     IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.sse.ui.internal.contentassist;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.wst.sse.ui.internal.SSEUIMessages;
import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;

/**
* <p>This is a <code>MessageDialog</code> which allows the user
* to choose that the dialog isn't shown again the next time.</p>
*
* @base org.eclipse.jdt.internal.ui.dialogs.OptionalMessageDialog
*/
public class OptionalMessageDialog extends MessageDialog {

  // String constants for widgets
  private static final String CHECKBOX_TEXT = SSEUIMessages.OptionalMessageDialog_dontShowAgain;

  // Dialog store id constants
  private static final String STORE_ID = "ContentAssist_OptionalMessageDialog.hide."; //$NON-NLS-1$

  public static final int NOT_SHOWN = IDialogConstants.CLIENT_ID + 1;

  private final String fId;
  private final String fCheckBoxText;

  private Button fHideDialogCheckBox;


  /**
   * Opens the dialog but only if the user hasn't chosen to hide it.
   *
   * @return the index of the pressed button or {@link SWT#DEFAULT} if the dialog got dismissed
   *         without pressing a button (e.g. via Esc) or {{@link #NOT_SHOWN} if the dialog was not
   *         shown
   */
  public static int open(String id, Shell parent, String title, Image titleImage, String message, int dialogType, String[] buttonLabels, int defaultButtonIndex) {
    return open(id, parent, title, titleImage, message, dialogType, buttonLabels, defaultButtonIndex, CHECKBOX_TEXT);
  }

  /**
   * Opens the dialog but only if the user hasn't chosen to hide it.
   *
   * @return the index of the pressed button or {@link SWT#DEFAULT} if the dialog got dismissed
   *         without pressing a button (e.g. via Esc) or {{@link #NOT_SHOWN} if the dialog was not
   *         shown
   */
  public static int open(String id, Shell parent, String title, Image titleImage, String message, int dialogType, String[] buttonLabels, int defaultButtonIndex, String checkboxText) {
    if (!isDialogEnabled(id))
      return OptionalMessageDialog.NOT_SHOWN;

    MessageDialog dialog= new OptionalMessageDialog(id, parent, title, titleImage, message, dialogType, buttonLabels, defaultButtonIndex, checkboxText);
    return dialog.open();
  }

  protected OptionalMessageDialog(String id, Shell parent, String title, Image titleImage, String message, int dialogType, String[] buttonLabels, int defaultButtonIndex) {
    this(id, parent, title, titleImage, message, dialogType, buttonLabels, defaultButtonIndex, CHECKBOX_TEXT);
  }

  protected OptionalMessageDialog(String id, Shell parent, String title, Image titleImage, String message, int dialogType, String[] buttonLabels, int defaultButtonIndex, String checkBoxText) {
    super(parent, title, titleImage, message, dialogType, buttonLabels, defaultButtonIndex);
    fId= id;
    fCheckBoxText= checkBoxText;
  }

  protected Control createCustomArea(Composite parent) {
    Composite composite= new Composite(parent, SWT.NONE);
    GridLayout layout= new GridLayout();
    layout.marginHeight= convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.horizontalSpacing= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    composite.setLayout(layout);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));

    fHideDialogCheckBox= new Button(composite, SWT.CHECK | SWT.LEFT);
    fHideDialogCheckBox.setText(fCheckBoxText);
    fHideDialogCheckBox.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        setDialogEnabled(fId, !((Button)e.widget).getSelection());
      }
    });
    applyDialogFont(fHideDialogCheckBox);
    return fHideDialogCheckBox;
  }

  //--------------- Configuration handling --------------

  /**
   * Returns this dialog
   *
   * @return the settings to be used
   */
  private static IDialogSettings getDialogSettings() {
    IDialogSettings settings= SSEUIPlugin.getDefault().getDialogSettings();
    settings= settings.getSection(STORE_ID);
    if (settings == null)
      settings= SSEUIPlugin.getDefault().getDialogSettings().addNewSection(STORE_ID);
    return settings;
  }

  /**
   * Answers whether the optional dialog is enabled and should be shown.
   */
  public static boolean isDialogEnabled(String key) {
    IDialogSettings settings= getDialogSettings();
    return !settings.getBoolean(key);
  }

  /**
   * Sets whether the optional dialog is enabled and should be shown.
   */
  public static void setDialogEnabled(String key, boolean isEnabled) {
    IDialogSettings settings= getDialogSettings();
    settings.put(key, !isEnabled);
  }

  /**
   * Clears all remembered information about hidden dialogs
   */
  public static void clearAllRememberedStates() {
    IDialogSettings settings= SSEUIPlugin.getDefault().getDialogSettings();
    settings.addNewSection(STORE_ID);
  }
}
TOP

Related Classes of org.eclipse.wst.sse.ui.internal.contentassist.OptionalMessageDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.