mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-01 13:25:45 +02:00
Fix for 176389, preference UI for cache sizes.
This commit is contained in:
parent
7a2f549d31
commit
2d8f4698f2
11 changed files with 273 additions and 23 deletions
|
@ -136,6 +136,13 @@ public class IndexerPreferences {
|
||||||
return props;
|
return props;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Properties getDefaultIndexerProperties() {
|
||||||
|
Preferences prefs= getDefaultPreferences();
|
||||||
|
Properties props= new Properties();
|
||||||
|
addProperties(prefs, props);
|
||||||
|
return props;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds or changes indexer properties for a project.
|
* Adds or changes indexer properties for a project.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -19,6 +19,7 @@ import java.util.Map;
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
||||||
import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants;
|
import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants;
|
||||||
|
import org.eclipse.cdt.core.parser.CodeReaderCache;
|
||||||
import org.eclipse.cdt.internal.core.model.CModelManager;
|
import org.eclipse.cdt.internal.core.model.CModelManager;
|
||||||
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
|
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
|
||||||
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
|
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
|
||||||
|
@ -44,8 +45,9 @@ public class CCorePreferenceInitializer extends AbstractPreferenceInitializer {
|
||||||
defaultOptionsMap.put(CCorePreferenceConstants.CODE_FORMATTER, CCorePreferenceConstants.DEFAULT_CODE_FORMATTER);
|
defaultOptionsMap.put(CCorePreferenceConstants.CODE_FORMATTER, CCorePreferenceConstants.DEFAULT_CODE_FORMATTER);
|
||||||
defaultOptionsMap.put(CCorePreferenceConstants.INDEX_DB_CACHE_SIZE_PCT, CCorePreferenceConstants.DEFAULT_INDEX_DB_CACHE_SIZE_PCT);
|
defaultOptionsMap.put(CCorePreferenceConstants.INDEX_DB_CACHE_SIZE_PCT, CCorePreferenceConstants.DEFAULT_INDEX_DB_CACHE_SIZE_PCT);
|
||||||
defaultOptionsMap.put(CCorePreferenceConstants.MAX_INDEX_DB_CACHE_SIZE_MB, CCorePreferenceConstants.DEFAULT_MAX_INDEX_DB_CACHE_SIZE_MB);
|
defaultOptionsMap.put(CCorePreferenceConstants.MAX_INDEX_DB_CACHE_SIZE_MB, CCorePreferenceConstants.DEFAULT_MAX_INDEX_DB_CACHE_SIZE_MB);
|
||||||
|
|
||||||
defaultOptionsMap.put(CCorePreferenceConstants.WORKSPACE_LANGUAGE_MAPPINGS, CCorePreferenceConstants.DEFAULT_WORKSPACE_LANGUAGE_MAPPINGS);
|
defaultOptionsMap.put(CCorePreferenceConstants.WORKSPACE_LANGUAGE_MAPPINGS, CCorePreferenceConstants.DEFAULT_WORKSPACE_LANGUAGE_MAPPINGS);
|
||||||
|
defaultOptionsMap.put(CodeReaderCache.CODE_READER_BUFFER, CodeReaderCache.DEFAULT_CACHE_SIZE_IN_MB_STRING);
|
||||||
|
|
||||||
// Store default values to default preferences
|
// Store default values to default preferences
|
||||||
IEclipsePreferences defaultPreferences = ((IScopeContext) new DefaultScope()).getNode(CCorePlugin.PLUGIN_ID);
|
IEclipsePreferences defaultPreferences = ((IScopeContext) new DefaultScope()).getNode(CCorePlugin.PLUGIN_ID);
|
||||||
for (Iterator iter = defaultOptionsMap.entrySet().iterator(); iter.hasNext();) {
|
for (Iterator iter = defaultOptionsMap.entrySet().iterator(); iter.hasNext();) {
|
||||||
|
|
|
@ -257,7 +257,6 @@ HideMacrodirective.description= Hides Macro directives
|
||||||
WorkInProgress.name=Work In Progress
|
WorkInProgress.name=Work In Progress
|
||||||
|
|
||||||
CDTSearch.name=Search
|
CDTSearch.name=Search
|
||||||
CDTParser.name=Parser
|
|
||||||
|
|
||||||
CDTIndexerProperty.name=C/C++ Indexer
|
CDTIndexerProperty.name=C/C++ Indexer
|
||||||
|
|
||||||
|
|
|
@ -669,11 +669,6 @@
|
||||||
class="org.eclipse.cdt.internal.ui.preferences.CFileTypesPreferencePage"
|
class="org.eclipse.cdt.internal.ui.preferences.CFileTypesPreferencePage"
|
||||||
id="org.eclipse.cdt.ui.preferences.CFileTypesPreferences">
|
id="org.eclipse.cdt.ui.preferences.CFileTypesPreferences">
|
||||||
</page>
|
</page>
|
||||||
<page
|
|
||||||
class="org.eclipse.cdt.internal.ui.preferences.CParserPreferencePage"
|
|
||||||
category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
|
|
||||||
name="%CDTParser.name"
|
|
||||||
id="org.eclipse.cdt.ui.preferences.CParserPreferencePage"/>
|
|
||||||
<page
|
<page
|
||||||
name="%appearancePrefName"
|
name="%appearancePrefName"
|
||||||
category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
|
category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Copyright (c) 2005 IBM Corporation and others.
|
* Copyright (c) 2005, 2007 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IBM Corporation - initial API and implementation
|
* IBM Corporation - initial API and implementation
|
||||||
|
* Markus Schorn (Wind River Systems)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.preferences;
|
package org.eclipse.cdt.internal.ui.preferences;
|
||||||
|
|
||||||
|
@ -34,6 +35,8 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author dsteffle
|
* @author dsteffle
|
||||||
|
* @deprecated the one preference found on the page was moved to the
|
||||||
|
* indexer preference page.
|
||||||
*/
|
*/
|
||||||
public class CParserPreferencePage extends PreferencePage implements
|
public class CParserPreferencePage extends PreferencePage implements
|
||||||
IWorkbenchPreferencePage {
|
IWorkbenchPreferencePage {
|
||||||
|
|
|
@ -17,12 +17,14 @@ import org.eclipse.core.runtime.NullProgressMonitor;
|
||||||
import org.eclipse.core.runtime.Preferences;
|
import org.eclipse.core.runtime.Preferences;
|
||||||
import org.eclipse.jface.preference.PreferencePage;
|
import org.eclipse.jface.preference.PreferencePage;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.layout.FillLayout;
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
import org.eclipse.swt.widgets.Control;
|
||||||
import org.eclipse.ui.IWorkbench;
|
import org.eclipse.ui.IWorkbench;
|
||||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
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.ICOptionContainer;
|
||||||
import org.eclipse.cdt.ui.dialogs.IndexerBlock;
|
import org.eclipse.cdt.ui.dialogs.IndexerBlock;
|
||||||
|
|
||||||
|
@ -30,16 +32,21 @@ public class IndexerPreferencePage extends PreferencePage implements
|
||||||
IWorkbenchPreferencePage, ICOptionContainer {
|
IWorkbenchPreferencePage, ICOptionContainer {
|
||||||
|
|
||||||
private IndexerBlock fOptionBlock;
|
private IndexerBlock fOptionBlock;
|
||||||
|
private CacheSizeBlock fCacheBlock;
|
||||||
|
|
||||||
public IndexerPreferencePage(){
|
public IndexerPreferencePage(){
|
||||||
fOptionBlock = new IndexerBlock();
|
fOptionBlock = new IndexerBlock();
|
||||||
|
fCacheBlock= new CacheSizeBlock(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Control createContents(Composite parent) {
|
protected Control createContents(Composite parent) {
|
||||||
Composite composite = new Composite(parent, SWT.NONE);
|
Composite composite = new Composite(parent, SWT.NONE);
|
||||||
composite.setLayout(new FillLayout());
|
composite.setLayout(new GridLayout());
|
||||||
|
GridData gd= new GridData();
|
||||||
|
composite.setLayoutData(gd);
|
||||||
|
|
||||||
fOptionBlock.createControl(composite);
|
fOptionBlock.createControl(composite);
|
||||||
|
fCacheBlock.createControl(composite);
|
||||||
|
|
||||||
return composite;
|
return composite;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +55,18 @@ public class IndexerPreferencePage extends PreferencePage implements
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateContainer() {
|
public void updateContainer() {
|
||||||
|
if (!fOptionBlock.isValid()) {
|
||||||
|
setErrorMessage(fOptionBlock.getErrorMessage());
|
||||||
|
setValid(false);
|
||||||
|
}
|
||||||
|
else if (!fCacheBlock.isValid()) {
|
||||||
|
setErrorMessage(fCacheBlock.getErrorMessage());
|
||||||
|
setValid(false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setErrorMessage(null);
|
||||||
|
setValid(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IProject getProject() {
|
public IProject getProject() {
|
||||||
|
@ -61,11 +80,13 @@ public class IndexerPreferencePage extends PreferencePage implements
|
||||||
public boolean performOk() {
|
public boolean performOk() {
|
||||||
try {
|
try {
|
||||||
fOptionBlock.performApply(new NullProgressMonitor());
|
fOptionBlock.performApply(new NullProgressMonitor());
|
||||||
|
fCacheBlock.performApply(new NullProgressMonitor());
|
||||||
} catch (CoreException e) {}
|
} catch (CoreException e) {}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void performDefaults() {
|
public void performDefaults() {
|
||||||
fOptionBlock.performDefaults();
|
fOptionBlock.performDefaults();
|
||||||
|
fCacheBlock.performDefaults();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,9 @@ import java.util.Properties;
|
||||||
|
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
import org.eclipse.swt.SWT;
|
|
||||||
import org.eclipse.swt.events.SelectionAdapter;
|
import org.eclipse.swt.events.SelectionAdapter;
|
||||||
import org.eclipse.swt.events.SelectionEvent;
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Label;
|
import org.eclipse.swt.widgets.Label;
|
||||||
|
@ -142,8 +142,8 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Text createParseUpFrontTextField(Composite page) {
|
private Text createParseUpFrontTextField(Composite page) {
|
||||||
new Label(page, SWT.NONE);
|
Label l= ControlFactory.createLabel(page, DialogsMessages.AbstractIndexerPage_indexUpFront);
|
||||||
ControlFactory.createLabel(page, DialogsMessages.AbstractIndexerPage_indexUpFront);
|
((GridData) l.getLayoutData()).verticalIndent=5;
|
||||||
return ControlFactory.createTextField(page);
|
return ControlFactory.createTextField(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,175 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.core.runtime.preferences.InstanceScope;
|
||||||
|
import org.eclipse.jface.preference.FieldEditor;
|
||||||
|
import org.eclipse.jface.preference.IntegerFieldEditor;
|
||||||
|
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||||
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.swt.widgets.Group;
|
||||||
|
import org.eclipse.swt.widgets.Label;
|
||||||
|
import org.eclipse.ui.preferences.ScopedPreferenceStore;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
|
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
||||||
|
import org.eclipse.cdt.core.dom.CDOM;
|
||||||
|
import org.eclipse.cdt.core.parser.CodeReaderCache;
|
||||||
|
import org.eclipse.cdt.core.parser.ICodeReaderCache;
|
||||||
|
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This OptionPage is used in the IndexerPreference page to allow for adjusting
|
||||||
|
* various parsing related caches.
|
||||||
|
*/
|
||||||
|
public class CacheSizeBlock extends AbstractCOptionPage {
|
||||||
|
private IntegerFieldEditor fDBLimitPct;
|
||||||
|
private IntegerFieldEditor fDBAbsoluteLimit;
|
||||||
|
private IntegerFieldEditor fCodeReaderLimit;
|
||||||
|
|
||||||
|
private IPropertyChangeListener validityChangeListener = new IPropertyChangeListener() {
|
||||||
|
public void propertyChange(PropertyChangeEvent event) {
|
||||||
|
if (event.getProperty().equals(FieldEditor.IS_VALID)) {
|
||||||
|
updateValidState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public CacheSizeBlock(ICOptionContainer container){
|
||||||
|
setContainer(container);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createControl(Composite parent) {
|
||||||
|
GridData gd;
|
||||||
|
GridLayout gl;
|
||||||
|
Composite composite = ControlFactory.createComposite(parent, 1);
|
||||||
|
gl= (GridLayout)composite.getLayout();
|
||||||
|
int hindent= gl.marginWidth + gl.marginLeft;
|
||||||
|
int vindent= gl.marginHeight + gl.marginTop;
|
||||||
|
gl.marginWidth= 0;
|
||||||
|
|
||||||
|
gd= (GridData) composite.getLayoutData();
|
||||||
|
gd.grabExcessHorizontalSpace= false;
|
||||||
|
gd.horizontalAlignment= GridData.FILL;
|
||||||
|
|
||||||
|
setControl(composite);
|
||||||
|
|
||||||
|
Group group= ControlFactory.createGroup(composite, Messages.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);
|
||||||
|
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.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);
|
||||||
|
fCodeReaderLimit.setValidRange(1, 10000);
|
||||||
|
ControlFactory.createLabel(cacheComp, "mb"); //$NON-NLS-1$
|
||||||
|
|
||||||
|
gl= (GridLayout) cacheComp.getLayout();
|
||||||
|
gl.numColumns= 3;
|
||||||
|
gl.makeColumnsEqualWidth= false;
|
||||||
|
gl.marginLeft= 0;
|
||||||
|
|
||||||
|
gd= (GridData) dbCacheLabel.getLayoutData();
|
||||||
|
gd.horizontalSpan= 3;
|
||||||
|
|
||||||
|
gd= (GridData) codeReaderLabel.getLayoutData();
|
||||||
|
gd.verticalIndent= vindent;
|
||||||
|
gd.horizontalSpan= 3;
|
||||||
|
|
||||||
|
gd= new GridData();
|
||||||
|
gd.grabExcessHorizontalSpace= true;
|
||||||
|
gd.horizontalAlignment= GridData.FILL;
|
||||||
|
gd.horizontalIndent= hindent;
|
||||||
|
fDBLimitPct.getLabelControl(cacheComp).setLayoutData(gd);
|
||||||
|
|
||||||
|
gd= new GridData();
|
||||||
|
gd.grabExcessHorizontalSpace= true;
|
||||||
|
gd.horizontalAlignment= GridData.FILL;
|
||||||
|
gd.horizontalIndent= hindent;
|
||||||
|
fDBAbsoluteLimit.getLabelControl(cacheComp).setLayoutData(gd);
|
||||||
|
|
||||||
|
gd= new GridData();
|
||||||
|
gd.grabExcessHorizontalSpace= true;
|
||||||
|
gd.horizontalAlignment= GridData.FILL;
|
||||||
|
gd.horizontalIndent= hindent;
|
||||||
|
fCodeReaderLimit.getLabelControl(cacheComp).setLayoutData(gd);
|
||||||
|
|
||||||
|
initializeValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeValues() {
|
||||||
|
ScopedPreferenceStore prefStore= new ScopedPreferenceStore(new InstanceScope(), CCorePlugin.PLUGIN_ID);
|
||||||
|
|
||||||
|
fDBLimitPct.setPreferenceStore(prefStore);
|
||||||
|
fDBLimitPct.setPropertyChangeListener(validityChangeListener);
|
||||||
|
fDBAbsoluteLimit.setPreferenceStore(prefStore);
|
||||||
|
fDBAbsoluteLimit.setPropertyChangeListener(validityChangeListener);
|
||||||
|
fCodeReaderLimit.setPreferenceStore(prefStore);
|
||||||
|
fCodeReaderLimit.setPropertyChangeListener(validityChangeListener);
|
||||||
|
|
||||||
|
fDBLimitPct.load();
|
||||||
|
fDBAbsoluteLimit.load();
|
||||||
|
fCodeReaderLimit.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void performApply(IProgressMonitor monitor) throws CoreException {
|
||||||
|
fDBLimitPct.store();
|
||||||
|
fDBAbsoluteLimit.store();
|
||||||
|
fCodeReaderLimit.store();
|
||||||
|
|
||||||
|
// code reader cache does not listen for pref-changes, help out:
|
||||||
|
ICodeReaderCache cache = CDOM.getInstance().getCodeReaderFactory(CDOM.PARSE_SAVED_RESOURCES).getCodeReaderCache();
|
||||||
|
if (cache instanceof CodeReaderCache) {
|
||||||
|
((CodeReaderCache)cache).setCacheSize(fCodeReaderLimit.getIntValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void performDefaults() {
|
||||||
|
fDBLimitPct.loadDefault();
|
||||||
|
fDBAbsoluteLimit.loadDefault();
|
||||||
|
fCodeReaderLimit.loadDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateValidState() {
|
||||||
|
if (!fDBLimitPct.isValid()) {
|
||||||
|
setErrorMessage(fDBLimitPct.getErrorMessage());
|
||||||
|
setValid(false);
|
||||||
|
}
|
||||||
|
else if (!fDBAbsoluteLimit.isValid()) {
|
||||||
|
setErrorMessage(fDBAbsoluteLimit.getErrorMessage());
|
||||||
|
setValid(false);
|
||||||
|
}
|
||||||
|
else if (!fCodeReaderLimit.isValid()) {
|
||||||
|
setErrorMessage(fCodeReaderLimit.getErrorMessage());
|
||||||
|
setValid(false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setValid(true);
|
||||||
|
}
|
||||||
|
getContainer().updateContainer();
|
||||||
|
}
|
||||||
|
}
|
|
@ -70,6 +70,7 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
private Properties fCurrentProperties;
|
private Properties fCurrentProperties;
|
||||||
private ControlEnableState fEnableState;
|
private ControlEnableState fEnableState;
|
||||||
private Composite fPreferenceContent;
|
private Composite fPreferenceContent;
|
||||||
|
private Composite fParent;
|
||||||
|
|
||||||
public IndexerBlock(){
|
public IndexerBlock(){
|
||||||
super(INDEXER_LABEL);
|
super(INDEXER_LABEL);
|
||||||
|
@ -113,12 +114,12 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createControl(Composite parent) {
|
public void createControl(Composite parent) {
|
||||||
|
fParent= parent;
|
||||||
|
|
||||||
Composite composite = ControlFactory.createComposite(parent, 1);
|
Composite composite = ControlFactory.createComposite(parent, 1);
|
||||||
GridLayout layout= ((GridLayout)composite.getLayout());
|
GridLayout layout= ((GridLayout)composite.getLayout());
|
||||||
layout.marginHeight= 0;
|
|
||||||
layout.marginWidth= 0;
|
layout.marginWidth= 0;
|
||||||
layout.verticalSpacing= 0;
|
|
||||||
layout.horizontalSpacing= GridData.FILL_HORIZONTAL;
|
|
||||||
composite.setLayoutData(null);
|
composite.setLayoutData(null);
|
||||||
setControl(composite);
|
setControl(composite);
|
||||||
|
|
||||||
|
@ -132,15 +133,17 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
fPreferenceContent= ControlFactory.createComposite(composite, 1);
|
fPreferenceContent= ControlFactory.createComposite(composite, 1);
|
||||||
layout= ((GridLayout)fPreferenceContent.getLayout());
|
layout= (GridLayout)fPreferenceContent.getLayout();
|
||||||
layout.marginHeight= 0;
|
layout.marginHeight= 0;
|
||||||
layout.marginWidth= 0;
|
layout.marginWidth= 0;
|
||||||
|
GridData gd= (GridData) fPreferenceContent.getLayoutData();
|
||||||
|
gd.horizontalIndent= 0;
|
||||||
|
|
||||||
Composite isc = ControlFactory.createComposite(fPreferenceContent, 1);
|
Composite isc = ControlFactory.createComposite(fPreferenceContent, 1);
|
||||||
GridLayout gridLayout = ((GridLayout)isc.getLayout());
|
GridLayout gridLayout = ((GridLayout)isc.getLayout());
|
||||||
gridLayout.makeColumnsEqualWidth= false;
|
gridLayout.makeColumnsEqualWidth= false;
|
||||||
gridLayout.marginHeight = 0;
|
gridLayout.marginHeight = 0;
|
||||||
gridLayout.marginTop = 5;
|
gridLayout.marginWidth= 0;
|
||||||
|
|
||||||
// add combo to select indexer
|
// add combo to select indexer
|
||||||
Group group= ControlFactory.createGroup(isc,INDEXER_COMBO_LABEL, 1);
|
Group group= ControlFactory.createGroup(isc,INDEXER_COMBO_LABEL, 1);
|
||||||
|
@ -159,7 +162,7 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
initializeScope();
|
initializeScope();
|
||||||
initializeIndexerCombo();
|
initializeIndexerCombo();
|
||||||
onPreferenceScopeChange();
|
onPreferenceScopeChange();
|
||||||
parent.layout(true);
|
fParent.layout(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enablePreferenceContent(boolean enable) {
|
private void enablePreferenceContent(boolean enable) {
|
||||||
|
@ -221,6 +224,10 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
}
|
}
|
||||||
fCurrentProperties= props;
|
fCurrentProperties= props;
|
||||||
}
|
}
|
||||||
|
updateForNewProperties(scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateForNewProperties(int scope) {
|
||||||
String indexerId= fCurrentProperties.getProperty(IndexerPreferences.KEY_INDEXER_ID);
|
String indexerId= fCurrentProperties.getProperty(IndexerPreferences.KEY_INDEXER_ID);
|
||||||
String indexerName = getIndexerName(indexerId);
|
String indexerName = getIndexerName(indexerId);
|
||||||
String[] indexerList = fIndexersComboBox.getItems();
|
String[] indexerList = fIndexersComboBox.getItems();
|
||||||
|
@ -266,6 +273,7 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
page.setContainer(getContainer());
|
page.setContainer(getContainer());
|
||||||
page.createControl(fIndexerPageComposite);
|
page.createControl(fIndexerPageComposite);
|
||||||
fIndexerPageComposite.layout(true);
|
fIndexerPageComposite.layout(true);
|
||||||
|
fParent.layout(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,9 +370,14 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
|
|
||||||
public void performDefaults() {
|
public void performDefaults() {
|
||||||
fCurrentProperties= null;
|
fCurrentProperties= null;
|
||||||
|
if (fPrefScopeBlock != null) {
|
||||||
fPrefScopeBlock.setInstanceScope();
|
fPrefScopeBlock.setInstanceScope();
|
||||||
onPreferenceScopeChange();
|
onPreferenceScopeChange();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fCurrentProperties= IndexerPreferences.getDefaultIndexerProperties();
|
||||||
|
updateForNewProperties(IndexerPreferences.SCOPE_INSTANCE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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() {
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
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):
|
Loading…
Add table
Reference in a new issue