~ubuntu-branches/debian/sid/eclipse-cdt/sid

« back to all changes in this revision

Viewing changes to results/plugins/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/CacheSizeBlock.java

  • Committer: Package Import Robot
  • Author(s): Jakub Adam
  • Date: 2011-10-06 21:15:04 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20111006211504-8dutmljjih0zikfv
Tags: 8.0.1-1
* New upstream release.
* Split the JNI packages into a separate architecture dependent
  package and made eclipse-cdt architecture independent.
* Install JNI libraries into multiarch aware location
* Bumped Standards-Version to 3.9.2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*******************************************************************************
2
 
 * Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
3
 
 * All rights reserved. This program and the accompanying materials
4
 
 * are made available under the terms of the Eclipse Public License v1.0
5
 
 * which accompanies this distribution, and is available at
6
 
 * http://www.eclipse.org/legal/epl-v10.html
7
 
 *
8
 
 * Contributors:
9
 
 *    Markus Schorn - initial API and implementation
10
 
 *    IBM Corporation
11
 
 *******************************************************************************/ 
12
 
package org.eclipse.cdt.ui.dialogs;
13
 
 
14
 
import org.eclipse.core.runtime.CoreException;
15
 
import org.eclipse.core.runtime.IProgressMonitor;
16
 
import org.eclipse.core.runtime.preferences.InstanceScope;
17
 
import org.eclipse.jface.preference.FieldEditor;
18
 
import org.eclipse.jface.preference.IntegerFieldEditor;
19
 
import org.eclipse.jface.util.IPropertyChangeListener;
20
 
import org.eclipse.jface.util.PropertyChangeEvent;
21
 
import org.eclipse.swt.layout.GridData;
22
 
import org.eclipse.swt.layout.GridLayout;
23
 
import org.eclipse.swt.widgets.Composite;
24
 
import org.eclipse.swt.widgets.Group;
25
 
import org.eclipse.swt.widgets.Label;
26
 
import org.eclipse.ui.preferences.ScopedPreferenceStore;
27
 
 
28
 
import org.eclipse.cdt.core.CCorePlugin;
29
 
import org.eclipse.cdt.core.CCorePreferenceConstants;
30
 
import org.eclipse.cdt.core.dom.CDOM;
31
 
import org.eclipse.cdt.core.parser.CodeReaderCache;
32
 
import org.eclipse.cdt.core.parser.ICodeReaderCache;
33
 
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
34
 
 
35
 
/**
36
 
 * This OptionPage is used in the IndexerPreference page to allow for adjusting
37
 
 * various parsing related caches.
38
 
 * 
39
 
 * @noextend This class is not intended to be subclassed by clients.
40
 
 */
41
 
public class CacheSizeBlock extends AbstractCOptionPage {
42
 
        private IntegerFieldEditor fDBLimitPct;
43
 
        private IntegerFieldEditor fDBAbsoluteLimit;
44
 
        private IntegerFieldEditor fCodeReaderLimit;
45
 
    
46
 
    private IPropertyChangeListener validityChangeListener = new IPropertyChangeListener() {
47
 
        public void propertyChange(PropertyChangeEvent event) {
48
 
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
49
 
                                updateValidState();
50
 
                        }
51
 
        }
52
 
    };
53
 
 
54
 
    public CacheSizeBlock(ICOptionContainer container){
55
 
        setContainer(container);
56
 
    }
57
 
 
58
 
    @Override
59
 
        public void createControl(Composite parent) {
60
 
        GridData gd;
61
 
        GridLayout gl;
62
 
        Composite composite = ControlFactory.createComposite(parent, 1);
63
 
                gl=  (GridLayout)composite.getLayout();
64
 
                int hindent= gl.marginWidth + gl.marginLeft;
65
 
                int vindent= gl.marginHeight + gl.marginTop;
66
 
                gl.marginWidth= 0;
67
 
                
68
 
                gd= (GridData) composite.getLayoutData();
69
 
                gd.grabExcessHorizontalSpace= false;
70
 
                gd.horizontalAlignment= GridData.FILL;
71
 
 
72
 
                setControl(composite);
73
 
      
74
 
                Group group= ControlFactory.createGroup(composite, DialogsMessages.CacheSizeBlock_cacheLimitGroup, 1);
75
 
                gd= (GridData) group.getLayoutData();
76
 
                gd.grabExcessHorizontalSpace= true;
77
 
                gd.horizontalAlignment= GridData.FILL;
78
 
                
79
 
                Composite cacheComp= ControlFactory.createComposite(group, 3);
80
 
 
81
 
                Label dbCacheLabel= ControlFactory.createLabel(cacheComp, DialogsMessages.CacheSizeBlock_indexDatabaseCache);
82
 
                fDBLimitPct= new IntegerFieldEditor(CCorePreferenceConstants.INDEX_DB_CACHE_SIZE_PCT, DialogsMessages.CacheSizeBlock_limitRelativeToMaxHeapSize, cacheComp, 3);
83
 
                fDBLimitPct.setValidRange(1, 75);
84
 
                ControlFactory.createLabel(cacheComp, "%"); //$NON-NLS-1$
85
 
 
86
 
                fDBAbsoluteLimit= new IntegerFieldEditor(CCorePreferenceConstants.MAX_INDEX_DB_CACHE_SIZE_MB, DialogsMessages.CacheSizeBlock_absoluteLimit, cacheComp, 4);
87
 
                fDBAbsoluteLimit.setValidRange(1, 10000);
88
 
                ControlFactory.createLabel(cacheComp, DialogsMessages.CacheSizeBlock_MB);
89
 
                
90
 
                Label codeReaderLabel= ControlFactory.createLabel(cacheComp, DialogsMessages.CacheSizeBlock_headerFileCache);
91
 
                fCodeReaderLimit= new IntegerFieldEditor(CodeReaderCache.CODE_READER_BUFFER, DialogsMessages.CacheSizeBlock_absoluteLimit, cacheComp, 4);
92
 
                fCodeReaderLimit.setValidRange(1, 10000);
93
 
                ControlFactory.createLabel(cacheComp, DialogsMessages.CacheSizeBlock_MB);
94
 
                
95
 
                gl= (GridLayout) cacheComp.getLayout();
96
 
                gl.numColumns= 3;
97
 
                gl.makeColumnsEqualWidth= false;
98
 
                gl.marginLeft= 0;
99
 
                gl.verticalSpacing= 2;
100
 
 
101
 
                gd= (GridData) dbCacheLabel.getLayoutData();
102
 
                gd.horizontalSpan= 3;
103
 
 
104
 
                gd= (GridData) codeReaderLabel.getLayoutData();
105
 
                gd.verticalIndent= vindent;
106
 
                gd.horizontalSpan= 3;
107
 
 
108
 
                gd= new GridData();
109
 
                gd.grabExcessHorizontalSpace= true;
110
 
                gd.horizontalAlignment= GridData.FILL;
111
 
                gd.horizontalIndent= hindent;
112
 
                fDBLimitPct.getLabelControl(cacheComp).setLayoutData(gd);
113
 
 
114
 
                gd= new GridData();
115
 
                gd.grabExcessHorizontalSpace= true;
116
 
                gd.horizontalAlignment= GridData.FILL;
117
 
                gd.horizontalIndent= hindent;
118
 
                fDBAbsoluteLimit.getLabelControl(cacheComp).setLayoutData(gd);
119
 
 
120
 
                gd= new GridData();
121
 
                gd.grabExcessHorizontalSpace= true;
122
 
                gd.horizontalAlignment= GridData.FILL;
123
 
                gd.horizontalIndent= hindent;
124
 
                fCodeReaderLimit.getLabelControl(cacheComp).setLayoutData(gd);
125
 
 
126
 
                initializeValues();
127
 
    }
128
 
 
129
 
    private void initializeValues() {
130
 
        ScopedPreferenceStore prefStore= new ScopedPreferenceStore(new InstanceScope(), CCorePlugin.PLUGIN_ID);
131
 
 
132
 
        fDBLimitPct.setPreferenceStore(prefStore);
133
 
        fDBLimitPct.setPropertyChangeListener(validityChangeListener);
134
 
        fDBAbsoluteLimit.setPreferenceStore(prefStore);
135
 
        fDBAbsoluteLimit.setPropertyChangeListener(validityChangeListener);
136
 
        fCodeReaderLimit.setPreferenceStore(prefStore);
137
 
        fCodeReaderLimit.setPropertyChangeListener(validityChangeListener);
138
 
 
139
 
                fDBLimitPct.load();
140
 
                fDBAbsoluteLimit.load();
141
 
                fCodeReaderLimit.load();
142
 
        }
143
 
 
144
 
        @Override
145
 
        public void performApply(IProgressMonitor monitor) throws CoreException {
146
 
                fDBLimitPct.store();
147
 
                fDBAbsoluteLimit.store();
148
 
                fCodeReaderLimit.store();
149
 
                
150
 
                // code reader cache does not listen for pref-changes, help out:
151
 
                ICodeReaderCache cache = CDOM.getInstance().getCodeReaderFactory(CDOM.PARSE_SAVED_RESOURCES).getCodeReaderCache();
152
 
                if (cache instanceof CodeReaderCache) {
153
 
                        ((CodeReaderCache)cache).setCacheSize(fCodeReaderLimit.getIntValue());
154
 
                }
155
 
    }
156
 
 
157
 
    @Override
158
 
        public void performDefaults() {
159
 
        fDBLimitPct.loadDefault();
160
 
                fDBAbsoluteLimit.loadDefault();
161
 
                fCodeReaderLimit.loadDefault();
162
 
    }
163
 
    
164
 
    private void updateValidState() {
165
 
        if (!fDBLimitPct.isValid()) {
166
 
                setErrorMessage(fDBLimitPct.getErrorMessage());
167
 
                setValid(false);
168
 
        }
169
 
        else if (!fDBAbsoluteLimit.isValid()) {
170
 
                setErrorMessage(fDBAbsoluteLimit.getErrorMessage());
171
 
                setValid(false);
172
 
        }
173
 
        else if (!fCodeReaderLimit.isValid()) {
174
 
                setErrorMessage(fCodeReaderLimit.getErrorMessage());
175
 
                setValid(false);
176
 
        }
177
 
        else {
178
 
                setValid(true);
179
 
        }
180
 
        getContainer().updateContainer();
181
 
    }
182
 
}