diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java index 46cf3e813f5..f7bc7f82ccf 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Intel Corporation and others. + * Copyright (c) 2007, 2012 Intel 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 @@ -163,6 +163,13 @@ public class BuildBehaviourTab extends AbstractCBuildPropertyTab { updateButtons(); } }); + s_parallelNumber.getAccessible().addAccessibleListener(new AccessibleAdapter() { + @Override + public void getName(AccessibleEvent e) { + e.result = Messages.BuilderSettingsTab_UseParallelJobs; + } + }); + s_parallelNumber.setToolTipText(Messages.BuilderSettingsTab_UseParallelJobs); b_parallelUnlimited= new Button(c3, SWT.RADIO); b_parallelUnlimited.setText(Messages.BuilderSettingsTab_UseUnlimitedJobs); diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/resources/tests/RefreshScopeTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/resources/tests/RefreshScopeTests.java index a8ef6802ed6..4bc8323db72 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/resources/tests/RefreshScopeTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/resources/tests/RefreshScopeTests.java @@ -22,6 +22,7 @@ import junit.framework.TestSuite; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMManager; +import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.resources.ExclusionInstance; import org.eclipse.cdt.core.resources.ExclusionType; @@ -29,6 +30,7 @@ import org.eclipse.cdt.core.resources.RefreshExclusion; import org.eclipse.cdt.core.resources.RefreshScopeManager; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICProjectDescription; +import org.eclipse.cdt.core.settings.model.WriteAccessException; import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.core.testplugin.CTestPlugin; import org.eclipse.cdt.internal.core.resources.ResourceExclusion; @@ -408,10 +410,8 @@ public class RefreshScopeTests extends TestCase { IResource config1_resource = fProject; - CProjectDescriptionManager descriptionManager = CProjectDescriptionManager.getInstance(); - ICProjectDescription projectDescription = descriptionManager.getProjectDescription(fProject, false); - ICConfigurationDescription conf = projectDescription.getActiveConfiguration(); - String conf_name = conf.getName(); + + String conf_name = getCurrentConfigName(); manager.addResourceToRefresh(fProject, conf_name, config1_resource); @@ -567,6 +567,101 @@ public class RefreshScopeTests extends TestCase { } + public void closeProject(ICProjectDescription projDesc) { + + try { + // save the project description + CCorePlugin.getDefault().setProjectDescription(fProject, projDesc); + fProject.close(null); + } catch (CoreException e1) { + fail(); + } + } + + public void openProject() { + try { + fProject.open(null); + } catch (CoreException e) { + fail(); + } + } + + public String getCurrentConfigName() { + CProjectDescriptionManager descriptionManager = CProjectDescriptionManager.getInstance(); + ICProjectDescription projectDescription = descriptionManager.getProjectDescription(fProject, false); + ICConfigurationDescription conf = projectDescription.getActiveConfiguration(); + return conf.getName(); + } + + public void testEmptyRefreshScopeCloseAndReopen() { + + RefreshScopeManager manager = RefreshScopeManager.getInstance(); + manager.clearAllData(); + + String config_name = getCurrentConfigName(); + + // get the resources. since we are not loading ... the project should auto-magically be added by default. + List config_resources = manager.getResourcesToRefresh(fProject, config_name); + assertEquals(1,config_resources.size()); + assertEquals(true, config_resources.contains(fProject)); + + // now delete it. + manager.deleteResourceToRefresh(fProject, config_name, fProject); + + // and make sure it is empty. + config_resources = manager.getResourcesToRefresh(fProject, config_name); + assertEquals(0,config_resources.size()); + + // write the persistent data. + ICProjectDescription projectDescription = CCorePlugin.getDefault().getProjectDescription(fProject); + try { + manager.persistSettings(projectDescription); + } catch (CoreException e) { + fail(); + } + + // close and reopen + closeProject(projectDescription); + openProject(); + + // now verify that there are no resources. + HashMap>> config_map = manager.getConfigurationToResourcesMap(fProject); + assertEquals(1,config_map.size()); + config_resources = manager.getResourcesToRefresh(fProject, config_name); + assertEquals(0,config_resources.size()); + } + + public void testAddEmptyConfiguration() { + final String CFG_NAME="empty_config"; + + CoreModel model = CoreModel.getDefault(); + RefreshScopeManager manager = RefreshScopeManager.getInstance(); + manager.clearAllData(); + + CProjectDescriptionManager descriptionManager = CProjectDescriptionManager.getInstance(); + ICProjectDescription projectDescription = descriptionManager.getProjectDescription(fProject, false); + ICConfigurationDescription base = projectDescription.getActiveConfiguration(); + + ICProjectDescription propertyProjectDescription = CoreModel.getDefault().getProjectDescription(fProject); + ICConfigurationDescription propertyDefaultConfigurationDescription = propertyProjectDescription.getConfigurations()[0]; + try { + projectDescription.setReadOnly(false, true); + ICConfigurationDescription newCfg = projectDescription.createConfiguration(CFG_NAME + ".id", CFG_NAME, propertyDefaultConfigurationDescription); + } catch (WriteAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + List empty_config_resources = manager.getResourcesToRefresh(fProject, CFG_NAME); + assertEquals(1,empty_config_resources.size()); + assertEquals(true,empty_config_resources.contains(fProject)); + + } + public static Test suite() { return new TestSuite(RefreshScopeTests.class); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumeration.java index d7acd764fd0..7e976248eb9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumeration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumeration.java @@ -16,9 +16,8 @@ package org.eclipse.cdt.core.dom.ast; * @noimplement This interface is not intended to be implemented by clients. */ public interface IEnumeration extends IBinding, IType { - /** - * returns an array of the IEnumerators declared in this enumeration + * Returns an array of the IEnumerators declared in this enumeration * @throws DOMException */ IEnumerator[] getEnumerators() throws DOMException; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumerator.java index 813d1146366..8260314fc80 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IEnumerator.java @@ -18,7 +18,7 @@ package org.eclipse.cdt.core.dom.ast; */ public interface IEnumerator extends IBinding { /** - * returns the type of this enumeration. The type of an enumerator + * Returns the type of this enumeration. The type of an enumerator * is the enumeration in which it is declared. * * @return the type of the enumeration diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IField.java index 57f36f9961b..9fef3eaf27b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IField.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IField.java @@ -6,8 +6,8 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Doug Schaefer (IBM) - Initial API and implementation - * Markus Schorn (Wind River Systems) + * Doug Schaefer (IBM) - Initial API and implementation + * Markus Schorn (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.core.dom.ast; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFileNomination.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFileNomination.java index 28a91aa36d4..3cdb410f719 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFileNomination.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFileNomination.java @@ -6,9 +6,8 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Markus Schorn - initial API and implementation + * Markus Schorn - initial API and implementation *******************************************************************************/ - package org.eclipse.cdt.core.dom.ast; import org.eclipse.cdt.core.index.IIndexFile; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunctionType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunctionType.java index b6e3c7c4152..5772caab0bc 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunctionType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IFunctionType.java @@ -15,14 +15,13 @@ package org.eclipse.cdt.core.dom.ast; * @noimplement This interface is not intended to be implemented by clients. */ public interface IFunctionType extends IType { - /** - * get the return type of this function type + * Returns the return type of this function type */ public IType getReturnType(); /** - * get the adjusted parameter types + * Returns the adjusted parameter types * ISO C99 6.7.5.3, ISO C++98 8.3.4-3 */ public IType[] getParameterTypes(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IMacroBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IMacroBinding.java index 8b524a1a793..b820b0b1ea6 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IMacroBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IMacroBinding.java @@ -6,8 +6,8 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * IBM - Initial API and implementation - * Markus Schorn (Wind River Systems) + * IBM - Initial API and implementation + * Markus Schorn (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.core.dom.ast; @@ -18,7 +18,6 @@ package org.eclipse.cdt.core.dom.ast; * @noimplement This interface is not intended to be implemented by clients. */ public interface IMacroBinding extends IBinding { - /** * Returns true if this is a function-style macro. * @since 5.0 diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java index 9aff9d85908..8a1b49eaa6e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IPointerType.java @@ -17,7 +17,7 @@ package org.eclipse.cdt.core.dom.ast; */ public interface IPointerType extends IType { /** - * get the type that this is a pointer to + * Returns the type that this is a pointer to */ public IType getType(); @@ -37,5 +37,4 @@ public interface IPointerType extends IType { * @since 5.3 */ boolean isRestrict(); - } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java index 9be32955e9f..a18e169e89d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IProblemBinding.java @@ -1,11 +1,11 @@ /******************************************************************************* - * Copyright (c) 2004, 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 + * Copyright (c) 2004, 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: + * Contributors: * Andrew Niefer (IBM Corporation) - initial API and implementation * Markus Schorn (Wind River Systems) *******************************************************************************/ @@ -18,7 +18,6 @@ package org.eclipse.cdt.core.dom.ast; * @noextend This interface is not intended to be extended by clients. */ public interface IProblemBinding extends IBinding, IScope, IType, ISemanticProblem { - /** * Returns the AST node that this problem was created for */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IQualifierType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IQualifierType.java index 63139dd769d..6535a0dbdc5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IQualifierType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IQualifierType.java @@ -29,7 +29,7 @@ public interface IQualifierType extends IType { public boolean isVolatile(); /** - * get the type that this is qualifying + * Returns the type that this is qualifying */ public IType getType(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java index e5910affecf..a713a581698 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope.java @@ -6,9 +6,9 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * IBM - Initial API and implementation - * Markus Schorn (Wind River Systems) - * Bryan Wilkinson (QNX) + * IBM - Initial API and implementation + * Markus Schorn (Wind River Systems) + * Bryan Wilkinson (QNX) *******************************************************************************/ package org.eclipse.cdt.core.dom.ast; @@ -24,7 +24,6 @@ import org.eclipse.cdt.core.index.IIndexFileSet; * @noimplement This interface is not intended to be implemented by clients. */ public interface IScope { - /** * Classifies the scope. * @since 5.1 @@ -32,13 +31,13 @@ public interface IScope { EScopeKind getKind(); /** - * Get the IName for this scope, may be null + * Returns the IName for this scope, may be null * @return The name of this scope. */ public IName getScopeName(); /** - * The method returns the first enclosing non-template scope, or null if this + * Returns the first enclosing non-template scope, or null if this * is the global scope. *

* For scopes obtained from an index, null is returned to indicate that the @@ -58,32 +57,32 @@ public interface IScope { public IBinding[] find(String name); /** - * Get the binding in this scope that the given name would resolve to. Could + * Returns the binding in this scope that the given name would resolve to. Could * return null if there is no matching binding in this scope, if the binding has not * yet been cached in this scope, or if resolve == false and the appropriate binding * has not yet been resolved. * * @param name - * @param resolve : + * @param resolve * whether or not to resolve the matching binding if it has not * been so already. - * @return : the binding in this scope that matches the name, or null + * @return the binding in this scope that matches the name, or null */ public IBinding getBinding(IASTName name, boolean resolve); /** - * Get the binding in this scope that the given name would resolve to. Could + * Returns the binding in this scope that the given name would resolve to. Could * return null if there is no matching binding in this scope, if the binding has not * yet been cached in this scope, or if resolve == false and the appropriate binding * has not yet been resolved. Accepts file local bindings from the index for the files - * int the given set, only. + * in the given set, only. * * @param name - * @param resolve : + * @param resolve * whether or not to resolve the matching binding if it has not * been so already. * @param acceptLocalBindings a set of files for which to accept local bindings. - * @return : the binding in this scope that matches the name, or null + * @return the binding in this scope that matches the name, or null */ public IBinding getBinding(IASTName name, boolean resolve, IIndexFileSet acceptLocalBindings); @@ -189,5 +188,4 @@ public interface IScope { * @since 5.5 */ public IBinding[] getBindings(ScopeLookupData lookup); - } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ISemanticProblem.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ISemanticProblem.java index 6cfe21fea75..ec7d620f069 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ISemanticProblem.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ISemanticProblem.java @@ -6,7 +6,7 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Markus Schorn - initial API and implementation + * Markus Schorn - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.dom.ast; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java index 072c70f2344..a2184ce8502 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/changegenerator/ChangeGenerator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Institute for Software, HSR Hochschule fuer Technik + * Copyright (c) 2008, 2012 Institute for Software, HSR Hochschule fuer Technik * Rapperswil, University of applied sciences and others * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -37,7 +37,6 @@ import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IASTInitializer; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; -import org.eclipse.cdt.core.dom.ast.IASTNodeSelector; import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement; @@ -771,10 +770,8 @@ public class ChangeGenerator extends ASTVisitor { IASTNode sibling = siblings[i]; if (sibling == node) { beforeNode = true; - } else if (beforeNode) { - sibling = getReplacementNode(sibling); - if (sibling != null) - return sibling; + } else if (beforeNode && getReplacementNode(sibling) != null) { + return sibling; } } return null; @@ -795,18 +792,21 @@ public class ChangeGenerator extends ASTVisitor { low = mid + 1; } } - low--; - if (low >= 0) { - IASTNode statement = preprocessorStatements[low]; - if (statement.isPartOfTranslationUnitFile()) { - int endOffset = endOffset(statement); - if (!doesRegionContainNode(ast, endOffset, offset - endOffset)) { - return statement; - } - } + IASTNode statement = --low >= 0 ? preprocessorStatements[low] : null; + + IASTNode originalSibling = getPreviousSiblingNode(node); + IASTNode sibling = originalSibling == null ? null : getReplacementNode(originalSibling); + if (statement == null || !statement.isPartOfTranslationUnitFile()) { + return sibling; + } + if (sibling == null) { + IASTNode parent = node.getParent(); + if (offset(parent) >= endOffset(statement)) + return null; + return statement; } - return getPreviousSiblingNode(node); + return endOffset(originalSibling) >= endOffset(statement) ? sibling : statement; } private IASTNode getNextSiblingNode(IASTNode node) { @@ -823,10 +823,8 @@ public class ChangeGenerator extends ASTVisitor { for (IASTNode sibling : siblings) { if (sibling == node) { beforeNode = true; - } else if (beforeNode) { - sibling = getReplacementNode(sibling); - if (sibling != null) - return sibling; + } else if (beforeNode && getReplacementNode(sibling) != null) { + return sibling; } } return null; @@ -847,44 +845,21 @@ public class ChangeGenerator extends ASTVisitor { low = mid + 1; } } - if (high < preprocessorStatements.length) { - IASTNode statement = preprocessorStatements[high]; - if (statement.isPartOfTranslationUnitFile()) { - int offset = offset(statement); - if (!doesRegionContainNode(ast, endOffset, offset - endOffset)) { - return statement; - } - } + IASTNode statement = high < preprocessorStatements.length ? preprocessorStatements[high] : null; + + IASTNode originalSibling = getNextSiblingNode(node); + IASTNode sibling = originalSibling == null ? null : getReplacementNode(originalSibling); + if (statement == null || !statement.isPartOfTranslationUnitFile()) { + return sibling; + } + if (sibling == null) { + IASTNode parent = node.getParent(); + if (endOffset(parent) <= offset(statement)) + return null; + return statement; } - return getNextSiblingNode(node); - } - - /** - * Checks if a given region contains at least a piece of a node after rewrite. - */ - private boolean doesRegionContainNode(IASTTranslationUnit ast, int offset, int length) { - IASTNodeSelector nodeSelector = ast.getNodeSelector(ast.getFilePath()); - while (length > 0) { - IASTNode node = nodeSelector.findFirstContainedNode(offset, length - 1); - if (node == null) - return false; - if (!isNodeRemoved(node)) - return true; - int oldOffset = offset; - offset = endOffset(node); - length -= offset - oldOffset; - } - return false; - } - - private boolean isNodeRemoved(IASTNode node) { - do { - if (getReplacementNode(node) == null) - return true; - } while ((node = node.getParent()) != null); - - return false; + return offset(originalSibling) <= offset(statement) ? sibling : statement; } /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java index 2afb5902155..e83ea702b5b 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. + * Copyright (c) 2000, 2012 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 @@ -32,6 +32,8 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; +import org.eclipse.swt.accessibility.AccessibleAdapter; +import org.eclipse.swt.accessibility.AccessibleEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -183,6 +185,14 @@ public class CustomFiltersDialog extends SelectionDialog { List initialSelection= getInitialElementSelections(); if (initialSelection != null && !initialSelection.isEmpty()) checkInitialSelections(); + + fCheckBoxList.getTable().getAccessible().addAccessibleListener(new AccessibleAdapter() { + @Override + public void getName(AccessibleEvent e) { + e.result = FilterMessages.CustomFiltersDialog_filterList_label; + } + }); + fCheckBoxList.getTable().setToolTipText(FilterMessages.CustomFiltersDialog_filterList_label); // Description info= new Label(parent, SWT.LEFT);