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 Table fTable;
|
||||||
private ILanguage[] fLanguages;
|
private ILanguage[] fLanguages;
|
||||||
private Map fLanguageIds;
|
private Map fLanguageIds;
|
||||||
|
private boolean fHasChanges;
|
||||||
|
|
||||||
public FileLanguageMappingPropertyPage() {
|
public FileLanguageMappingPropertyPage() {
|
||||||
super();
|
super();
|
||||||
|
@ -178,6 +179,7 @@ public class FileLanguageMappingPropertyPage extends PropertyPage {
|
||||||
String selectedLanguage = ((String[]) combo.getData())[index];
|
String selectedLanguage = ((String[]) combo.getData())[index];
|
||||||
LanguageTableData data = (LanguageTableData) item.getData();
|
LanguageTableData data = (LanguageTableData) item.getData();
|
||||||
data.languageId = selectedLanguage;
|
data.languageId = selectedLanguage;
|
||||||
|
fHasChanges = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
refreshMappings();
|
refreshMappings();
|
||||||
|
@ -307,6 +309,10 @@ public class FileLanguageMappingPropertyPage extends PropertyPage {
|
||||||
|
|
||||||
public boolean performOk() {
|
public boolean performOk() {
|
||||||
try {
|
try {
|
||||||
|
if (!fHasChanges) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
IFile file = getFile();
|
IFile file = getFile();
|
||||||
IProject project = file.getProject();
|
IProject project = file.getProject();
|
||||||
LanguageManager manager = LanguageManager.getInstance();
|
LanguageManager manager = LanguageManager.getInstance();
|
||||||
|
@ -330,6 +336,7 @@ public class FileLanguageMappingPropertyPage extends PropertyPage {
|
||||||
}
|
}
|
||||||
config.setFileMappings(file, mappings);
|
config.setFileMappings(file, mappings);
|
||||||
manager.storeLanguageMappingConfiguration(file);
|
manager.storeLanguageMappingConfiguration(file);
|
||||||
|
fHasChanges = false;
|
||||||
return true;
|
return true;
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
|
|
|
@ -44,6 +44,8 @@ public abstract class LanguageMappingWidget {
|
||||||
|
|
||||||
protected Set fOverriddenContentTypes;
|
protected Set fOverriddenContentTypes;
|
||||||
|
|
||||||
|
private boolean fIsChanged;
|
||||||
|
|
||||||
public LanguageMappingWidget() {
|
public LanguageMappingWidget() {
|
||||||
fOverriddenFont = JFaceResources.getFontRegistry().getItalic(JFaceResources.DIALOG_FONT);
|
fOverriddenFont = JFaceResources.getFontRegistry().getItalic(JFaceResources.DIALOG_FONT);
|
||||||
fOverriddenContentTypes = Collections.EMPTY_SET;
|
fOverriddenContentTypes = Collections.EMPTY_SET;
|
||||||
|
@ -91,6 +93,14 @@ public abstract class LanguageMappingWidget {
|
||||||
fChild = child;
|
fChild = child;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isChanged() {
|
||||||
|
return fIsChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChanged(boolean changed) {
|
||||||
|
fIsChanged = changed;
|
||||||
|
}
|
||||||
|
|
||||||
protected void createHeader(Composite parent, String description) {
|
protected void createHeader(Composite parent, String description) {
|
||||||
Link link = new Link(fContents, SWT.NONE);
|
Link link = new Link(fContents, SWT.NONE);
|
||||||
link.setText(description);
|
link.setText(description);
|
||||||
|
|
|
@ -161,9 +161,14 @@ public class ProjectLanguageMappingPropertyPage extends PropertyPage {
|
||||||
|
|
||||||
public boolean performOk() {
|
public boolean performOk() {
|
||||||
try {
|
try {
|
||||||
|
if (!fMappingWidget.isChanged()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
fMappings.setContentTypeMappings(fMappingWidget.getContentTypeMappings());
|
fMappings.setContentTypeMappings(fMappingWidget.getContentTypeMappings());
|
||||||
IContentType[] affectedContentTypes = fMappingWidget.getAffectedContentTypes();
|
IContentType[] affectedContentTypes = fMappingWidget.getAffectedContentTypes();
|
||||||
LanguageManager.getInstance().storeLanguageMappingConfiguration(getProject(), affectedContentTypes);
|
LanguageManager.getInstance().storeLanguageMappingConfiguration(getProject(), affectedContentTypes);
|
||||||
|
fMappingWidget.setChanged(false);
|
||||||
return true;
|
return true;
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
|
|
|
@ -133,6 +133,7 @@ public class ProjectLanguageMappingWidget extends LanguageMappingWidget {
|
||||||
fConfigurationContentTypeMappings.put(configuration, contentTypeMappings);
|
fConfigurationContentTypeMappings.put(configuration, contentTypeMappings);
|
||||||
}
|
}
|
||||||
contentTypeMappings.put(contentType, language);
|
contentTypeMappings.put(contentType, language);
|
||||||
|
setChanged(true);
|
||||||
|
|
||||||
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
||||||
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
||||||
|
@ -168,6 +169,10 @@ public class ProjectLanguageMappingWidget extends LanguageMappingWidget {
|
||||||
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
||||||
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selection.length > 0) {
|
||||||
|
setChanged(true);
|
||||||
|
}
|
||||||
|
|
||||||
refreshMappings();
|
refreshMappings();
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,11 +69,16 @@ public class WorkspaceLanguageMappingPreferencePage extends PreferencePage imple
|
||||||
|
|
||||||
public boolean performOk() {
|
public boolean performOk() {
|
||||||
try {
|
try {
|
||||||
|
if (!fMappingWidget.isChanged()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
IContentType[] affectedContentTypes = fMappingWidget.getAffectedContentTypes();
|
IContentType[] affectedContentTypes = fMappingWidget.getAffectedContentTypes();
|
||||||
LanguageManager manager = LanguageManager.getInstance();
|
LanguageManager manager = LanguageManager.getInstance();
|
||||||
WorkspaceLanguageConfiguration config = manager.getWorkspaceLanguageConfiguration();
|
WorkspaceLanguageConfiguration config = manager.getWorkspaceLanguageConfiguration();
|
||||||
config.setWorkspaceMappings(fMappingWidget.getContentTypeMappings());
|
config.setWorkspaceMappings(fMappingWidget.getContentTypeMappings());
|
||||||
manager.storeWorkspaceLanguageConfiguration(affectedContentTypes);
|
manager.storeWorkspaceLanguageConfiguration(affectedContentTypes);
|
||||||
|
fMappingWidget.setChanged(false);
|
||||||
return true;
|
return true;
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
|
|
|
@ -100,6 +100,7 @@ public class WorkspaceLanguageMappingWidget extends LanguageMappingWidget {
|
||||||
String contentType = dialog.getContentTypeID();
|
String contentType = dialog.getContentTypeID();
|
||||||
String language = dialog.getLanguageID();
|
String language = dialog.getLanguageID();
|
||||||
fContentTypeMappings.put(contentType, language);
|
fContentTypeMappings.put(contentType, language);
|
||||||
|
setChanged(true);
|
||||||
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
||||||
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
||||||
refreshMappings();
|
refreshMappings();
|
||||||
|
@ -123,6 +124,10 @@ public class WorkspaceLanguageMappingWidget extends LanguageMappingWidget {
|
||||||
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
|
||||||
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
fAffectedContentTypes.add(contentTypeManager.getContentType(contentType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selection.length > 0) {
|
||||||
|
setChanged(true);
|
||||||
|
}
|
||||||
|
|
||||||
refreshMappings();
|
refreshMappings();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue