
org.eclipse.ui.dialogs.PreferencesUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.ui.workbench Show documentation
Show all versions of org.eclipse.ui.workbench Show documentation
This is org.eclipse.ui.workbench jar used by Scout SDK
/*******************************************************************************
* Copyright (c) 2005, 2009 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.ui.dialogs;
import java.util.Collection;
import java.util.List;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.preference.IPreferenceNode;
import org.eclipse.jface.preference.IPreferencePage;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.preference.PreferenceManager;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog;
import org.eclipse.ui.internal.dialogs.PropertyDialog;
import org.eclipse.ui.internal.dialogs.PropertyPageContributorManager;
import org.eclipse.ui.internal.dialogs.PropertyPageManager;
import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog;
/**
* The PreferencesUtil class is the class that opens a properties or preference
* dialog on a set of ids.
*
* @since 3.1
*/
public final class PreferencesUtil {
/**
* Constant denoting no option.
* @since 3.5
*/
public final static int OPTION_NONE = 0;
/**
* Constant for configuring a preferences or properties dialog in which the
* user cannot "unfilter" to show a larger set of pages than was passed to
* {@link #createPreferenceDialogOn(Shell, String, String[], Object, int)}
* or
* {@link #createPropertyDialogOn(Shell, IAdaptable, String, String[], Object, int)}
* .
* @since 3.5
*/
public final static int OPTION_FILTER_LOCKED = 1;
/**
* Apply the data to the first page if there is any.
*
* @param data
* The data to be applied
* @param displayedIds
* The ids to filter to.
* @param dialog
* The dialog to apply to.
* @param options
*/
private static void applyOptions(Object data, String[] displayedIds,
FilteredPreferenceDialog dialog, int options) {
if (data != null) {
dialog.setPageData(data);
IPreferencePage page = dialog.getCurrentPage();
if (page instanceof PreferencePage) {
((PreferencePage) page).applyData(data);
}
}
if (displayedIds != null) {
dialog.showOnly(displayedIds);
}
if ((options & OPTION_FILTER_LOCKED) != 0) {
dialog.setLocked(true);
}
}
/**
* Creates a workbench preference dialog and selects particular preference
* page. If there is already a preference dialog open this dialog is used
* and its selection is set to the page with id preferencePageId. Show the
* other pages as filtered results using whatever filtering criteria the
* search uses. It is the responsibility of the caller to then call
* open()
. The call to open()
will not return
* until the dialog closes, so this is the last chance to manipulate the
* dialog.
*
* @param shell
* The Shell to parent the dialog off of if it is not already
* created. May be null
in which case the active
* workbench window will be used if available.
* @param preferencePageId
* The identifier of the preference page to open; may be
* null
. If it is null
, then the
* preference page is not selected or modified in any way.
* @param displayedIds
* The ids of the other pages to be displayed using the same
* filtering criterea as search. If this is null
,
* then the all preference pages are shown.
* @param data
* Data that will be passed to all of the preference pages to be
* applied as specified within the page as they are created. If
* the data is null
nothing will be called.
*
* @return a preference dialog.
* @since 3.1
* @see PreferenceDialog#PreferenceDialog(Shell, PreferenceManager)
*/
public static final PreferenceDialog createPreferenceDialogOn(Shell shell,
String preferencePageId, String[] displayedIds, Object data) {
return createPreferenceDialogOn(shell, preferencePageId, displayedIds, data,
OPTION_NONE);
}
/**
* Creates a workbench preference dialog to a particular preference page.
* Show the other pages as filtered results using whatever filtering
* criteria the search uses. It is the responsibility of the caller to then
* call open()
. The call to open()
will not
* return until the dialog closes, so this is the last chance to manipulate
* the dialog.
*
* @param shell
* The shell to use to parent the dialog if required.
* @param propertyPageId
* The identifier of the preference page to open; may be
* null
. If it is null
, then the
* dialog is opened with no selected page.
* @param element
* IAdaptable An adaptable element to open the dialog on.
* @param displayedIds
* The ids of the other pages to be displayed using the same
* filtering criterea as search. If this is null
,
* then the all preference pages are shown.
* @param data
* Data that will be passed to all of the preference pages to be
* applied as specified within the page as they are created. If
* the data is null
nothing will be called.
*
* @return A preference dialog showing properties for the selection or
* null
if it could not be created.
* @since 3.1
*/
public static final PreferenceDialog createPropertyDialogOn(Shell shell,
final IAdaptable element, String propertyPageId,
String[] displayedIds, Object data) {
return createPropertyDialogOn(shell, element, propertyPageId, displayedIds, data,
OPTION_NONE);
}
/**
* Creates a workbench preference dialog and selects particular preference
* page. If there is already a preference dialog open this dialog is used
* and its selection is set to the page with id preferencePageId. Show the
* other pages as filtered results using whatever filtering criteria the
* search uses. It is the responsibility of the caller to then call
* open()
. The call to open()
will not return
* until the dialog closes, so this is the last chance to manipulate the
* dialog.
*
* @param shell
* The Shell to parent the dialog off of if it is not already
* created. May be null
in which case the active
* workbench window will be used if available.
* @param preferencePageId
* The identifier of the preference page to open; may be
* null
. If it is null
, then the
* preference page is not selected or modified in any way.
* @param displayedIds
* The ids of the other pages to be displayed using the same
* filtering criterea as search. If this is null
,
* then the all preference pages are shown.
* @param data
* Data that will be passed to all of the preference pages to be
* applied as specified within the page as they are created. If
* the data is null
nothing will be called.
* @param options
* a bitwise OR of option constants
*
* @return a preference dialog.
* @since 3.5
* @see PreferenceDialog#PreferenceDialog(Shell, PreferenceManager)
*/
public static final PreferenceDialog createPreferenceDialogOn(Shell shell,
String preferencePageId, String[] displayedIds, Object data, int options) {
FilteredPreferenceDialog dialog = WorkbenchPreferenceDialog
.createDialogOn(shell, preferencePageId);
applyOptions(data, displayedIds, dialog, options);
return dialog;
}
/**
* Creates a workbench preference dialog to a particular preference page.
* Show the other pages as filtered results using whatever filtering
* criteria the search uses. It is the responsibility of the caller to then
* call open()
. The call to open()
will not return
* until the dialog closes, so this is the last chance to manipulate the
* dialog.
*
* @param shell
* The shell to use to parent the dialog if required.
* @param propertyPageId
* The identifier of the preference page to open; may be
* null
. If it is null
, then the dialog
* is opened with no selected page.
* @param element
* IAdaptable An adaptable element to open the dialog on.
* @param displayedIds
* The ids of the other pages to be displayed using the same
* filtering criteria as search. If this is null
,
* then the all preference pages are shown.
* @param data
* Data that will be passed to all of the preference pages to be
* applied as specified within the page as they are created. If
* the data is null
nothing will be called.
* @param options
* a bitwise OR of option constants
*
* @return A preference dialog showing properties for the selection or
* null
if it could not be created.
* @since 3.5
*/
public static final PreferenceDialog createPropertyDialogOn(Shell shell,
final IAdaptable element, String propertyPageId,
String[] displayedIds, Object data, int options) {
FilteredPreferenceDialog dialog = PropertyDialog.createDialogOn(shell,
propertyPageId, element);
if (dialog == null) {
return null;
}
applyOptions(data, displayedIds, dialog, options);
return dialog;
}
/**
* Creates a workbench preference dialog to a particular preference page.
* Show the other pages as filtered results using whatever filtering
* criteria the search uses. It is the responsibility of the caller to then
* call open()
. The call to open()
will not return
* until the dialog closes, so this is the last chance to manipulate the
* dialog.
*
* @param shell
* The shell to use to parent the dialog if required.
* @param propertyPageId
* The identifier of the preference page to open; may be
* null
. If it is null
, then the dialog
* is opened with no selected page.
* @param element
* An element to open the dialog on.
* @param displayedIds
* The IDs of the other pages to be displayed using the same
* filtering criteria as search. If this is null
,
* then the all preference pages are shown.
* @param data
* Data that will be passed to all of the preference pages to be
* applied as specified within the page as they are created. If
* the data is null
nothing will be called.
* @param options
* a bitwise OR of option constants
*
* @return A preference dialog showing properties for the selection or
* null
if it could not be created.
* @since 3.6
*/
public static final PreferenceDialog createPropertyDialogOn(Shell shell,
final Object element, String propertyPageId, String[] displayedIds,
Object data, int options) {
FilteredPreferenceDialog dialog = PropertyDialog.createDialogOn(shell,
propertyPageId, element);
if (dialog == null)
return null;
applyOptions(data, displayedIds, dialog, options);
return dialog;
}
/**
* Indicates whether the specified element has at least one property page
* contributor.
*
* @param element
* an adapter element of a property page
* @return true for having at least one contributor; false otherwise
* @since 3.4
*/
public static boolean hasPropertiesContributors(Object element) {
if (element == null || !(element instanceof IAdaptable))
return false;
Collection contributors = PropertyPageContributorManager.getManager()
.getApplicableContributors(element);
return contributors != null && contributors.size() > 0;
}
/**
* Return all of the properties page contributors for an element.
* @param element
* @return {@link IPreferenceNode}[]
* @since 3.4
*/
public static IPreferenceNode[] propertiesContributorsFor(Object element) {
PropertyPageManager pageManager = new PropertyPageManager();
if (element == null) {
return null;
}
// load pages for the selection
// fill the manager with contributions from the matching contributors
PropertyPageContributorManager.getManager().contribute(pageManager,
element);
// testing if there are pages in the manager
List pages = pageManager.getElements(PreferenceManager.PRE_ORDER);
IPreferenceNode[] nodes = new IPreferenceNode[pages.size()];
pages.toArray(nodes);
return nodes;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy