1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-06 17:26:01 +02:00

Fix for 104583, implementation of indexer policies.

This commit is contained in:
Markus Schorn 2007-04-23 06:53:19 +00:00
parent 4ce2d4020f
commit 8380e9b7cf
13 changed files with 312 additions and 121 deletions

View file

@ -18,12 +18,13 @@ import org.eclipse.cdt.core.dom.IPDOMIndexerTask;
import org.eclipse.cdt.core.dom.IPDOMManager;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
import org.eclipse.cdt.internal.core.pdom.indexer.PDOMUpdateTask;
public class IndexUpdatePolicy {
public static final int POST_CHANGE = 0;
public static final int POST_BUILD = 1;
public static final int MANUAL= 2;
public static final int POST_CHANGE= IndexerPreferences.UPDATE_POLICY_IMMEDIATE;
public static final int POST_BUILD= IndexerPreferences.UPDATE_POLICY_LAZY;
public static final int MANUAL= IndexerPreferences.UPDATE_POLICY_MANUAL;
private final ICProject fCProject;
private int fKind;
@ -35,20 +36,55 @@ public class IndexUpdatePolicy {
public IndexUpdatePolicy(ICProject project, int kind) {
fCProject= project;
fKind= kind;
fKind= getLegalPolicy(kind);
}
private int getLegalPolicy(int kind) {
switch(kind) {
case POST_BUILD:
case POST_CHANGE:
case MANUAL:
return kind;
}
return POST_CHANGE;
}
public ICProject getProject() {
return fCProject;
}
public int getKind() {
return fKind;
public void clearTUs() {
fAdded.clear();
fChanged.clear();
fRemoved.clear();
}
public IPDOMIndexerTask addDelta(ITranslationUnit[] added, ITranslationUnit[] changed,
ITranslationUnit[] removed) {
if (fIndexer != null && fIndexer.getID().equals(IPDOMManager.ID_NO_INDEXER)) {
public boolean hasTUs() {
return !(fAdded.isEmpty() && fChanged.isEmpty() && fRemoved.isEmpty());
}
private ITranslationUnit[] getAdded() {
return (ITranslationUnit[]) fAdded.toArray(new ITranslationUnit[fAdded.size()]);
}
private ITranslationUnit[] getChanged() {
return (ITranslationUnit[]) fChanged.toArray(new ITranslationUnit[fChanged.size()]);
}
private ITranslationUnit[] getRemoved() {
return (ITranslationUnit[]) fRemoved.toArray(new ITranslationUnit[fRemoved.size()]);
}
public void setIndexer(IPDOMIndexer indexer) {
fIndexer= indexer;
}
public IPDOMIndexer getIndexer() {
return fIndexer;
}
public IPDOMIndexerTask handleDelta(ITranslationUnit[] added, ITranslationUnit[] changed, ITranslationUnit[] removed) {
if (isNullIndexer()) {
return null;
}
@ -84,45 +120,39 @@ public class IndexUpdatePolicy {
}
return null;
}
public void clearTUs() {
fAdded.clear();
fChanged.clear();
fRemoved.clear();
}
public boolean hasTUs() {
return !(fAdded.isEmpty() && fChanged.isEmpty() && fRemoved.isEmpty());
}
public IPDOMIndexerTask createTask() {
IPDOMIndexerTask task= null;
if (fIndexer != null && hasTUs()) {
if (getKind() != IndexUpdatePolicy.MANUAL &&
!fIndexer.getID().equals(IPDOMManager.ID_NO_INDEXER)) {
return fIndexer.createTask(getAdded(), getChanged(), getRemoved());
if (fKind != IndexUpdatePolicy.MANUAL && !isNullIndexer()) {
task= fIndexer.createTask(getAdded(), getChanged(), getRemoved());
}
clearTUs();
}
return null;
return task;
}
private ITranslationUnit[] getAdded() {
return (ITranslationUnit[]) fAdded.toArray(new ITranslationUnit[fAdded.size()]);
private boolean isNullIndexer() {
return fIndexer != null && fIndexer.getID().equals(IPDOMManager.ID_NO_INDEXER);
}
private ITranslationUnit[] getChanged() {
return (ITranslationUnit[]) fChanged.toArray(new ITranslationUnit[fChanged.size()]);
}
private ITranslationUnit[] getRemoved() {
return (ITranslationUnit[]) fRemoved.toArray(new ITranslationUnit[fRemoved.size()]);
}
public void setIndexer(IPDOMIndexer indexer) {
fIndexer= indexer;
}
public IPDOMIndexer getIndexer() {
return fIndexer;
public IPDOMIndexerTask changePolicy(int updatePolicy) {
int oldPolicy= fKind;
fKind= getLegalPolicy(updatePolicy);
IPDOMIndexerTask task= null;
if (fKind == MANUAL || isNullIndexer()) {
clearTUs();
}
else if (fIndexer != null) {
if (oldPolicy == MANUAL) {
task= new PDOMUpdateTask(fIndexer, true);
clearTUs();
}
else if (fKind == POST_CHANGE) {
task= createTask();
}
}
return task;
}
}

View file

@ -66,6 +66,7 @@ import org.eclipse.cdt.internal.core.pdom.indexer.nulli.PDOMNullIndexer;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@ -169,7 +170,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
initializeDatabaseCache();
final CoreModel model = CoreModel.getDefault();
ResourcesPlugin.getWorkspace().addResourceChangeListener(fCModelListener);
ResourcesPlugin.getWorkspace().addResourceChangeListener(fCModelListener, IResourceChangeEvent.POST_BUILD);
model.addElementChangedListener(fCModelListener);
LanguageManager.getInstance().registerLanguageChangeListener(fLanguageChangeListener);
@ -349,13 +350,31 @@ public class PDOMManager implements IWritableIndexManager, IListener {
}
protected void onPreferenceChange(ICProject cproject, PreferenceChangeEvent event) {
IProject project= cproject.getProject();
if (project.exists() && project.isOpen()) {
try {
changeIndexer(cproject);
if (IndexerPreferences.KEY_UPDATE_POLICY.equals(event.getKey())) {
changeUpdatePolicy(cproject);
}
else {
IProject project= cproject.getProject();
if (project.exists() && project.isOpen()) {
try {
changeIndexer(cproject);
}
catch (Exception e) {
CCorePlugin.log(e);
}
}
catch (Exception e) {
CCorePlugin.log(e);
}
}
private void changeUpdatePolicy(ICProject cproject) {
assert !Thread.holdsLock(fProjectToPDOM);
synchronized (fUpdatePolicies) {
IndexUpdatePolicy policy= getPolicy(cproject);
if (policy != null) {
IPDOMIndexerTask task= policy.changePolicy(IndexerPreferences.getUpdatePolicy(cproject.getProject()));
if (task != null) {
enqueue(task);
}
}
}
}
@ -622,7 +641,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
if (added.length > 0 || changed.length > 0 || removed.length > 0) {
synchronized (fUpdatePolicies) {
IndexUpdatePolicy policy= createPolicy(project);
IPDOMIndexerTask task= policy.addDelta(added, changed, removed);
IPDOMIndexerTask task= policy.handleDelta(added, changed, removed);
if (task != null) {
enqueue(task);
}
@ -710,6 +729,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
IndexUpdatePolicy policy= getPolicy(project);
if (policy != null) {
if (policy.getIndexer() == indexer) {
policy.clearTUs();
policy.setIndexer(null);
}
}

View file

@ -41,15 +41,19 @@ public class IndexerPreferences {
public static final int SCOPE_PROJECT_PRIVATE = 1;
public static final int SCOPE_PROJECT_SHARED = 2;
public static final int UPDATE_POLICY_IMMEDIATE= 0;
public static final int UPDATE_POLICY_LAZY= 1;
public static final int UPDATE_POLICY_MANUAL= 2;
public static final String KEY_INDEXER_ID= "indexerId"; //$NON-NLS-1$
public static final String KEY_INDEX_ALL_FILES= "indexAllFiles"; //$NON-NLS-1$
public static final String KEY_FILES_TO_PARSE_UP_FRONT= "filesToParseUpFront"; //$NON-NLS-1$
public static final String KEY_SKIP_ALL_REFERENCES= "skipReferences"; //$NON-NLS-1$
public static final String KEY_SKIP_TYPE_REFERENCES= "skipTypeReferences"; //$NON-NLS-1$
public static final String KEY_UPDATE_POLICY= "updatePolicy"; //$NON-NLS-1$
private static final String KEY_INDEXER_PREFS_SCOPE = "preferenceScope"; //$NON-NLS-1$
private static final String KEY_INDEX_IMPORT_LOCATION = "indexImportLocation"; //$NON-NLS-1$
private static final String KEY_UPDATE_POLICY= "updatePolicy"; //$NON-NLS-1$
private static final String DEFAULT_INDEX_IMPORT_LOCATION = ".settings/cdt-index.zip"; //$NON-NLS-1$
private static final String DEFAULT_FILES_TO_PARSE_UP_FRONT= "stdarg.h, stddef.h, sys/types.h"; //$NON-NLS-1$
@ -120,6 +124,24 @@ public class IndexerPreferences {
return scope;
}
/**
* Sets the scope that shall be used for the project.
* Must be one of {@link #UPDATE_POLICY_IMMEDIATE}, {@link #UPDATE_POLICY_LAZY} or
* {@link #UPDATE_POLICY_MANUAL}.
*/
public static void setUpdatePolicy(IProject project, int policy) {
switch (policy) {
case UPDATE_POLICY_IMMEDIATE:
case UPDATE_POLICY_LAZY:
case UPDATE_POLICY_MANUAL:
break;
default:
throw new IllegalArgumentException();
}
// no support for project specific policies.
getInstancePreferences().put(KEY_UPDATE_POLICY, String.valueOf(policy));
}
/**
* Returns the properties for the indexer of a project.
*/
@ -146,7 +168,14 @@ public class IndexerPreferences {
addProperties(prefs, props);
return props;
}
public static int getDefaultUpdatePolicy() {
Preferences[] prefs = new Preferences[] {
getDefaultPreferences()
};
return getUpdatePolicy(prefs);
}
/**
* Adds or changes indexer properties for a project.
*/
@ -350,22 +379,12 @@ public class IndexerPreferences {
}
public static int getUpdatePolicy(IProject project) {
Preferences[] prefs;
if (project != null) {
prefs= new Preferences[] {
getProjectPreferences(project),
getInstancePreferences(),
getConfigurationPreferences(),
getDefaultPreferences()
};
}
else {
prefs= new Preferences[] {
getInstancePreferences(),
getConfigurationPreferences(),
getDefaultPreferences()
};
}
// no support for project specific policies
Preferences[] prefs= getPreferences(null);
return getUpdatePolicy(prefs);
}
private static int getUpdatePolicy(Preferences[] prefs) {
String val= Platform.getPreferencesService().get(KEY_UPDATE_POLICY, null, prefs);
if (val != null) {
try {

View file

@ -27,25 +27,30 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.cdt.ui.dialogs.CacheSizeBlock;
import org.eclipse.cdt.ui.dialogs.ICOptionContainer;
import org.eclipse.cdt.ui.dialogs.IndexerBlock;
import org.eclipse.cdt.ui.dialogs.IndexerStrategyBlock;
public class IndexerPreferencePage extends PreferencePage implements
IWorkbenchPreferencePage, ICOptionContainer {
private IndexerBlock fOptionBlock;
private CacheSizeBlock fCacheBlock;
private IndexerStrategyBlock fStrategyBlock;
public IndexerPreferencePage(){
fOptionBlock = new IndexerBlock();
fStrategyBlock= new IndexerStrategyBlock(this);
fCacheBlock= new CacheSizeBlock(this);
}
protected Control createContents(Composite parent) {
GridLayout gl;
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout());
GridData gd= new GridData();
composite.setLayoutData(gd);
composite.setLayout(gl= new GridLayout());
composite.setLayoutData(new GridData());
gl.verticalSpacing= 0;
fOptionBlock.createControl(composite);
fStrategyBlock.createControl(composite);
fCacheBlock.createControl(composite);
return composite;
@ -59,6 +64,10 @@ public class IndexerPreferencePage extends PreferencePage implements
setErrorMessage(fOptionBlock.getErrorMessage());
setValid(false);
}
else if (!fStrategyBlock.isValid()) {
setErrorMessage(fStrategyBlock.getErrorMessage());
setValid(false);
}
else if (!fCacheBlock.isValid()) {
setErrorMessage(fCacheBlock.getErrorMessage());
setValid(false);
@ -80,6 +89,7 @@ public class IndexerPreferencePage extends PreferencePage implements
public boolean performOk() {
try {
fOptionBlock.performApply(new NullProgressMonitor());
fStrategyBlock.performApply(new NullProgressMonitor());
fCacheBlock.performApply(new NullProgressMonitor());
} catch (CoreException e) {}
return true;
@ -87,6 +97,8 @@ public class IndexerPreferencePage extends PreferencePage implements
public void performDefaults() {
fOptionBlock.performDefaults();
fStrategyBlock.performDefaults();
fCacheBlock.performDefaults();
updateContainer();
}
}

View file

@ -67,24 +67,24 @@ public class CacheSizeBlock extends AbstractCOptionPage {
setControl(composite);
Group group= ControlFactory.createGroup(composite, Messages.CacheSizeBlock_cacheLimitGroup, 1);
Group group= ControlFactory.createGroup(composite, DialogsMessages.CacheSizeBlock_cacheLimitGroup, 1);
gd= (GridData) group.getLayoutData();
gd.grabExcessHorizontalSpace= true;
gd.horizontalAlignment= GridData.FILL;
Composite cacheComp= ControlFactory.createComposite(group, 3);
Label dbCacheLabel= ControlFactory.createLabel(cacheComp, Messages.CacheSizeBlock_indexDatabaseCache);
fDBLimitPct= new IntegerFieldEditor(CCorePreferenceConstants.INDEX_DB_CACHE_SIZE_PCT, Messages.CacheSizeBlock_limitRelativeToMaxHeapSize, cacheComp, 3);
Label dbCacheLabel= ControlFactory.createLabel(cacheComp, DialogsMessages.CacheSizeBlock_indexDatabaseCache);
fDBLimitPct= new IntegerFieldEditor(CCorePreferenceConstants.INDEX_DB_CACHE_SIZE_PCT, DialogsMessages.CacheSizeBlock_limitRelativeToMaxHeapSize, cacheComp, 3);
fDBLimitPct.setValidRange(1, 40);
ControlFactory.createLabel(cacheComp, "%"); //$NON-NLS-1$
fDBAbsoluteLimit= new IntegerFieldEditor(CCorePreferenceConstants.MAX_INDEX_DB_CACHE_SIZE_MB, Messages.CacheSizeBlock_absoluteLimit, cacheComp, 4);
fDBAbsoluteLimit= new IntegerFieldEditor(CCorePreferenceConstants.MAX_INDEX_DB_CACHE_SIZE_MB, DialogsMessages.CacheSizeBlock_absoluteLimit, cacheComp, 4);
fDBAbsoluteLimit.setValidRange(1, 10000);
ControlFactory.createLabel(cacheComp, "mb"); //$NON-NLS-1$
Label codeReaderLabel= ControlFactory.createLabel(cacheComp, Messages.CacheSizeBlock_headerFileCache);
fCodeReaderLimit= new IntegerFieldEditor(CodeReaderCache.CODE_READER_BUFFER, Messages.CacheSizeBlock_absoluteLimit, cacheComp, 4);
Label codeReaderLabel= ControlFactory.createLabel(cacheComp, DialogsMessages.CacheSizeBlock_headerFileCache);
fCodeReaderLimit= new IntegerFieldEditor(CodeReaderCache.CODE_READER_BUFFER, DialogsMessages.CacheSizeBlock_absoluteLimit, cacheComp, 4);
fCodeReaderLimit.setValidRange(1, 10000);
ControlFactory.createLabel(cacheComp, "mb"); //$NON-NLS-1$
@ -92,6 +92,7 @@ public class CacheSizeBlock extends AbstractCOptionPage {
gl.numColumns= 3;
gl.makeColumnsEqualWidth= false;
gl.marginLeft= 0;
gl.verticalSpacing= 2;
gd= (GridData) dbCacheLabel.getLayoutData();
gd.horizontalSpan= 3;

View file

@ -19,9 +19,21 @@ public class DialogsMessages extends NLS {
public static String AbstractIndexerPage_indexUpFront;
public static String AbstractIndexerPage_skipAllReferences;
public static String AbstractIndexerPage_skipTypeReferences;
public static String IndexerStrategyBlock_activeBuildConfig;
public static String IndexerStrategyBlock_autoUpdate;
public static String IndexerStrategyBlock_buildConfigGroup;
public static String IndexerStrategyBlock_immediateUpdate;
public static String IndexerStrategyBlock_specificBuildConfig;
public static String IndexerStrategyBlock_strategyGroup;
public static String PreferenceScopeBlock_enableProjectSettings;
public static String PreferenceScopeBlock_preferenceLink;
public static String PreferenceScopeBlock_storeWithProject;
public static String CacheSizeBlock_absoluteLimit;
public static String CacheSizeBlock_cacheLimitGroup;
public static String CacheSizeBlock_headerFileCache;
public static String CacheSizeBlock_indexDatabaseCache;
public static String CacheSizeBlock_limitRelativeToMaxHeapSize;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, DialogsMessages.class);

View file

@ -15,3 +15,14 @@ AbstractIndexerPage_indexAllFiles=Index all files (files neither built nor inclu
AbstractIndexerPage_skipAllReferences=Skip all references (Call Hierarchy and Search will not work)
AbstractIndexerPage_skipTypeReferences=Skip type references (Search for type references will not work)
AbstractIndexerPage_indexUpFront=Files to index up-front:
CacheSizeBlock_cacheLimitGroup=Cache limits
CacheSizeBlock_indexDatabaseCache=Index database cache:
CacheSizeBlock_limitRelativeToMaxHeapSize=Limit relative to the maximum heap size:
CacheSizeBlock_absoluteLimit=Absolute Limit:
CacheSizeBlock_headerFileCache=Header file cache (used by full indexer and refactoring):
IndexerStrategyBlock_strategyGroup=Indexing strategy
IndexerStrategyBlock_autoUpdate=Automatically update the index
IndexerStrategyBlock_immediateUpdate=Update index immediately after every file-change
IndexerStrategyBlock_buildConfigGroup=Build configuration for the indexer
IndexerStrategyBlock_activeBuildConfig=Use active build configuration
IndexerStrategyBlock_specificBuildConfig=Use the build configuration specified in the project's indexer settings

View file

@ -120,7 +120,8 @@ public class IndexerBlock extends AbstractCOptionPage {
GridLayout layout= ((GridLayout)composite.getLayout());
layout.marginWidth= 0;
composite.setLayoutData(null);
GridData gd= (GridData) composite.getLayoutData();
gd.grabExcessHorizontalSpace= true;
setControl(composite);
if (getProject() != null || getContainer() instanceof ICOptionContainerExtension) {
@ -136,8 +137,8 @@ public class IndexerBlock extends AbstractCOptionPage {
layout= (GridLayout)fPreferenceContent.getLayout();
layout.marginHeight= 0;
layout.marginWidth= 0;
GridData gd= (GridData) fPreferenceContent.getLayoutData();
gd.horizontalIndent= 0;
gd= (GridData) fPreferenceContent.getLayoutData();
gd.horizontalIndent= 0;
Composite isc = ControlFactory.createComposite(fPreferenceContent, 1);
GridLayout gridLayout = ((GridLayout)isc.getLayout());
@ -147,6 +148,8 @@ public class IndexerBlock extends AbstractCOptionPage {
// add combo to select indexer
Group group= ControlFactory.createGroup(isc,INDEXER_COMBO_LABEL, 1);
gd= (GridData) group.getLayoutData();
gd.grabExcessHorizontalSpace= true;
fIndexersComboBox = ControlFactory.createSelectCombo(group,"", ""); //$NON-NLS-1$ //$NON-NLS-2$
fIndexersComboBox.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
@ -155,7 +158,7 @@ public class IndexerBlock extends AbstractCOptionPage {
});
// add composite for pages
fIndexerPageComposite= ControlFactory.createComposite(fPreferenceContent, 1);
fIndexerPageComposite= ControlFactory.createComposite(group, 1);
fIndexerPageComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1));
fIndexerPageComposite.setLayout(new TabFolderLayout());

View file

@ -19,7 +19,7 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.PlatformUI;
@ -41,7 +41,7 @@ public class IndexerOptionPropertyPage extends PropertyPage implements ICOptionC
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new FillLayout());
composite.setLayout(new GridLayout());
optionPage.createControl(composite);
PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, ICHelpContextIds.PROJECT_INDEXER_PROPERTIES);

View file

@ -0,0 +1,118 @@
/*******************************************************************************
* Copyright (c) 2007 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:
* Markus Schorn - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Group;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
/**
* This OptionPage is used in the IndexerPreference page to allow for adjusting
* various parsing related caches.
*/
public class IndexerStrategyBlock extends AbstractCOptionPage {
private Button fAutoUpdateButton;
private Button fImmediateUpdateButton;
// private Button fUseActiveBuildButton;
// private Button fUseFixedBuildConfig;
public IndexerStrategyBlock(ICOptionContainer container){
setContainer(container);
}
public void createControl(Composite parent) {
GridData gd;
GridLayout gl;
Composite composite = ControlFactory.createComposite(parent, 1);
gl= (GridLayout)composite.getLayout();
gl.marginWidth= 0;
gl.verticalSpacing= gl.marginHeight*2;
gd= (GridData) composite.getLayoutData();
gd.grabExcessHorizontalSpace= false;
gd.horizontalAlignment= GridData.FILL;
setControl(composite);
SelectionListener updateEnablement= new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
updateEnablement();
}
};
Group group= ControlFactory.createGroup(composite, DialogsMessages.IndexerStrategyBlock_strategyGroup, 1);
gd= (GridData) group.getLayoutData();
gd.grabExcessHorizontalSpace= true;
gd.horizontalAlignment= GridData.FILL;
fAutoUpdateButton= ControlFactory.createCheckBox(group, DialogsMessages.IndexerStrategyBlock_autoUpdate);
fImmediateUpdateButton= ControlFactory.createCheckBox(group, DialogsMessages.IndexerStrategyBlock_immediateUpdate);
fAutoUpdateButton.addSelectionListener(updateEnablement);
// group= ControlFactory.createGroup(composite, DialogsMessages.IndexerStrategyBlock_buildConfigGroup, 1);
// gd= (GridData) group.getLayoutData();
// gd.grabExcessHorizontalSpace= true;
// gd.horizontalAlignment= GridData.FILL;
// fUseActiveBuildButton= ControlFactory.createRadioButton(group, DialogsMessages.IndexerStrategyBlock_activeBuildConfig, null, null);
// fUseFixedBuildConfig= ControlFactory.createRadioButton(group, DialogsMessages.IndexerStrategyBlock_specificBuildConfig, null, null);
initializeValues();
}
protected void updateEnablement() {
fImmediateUpdateButton.setEnabled(fAutoUpdateButton.getSelection());
}
private void initializeValues() {
int updatePolicy= IndexerPreferences.getUpdatePolicy(null);
initUpdatePolicy(updatePolicy);
// fUseActiveBuildButton.setSelection(false);
// fUseFixedBuildConfig.setSelection(false);
updateEnablement();
}
private void initUpdatePolicy(int updatePolicy) {
fAutoUpdateButton.setSelection(updatePolicy != IndexerPreferences.UPDATE_POLICY_MANUAL);
fImmediateUpdateButton.setSelection(updatePolicy == IndexerPreferences.UPDATE_POLICY_IMMEDIATE);
}
public void performApply(IProgressMonitor monitor) throws CoreException {
int updatePolicy;
if (!fAutoUpdateButton.getSelection()) {
updatePolicy= IndexerPreferences.UPDATE_POLICY_MANUAL;
}
else if (fImmediateUpdateButton.getSelection()) {
updatePolicy= IndexerPreferences.UPDATE_POLICY_IMMEDIATE;
}
else {
updatePolicy= IndexerPreferences.UPDATE_POLICY_LAZY;
}
IndexerPreferences.setUpdatePolicy(null, updatePolicy);
}
public void performDefaults() {
initUpdatePolicy(IndexerPreferences.getDefaultUpdatePolicy());
updateEnablement();
}
}

View file

@ -1,30 +0,0 @@
/*******************************************************************************
* Copyright (c) 2007 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:
* Markus Schorn - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.ui.dialogs;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String BUNDLE_NAME = "org.eclipse.cdt.ui.dialogs.messages"; //$NON-NLS-1$
public static String CacheSizeBlock_absoluteLimit;
public static String CacheSizeBlock_cacheLimitGroup;
public static String CacheSizeBlock_headerFileCache;
public static String CacheSizeBlock_indexDatabaseCache;
public static String CacheSizeBlock_limitRelativeToMaxHeapSize;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
private Messages() {
}
}

View file

@ -13,7 +13,7 @@ package org.eclipse.cdt.ui.dialogs;
import java.util.Properties;
import org.eclipse.swt.SWT;
import org.eclipse.jface.dialogs.ControlEnableState;
import org.eclipse.swt.widgets.Composite;
@ -23,8 +23,8 @@ import org.eclipse.swt.widgets.Composite;
public class NullIndexerBlock extends AbstractIndexerPage {
public void createControl(Composite parent) {
Composite comp = new Composite(parent, SWT.NULL);
setControl(comp);
super.createControl(parent);
ControlEnableState.disable(getControl());
}
public Properties getProperties() {

View file

@ -1,5 +0,0 @@
CacheSizeBlock_cacheLimitGroup=Cache limits
CacheSizeBlock_indexDatabaseCache=Index database cache:
CacheSizeBlock_limitRelativeToMaxHeapSize=Limit relative to the maximum heap size:
CacheSizeBlock_absoluteLimit=Absolute Limit:
CacheSizeBlock_headerFileCache=Header file cache (used by full indexer and refactoring):