1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 203881 - Language mapping dialog always fires indexer

This commit is contained in:
Jason Montojo 2007-09-19 19:04:44 +00:00
parent 5ddaf70aef
commit fe8aede0d0
6 changed files with 37 additions and 0 deletions

View file

@ -72,6 +72,7 @@ public class FileLanguageMappingPropertyPage extends PropertyPage {
private Table fTable;
private ILanguage[] fLanguages;
private Map fLanguageIds;
private boolean fHasChanges;
public FileLanguageMappingPropertyPage() {
super();
@ -178,6 +179,7 @@ public class FileLanguageMappingPropertyPage extends PropertyPage {
String selectedLanguage = ((String[]) combo.getData())[index];
LanguageTableData data = (LanguageTableData) item.getData();
data.languageId = selectedLanguage;
fHasChanges = true;
try {
refreshMappings();
@ -307,6 +309,10 @@ public class FileLanguageMappingPropertyPage extends PropertyPage {
public boolean performOk() {
try {
if (!fHasChanges) {
return true;
}
IFile file = getFile();
IProject project = file.getProject();
LanguageManager manager = LanguageManager.getInstance();
@ -330,6 +336,7 @@ public class FileLanguageMappingPropertyPage extends PropertyPage {
}
config.setFileMappings(file, mappings);
manager.storeLanguageMappingConfiguration(file);
fHasChanges = false;
return true;
} catch (CoreException e) {
CCorePlugin.log(e);

View file

@ -44,6 +44,8 @@ public abstract class LanguageMappingWidget {
protected Set fOverriddenContentTypes;
private boolean fIsChanged;
public LanguageMappingWidget() {
fOverriddenFont = JFaceResources.getFontRegistry().getItalic(JFaceResources.DIALOG_FONT);
fOverriddenContentTypes = Collections.EMPTY_SET;
@ -91,6 +93,14 @@ public abstract class LanguageMappingWidget {
fChild = child;
}
public boolean isChanged() {
return fIsChanged;
}
public void setChanged(boolean changed) {
fIsChanged = changed;
}
protected void createHeader(Composite parent, String description) {
Link link = new Link(fContents, SWT.NONE);
link.setText(description);

View file

@ -161,9 +161,14 @@ public class ProjectLanguageMappingPropertyPage extends PropertyPage {
public boolean performOk() {
try {
if (!fMappingWidget.isChanged()) {
return true;
}
fMappings.setContentTypeMappings(fMappingWidget.getContentTypeMappings());
IContentType[] affectedContentTypes = fMappingWidget.getAffectedContentTypes();
LanguageManager.getInstance().storeLanguageMappingConfiguration(getProject(), affectedContentTypes);
fMappingWidget.setChanged(false);
return true;
} catch (CoreException e) {
CCorePlugin.log(e);

View file

@ -133,6 +133,7 @@ public class ProjectLanguageMappingWidget extends LanguageMappingWidget {
fConfigurationContentTypeMappings.put(configuration, contentTypeMappings);
}
contentTypeMappings.put(contentType, language);
setChanged(true);
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
@ -168,6 +169,10 @@ public class ProjectLanguageMappingWidget extends LanguageMappingWidget {
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
}
if (selection.length > 0) {
setChanged(true);
}
refreshMappings();
}

View file

@ -69,11 +69,16 @@ public class WorkspaceLanguageMappingPreferencePage extends PreferencePage imple
public boolean performOk() {
try {
if (!fMappingWidget.isChanged()) {
return true;
}
IContentType[] affectedContentTypes = fMappingWidget.getAffectedContentTypes();
LanguageManager manager = LanguageManager.getInstance();
WorkspaceLanguageConfiguration config = manager.getWorkspaceLanguageConfiguration();
config.setWorkspaceMappings(fMappingWidget.getContentTypeMappings());
manager.storeWorkspaceLanguageConfiguration(affectedContentTypes);
fMappingWidget.setChanged(false);
return true;
} catch (CoreException e) {
CCorePlugin.log(e);

View file

@ -100,6 +100,7 @@ public class WorkspaceLanguageMappingWidget extends LanguageMappingWidget {
String contentType = dialog.getContentTypeID();
String language = dialog.getLanguageID();
fContentTypeMappings.put(contentType, language);
setChanged(true);
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
refreshMappings();
@ -123,6 +124,10 @@ public class WorkspaceLanguageMappingWidget extends LanguageMappingWidget {
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
}
if (selection.length > 0) {
setChanged(true);
}
refreshMappings();
}