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

tidy up - using language id to keep track of current language rather

than ICLanguageSetting
This commit is contained in:
Andrew Gvozdev 2011-09-08 12:47:44 -04:00
parent d2a59fe2f3
commit d192508e91
2 changed files with 34 additions and 64 deletions

View file

@ -88,7 +88,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
private Tree treeLanguages; private Tree treeLanguages;
private Tree treeEntries; private Tree treeEntries;
private TreeViewer treeEntriesViewer; private TreeViewer treeEntriesViewer;
private ICLanguageSetting currentLanguageSetting = null; private String currentLanguageId = null;
private ICLanguageSetting[] allLanguages; private ICLanguageSetting[] allLanguages;
private Button builtInCheckBox; private Button builtInCheckBox;
@ -125,7 +125,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
// if (LanguageSettingsManager.isWorkspaceProvider(provider)) // if (LanguageSettingsManager.isWorkspaceProvider(provider))
// provider = LanguageSettingsManager.getRawWorkspaceProvider(provider.getId()); // provider = LanguageSettingsManager.getRawWorkspaceProvider(provider.getId());
// //
if (currentLanguageSetting != null) { if (currentLanguageId != null) {
IResource rc = getResource(); IResource rc = getResource();
List<ICLanguageSettingEntry> entries = getSettingEntries(provider); List<ICLanguageSettingEntry> entries = getSettingEntries(provider);
if (entries == null && !(rc instanceof IProject)) { if (entries == null && !(rc instanceof IProject)) {
@ -136,8 +136,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
} else if (provider instanceof ILanguageSettingsEditableProvider && (page.isForFile() || page.isForFolder())) { } else if (provider instanceof ILanguageSettingsEditableProvider && (page.isForFile() || page.isForFolder())) {
// Assuming that the default entries for a resource are always null. // Assuming that the default entries for a resource are always null.
// Using that for performance reasons. See note in PerformDefaults(). // Using that for performance reasons. See note in PerformDefaults().
String languageId = currentLanguageSetting.getLanguageId(); List<ICLanguageSettingEntry> entriesParent = provider.getSettingEntries(null, null, currentLanguageId);
List<ICLanguageSettingEntry> entriesParent = provider.getSettingEntries(null, null, languageId);
if (entries!=null && !entries.equals(entriesParent)) { if (entries!=null && !entries.equals(entriesParent)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_SETTING; overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_SETTING;
} }
@ -289,16 +288,12 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
* @return list of setting entries for the current context. * @return list of setting entries for the current context.
*/ */
private List<ICLanguageSettingEntry> getSettingEntriesUpResourceTree(ILanguageSettingsProvider provider) { private List<ICLanguageSettingEntry> getSettingEntriesUpResourceTree(ILanguageSettingsProvider provider) {
if (currentLanguageSetting==null) if (currentLanguageId==null)
return null;
String languageId = currentLanguageSetting.getLanguageId();
if (languageId==null)
return null; return null;
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource(); IResource rc = getResource();
List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, cfgDescription, rc, languageId); List<ICLanguageSettingEntry> entries = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, cfgDescription, rc, currentLanguageId);
return entries; return entries;
} }
@ -307,13 +302,12 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
* @return list of setting entries for the current context. * @return list of setting entries for the current context.
*/ */
private List<ICLanguageSettingEntry> getSettingEntries(ILanguageSettingsProvider provider) { private List<ICLanguageSettingEntry> getSettingEntries(ILanguageSettingsProvider provider) {
String languageId = currentLanguageSetting.getLanguageId(); if (currentLanguageId==null)
if (languageId==null)
return null; return null;
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource(); IResource rc = getResource();
return provider.getSettingEntries(cfgDescription, rc, languageId); return provider.getSettingEntries(cfgDescription, rc, currentLanguageId);
} }
private void addTreeForLanguages(Composite comp) { private void addTreeForLanguages(Composite comp) {
@ -328,7 +322,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
if (items.length > 0) { if (items.length > 0) {
ICLanguageSetting langSetting = (ICLanguageSetting) items[0].getData(); ICLanguageSetting langSetting = (ICLanguageSetting) items[0].getData();
if (langSetting != null) { if (langSetting != null) {
currentLanguageSetting = langSetting; currentLanguageId = langSetting.getLanguageId();
updateTreeEntries(); updateTreeEntries();
updateButtons(); updateButtons();
} }
@ -689,33 +683,29 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
} }
private void saveEntries(ILanguageSettingsProvider provider, List<ICLanguageSettingEntry> entries) { private void saveEntries(ILanguageSettingsProvider provider, List<ICLanguageSettingEntry> entries) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource();
String languageId = currentLanguageSetting.getLanguageId();
if (provider instanceof LanguageSettingsSerializable) { if (provider instanceof LanguageSettingsSerializable) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource();
if (entries!=null && rc!=null) { if (entries!=null && rc!=null) {
List<ICLanguageSettingEntry> parentEntries = null; List<ICLanguageSettingEntry> parentEntries = null;
if (rc instanceof IProject) { if (rc instanceof IProject) {
parentEntries = new ArrayList<ICLanguageSettingEntry>(); parentEntries = new ArrayList<ICLanguageSettingEntry>();
} else { } else {
parentEntries = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, cfgDescription, rc.getParent(), languageId); parentEntries = LanguageSettingsManager.getSettingEntriesUpResourceTree(provider, cfgDescription, rc.getParent(), currentLanguageId);
} }
if (entries.equals(parentEntries)) { if (entries.equals(parentEntries)) {
// to use parent entries instead // to use parent entries instead
entries = null; entries = null;
} }
} }
((LanguageSettingsSerializable)provider).setSettingEntries(cfgDescription, rc, languageId, entries); ((LanguageSettingsSerializable)provider).setSettingEntries(cfgDescription, rc, currentLanguageId, entries);
} }
} }
private List<ICLanguageSettingEntry> getWritableEntries(ILanguageSettingsProvider provider) { private List<ICLanguageSettingEntry> getWritableEntries(ILanguageSettingsProvider provider) {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource(); IResource rc = getResource();
String languageId = currentLanguageSetting.getLanguageId(); List<ICLanguageSettingEntry> entries = provider.getSettingEntries(cfgDescription, rc, currentLanguageId);
List<ICLanguageSettingEntry> entries = provider.getSettingEntries(cfgDescription, rc, languageId);
if (entries==null) { if (entries==null) {
entries = getSettingEntriesUpResourceTree(provider); entries = getSettingEntriesUpResourceTree(provider);
} }
@ -864,26 +854,23 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
/** /**
* Get list of providers to display in the settings entry tree. * Get list of providers to display in the settings entry tree.
*/ */
private List<ILanguageSettingsProvider> getProviders(ICLanguageSetting languageSetting) { private List<ILanguageSettingsProvider> getProviders(String languageSettingId) {
List<ILanguageSettingsProvider> itemsList = new LinkedList<ILanguageSettingsProvider>(); List<ILanguageSettingsProvider> itemsList = new LinkedList<ILanguageSettingsProvider>();
if (languageSetting!=null) { if (currentLanguageId!=null) {
String langId = languageSetting.getLanguageId(); IResource rc = getResource();
if (langId != null) { ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource(); if (rc!=null && cfgDescription!=null) {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); List<ILanguageSettingsProvider> cfgProviders = cfgDescription.getLanguageSettingProviders();
if (rc!=null && cfgDescription!=null) { for (ILanguageSettingsProvider cfgProvider : cfgProviders) {
List<ILanguageSettingsProvider> cfgProviders = cfgDescription.getLanguageSettingProviders(); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(cfgProvider);
for (ILanguageSettingsProvider cfgProvider : cfgProviders) { if (rawProvider instanceof LanguageSettingsBaseProvider) {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(cfgProvider); // filter out providers incapable of providing entries for this language
if (rawProvider instanceof LanguageSettingsBaseProvider) { List<String> languageIds = ((LanguageSettingsBaseProvider)rawProvider).getLanguageScope();
// filter out providers incapable of providing entries for this language if (languageIds!=null && !languageIds.contains(currentLanguageId)) {
List<String> languageIds = ((LanguageSettingsBaseProvider)rawProvider).getLanguageScope(); continue;
if (languageIds!=null && !languageIds.contains(langId)) {
continue;
}
} }
itemsList.add(cfgProvider);
} }
itemsList.add(cfgProvider);
} }
} }
} }
@ -894,7 +881,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
* Refreshes the entries tree in "Show Entries" mode. * Refreshes the entries tree in "Show Entries" mode.
*/ */
public void updateTreeEntries() { public void updateTreeEntries() {
List<ILanguageSettingsProvider> tableItems = getProviders(currentLanguageSetting); List<ILanguageSettingsProvider> tableItems = getProviders(currentLanguageId);
treeEntriesViewer.setInput(tableItems.toArray(new Object[tableItems.size()])); treeEntriesViewer.setInput(tableItems.toArray(new Object[tableItems.size()]));
updateStatusLine(); updateStatusLine();
updateButtons(); updateButtons();
@ -938,14 +925,13 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
t.setText(0, langId); t.setText(0, langId);
t.setData(langSetting); t.setData(langSetting);
if (selectedLanguageItem == null) { if (selectedLanguageItem == null) {
if (currentLanguageSetting!=null) { if (currentLanguageId!=null) {
if (currentLanguageSetting.getLanguageId().equals(langSetting.getLanguageId())) { if (currentLanguageId.equals(langSetting.getLanguageId())) {
selectedLanguageItem = t; selectedLanguageItem = t;
currentLanguageSetting = langSetting;
} }
} else { } else {
selectedLanguageItem = t; selectedLanguageItem = t;
currentLanguageSetting = langSetting; currentLanguageId = langSetting.getLanguageId();
} }
} }
} }
@ -1034,7 +1020,7 @@ providers: for (ILanguageSettingsProvider provider : providers) {
cfgDescription.setLanguageSettingProviders(writableProviders); cfgDescription.setLanguageSettingProviders(writableProviders);
// updateTreeEntries(); // updateTreeEntries();
// updateData(getResDesc()); // updateData(getResDesc());
List<ILanguageSettingsProvider> tableItems = getProviders(currentLanguageSetting); List<ILanguageSettingsProvider> tableItems = getProviders(currentLanguageId);
treeEntriesViewer.setInput(tableItems.toArray(new Object[tableItems.size()])); treeEntriesViewer.setInput(tableItems.toArray(new Object[tableItems.size()]));
} }
} }
@ -1117,9 +1103,8 @@ providers: for (ILanguageSettingsProvider provider : providers) {
private void setSettingEntries(ILanguageSettingsEditableProvider provider, List<ICLanguageSettingEntry> entries) { private void setSettingEntries(ILanguageSettingsEditableProvider provider, List<ICLanguageSettingEntry> entries) {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
IResource rc = getResource(); IResource rc = getResource();
String languageId = currentLanguageSetting.getLanguageId(); if (currentLanguageId!=null)
if (languageId!=null) provider.setSettingEntries(cfgDescription, rc, currentLanguageId, entries);
provider.setSettingEntries(cfgDescription, rc, languageId, entries);
} }
@Override @Override

View file

@ -824,21 +824,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
updateButtons(); updateButtons();
} }
private ICLanguageSetting[] getLangSettings(ICResourceDescription rcDes) {
switch (rcDes.getType()) {
case ICSettingBase.SETTING_PROJECT:
case ICSettingBase.SETTING_CONFIGURATION:
case ICSettingBase.SETTING_FOLDER:
ICFolderDescription foDes = (ICFolderDescription) rcDes;
return foDes.getLanguageSettings();
case ICSettingBase.SETTING_FILE:
ICFileDescription fiDes = (ICFileDescription) rcDes;
ICLanguageSetting langSetting = fiDes.getLanguageSetting();
return (langSetting != null) ? new ICLanguageSetting[] { langSetting } : null;
}
return null;
}
/** /**
* Called when configuration changed * Called when configuration changed
*/ */