mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Added Indexer Preference page that sets up the indexer to use for new projects
Removed Index Enabled checkboxes from Source + Dom indexers Added import ctags file option under CTags Indexer Fixed Apply/OK problem
This commit is contained in:
parent
308e1f4417
commit
6f38f94b90
18 changed files with 594 additions and 160 deletions
|
@ -24,6 +24,8 @@ import org.eclipse.cdt.internal.core.index.IIndexerOutput;
|
|||
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
|
||||
public class CTagsFileReader {
|
||||
|
||||
|
@ -78,15 +80,28 @@ public class CTagsFileReader {
|
|||
(!currentFileName.equals(fileName))){
|
||||
currentFileName = fileName;
|
||||
currentFile = (IFile) project.findMember(fileName);
|
||||
indexer = new MiniIndexer(currentFile);
|
||||
index.add(currentFile,indexer);
|
||||
|
||||
if (currentFile == null){
|
||||
//Didn't find file in project
|
||||
IPath tempPath = new Path(filename);
|
||||
tempPath = tempPath.removeLastSegments(1);
|
||||
tempPath = tempPath.append(fileName);
|
||||
currentFile = (IFile) project.findMember(tempPath);
|
||||
|
||||
}
|
||||
|
||||
if (currentFile != null){
|
||||
indexer = new MiniIndexer(currentFile);
|
||||
index.add(currentFile,indexer);
|
||||
//encode new tag in current file
|
||||
char[][] fullName = parser.getQualifiedName(tagEntry);
|
||||
//encode name
|
||||
String lineNumber = (String) tagEntry.tagExtensionField.get(CTagsConsoleParser.LINE);
|
||||
indexer.addToOutput(fullName,(String)tagEntry.tagExtensionField.get(CTagsConsoleParser.KIND), Integer.parseInt(lineNumber));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} catch (IOException e){}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ import java.io.IOException;
|
|||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.CommandLauncher;
|
||||
import org.eclipse.cdt.core.ICDescriptor;
|
||||
import org.eclipse.cdt.core.ICExtensionReference;
|
||||
import org.eclipse.cdt.core.model.ICModelMarker;
|
||||
import org.eclipse.cdt.internal.core.index.IIndex;
|
||||
import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
|
||||
|
@ -35,6 +37,7 @@ import org.eclipse.core.runtime.Path;
|
|||
class CTagsIndexAll extends CTagsIndexRequest {
|
||||
IProject project;
|
||||
static String ctagsFile = CCorePlugin.getDefault().getStateLocation().append("tempctags").toOSString(); //$NON-NLS-1$
|
||||
private String ctagsFileToUse;
|
||||
|
||||
public CTagsIndexAll(IProject project, CTagsIndexer indexer) {
|
||||
super(project.getFullPath(), indexer);
|
||||
|
@ -75,21 +78,30 @@ class CTagsIndexAll extends CTagsIndexRequest {
|
|||
project.deleteMarkers(ICModelMarker.INDEXER_MARKER, true,IResource.DEPTH_ZERO);
|
||||
} catch (CoreException e) {}
|
||||
|
||||
|
||||
boolean success=false;
|
||||
|
||||
if (useInternalCTagsFile()){
|
||||
if (AbstractIndexer.TIMING)
|
||||
startTime = System.currentTimeMillis();
|
||||
|
||||
|
||||
//run CTags over project
|
||||
boolean success = runCTags();
|
||||
success = runCTags();
|
||||
ctagsFileToUse=ctagsFile;
|
||||
|
||||
if (AbstractIndexer.TIMING){
|
||||
cTagsEndTime = System.currentTimeMillis();
|
||||
System.out.println("CTags Run: " + (cTagsEndTime - startTime)); //$NON-NLS-1$
|
||||
System.out.flush();
|
||||
}
|
||||
} else {
|
||||
success=getCTagsFileLocation();
|
||||
}
|
||||
|
||||
if (success) {
|
||||
//Parse the CTag File
|
||||
CTagsFileReader reader = new CTagsFileReader(project,ctagsFile,indexer);
|
||||
CTagsFileReader reader = new CTagsFileReader(project,ctagsFileToUse,indexer);
|
||||
reader.setIndex(index);
|
||||
reader.parse();
|
||||
|
||||
|
@ -170,4 +182,50 @@ class CTagsIndexAll extends CTagsIndexRequest {
|
|||
return "indexing project " + this.project.getFullPath(); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
private boolean useInternalCTagsFile(){
|
||||
try {
|
||||
ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
|
||||
if (cdesc == null)
|
||||
return true;
|
||||
|
||||
ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
|
||||
if (cext.length > 0) {
|
||||
for (int i = 0; i < cext.length; i++) {
|
||||
String id = cext[i].getID();
|
||||
String orig = cext[i].getExtensionData("ctagfiletype"); //$NON-NLS-1$
|
||||
if (orig != null){
|
||||
if (orig.equals(CTagsIndexer.CTAGS_INTERNAL))
|
||||
return true;
|
||||
else if (orig.equals(CTagsIndexer.CTAGS_EXTERNAL))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (CoreException e) {}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean getCTagsFileLocation() {
|
||||
try {
|
||||
ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
|
||||
if (cdesc == null)
|
||||
return false;
|
||||
|
||||
ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
|
||||
if (cext.length > 0) {
|
||||
for (int i = 0; i < cext.length; i++) {
|
||||
String id = cext[i].getID();
|
||||
String orig = cext[i].getExtensionData("ctagfilelocation"); //$NON-NLS-1$
|
||||
if (orig != null){
|
||||
ctagsFileToUse=orig;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (CoreException e) {}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -38,6 +38,10 @@ import org.eclipse.core.runtime.IPath;
|
|||
*/
|
||||
public class CTagsIndexer extends AbstractCExtension implements ICDTIndexer {
|
||||
|
||||
public final static String CTAGS_INTERNAL = "ctags_internal"; //$NON-NLS-1$
|
||||
public final static String CTAGS_EXTERNAL = "ctags_external"; //$NON-NLS-1$
|
||||
public final static String CTAGS_LOCATION = "ctags_location"; //$NON-NLS-1$
|
||||
|
||||
private CIndexStorage indexStorage = null;
|
||||
public ReadWriteMonitor storageMonitor = null;
|
||||
private IndexManager indexManager = null;
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
package org.eclipse.cdt.internal.core.index.nullindexer;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.eclipse.cdt.core.AbstractCExtension;
|
||||
import org.eclipse.cdt.core.index.ICDTIndexer;
|
||||
import org.eclipse.cdt.core.index.IIndexStorage;
|
||||
import org.eclipse.cdt.internal.core.index.IIndex;
|
||||
import org.eclipse.cdt.internal.core.index.IIndexerOutput;
|
||||
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResourceDelta;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
|
||||
public class NullIndexer extends AbstractCExtension implements ICDTIndexer {
|
||||
|
||||
public int getIndexerFeatures() {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void addRequest(IProject project, IResourceDelta delta, int kind) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void removeRequest(IProject project, IResourceDelta delta, int kind) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void indexJobFinishedNotification(IIndexJob job) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void notifyIdle(long idlingTime) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void notifyIndexerChange(IProject project) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public boolean isIndexEnabled(IProject project) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
public IIndexStorage getIndexStorage() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public IIndex getIndex(IPath path, boolean reuseExistingFile,
|
||||
boolean createIfMissing) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public void indexerRemoved(IProject project) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void index(IFile document, IIndexerOutput output) throws IOException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public boolean shouldIndex(IFile file) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -218,7 +218,8 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
|
|||
if( project == null || !project.exists() || !project.isOpen() )
|
||||
return false;
|
||||
|
||||
Boolean indexValue = null;
|
||||
return true;
|
||||
/*Boolean indexValue = null;
|
||||
|
||||
try {
|
||||
indexValue = (Boolean) project.getSessionProperty(activationKey);
|
||||
|
@ -248,7 +249,7 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
|
|||
|
||||
} catch (CoreException e) {}
|
||||
|
||||
return indexEnabled;
|
||||
return indexEnabled;*/
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -69,3 +69,8 @@ cxxHeaderName=C++ Header File
|
|||
asmSourceName=Assembly Source File
|
||||
|
||||
cdt_pathentry_var.description=CDT PathEntry Variable
|
||||
|
||||
CDTIndexer.originalsourceindexer=Original C/C++ Indexer
|
||||
CDTIndexer.domsourceindexer=DOM AST C/C++ Indexer
|
||||
CDTIndexer.ctagsindexer=CTags Indexer
|
||||
CDTIndexer.nullindexer=No Indexer
|
|
@ -529,7 +529,7 @@
|
|||
<initializer class="org.eclipse.cdt.internal.core.CCorePreferenceInitializer"/>
|
||||
</extension>
|
||||
<extension
|
||||
name="Original C/C++ Indexer"
|
||||
name="%CDTIndexer.originalsourceindexer"
|
||||
id="originalsourceindexer"
|
||||
point="org.eclipse.cdt.core.CIndexer">
|
||||
<cextension>
|
||||
|
@ -539,7 +539,7 @@
|
|||
</cextension>
|
||||
</extension>
|
||||
<extension
|
||||
name="DOM AST C/C++ Indexer"
|
||||
name="%CDTIndexer.domsourceindexer"
|
||||
id="domsourceindexer"
|
||||
point="org.eclipse.cdt.core.CIndexer">
|
||||
<cextension>
|
||||
|
@ -562,7 +562,7 @@
|
|||
</extension>
|
||||
<extension
|
||||
id="ctagsindexer"
|
||||
name="CTags Indexer"
|
||||
name="%CDTIndexer.ctagsindexer"
|
||||
point="org.eclipse.cdt.core.CIndexer">
|
||||
<cextension>
|
||||
<run
|
||||
|
@ -570,5 +570,15 @@
|
|||
</run>
|
||||
</cextension>
|
||||
</extension>
|
||||
<extension
|
||||
id="nullindexer"
|
||||
name="%CDTIndexer.nullindexer"
|
||||
point="org.eclipse.cdt.core.CIndexer">
|
||||
<cextension>
|
||||
<run
|
||||
class="org.eclipse.cdt.internal.core.index.nullindexer.NullIndexer">
|
||||
</run>
|
||||
</cextension>
|
||||
</extension>
|
||||
|
||||
</plugin>
|
||||
|
|
|
@ -309,3 +309,12 @@ c.contextType.name = C
|
|||
# completion
|
||||
|
||||
completionContributors=Code Assist Completion Contributor
|
||||
|
||||
# Indexer Preference Name
|
||||
indexerPrefName=Indexer
|
||||
|
||||
# indexer names
|
||||
CDTIndexer.originalsourceindexer=Original C/C++ Indexer
|
||||
CDTIndexer.domsourceindexer=DOM AST C/C++ Indexer
|
||||
CDTIndexer.ctagsindexer=CTags Indexer
|
||||
CDTIndexer.nullindexer=No Indexer
|
||||
|
|
|
@ -637,6 +637,11 @@
|
|||
class="org.eclipse.cdt.internal.ui.preferences.PathEntryVariablePreferencePage"
|
||||
id="org.eclipse.cdt.ui.preferences.PathEntryVariablePreferencePage">
|
||||
</page>
|
||||
<page
|
||||
category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
|
||||
class="org.eclipse.cdt.internal.ui.preferences.IndexerPreferencePage"
|
||||
id="org.eclipse.cdt.ui.preferences.IndexerPreferencePage"
|
||||
name="%indexerPrefName"/>
|
||||
<!--page
|
||||
name="%WorkInProgress.name"
|
||||
category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
|
||||
|
@ -1333,22 +1338,22 @@
|
|||
<indexerUI
|
||||
class="org.eclipse.cdt.ui.dialogs.SourceIndexerBlock"
|
||||
indexerID="org.eclipse.cdt.core.originalsourceindexer"
|
||||
name="Original C/C++ Indexer"
|
||||
name="%CDTIndexer.originalsourceindexer"
|
||||
id="org.eclipse.cdt.ui.originalSourceIndexerUI"/>
|
||||
<indexerUI
|
||||
class="org.eclipse.cdt.ui.dialogs.NullIndexerBlock"
|
||||
indexerID="org.eclipse.cdt.core.nullindexer"
|
||||
name="No Indexer"
|
||||
name="%CDTIndexer.nullindexer"
|
||||
id="org.eclipse.cdt.ui.nullindexerUI"/>
|
||||
<indexerUI
|
||||
class="org.eclipse.cdt.ui.dialogs.SourceIndexerBlock"
|
||||
id="org.eclipse.cdt.ui.DOMASTSourceIndexerUI"
|
||||
indexerID="org.eclipse.cdt.core.domsourceindexer"
|
||||
name="DOM AST C/C++ Indexer"/>
|
||||
name="%CDTIndexer.domsourceindexer"/>
|
||||
<indexerUI
|
||||
class="org.eclipse.cdt.ui.dialogs.CTagsIndexerBlock"
|
||||
indexerID="org.eclipse.cdt.core.ctagsindexer"
|
||||
name="CTags Indexer"
|
||||
name="%CDTIndexer.ctagsindexer"
|
||||
id="org.eclipse.cdt.ui.ctagsIndexerUI"/>
|
||||
</extension>
|
||||
<extension
|
||||
|
|
|
@ -57,7 +57,6 @@ AbstractErrorParserBlock.label.errorParsers=Error Parsers
|
|||
|
||||
ICElementPropertyConstants.catagory=Binary Info
|
||||
|
||||
IndexerOptions.indexer = C/C++ Indexer
|
||||
IndexerOptions.enableIndexing = Enable C/C++ &Indexing
|
||||
IndexerOptions.problemReporting = C/C++ Index problem reporting
|
||||
IndexerOptions.enablePreprocessor = Report &preprocessor problems
|
||||
|
@ -65,6 +64,12 @@ IndexerOptions.enableSemantic = Report &semantic problems
|
|||
IndexerOptions.enableSyntactic = Report s&yntactic problems
|
||||
IndexerOptiosn.task.savingAttributes = Saving Attributes
|
||||
|
||||
CTagsIndexerBlock.blockName=CTags File
|
||||
CTagsIndexerBlock.radioButtonInternal=Use internal CTags file (default)
|
||||
CTagsIndexerBlock.radioButtonExternal=Import existing CTags file
|
||||
CTagsIndexerBlock.browseButton=Browse...
|
||||
CTagsIndexerBlock.fileBrowser=Select CTags File
|
||||
|
||||
StatusBarUpdater.num_elements_selected={0} items selected
|
||||
|
||||
CElementLabels.anonymous=(anon)
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
package org.eclipse.cdt.internal.ui.preferences;
|
||||
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.dialogs.ICOptionContainer;
|
||||
import org.eclipse.cdt.ui.dialogs.IndexerBlock;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.Preferences;
|
||||
import org.eclipse.jface.preference.PreferencePage;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.layout.FillLayout;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
|
||||
public class IndexerPreferencePage extends PreferencePage implements
|
||||
IWorkbenchPreferencePage, ICOptionContainer {
|
||||
|
||||
private IndexerBlock fOptionBlock;
|
||||
|
||||
public IndexerPreferencePage(){
|
||||
setPreferenceStore(CUIPlugin.getDefault().getPreferenceStore());
|
||||
setDescription(PreferencesMessages.getString("IndexerPrefs.description")); //$NON-NLS-1$
|
||||
fOptionBlock = new IndexerBlock();
|
||||
}
|
||||
|
||||
protected Control createContents(Composite parent) {
|
||||
Composite composite = new Composite(parent, SWT.NONE);
|
||||
composite.setLayout(new FillLayout());
|
||||
|
||||
fOptionBlock.createControl(composite);
|
||||
|
||||
return composite;
|
||||
}
|
||||
|
||||
public void init(IWorkbench workbench) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void updateContainer() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public IProject getProject() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public Preferences getPreferences() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean performOk() {
|
||||
try {
|
||||
fOptionBlock.performApply(null);
|
||||
} catch (CoreException e) {}
|
||||
CUIPlugin.getDefault().savePluginPreferences();
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -254,3 +254,5 @@ PathEntryVariableSelectionDialog.extendButton = &Extend...
|
|||
PathEntryVariableSelectionDialog.ExtensionDialog.title = Variable Extension
|
||||
PathEntryVariableSelectionDialog.ExtensionDialog.description = Choose extension to {0}
|
||||
|
||||
#Indexer
|
||||
IndexerPrefs.description=Sets default Indexer Options for new Projects
|
||||
|
|
|
@ -10,44 +10,237 @@
|
|||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui.dialogs;
|
||||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.ICDescriptor;
|
||||
import org.eclipse.cdt.core.ICExtensionReference;
|
||||
import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexer;
|
||||
import org.eclipse.cdt.internal.ui.CUIMessages;
|
||||
import org.eclipse.cdt.internal.ui.util.SWTUtil;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.index.AbstractIndexerPage;
|
||||
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.swt.SWT;
|
||||
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.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.FileDialog;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
/**
|
||||
* @author Bogdan Gheorghe
|
||||
*/
|
||||
public class CTagsIndexerBlock extends AbstractIndexerPage {
|
||||
|
||||
protected boolean internalTagsFile = true;
|
||||
protected boolean externalTagsFile = false;
|
||||
protected Button internalCTagsFile;
|
||||
protected Button externalCTagsFile;
|
||||
protected Button browseButton;
|
||||
protected Text cTagsFile;
|
||||
|
||||
private String storedInternalExternal;
|
||||
private String storedTagFile;
|
||||
|
||||
public final static String PREF_INTOREXT_CTAGS = CUIPlugin.PLUGIN_ID + ".intorextctags"; //$NON-NLS-1$
|
||||
public final static String PREF_CTAGSLOCATION_CTAGS = CUIPlugin.PLUGIN_ID + ".ctagslocation"; //$NON-NLS-1$
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.index.AbstractIndexerPage#initialize(org.eclipse.core.resources.IProject)
|
||||
*/
|
||||
public void initialize(IProject project) {
|
||||
|
||||
this.currentProject = project;
|
||||
try {
|
||||
loadPersistedValues(project);
|
||||
} catch (CoreException e) {}
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.dialogs.ICOptionPage#performApply(org.eclipse.core.runtime.IProgressMonitor)
|
||||
*/
|
||||
public void performApply(IProgressMonitor monitor) throws CoreException {
|
||||
|
||||
if (monitor == null) {
|
||||
monitor = new NullProgressMonitor();
|
||||
}
|
||||
|
||||
monitor.beginTask(CUIMessages.getString("IndexerOptiosn.task.savingAttributes "), 1); //$NON-NLS-1$
|
||||
ICOptionContainer container = getContainer();
|
||||
IProject proj = null;
|
||||
String internalExternalCTagsString = internalTagsFile ? CTagsIndexer.CTAGS_INTERNAL : CTagsIndexer.CTAGS_EXTERNAL;
|
||||
String cTagsFileLocation = cTagsFile.getText();
|
||||
|
||||
//if external has been chosen, ensure that there is a cTagsFileLocation selected; otherwise default
|
||||
//to internal file
|
||||
if (internalExternalCTagsString.equals(CTagsIndexer.CTAGS_EXTERNAL) && cTagsFileLocation.equals("")) //$NON-NLS-1$
|
||||
internalExternalCTagsString=CTagsIndexer.CTAGS_INTERNAL;
|
||||
|
||||
if (container != null){
|
||||
proj = container.getProject();
|
||||
}
|
||||
else{
|
||||
proj = currentProject;
|
||||
}
|
||||
|
||||
if (proj != null) {
|
||||
ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj, false);
|
||||
ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
|
||||
if (cext.length > 0) {
|
||||
for (int i = 0; i < cext.length; i++) {
|
||||
String id = cext[i].getID();
|
||||
String orig = cext[i].getExtensionData("ctagfiletype"); //$NON-NLS-1$
|
||||
if (orig == null || !orig.equals(internalExternalCTagsString)) {
|
||||
cext[i].setExtensionData("ctagfiletype", internalExternalCTagsString); //$NON-NLS-1$
|
||||
}
|
||||
orig = cext[i].getExtensionData("ctagfilelocation"); //$NON-NLS-1$
|
||||
if (orig == null || !orig.equals(cTagsFileLocation)) {
|
||||
cext[i].setExtensionData("ctagfilelocation", cTagsFileLocation); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (prefStore != null) {
|
||||
prefStore.setValue(PREF_INTOREXT_CTAGS, internalExternalCTagsString);
|
||||
prefStore.setValue(PREF_CTAGSLOCATION_CTAGS,cTagsFileLocation);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.dialogs.ICOptionPage#performDefaults()
|
||||
*/
|
||||
public void performDefaults() {
|
||||
internalTagsFile=true;
|
||||
externalTagsFile=false;
|
||||
internalCTagsFile.setSelection(true);
|
||||
externalCTagsFile.setSelection(false);
|
||||
cTagsFile.setText(""); //$NON-NLS-1$
|
||||
browseButton.setEnabled(false);
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
public void createControl(Composite parent) {
|
||||
Composite page = ControlFactory.createComposite(parent, 1);
|
||||
|
||||
Group group = ControlFactory.createGroup(page, CUIMessages.getString("CTagsIndexerBlock.blockName"),3); //$NON-NLS-1$
|
||||
|
||||
GridData gd = (GridData) group.getLayoutData();
|
||||
gd.grabExcessHorizontalSpace = true;
|
||||
gd.horizontalAlignment = GridData.FILL;
|
||||
|
||||
|
||||
SelectionListener cListener = new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
internalTagsFile = internalCTagsFile.getSelection();
|
||||
externalTagsFile = externalCTagsFile.getSelection();
|
||||
|
||||
if (externalTagsFile){
|
||||
setButtonState(CTagsIndexer.CTAGS_EXTERNAL);
|
||||
}
|
||||
if (internalTagsFile){
|
||||
setButtonState(CTagsIndexer.CTAGS_INTERNAL);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
internalCTagsFile = ControlFactory.createRadioButton(group,CUIMessages.getString("CTagsIndexerBlock.radioButtonInternal"),"Internal",cListener);//$NON-NLS-1$ //$NON-NLS-2$
|
||||
((GridData)internalCTagsFile.getLayoutData()).horizontalSpan = 3;
|
||||
((GridData)internalCTagsFile.getLayoutData()).grabExcessHorizontalSpace = true;
|
||||
internalCTagsFile.setSelection(internalTagsFile);
|
||||
|
||||
externalCTagsFile = ControlFactory.createRadioButton(group,CUIMessages.getString("CTagsIndexerBlock.radioButtonExternal"),"External",cListener);//$NON-NLS-1$ //$NON-NLS-2$
|
||||
((GridData)externalCTagsFile.getLayoutData()).horizontalSpan = 3;
|
||||
((GridData)externalCTagsFile.getLayoutData()).grabExcessHorizontalSpace = true;
|
||||
|
||||
cTagsFile = ControlFactory.createTextField(group);
|
||||
((GridData)cTagsFile.getLayoutData()).horizontalSpan = 2;
|
||||
((GridData)cTagsFile.getLayoutData()).grabExcessHorizontalSpace = true;
|
||||
|
||||
browseButton = ControlFactory.createPushButton(group,CUIMessages.getString("CTagsIndexerBlock.browseButton")); //$NON-NLS-1$
|
||||
((GridData)browseButton.getLayoutData()).widthHint = SWTUtil.getButtonWidthHint(browseButton);
|
||||
browseButton.setEnabled(false);
|
||||
browseButton.addSelectionListener(new SelectionAdapter() {
|
||||
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
handleBrowseButtonSelected();
|
||||
}
|
||||
|
||||
private void handleBrowseButtonSelected() {
|
||||
FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
|
||||
dialog.setText(CUIMessages.getString("CTagsIndexerBlock.fileBrowser")); //$NON-NLS-1$
|
||||
String fileName = dialog.open();
|
||||
if (fileName == null) {
|
||||
return;
|
||||
}
|
||||
cTagsFile.setText(fileName);
|
||||
}
|
||||
});
|
||||
|
||||
setControl(page);
|
||||
}
|
||||
|
||||
public void loadPersistedValues(IProject project) throws CoreException {
|
||||
|
||||
ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
|
||||
ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
|
||||
if (cext.length > 0) {
|
||||
for (int i = 0; i < cext.length; i++) {
|
||||
String id = cext[i].getID();
|
||||
String orig = cext[i].getExtensionData("ctagfiletype"); //$NON-NLS-1$
|
||||
if (orig != null){
|
||||
storedInternalExternal=orig;
|
||||
setButtonState(orig);
|
||||
}
|
||||
|
||||
orig = cext[i].getExtensionData("ctagfilelocation"); //$NON-NLS-1$
|
||||
if (orig != null){
|
||||
storedTagFile=orig;
|
||||
cTagsFile.setText(orig);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void setButtonState(String orig){
|
||||
if (orig.equals(CTagsIndexer.CTAGS_INTERNAL)){
|
||||
internalTagsFile=true;
|
||||
externalTagsFile=false;
|
||||
internalCTagsFile.setSelection(true);
|
||||
externalCTagsFile.setSelection(false);
|
||||
browseButton.setEnabled(false);
|
||||
} else if (orig.equals(CTagsIndexer.CTAGS_EXTERNAL)){
|
||||
externalTagsFile=true;
|
||||
internalTagsFile=false;
|
||||
externalCTagsFile.setSelection(true);
|
||||
internalCTagsFile.setSelection(false);
|
||||
browseButton.setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void loadPreferences() {
|
||||
String indexerId=prefStore.getString(PREF_INTOREXT_CTAGS);
|
||||
if (!indexerId.equals("")) { //$NON-NLS-1$
|
||||
setButtonState(indexerId);
|
||||
}
|
||||
|
||||
indexerId=prefStore.getString(PREF_CTAGSLOCATION_CTAGS);
|
||||
if (!indexerId.equals("")) { //$NON-NLS-1$
|
||||
storedTagFile=indexerId;
|
||||
cTagsFile.setText(indexerId);
|
||||
}
|
||||
}
|
||||
|
||||
public void removePreferences() {
|
||||
prefStore.setToDefault(PREF_CTAGSLOCATION_CTAGS);
|
||||
prefStore.setToDefault(PREF_INTOREXT_CTAGS);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -30,9 +30,9 @@ import org.eclipse.core.runtime.IExtensionPoint;
|
|||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.Preferences;
|
||||
import org.eclipse.core.runtime.QualifiedName;
|
||||
import org.eclipse.core.runtime.SubProgressMonitor;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.graphics.Font;
|
||||
|
@ -74,6 +74,8 @@ public class IndexerBlock extends AbstractCOptionPage {
|
|||
|
||||
String initialSelected;
|
||||
|
||||
private IPreferenceStore prefStore=CUIPlugin.getDefault().getPreferenceStore();
|
||||
|
||||
public IndexerBlock(){
|
||||
super(INDEXER_LABEL);
|
||||
setDescription(INDEXER_DESCRIPTION);
|
||||
|
@ -166,7 +168,12 @@ public class IndexerBlock extends AbstractCOptionPage {
|
|||
|
||||
page.setVisible(true);
|
||||
}
|
||||
|
||||
setCurrentPage(page);
|
||||
|
||||
if (page instanceof AbstractIndexerPage){
|
||||
((AbstractIndexerPage) page).loadPreferences();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -220,15 +227,27 @@ public class IndexerBlock extends AbstractCOptionPage {
|
|||
}
|
||||
}
|
||||
|
||||
//See what the preferred indexer is
|
||||
String indexerId=prefStore.getString(CCorePlugin.PREF_INDEXER);
|
||||
String preferredIndexer=null;
|
||||
if (indexerId.equals("")) { //$NON-NLS-1$
|
||||
preferredIndexer=getIndexerPageName("org.eclipse.cdt.core.nullindexer"); //$NON-NLS-1$
|
||||
} else {
|
||||
preferredIndexer=getIndexerPageName(indexerId);
|
||||
}
|
||||
|
||||
String[] indexerList = indexersComboBox.getItems();
|
||||
int selectedIndex = 0;
|
||||
for (int i=0; i<indexerList.length; i++){
|
||||
if (indexerList[i].equals("No Indexer")) //$NON-NLS-1$
|
||||
if (indexerList[i].equals(preferredIndexer)) //$NON-NLS-1$
|
||||
selectedIndex = i;
|
||||
}
|
||||
|
||||
indexersComboBox.select(selectedIndex);
|
||||
|
||||
String indexerPageID = getIndexerPageId(preferredIndexer);
|
||||
initialSelected = getIndexerIdName(indexerPageID);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -359,18 +378,24 @@ public class IndexerBlock extends AbstractCOptionPage {
|
|||
if (page != null && page.getControl() != null) {
|
||||
page.performApply(new SubProgressMonitor(monitor, 1));
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
CCorePlugin.getDefault().getCDescriptorManager().runDescriptorOperation(project, op, monitor);
|
||||
//Only send out an index changed notification if the indexer has actually changed
|
||||
if (initialSelected == null || !selected.equals(initialSelected)) {
|
||||
CCorePlugin.getDefault().getCoreModel().getIndexManager().indexerChangeNotification(project);
|
||||
}
|
||||
} else {
|
||||
if (initialSelected == null || !selected.equals(initialSelected)) {
|
||||
if (container != null){
|
||||
Preferences store = container.getPreferences();
|
||||
if (store != null) {
|
||||
store.setValue(CCorePlugin.PREF_INDEXER, indexerID);
|
||||
}
|
||||
|
||||
if (prefStore != null) {
|
||||
//First clean out the old indexer settings
|
||||
String indexerId=prefStore.getString(CCorePlugin.PREF_INDEXER);
|
||||
ICOptionPage tempPage = getIndexerPage(indexerId);
|
||||
if (tempPage instanceof AbstractIndexerPage)
|
||||
((AbstractIndexerPage) tempPage).removePreferences();
|
||||
|
||||
prefStore.setValue(CCorePlugin.PREF_INDEXER, indexerID);
|
||||
}
|
||||
}
|
||||
monitor.worked(1);
|
||||
|
@ -396,14 +421,21 @@ public class IndexerBlock extends AbstractCOptionPage {
|
|||
((AbstractIndexerPage)currentPage).setCurrentProject(project);
|
||||
|
||||
this.performApply(monitor);
|
||||
/*//Give the chosen indexer a chance to persist its values
|
||||
if (currentPage != null){
|
||||
currentPage.performApply(monitor);*/
|
||||
}
|
||||
|
||||
public void resetIndexerPageSettings(IProject project){
|
||||
if (currentPage instanceof AbstractIndexerPage)
|
||||
((AbstractIndexerPage)currentPage).setCurrentProject(project);
|
||||
|
||||
this.performDefaults();
|
||||
}
|
||||
|
||||
public void performDefaults() {
|
||||
// TODO Auto-generated method stub
|
||||
//Give a chance to the contributions to perform defaults.
|
||||
ICOptionPage page = currentPage;
|
||||
if (page != null && page.getControl() != null) {
|
||||
page.performDefaults();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -418,9 +450,11 @@ public class IndexerBlock extends AbstractCOptionPage {
|
|||
* @param oldIndexerID
|
||||
* @param project
|
||||
*/
|
||||
public void setIndexerID(String oldIndexerID, IProject project) {
|
||||
public void setIndexerID(String indexerID, IProject project) {
|
||||
//Get the corresponding text for the given indexer id
|
||||
selectedIndexerId = getIndexerPageName(oldIndexerID);
|
||||
selectedIndexerId = getIndexerPageName(indexerID);
|
||||
//Store the currently selected indexer id
|
||||
initialSelected = indexerID;
|
||||
|
||||
if (selectedIndexerId == null){
|
||||
CCorePlugin.getDefault().getPluginPreferences().setValue(CCorePlugin.PREF_INDEXER, CCorePlugin.DEFAULT_INDEXER_UNIQ_ID);
|
||||
|
@ -449,4 +483,5 @@ public class IndexerBlock extends AbstractCOptionPage {
|
|||
|
||||
return indexerID;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -59,8 +59,8 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
|
||||
|
||||
protected void performDefaults() {
|
||||
initialize();
|
||||
super.performDefaults();
|
||||
IProject tempProject = getProject();
|
||||
optionPage.resetIndexerPageSettings(tempProject);
|
||||
}
|
||||
|
||||
private void initialize(){
|
||||
|
@ -81,24 +81,6 @@ public class IndexerOptionPropertyPage extends PropertyPage {
|
|||
*/
|
||||
public boolean performOk() {
|
||||
|
||||
/* String newIndexerID = optionPage.getSelectedIndexerID();
|
||||
|
||||
boolean indexerIDChanged = false;
|
||||
|
||||
if (newIndexerID != null){
|
||||
indexerIDChanged = !(oldIndexerID.equals(newIndexerID));
|
||||
}
|
||||
else if (oldIndexerID != null){
|
||||
//newIndexerID is null, oldIndexerID wasn't null
|
||||
indexerIDChanged = true;
|
||||
}
|
||||
|
||||
if ( indexerIDChanged ){
|
||||
//persist new values
|
||||
IProject tempProject = getProject();
|
||||
optionPage.persistIndexerValues(tempProject);
|
||||
}*/
|
||||
|
||||
IProject tempProject = getProject();
|
||||
try {
|
||||
optionPage.persistIndexerSettings(tempProject, new NullProgressMonitor());
|
||||
|
|
|
@ -34,4 +34,8 @@ public class NullIndexerBlock extends AbstractIndexerPage {
|
|||
setControl(comp);
|
||||
}
|
||||
|
||||
public void loadPreferences() {}
|
||||
|
||||
public void removePreferences() {}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import org.eclipse.core.resources.IProject;
|
|||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
import org.eclipse.core.runtime.Preferences;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
|
@ -33,22 +32,18 @@ import org.eclipse.swt.widgets.Group;
|
|||
|
||||
public class SourceIndexerBlock extends AbstractIndexerPage {
|
||||
|
||||
public final static String PREF_INDEX_ENABLED = CUIPlugin.PLUGIN_ID + ".indexenabled"; //$NON-NLS-1$
|
||||
public final static String PREF_INDEX_MARKERS = CUIPlugin.PLUGIN_ID + ".indexmarkers"; //$NON-NLS-1$
|
||||
|
||||
private static final String ENABLE_PREPROCESSOR_PROBLEMS = CUIMessages.getString( "IndexerOptions.enablePreprocessor" ); //$NON-NLS-1$
|
||||
private static final String ENABLE_SEMANTIC_PROBLEMS = CUIMessages.getString( "IndexerOptions.enableSemantic" ); //$NON-NLS-1$
|
||||
private static final String ENABLE_SYNTACTIC_PROBLEMS = CUIMessages.getString( "IndexerOptions.enableSyntactic" ); //$NON-NLS-1$
|
||||
private static final String ENABLE_INDEXING = CUIMessages.getString( "IndexerOptions.enableIndexing" ); //$NON-NLS-1$
|
||||
private static final String INDEXER = CUIMessages.getString("IndexerOptions.indexer" ); //$NON-NLS-1$
|
||||
|
||||
private static final String INDEXER_PROBLEMS = CUIMessages.getString("IndexerOptions.problemReporting" ); //$NON-NLS-1$
|
||||
|
||||
private Button indexerEnabled;
|
||||
private Button preprocessorProblemsEnabled;
|
||||
private Button syntacticProblemsEnabled;
|
||||
private Button semanticProblemsEnabled;
|
||||
|
||||
private boolean oldIndexerValue = false;
|
||||
private int oldIndexerProblemsValue = 0;
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -63,7 +58,6 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
monitor.beginTask(CUIMessages.getString("IndexerOptiosn.task.savingAttributes "), 1); //$NON-NLS-1$
|
||||
ICOptionContainer container = getContainer();
|
||||
IProject proj = null;
|
||||
String indexEnabled = getIndexerEnabledString();
|
||||
String indexMarkers = getIndexerProblemsValuesString();
|
||||
|
||||
if (container != null){
|
||||
|
@ -77,31 +71,19 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj, false);
|
||||
ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
|
||||
if (cext.length > 0) {
|
||||
//initializeIndexerId();
|
||||
for (int i = 0; i < cext.length; i++) {
|
||||
String id = cext[i].getID();
|
||||
//if (cext[i].getID().equals(parserID)) {
|
||||
String orig = cext[i].getExtensionData("indexenabled"); //$NON-NLS-1$
|
||||
if (orig == null || !orig.equals(indexEnabled)) {
|
||||
cext[i].setExtensionData("indexenabled", indexEnabled); //$NON-NLS-1$
|
||||
}
|
||||
orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
|
||||
String orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
|
||||
String indexProblems = getIndexerProblemsValuesString();
|
||||
if (orig == null || !orig.equals(indexProblems)) {
|
||||
cext[i].setExtensionData("indexmarkers", indexProblems); //$NON-NLS-1$
|
||||
}
|
||||
//}
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Preferences store = null;
|
||||
if (container != null){
|
||||
store = container.getPreferences();
|
||||
}
|
||||
|
||||
if (store != null) {
|
||||
store.setValue(PREF_INDEX_ENABLED, indexEnabled);
|
||||
store.setValue(PREF_INDEX_MARKERS, indexMarkers);
|
||||
if (prefStore != null) {
|
||||
prefStore.setValue(PREF_INDEX_MARKERS, indexMarkers);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,14 +99,6 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
if (indexer instanceof SourceIndexer)
|
||||
((SourceIndexer) indexer).removeIndexerProblems(currentProject);
|
||||
|
||||
boolean indexProject = getIndexerValue();
|
||||
|
||||
if ((indexProject != oldIndexerValue)
|
||||
&& (currentProject != null)
|
||||
&& indexProject) {
|
||||
if (indexer instanceof SourceIndexer)
|
||||
((SourceIndexer) indexer).indexAll(currentProject);
|
||||
}
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.dialogs.ICOptionPage#performDefaults()
|
||||
|
@ -139,16 +113,6 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
|
||||
Composite page = ControlFactory.createComposite(parent, 1);
|
||||
|
||||
Group group = ControlFactory.createGroup(page,INDEXER,1);
|
||||
|
||||
GridData gd = (GridData) group.getLayoutData();
|
||||
gd.grabExcessHorizontalSpace = true;
|
||||
gd.horizontalAlignment = GridData.FILL;
|
||||
|
||||
|
||||
indexerEnabled = ControlFactory.createCheckBox(group, ENABLE_INDEXING );
|
||||
|
||||
|
||||
Group problemsGroup = ControlFactory.createGroup(page,INDEXER_PROBLEMS,1);
|
||||
|
||||
GridData gd2 = (GridData) problemsGroup.getLayoutData();
|
||||
|
@ -158,16 +122,12 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
|
||||
preprocessorProblemsEnabled = ControlFactory.createCheckBox( problemsGroup, ENABLE_PREPROCESSOR_PROBLEMS );
|
||||
semanticProblemsEnabled = ControlFactory.createCheckBox( problemsGroup, ENABLE_SEMANTIC_PROBLEMS );
|
||||
//uncomment when we want to report syntax problems
|
||||
syntacticProblemsEnabled = ControlFactory.createCheckBox( problemsGroup, ENABLE_SYNTACTIC_PROBLEMS );
|
||||
|
||||
setControl(page);
|
||||
|
||||
}
|
||||
|
||||
public boolean getIndexerValue(){
|
||||
return indexerEnabled.getSelection();
|
||||
}
|
||||
|
||||
public String getIndexerProblemsValuesString(){
|
||||
int result = 0;
|
||||
result |= preprocessorProblemsEnabled.getSelection() ? SourceIndexer.PREPROCESSOR_PROBLEMS_BIT : 0;
|
||||
|
@ -179,13 +139,6 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
return tempInt.toString();
|
||||
}
|
||||
|
||||
private String getIndexerEnabledString(){
|
||||
if (indexerEnabled.getSelection())
|
||||
return "true"; //$NON-NLS-1$
|
||||
|
||||
return "false"; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.ui.index2.AbstractIndexerPage#initialize(org.eclipse.core.resources.IProject)
|
||||
*/
|
||||
|
@ -194,12 +147,7 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
try {
|
||||
loadPersistedValues(project);
|
||||
this.currentProject = project;
|
||||
} catch (CoreException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//Set the index enabled checkbox
|
||||
setIndexerValue(oldIndexerValue);
|
||||
} catch (CoreException e) {}
|
||||
|
||||
//Set the IProblem checkboxes
|
||||
setIndexerProblemValues(oldIndexerProblemsValue);
|
||||
|
@ -210,31 +158,19 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
|
||||
ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
|
||||
if (cext.length > 0) {
|
||||
//initializeIndexerId();
|
||||
for (int i = 0; i < cext.length; i++) {
|
||||
String id = cext[i].getID();
|
||||
//if (cext[i].getID().equals(parserID)) {
|
||||
String orig = cext[i].getExtensionData("indexenabled"); //$NON-NLS-1$
|
||||
if (orig != null){
|
||||
Boolean tempBool = new Boolean(orig);
|
||||
oldIndexerValue = tempBool.booleanValue();
|
||||
}
|
||||
|
||||
orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
|
||||
String orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
|
||||
if (orig != null){
|
||||
Integer tempInt = new Integer(orig);
|
||||
oldIndexerProblemsValue = tempInt.intValue();
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setIndexerValue(boolean value){
|
||||
indexerEnabled.setSelection(value);
|
||||
}
|
||||
|
||||
public void setIndexerProblemValues( int value ){
|
||||
preprocessorProblemsEnabled.setSelection( (value & SourceIndexer.PREPROCESSOR_PROBLEMS_BIT) != 0 );
|
||||
if( syntacticProblemsEnabled != null )
|
||||
|
@ -242,4 +178,16 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
|
|||
semanticProblemsEnabled.setSelection( (value & SourceIndexer.SEMANTIC_PROBLEMS_BIT) != 0 );
|
||||
}
|
||||
|
||||
public void loadPreferences() {
|
||||
String indexerId=prefStore.getString(PREF_INDEX_MARKERS);
|
||||
if (!indexerId.equals("")) { //$NON-NLS-1$
|
||||
oldIndexerProblemsValue = (new Integer(indexerId)).intValue();
|
||||
setIndexerProblemValues(oldIndexerProblemsValue);
|
||||
}
|
||||
}
|
||||
|
||||
public void removePreferences() {
|
||||
prefStore.setToDefault(PREF_INDEX_MARKERS);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,8 +10,10 @@
|
|||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui.index;
|
||||
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.dialogs.AbstractCOptionPage;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
|
||||
/**
|
||||
* @author Bogdan Gheorghe
|
||||
|
@ -19,6 +21,7 @@ import org.eclipse.core.resources.IProject;
|
|||
public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||
|
||||
protected IProject currentProject;
|
||||
protected IPreferenceStore prefStore=CUIPlugin.getDefault().getPreferenceStore();
|
||||
|
||||
protected AbstractIndexerPage() {
|
||||
super();
|
||||
|
@ -29,8 +32,16 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
|||
* @param currentProject - the project that this page is being created for
|
||||
*/
|
||||
abstract public void initialize(IProject currentProject);
|
||||
|
||||
|
||||
/**
|
||||
* Called by the indexer block to give the indexer page an opportunity to
|
||||
* load any preferecnes previously set
|
||||
*/
|
||||
abstract public void loadPreferences();
|
||||
/**
|
||||
* Called on indexer preference changes to allow former indexer pages
|
||||
* to clean up the preferences store
|
||||
*/
|
||||
abstract public void removePreferences();
|
||||
|
||||
public IProject getCurrentProject() {
|
||||
return currentProject;
|
||||
|
|
Loading…
Add table
Reference in a new issue