/******************************************************************************* * Copyright (c) 2011, 2016 Wind River Systems, Inc. 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: * Wind River Systems - initial API and implementation *******************************************************************************/ package org.eclipse.tcf.te.ui.jface.dialogs; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.dialogs.MessageDialogWithToggle; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Cursor; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; 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.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.tcf.te.ui.swt.activator.UIPlugin; import org.eclipse.tcf.te.ui.swt.nls.Messages; import org.eclipse.ui.PlatformUI; /** * Message dialog with "do not show again" and optional help button. The Dialog * stores the selected button result automatically, when "do not show again" was * selected. All stored values can be cleared in the Target Explorer preferences * root page. * <p> * Additional information (e.g. last opening time stamp for license warning) can * be stored using <code>set/getAdditionalDialogInfo()</code>, that should * also be cleared with the states. */ public class OptionalMessageDialog extends MessageDialogWithToggle { // section name for the dialog settings stored by this dialog private static final String DIALOG_ID = "OptionalMessageDialog"; //$NON-NLS-1$ // size of the details text in lines private static final int TEXT_LINE_COUNT = 15; // context help id for the dialog private String contextHelpId; // the key where the result is stored within the dialog settings section private String key; // the content of the details text area private String detailsTextString; // details text area private Text detailsTextArea = null; // index of the details button private int detailsButtonIndex = -1; /** * Constructor. Message dialog with "do not show again" and optional help * button. The dialog automatically stores the pressed button when "do not * show again" was selected. The next time the dialogs <code>open()</code> * method is called it returns the stored value without opening the dialog. * When the cancel button was pressed, _NO_ value will be stored. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param image * The window icon or <code>null</code> if default icon should * be used. * @param message * The dialog message text. * @param imageType * The dialog image type (QUESTION, INFORMATION, WARNING, ERROR). * @param buttonLabels * The labels for buttons. * @param defaultIndex * The default button index. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. */ public OptionalMessageDialog(Shell parentShell, String title, Image image, String message, int imageType, String[] buttonLabels, int defaultIndex, String key, String contextHelpId) { this(parentShell, title, image, message, imageType, buttonLabels, defaultIndex, key, contextHelpId, null); } /** * Constructor. Message dialog with "do not show again" and optional help * button. The dialog automatically stores the pressed button when "do not * show again" was selected. The next time the dialogs <code>open()</code> * method is called it returns the stored value without opening the dialog. * When the cancel button was pressed, _NO_ value will be stored. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param image * The window icon or <code>null</code> if default icon should * be used. * @param message * The dialog message text. * @param imageType * The dialog image type (QUESTION, INFORMATION, WARNING, ERROR). * @param buttonLabels * The labels for buttons. * @param defaultIndex * The default button index. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @param detailsText * The content of the Details TextArea. If <code>null</code>, no * Details TextArea will be shown. */ public OptionalMessageDialog(Shell parentShell, String title, Image image, String message, int imageType, String[] buttonLabels, int defaultIndex, String key, String contextHelpId, String detailsText) { super(parentShell, title, image, message, imageType, buttonLabels != null ? buttonLabels : new String [] { IDialogConstants.OK_LABEL }, defaultIndex, Messages.getString(DIALOG_ID + (imageType == QUESTION ? "_rememberMyDecision_label" : "_doNotShowAgain_label")), //$NON-NLS-1$ //$NON-NLS-2$ false); this.contextHelpId = contextHelpId; this.key = key == null || key.trim().length() == 0 ? null : key.trim(); this.detailsTextString = detailsText; if (contextHelpId != null) { PlatformUI.getWorkbench().getHelpSystem().setHelp(parentShell, contextHelpId); } } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.Dialog#isResizable() */ @Override protected boolean isResizable() { return true; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.IconAndMessageDialog#createButtonBar(org.eclipse.swt.widgets.Composite) */ @Override protected Control createButtonBar(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(2, false); layout.marginWidth = 0; layout.marginHeight = 0; layout.horizontalSpacing = 0; composite.setLayout(layout); GridData gd = new GridData(SWT.FILL, SWT.BOTTOM, true, false); if (parent.getLayout() instanceof GridLayout) { gd.horizontalSpan = ((GridLayout)parent.getLayout()).numColumns; } composite.setLayoutData(gd); composite.setFont(parent.getFont()); // create help control if needed if (contextHelpId != null) { Control helpControl = createHelpControl(composite); ((GridData)helpControl.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); } Control buttonSection = super.createButtonBar(composite); ((GridData)buttonSection.getLayoutData()).grabExcessHorizontalSpace = true; return composite; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.MessageDialog#createButton(org.eclipse.swt.widgets.Composite, int, java.lang.String, boolean) */ @Override protected Button createButton(Composite parent, int id, String label, boolean defaultButton) { // Allow to re-adjust the button id's. Base implementation is matching // the button labels against the well known labels defined by IDialogConstants. // For labels not defined there, the implementation set id's starting with 256. return super.createButton(parent, adjustButtonIdForLabel(id, label), label, defaultButton); } /** * Adjust the button id to use for the button with the given label. * <p> * <b>Note:</b>Base implementation is matching the button labels against the well known * labels defined by {@link IDialogConstants}. For labels not defined there, the implementation * set id's starting with 256. * <p> * The default implementation returns the button id unmodified. * * @param id The suggested button id. * @param label The button label. * @return The effective button id. */ protected int adjustButtonIdForLabel(int id, String label) { return id; } private Control createHelpControl(Composite parent) { Image helpImage = JFaceResources.getImage(DLG_IMG_HELP); if (helpImage != null) { return createHelpImageButton(parent, helpImage); } return createHelpLink(parent); } /* * Creates a button with a help image. This is only used if there * is an image available. */ private ToolBar createHelpImageButton(Composite parent, Image image) { ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.NO_FOCUS); ((GridLayout)parent.getLayout()).numColumns++; toolBar.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER)); final Cursor cursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND); toolBar.setCursor(cursor); toolBar.addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { cursor.dispose(); } }); ToolItem item = new ToolItem(toolBar, SWT.NONE); item.setImage(image); item.setToolTipText(JFaceResources.getString("helpToolTip")); //$NON-NLS-1$ item.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { helpPressed(); } }); return toolBar; } /* * Creates a help link. This is used when there is no help image * available. */ private Link createHelpLink(Composite parent) { Link link = new Link(parent, SWT.WRAP | SWT.NO_FOCUS); ((GridLayout)parent.getLayout()).numColumns++; link.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER)); link.setText("<a>" + IDialogConstants.HELP_LABEL + "</a>"); //$NON-NLS-1$ //$NON-NLS-2$ link.setToolTipText(IDialogConstants.HELP_LABEL); link.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { helpPressed(); } }); return link; } /** * Invoked if the help button is pressed. */ /* default */ void helpPressed() { if (getShell() != null) { Control c = getShell().getDisplay().getFocusControl(); while (c != null) { if (c.isListening(SWT.Help)) { c.notifyListeners(SWT.Help, new Event()); break; } c = c.getParent(); } } } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.MessageDialog#createCustomArea(org.eclipse.swt.widgets.Composite) */ @Override protected Control createCustomArea(Composite parent) { if (contextHelpId != null) { PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId); } Label label = new Label(parent, SWT.NULL); label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); return label; } /** * Creates the details text control. */ protected void createDropDownText(Composite parent) { if (detailsTextString != null) { detailsTextArea = new Text(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY); detailsTextArea.setFont(parent.getFont()); detailsTextArea.setText(detailsTextString); GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL); data.heightHint = detailsTextArea.getLineHeight() * TEXT_LINE_COUNT; data.horizontalSpan = 2; detailsTextArea.setLayoutData(data); } } /** * Toggles the unfolding of the details area. This is triggered by * the user pressing the details button. */ private void toggleDetailsArea() { Point windowSize = getShell().getSize(); Point oldSize = getContents().computeSize(SWT.DEFAULT, SWT.DEFAULT); if (getButton(detailsButtonIndex) != null) { if (detailsTextArea != null) { detailsTextArea.dispose(); detailsTextArea = null; getButton(detailsButtonIndex).setText(IDialogConstants.SHOW_DETAILS_LABEL); } else { createDropDownText((Composite) getContents()); getButton(detailsButtonIndex).setText(IDialogConstants.HIDE_DETAILS_LABEL); } Point newSize = getContents().computeSize(SWT.DEFAULT, SWT.DEFAULT); getShell().setSize(new Point(windowSize.x, windowSize.y + (newSize.y - oldSize.y))); } } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.MessageDialogWithToggle#buttonPressed(int) */ @Override protected void buttonPressed(int buttonId) { if (IDialogConstants.DETAILS_ID == buttonId) { toggleDetailsArea(); } else { super.buttonPressed(buttonId); } } /** * Opens the dialog only, if no dialog result is stored and this dialog * should be displayed. If a dialog result is stored, this state will be * returned without opening the dialog. When the dialog is closed and "do * not show again" was selected, the result will be stored. * * @see org.eclipse.jface.window.Window#open() */ @Override public int open() { int result = getDialogResult(key); if (result < 0) { result = super.open(); if (getToggleState() && storeResultOnToggleSelected(result)) { setDialogResult(key, result); } } return result; } protected boolean storeResultOnToggleSelected(int result) { return result >= 0 && result != IDialogConstants.CANCEL_ID; } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.MessageDialogWithToggle#setToggleButton(org.eclipse.swt.widgets.Button) */ @Override protected void setToggleButton(Button button) { // if no key is given, no toggle button should be displayed if (button != null && key != null) { super.setToggleButton(button); } } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.MessageDialogWithToggle#createToggleButton(org.eclipse.swt.widgets.Composite) */ @Override protected Button createToggleButton(Composite parent) { // if no key is given, no toggle button should be created if (key != null) { return super.createToggleButton(parent); } return null; } /** * Opens a question dialog with OK and CANCEL. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openOkCancelDialog(Shell parentShell, String title, String message, String key, String contextHelpId) { return openOkCancelDialog(parentShell, title, message, null, key, contextHelpId); } /** * Opens a question dialog with OK and CANCEL. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param buttonLabel * An string array listing the labels of the message dialog buttons. If <code>null</code>, the default * labeling, typically "OK" for a single button message dialog, will be applied. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openOkCancelDialog(Shell parentShell, String title, String message, String[] buttonLabel, String key, String contextHelpId) { if (buttonLabel == null) buttonLabel = new String[] { IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL }; OptionalMessageDialog dialog = new OptionalMessageDialog(parentShell, title, null, message, QUESTION, buttonLabel, 0, key, contextHelpId, null); return dialog.open(); } /** * Opens a question dialog with YES, NO and CANCEL. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openYesNoCancelDialog(Shell parentShell, String title, String message, String key, String contextHelpId) { return openYesNoCancelDialog(parentShell, title, message, null, key, contextHelpId); } /** * Opens a question dialog with YES, NO and CANCEL. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param buttonLabel * An string array listing the labels of the message dialog buttons. If <code>null</code>, the default * labeling, typically "OK" for a single button message dialog, will be applied. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openYesNoCancelDialog(Shell parentShell, String title, String message, String[] buttonLabel, String key, String contextHelpId) { if (buttonLabel == null) buttonLabel = new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL }; OptionalMessageDialog dialog = new OptionalMessageDialog(parentShell, title, null, message, QUESTION, buttonLabel, 0, key, contextHelpId, null); return dialog.open(); } /** * Opens a question dialog with YES and NO. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openYesNoDialog(Shell parentShell, String title, String message, String key, String contextHelpId) { return openYesNoDialog(parentShell, title, message, null, key, contextHelpId); } /** * Opens a question dialog with YES and NO. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param buttonLabel * An string array listing the labels of the message dialog buttons. If <code>null</code>, the default * labeling, typically "OK" for a single button message dialog, will be applied. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openYesNoDialog(Shell parentShell, String title, String message, String[] buttonLabel, String key, String contextHelpId) { if (buttonLabel == null) buttonLabel = new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }; OptionalMessageDialog dialog = new OptionalMessageDialog(parentShell, title, null, message, QUESTION, buttonLabel, 0, key, contextHelpId, null); return dialog.open(); } /** * Opens a info dialog with OK. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openInformationDialog(Shell parentShell, String title, String message, String key, String contextHelpId) { return openInformationDialog(parentShell, title, message, null, key, contextHelpId); } /** * Opens a info dialog with OK. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param buttonLabel * An string array listing the labels of the message dialog buttons. If <code>null</code>, the default * labeling, typically "OK" for a single button message dialog, will be applied. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openInformationDialog(Shell parentShell, String title, String message, String[] buttonLabel, String key, String contextHelpId) { if (buttonLabel == null) buttonLabel = new String[] { IDialogConstants.OK_LABEL }; OptionalMessageDialog dialog = new OptionalMessageDialog(parentShell, title, null, message, INFORMATION, buttonLabel, 0, key, contextHelpId, null); return dialog.open(); } /** * Opens a warning dialog with OK. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openWarningDialog(Shell parentShell, String title, String message, String key, String contextHelpId) { return openWarningDialog(parentShell, title, message, null, key, contextHelpId); } /** * Opens a warning dialog with OK. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param buttonLabel * An string array listing the labels of the message dialog buttons. If <code>null</code>, the default * labeling, typically "OK" for a single button message dialog, will be applied. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openWarningDialog(Shell parentShell, String title, String message, String[] buttonLabel, String key, String contextHelpId) { if (buttonLabel == null) buttonLabel = new String[] { IDialogConstants.OK_LABEL }; OptionalMessageDialog dialog = new OptionalMessageDialog(parentShell, title, null, message, WARNING, buttonLabel, 0, key, contextHelpId, null); return dialog.open(); } /** * Opens a error dialog with OK. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openErrorDialog(Shell parentShell, String title, String message, String key, String contextHelpId) { return openErrorDialog(parentShell, title, message, null, key, contextHelpId); } /** * Opens a error dialog with OK. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param buttonLabel * An string array listing the labels of the message dialog buttons. If <code>null</code>, the default * labeling, typically "OK" for a single button message dialog, will be applied. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @return The stored or selected result. */ public static int openErrorDialog(Shell parentShell, String title, String message, String[] buttonLabel, String key, String contextHelpId) { if (buttonLabel == null) buttonLabel = new String[] { IDialogConstants.OK_LABEL }; OptionalMessageDialog dialog = new OptionalMessageDialog(parentShell, title, null, message, ERROR, buttonLabel, 0, key, contextHelpId, null); return dialog.open(); } /** * Opens a error dialog with OK. * * @param parentShell * The shell. * @param title * The title for the message dialog. * @param message * The dialog message text. * @param buttonLabel * An string array listing the labels of the message dialog buttons. If <code>null</code>, the default * labeling, typically "OK" for a single button message dialog, will be applied. * @param key * The unique key for the stored result value (e.g. "<PluginName>.<ActionOrDialogName>"). * @param contextHelpId * The optional help context id. If <code>null</code>, no help * button will be shown. * @param detailsText * The content of the Details TextArea. If <code>null</code>, no Details TextArea will be shown. * @param detailsButtonIndex * The index of the Details Button. * @return The stored or selected result. */ public static int openErrorDialog(Shell parentShell, String title, String message, String[] buttonLabel, String key, String contextHelpId, String detailsText, int detailsButtonIndex) { int btnIndex = detailsButtonIndex; if (buttonLabel == null) { if (detailsText != null) { buttonLabel = new String[] { IDialogConstants.SHOW_DETAILS_LABEL, IDialogConstants.OK_LABEL }; btnIndex = 0; } else { buttonLabel = new String[] { IDialogConstants.OK_LABEL }; } } OptionalMessageDialog dialog = new OptionalMessageDialog(parentShell, title, null, message, ERROR, buttonLabel, 1, key, contextHelpId, detailsText); if (detailsText != null) { dialog.setDetailButtonIndex(btnIndex); } return dialog.open(); } /* * Get the dialog settings section or create it when it is not available. */ private static IDialogSettings getDialogSettings() { IDialogSettings settings = UIPlugin.getDefault().getDialogSettings(); settings = settings.getSection(DIALOG_ID); if (settings == null) settings = UIPlugin.getDefault().getDialogSettings().addNewSection(DIALOG_ID); return settings; } /** * Get the stored result for this key. If the dialog should be opened, -1 * will be returned. * * @param key * The key for the stored result. * @return The stored result or -1 of the dialog should be opened. */ public static int getDialogResult(String key) { IDialogSettings settings = getDialogSettings(); try { return settings.getInt(key + ".result"); //$NON-NLS-1$ } catch (NumberFormatException e) { } return -1; } /** * Get the stored toggle state for this key. * If no state is stored, <code>false</code> will be returned. * * @param key * The key for the stored toggle state. * @return The stored result or -1 of the dialog should be opened. */ public static boolean getDialogToggleState(String key) { IDialogSettings settings = getDialogSettings(); return settings.getBoolean(key + ".toggleState"); //$NON-NLS-1$ } /** * Get the stored info for this key. * * @param key * The key for the stored info. * @return The stored info or <code>null</code>. */ public static String getAdditionalDialogInfo(String key) { IDialogSettings settings = getDialogSettings(); return settings.get(key + ".additionalInfo"); //$NON-NLS-1$ } /** * Set the dialog result for this key. If the result is < 0, the string * "PROMPT" will be stored. * * @param key * The key to store the result. * @param result * The result that should be stored. */ public static void setDialogResult(String key, int result) { IDialogSettings settings = getDialogSettings(); if (result < 0) { settings.put(key + ".result", PROMPT); //$NON-NLS-1$ } else { settings.put(key + ".result", result); //$NON-NLS-1$ } } /** * Set the dialog toggle state for this key. * * @param key * The key to store the toggle state. * @param result * The toggle state that should be stored. */ public static void setDialogToggleState(String key, boolean state) { IDialogSettings settings = getDialogSettings(); settings.put(key + ".toggleState", state); //$NON-NLS-1$ } /** * Set additional info for this key. * * @param key * The key to store the additional info. * @param value * The additional info that should be stored. */ public static void setAdditionalDialogInfo(String key, String value) { IDialogSettings settings = getDialogSettings(); settings.put(key + ".additionalInfo", value); //$NON-NLS-1$ } /** * Clears all stored information for this dialogs */ public static void clearAllRememberedStates() { IDialogSettings settings = UIPlugin.getDefault().getDialogSettings(); settings.addNewSection(DIALOG_ID); } /** * Set the details button index. * * @param index of the details button. */ public void setDetailButtonIndex(int index) { detailsButtonIndex = index; } }