下面列出了怎么用org.eclipse.ui.preferences.IWorkbenchPreferenceContainer的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected Control createContents(Composite parent) {
parent.setLayoutData(new GridData(SWT.NONE, SWT.TOP, true, false));
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new GridLayout(1, false));
Link yamlSchemasLink = new Link(container, SWT.NONE);
yamlSchemasLink.setText("See <A>'Schemas'</A> to associate schemas to YAML files in the current workspace");
yamlSchemasLink.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
if (getContainer() instanceof IWorkbenchPreferenceContainer) {
((IWorkbenchPreferenceContainer) getContainer())
.openPage("org.eclipse.wildwebdeveloper.yaml.YAMLSchemaPreferencePage", null);
}
}));
return parent;
}
@Override
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(1, false);
layout.marginWidth = 0;
layout.marginHeight = 0;
composite.setLayout(layout);
Link catalogsLink = new Link(composite, SWT.NONE);
catalogsLink.setText(Messages.XMLPreferencesPage_XMLCatalogsLink);
catalogsLink.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (getContainer() instanceof IWorkbenchPreferenceContainer) {
((IWorkbenchPreferenceContainer) getContainer())
.openPage("org.eclipse.wildwebdeveloper.xml.internal.ui.preferences.XMLCatalogPreferencePage", null);
}
}
});
return composite;
}
@Override
public boolean performOk() {
IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
if (!processChanges(container)) {
return false;
}
boolean retVal = super.performOk();
if (retVal && isProjectPreferencePage()) {
try {
IPreferenceStore preferenceStore = preferenceStoreAccessImpl.getWritablePreferenceStore(getProject());
if (preferenceStore instanceof IPersistentPreferenceStore) {
((IPersistentPreferenceStore) preferenceStore).save();
}
} catch (Exception e) {
System.err.println(e);
retVal = false;
}
}
return retVal;
}
@Override
protected Control createContents(Composite parent) {
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new GridLayout(4, false));
container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));
gdbInput = new InputComponent(container, Messages.DebugPreferencePage_defaultGDB, e -> isPageValid());
gdbInput.createComponent();
gdbInput.createFileSelection();
gdbInput.setValue(store.getString(CorrosionPreferenceInitializer.DEFAULT_GDB_PREFERENCE));
Link gdbLink = new Link(container, SWT.NONE);
gdbLink.setText(Messages.DebugPreferencePage_seeGDBPage);
gdbLink.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
IPreferencePageContainer prefContainer = getContainer();
if (prefContainer instanceof IWorkbenchPreferenceContainer) {
((IWorkbenchPreferenceContainer) prefContainer).openPage("org.eclipse.cdt.dsf.gdb.ui.preferences", //$NON-NLS-1$
null);
}
}));
gdbLink.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1));
return parent;
}
public ProjectsWorkbookPage(ListDialogField<CPListElement> classPathList, IWorkbenchPreferenceContainer pageContainer) {
fClassPathList= classPathList;
fPageContainer= pageContainer;
fSWTControl= null;
String[] buttonLabels= new String[] {
NewWizardMessages.ProjectsWorkbookPage_projects_add_button,
null,
NewWizardMessages.ProjectsWorkbookPage_projects_edit_button,
NewWizardMessages.ProjectsWorkbookPage_projects_remove_button
};
ProjectsAdapter adapter= new ProjectsAdapter();
fProjectsList= new TreeListDialogField<CPListElement>(adapter, buttonLabels, new CPListLabelProvider());
fProjectsList.setDialogFieldListener(adapter);
fProjectsList.setLabelText(NewWizardMessages.ProjectsWorkbookPage_projects_label);
fProjectsList.enableButton(IDX_REMOVE, false);
fProjectsList.enableButton(IDX_EDIT, false);
fProjectsList.setViewerComparator(new CPListElementSorter());
}
private void configurePreferenceLink(Link link, final IJavaProject javaProject, final String preferenceId, final String propertyId) {
link.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (fContainer instanceof IWorkbenchPreferenceContainer) {
IWorkbenchPreferenceContainer container= (IWorkbenchPreferenceContainer)fContainer;
if (javaProject != null) {
container.openPage(propertyId, null);
} else {
container.openPage(preferenceId, null);
}
} else {
PreferencesUtil.createPreferenceDialogOn(fShell, preferenceId, null, null);
}
}
});
}
public AbstractFormatterSelectionBlock(IStatusChangeListener context, IProject project,
IWorkbenchPreferenceContainer container)
{
super(context, project, ProfileManager.collectPreferenceKeys(TEMP_LIST, true), container);
Collections.sort(TEMP_LIST, new Comparator<IScriptFormatterFactory>()
{
public int compare(IScriptFormatterFactory s1, IScriptFormatterFactory s2)
{
return s1.getName().compareToIgnoreCase(s2.getName());
}
});
factories = TEMP_LIST.toArray(new IScriptFormatterFactory[TEMP_LIST.size()]);
TEMP_LIST = new ArrayList<IScriptFormatterFactory>();
sourcePreviewViewers = new ArrayList<SourceViewer>();
// Override the super preferences lookup order.
// All the changes to the formatter settings should go to the instance scope (no project scope here). Only the
// selected profile will be picked from the project scope and then the instance scope when requested.
fLookupOrder = new IScopeContext[] { EclipseUtil.instanceScope(), EclipseUtil.defaultScope() };
}
@Override
public boolean performOk()
{
final boolean rebuild = rebuild();
final boolean reReconcile = needsReconcile();
Job buildJob = new ApplyChangesAndBuildJob(Messages.ValidationPreferencePage_RebuildJobTitle, rebuild,
reReconcile);
IPreferencePageContainer container = getContainer();
if (container instanceof IWorkbenchPreferenceContainer)
{
((IWorkbenchPreferenceContainer) container).registerUpdateJob(buildJob);
}
else
{
buildJob.schedule();
}
return true;
}
public ComplianceConfigurationBlock(IStatusChangeListener context, IProject project, IWorkbenchPreferenceContainer container) {
super(context, project, getKeys(project != null), container);
setDefaultCompilerComplianceValues();
fBlockEnableState= null;
fComplianceFollowsEEControls= new ArrayList<Control>();
fComplianceControls= new ArrayList<Control>();
fComplianceChildControls= new ArrayList<Control>();
fComplianceStatus= new StatusInfo();
fRememberedUserCompliance= new String[] { // caution: order depends on IDX_* constants
getValue(PREF_PB_ASSERT_AS_IDENTIFIER),
getValue(PREF_PB_ENUM_AS_IDENTIFIER),
getValue(PREF_SOURCE_COMPATIBILITY),
getValue(PREF_CODEGEN_TARGET_PLATFORM),
getValue(PREF_COMPLIANCE),
getValue(PREF_CODEGEN_INLINE_JSR_BYTECODE),
getValue(PREF_CODEGEN_METHOD_PARAMETERS_ATTR)
};
}
@Override
protected Control createContents(Composite parent) {
final Composite composite= new Composite(parent, SWT.NONE);
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
composite.setLayout(new GridLayout());
Link link= new Link(composite, SWT.WRAP);
GridData data= new GridData(SWT.FILL, SWT.BEGINNING, true, false);
data.widthHint= 300;
link.setLayoutData(data);
link.setText(PreferencesMessages.JavaEditorPropertyPage_SaveActionLink_Text);
link.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IWorkbenchPreferenceContainer container= (IWorkbenchPreferenceContainer)getContainer();
container.openPage(SaveParticipantPreferencePage.PROPERTY_PAGE_ID, null);
}
});
noDefaultAndApplyButton();
Dialog.applyDialogFont(composite);
return composite;
}
@Override
protected boolean processChanges(IWorkbenchPreferenceContainer container) {
String enabled = fJavaMethodFiltersTable.getEnabled();
setValue(PREF_SHOW_METHOD_PARAMETER_FILTERS_ENABLED, enabled);
String disabled = fJavaMethodFiltersTable.getDisabled();
setValue(PREF_SHOW_METHOD_PARAMETER_FILTERS_DISABLED, disabled);
return super.processChanges(container);
}
@Override
public void createControl(Composite parent) {
IWorkbenchPreferenceContainer container= (IWorkbenchPreferenceContainer) getContainer();
fConfigurationBlock= new JavaEditorCodeMiningConfigurationBlock(getNewStatusChangedListener(), container);
super.createControl(parent);
}
/**
* This method has been copied from org.eclipse.xtext.builder.preferences.BuilderPreferencePage.
*/
private void scheduleCleanerJob(IPreferencePageContainer preferencePageContainer, String folderNameToClean) {
DerivedResourceCleanerJob derivedResourceCleanerJob = cleanerProvider.get();
derivedResourceCleanerJob.setUser(true);
derivedResourceCleanerJob.initialize(getProject(), folderNameToClean);
if (preferencePageContainer != null) {
IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
container.registerUpdateJob(derivedResourceCleanerJob);
} else {
derivedResourceCleanerJob.schedule();
}
}
/**
* This method has been copied and adapted from org.eclipse.xtext.ui.preferences.OptionsConfigurationBlock.
*/
@Override
protected boolean processChanges(IWorkbenchPreferenceContainer container) {
boolean needsBuild = !getPreferenceChanges().isEmpty() | projectSpecificChanged;
boolean doBuild = false;
if (needsBuild) {
int count = getRebuildCount();
if (count > rebuildCount) {
needsBuild = false;
rebuildCount = count;
}
}
if (needsBuild) {
String[] strings = getFullBuildDialogStrings(project == null);
if (strings != null) {
MessageDialog dialog = new MessageDialog(this.getShell(), strings[0], null, strings[1],
MessageDialog.QUESTION,
new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL,
IDialogConstants.CANCEL_LABEL },
2);
int res = dialog.open();
if (res == 0) {
doBuild = true;
} else if (res != 1) {
return false;
}
}
}
if (container != null) {
if (doBuild) {
incrementRebuildCount();
container.registerUpdateJob(getBuildJob(getProject()));
}
} else {
if (doBuild) {
getBuildJob(getProject()).schedule();
}
}
return true;
}
@Override
public void createControl(Composite parent) {
IWorkbenchPreferenceContainer container= (IWorkbenchPreferenceContainer) getContainer();
fConfigurationBlock= new TodoTaskConfigurationBlock(getNewStatusChangedListener(), getProject(), container);
super.createControl(parent);
if (isProjectPreferencePage()) {
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IJavaHelpContextIds.TODOTASK_PROPERTY_PAGE);
} else {
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IJavaHelpContextIds.TODOTASK_PREFERENCE_PAGE);
}
}
/**
* @deprecated use {@link #TaskTagConfigurationBlock(String)} instead
*/
@Deprecated
public TaskTagConfigurationBlock(IProject project, IPreferenceStore preferenceStore,
IWorkbenchPreferenceContainer container, String languageName) {
super(project, preferenceStore, container);
this.languageName = languageName;
initialize();
unpackTaskTags();
if (taskTags.getSize() > 0) {
taskTags.selectFirstElement();
} else {
taskTags.enableButton(IDX_EDIT, false);
}
}
@Override
public void createControl(Composite parent) {
IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
IPreferenceStore preferenceStore = preferenceStoreAccess.getWritablePreferenceStore(getProject());
taskConfigurationBlock.setProject(getProject());
taskConfigurationBlock.setPreferenceStore(preferenceStore);
taskConfigurationBlock.setWorkbenchPreferenceContainer(container);
taskConfigurationBlock.setStatusChangeListener(getNewStatusChangedListener());
super.createControl(parent);
}
public OptionsConfigurationBlock(IProject project, IPreferenceStore preferenceStore,
IWorkbenchPreferenceContainer container) {
this.project = project;
this.keys = new String[] {};
this.setPreferenceStore(preferenceStore);
this.workbenchPreferenceContainer = container;
}
protected boolean processChanges(IWorkbenchPreferenceContainer container) {
boolean needsBuild = buildPreferenceEvaluator.isAffectingBuild(getPreferenceChanges());
boolean doBuild = false;
if (needsBuild) {
int count = getRebuildCount();
if (count > rebuildCount) {
needsBuild = false;
rebuildCount = count;
}
}
if (needsBuild) {
String[] strings = getFullBuildDialogStrings(project == null);
if (strings != null) {
MessageDialog dialog = new MessageDialog(shell, strings[0], null, strings[1], MessageDialog.QUESTION,
new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL,
IDialogConstants.CANCEL_LABEL }, 2);
int res = dialog.open();
if (res == 0) {
doBuild = true;
} else if (res != 1) {
return false;
}
}
}
savePreferences();
if (container != null) {
if (doBuild) {
incrementRebuildCount();
container.registerUpdateJob(getBuildJob(getProject()));
}
} else {
if (doBuild) {
getBuildJob(getProject()).schedule();
}
}
captureOriginalSettings(keys);
return true;
}
@Override
public void createControl(Composite parent) {
IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
builderConfigurationBlock.setProject(getProject());
builderConfigurationBlock.setWorkbenchPreferenceContainer(container);
builderConfigurationBlock.setStatusChangeListener(getNewStatusChangedListener());
super.createControl(parent);
}
private void scheduleCleanerJob(IPreferencePageContainer preferencePageContainer, String folderNameToClean) {
DerivedResourceCleanerJob derivedResourceCleanerJob = cleanerProvider.get();
derivedResourceCleanerJob.setUser(true);
derivedResourceCleanerJob.initialize(getProject(), folderNameToClean);
if (preferencePageContainer != null) {
IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
container.registerUpdateJob(derivedResourceCleanerJob);
} else {
derivedResourceCleanerJob.schedule();
}
}
/**
* Creates a new spelling configuration block.
*
* @param context the status change listener
* @param project the Java project
* @param container the preference container
*/
public SpellingConfigurationBlock(final IStatusChangeListener context, final IProject project, IWorkbenchPreferenceContainer container) {
super(context, project, getAllKeys(), container);
IStatus status= validateAbsoluteFilePath(getValue(PREF_SPELLING_USER_DICTIONARY));
if (status.getSeverity() != IStatus.OK)
setValue(PREF_SPELLING_USER_DICTIONARY, ""); //$NON-NLS-1$
status= validateLocale(getValue(PREF_SPELLING_LOCALE));
if (status.getSeverity() != IStatus.OK)
setValue(PREF_SPELLING_LOCALE, SpellCheckEngine.getDefaultLocale().toString());
}
@Override
public void createControl(Composite parent) {
final IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
this.builderConfigurationBlock.setProject(getProject());
this.builderConfigurationBlock.setWorkbenchPreferenceContainer(container);
this.builderConfigurationBlock.setStatusChangeListener(getNewStatusChangedListener());
super.createControl(parent);
}
@Override
public void createControl(Composite parent) {
IWorkbenchPreferenceContainer container= (IWorkbenchPreferenceContainer) getContainer();
fCodeTemplateConfigurationBlock= new CodeTemplateBlock(getNewStatusChangedListener(), getProject(), container);
super.createControl(parent);
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IJavaHelpContextIds.CODE_TEMPLATES_PREFERENCE_PAGE);
}
@Override
protected Control createContents(final Composite parent) {
noDefaultAndApplyButton();
final Composite c = new Composite(parent, SWT.NONE);
c.setLayout(new GridLayout(1, false));
final Link link = new Link(c, SWT.NONE);
link.setText("Turn off current line highlighting <A>here</A>.");
final FontData[] fontData = link.getFont().getFontData();
for (final FontData fd : fontData) {
fd.setHeight(10);
fd.setStyle(SWT.BOLD);
}
link.setFont(new Font(getShell().getDisplay(), fontData));
link.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
final IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
container.openPage("org.eclipse.ui.preferencePages.GeneralTextEditor", null);
}
});
folder = new TabFolder(c, SWT.NONE);
folder.setLayoutData(new GridData(GridData.FILL_BOTH));
final TabItem ti = new TabItem(folder, SWT.NONE);
ti.setText("Themes");
ti.setControl(createCategoryControl(folder));
folder.pack();
return c;
}
/**
* create the Label Decoration/general page
* @param parent
* @return
*/
private Control createGeneralDecoratorPage(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
composite.setLayout(layout);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
composite.setLayoutData(data);
SWTUtils.createPreferenceLink((IWorkbenchPreferenceContainer) getContainer(), composite, "org.eclipse.ui.preferencePages.Decorators", Policy.bind("SVNDecoratorPreferencesPage.labelDecorationsLink")); //$NON-NLS-1$ //$NON-NLS-2$
showDirty = createCheckBox(composite, Policy.bind("SVNDecoratorPreferencesPage.computeDeep")); //$NON-NLS-1$
enableFontDecorators = createCheckBox(composite, Policy.bind("SVNDecoratorPreferencesPage.useFontDecorators")); //$NON-NLS-1$
SWTUtils.createPreferenceLink((IWorkbenchPreferenceContainer) getContainer(), composite, "org.eclipse.ui.preferencePages.ColorsAndFonts", Policy.bind("SVNDecoratorPreferencesPage.colorsAndFontsLink")); //$NON-NLS-1$ //$NON-NLS-2$
return composite;
}
public PropertyLinkArea(Composite parent, int style, final String pageId, IAdaptable element, String message,
final IWorkbenchPreferenceContainer pageContainer)
{
this.element = element;
pageLink = new Link(parent, style);
IPreferenceNode node = getPreferenceNode(pageId);
String text = null;
if (node == null)
{
text = NLS.bind(WorkbenchMessages.PreferenceNode_NotFound, pageId);
}
else
{
text = NLS.bind(message, node.getLabelText());
}
pageLink.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
pageContainer.openPage(pageId, null);
}
});
pageLink.setText(text);
}
public final void createControl(Composite parent)
{
// create the configuration block here so the page works as both types
IWorkbenchPreferenceContainer container = (IWorkbenchPreferenceContainer) getContainer();
block = createOptionsBlock(getNewStatusChangedListener(), getProject(), container);
// calls createPreferenceContent(Composite)
super.createControl(parent);
String helpId = isProjectPreferencePage() ? getProjectHelpId() : getHelpId();
if (helpId != null)
{
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), helpId);
}
}
public AbstractOptionsBlock(IStatusChangeListener context, IProject project, PreferenceKey[] allKeys,
IWorkbenchPreferenceContainer container)
{
super(context, project, allKeys, container);
this.bindManager = new ControlBindingManager(this, context);
}
private void createTextEditorLink(Composite appearanceComposite)
{
// Link to general text editor prefs from Eclipse - they can set tabs/spaces/whitespace drawing, etc
Link link = new Link(appearanceComposite, SWT.NONE);
link.setText(Messages.EditorsPreferencePage_GeneralTextEditorPrefLink);
link.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
((IWorkbenchPreferenceContainer) getContainer()).openPage(GENERAL_TEXT_EDITOR_PREF_ID, null);
}
});
}