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:
parent
5ddaf70aef
commit
fe8aede0d0
6 changed files with 37 additions and 0 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
@ -169,6 +170,10 @@ public class ProjectLanguageMappingWidget extends LanguageMappingWidget {
|
|||
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
||||
}
|
||||
|
||||
if (selection.length > 0) {
|
||||
setChanged(true);
|
||||
}
|
||||
|
||||
refreshMappings();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
@ -124,6 +125,10 @@ public class WorkspaceLanguageMappingWidget extends LanguageMappingWidget {
|
|||
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
||||
}
|
||||
|
||||
if (selection.length > 0) {
|
||||
setChanged(true);
|
||||
}
|
||||
|
||||
refreshMappings();
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue