mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-25 18:05:33 +02:00
Bug #214194 : Adding a preprocessor symbol erases previously defined ones
This commit is contained in:
parent
9aefe705a6
commit
d9d5293cf4
3 changed files with 144 additions and 124 deletions
|
@ -13,13 +13,14 @@ package org.eclipse.cdt.core.settings.model.util;
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
||||
import org.eclipse.cdt.core.settings.model.ICMacroEntry;
|
||||
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
||||
|
||||
public class SettingsSet {
|
||||
public static final int READ_ONLY = 1;
|
||||
|
@ -31,12 +32,12 @@ public class SettingsSet {
|
|||
private int fFlagsToClear;
|
||||
private boolean fIsReadOnly;
|
||||
private boolean fIsOverrideSupported;
|
||||
private LinkedHashMap fEntries;
|
||||
HashSet fOverrideSet;
|
||||
private LinkedHashMap<EntryNameKey, EntryInfo> fEntries;
|
||||
HashSet<String> fOverrideSet;
|
||||
private Object fContext;
|
||||
|
||||
private SettingLevel(){
|
||||
fEntries = new LinkedHashMap();
|
||||
fEntries = new LinkedHashMap<EntryNameKey, EntryInfo>();
|
||||
}
|
||||
|
||||
public boolean isReadOnly(){
|
||||
|
@ -79,10 +80,11 @@ public class SettingsSet {
|
|||
return (baseFlags | fFlagsToSet) & (~fFlagsToClear);
|
||||
}
|
||||
|
||||
public Set getOverrideSet(){
|
||||
@SuppressWarnings("unchecked")
|
||||
public Set<String> getOverrideSet(){
|
||||
if(fOverrideSet != null)
|
||||
return (HashSet)fOverrideSet.clone();
|
||||
return new HashSet();
|
||||
return (HashSet<String>)fOverrideSet.clone();
|
||||
return new HashSet<String>();
|
||||
}
|
||||
|
||||
public void addEntries(ICLanguageSettingEntry entries[]){
|
||||
|
@ -93,11 +95,9 @@ public class SettingsSet {
|
|||
}
|
||||
}
|
||||
|
||||
public void addEntries(List list){
|
||||
int size = list.size();
|
||||
for(int i = 0; i < size; i++){
|
||||
addEntry((ICLanguageSettingEntry)list.get(i));
|
||||
}
|
||||
public void addEntries(List<ICLanguageSettingEntry> list){
|
||||
for(ICLanguageSettingEntry se : list)
|
||||
addEntry(se);
|
||||
}
|
||||
|
||||
public void addEntry(ICLanguageSettingEntry entry){
|
||||
|
@ -107,23 +107,23 @@ public class SettingsSet {
|
|||
public void addEntry(ICLanguageSettingEntry entry, Object customInfo){
|
||||
entry = CDataUtil.createEntry(entry, fFlagsToSet, fFlagsToClear);
|
||||
EntryInfo info = new EntryInfo(entry, customInfo);
|
||||
fEntries.put(info.getNameKey(), info);
|
||||
fEntries.put(info.getContentsKey(), info);
|
||||
}
|
||||
|
||||
public void addOverrideName(String name){
|
||||
if(fOverrideSet == null)
|
||||
fOverrideSet = new HashSet();
|
||||
fOverrideSet = new HashSet<String>();
|
||||
|
||||
fOverrideSet.add(name);
|
||||
}
|
||||
|
||||
public void addOverrideNameSet(Set set){
|
||||
public void addOverrideNameSet(Set<String> set){
|
||||
if(set == null)
|
||||
return;
|
||||
if(fOverrideSet != null){
|
||||
fOverrideSet.addAll(set);
|
||||
} else if(set.size() != 0){
|
||||
fOverrideSet = new HashSet(set);
|
||||
fOverrideSet = new HashSet<String>(set);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -142,33 +142,33 @@ public class SettingsSet {
|
|||
fOverrideSet = null;
|
||||
}
|
||||
|
||||
public Map clearAndGetMap(){
|
||||
Map map = fEntries;
|
||||
fEntries = new LinkedHashMap();
|
||||
public Map<EntryNameKey, EntryInfo> clearAndGetMap(){
|
||||
Map<EntryNameKey, EntryInfo> map = fEntries;
|
||||
fEntries = new LinkedHashMap<EntryNameKey, EntryInfo>();
|
||||
fOverrideSet = null;
|
||||
return map;
|
||||
}
|
||||
|
||||
public EntryInfo[] getInfos(){
|
||||
return (EntryInfo[])fEntries.values().toArray(new EntryInfo[fEntries.size()]);
|
||||
return fEntries.values().toArray(new EntryInfo[fEntries.size()]);
|
||||
}
|
||||
|
||||
public ICLanguageSettingEntry[] getEntries(){
|
||||
List list = getEntriesList(false);
|
||||
return (ICLanguageSettingEntry[])list.toArray(new ICLanguageSettingEntry[list.size()]);
|
||||
List<ICLanguageSettingEntry> list = getEntriesList(false);
|
||||
return list.toArray(new ICLanguageSettingEntry[list.size()]);
|
||||
}
|
||||
|
||||
public ICLanguageSettingEntry[] getEntries(boolean includeOverridden){
|
||||
List list = getEntriesList(includeOverridden);
|
||||
return (ICLanguageSettingEntry[])list.toArray(new ICLanguageSettingEntry[list.size()]);
|
||||
List<ICLanguageSettingEntry> list = getEntriesList(includeOverridden);
|
||||
return list.toArray(new ICLanguageSettingEntry[list.size()]);
|
||||
}
|
||||
|
||||
public List getEntriesList(boolean includeOverridden){
|
||||
List list = new ArrayList();
|
||||
public List<ICLanguageSettingEntry> getEntriesList(boolean includeOverridden){
|
||||
List<ICLanguageSettingEntry> list = new ArrayList<ICLanguageSettingEntry>();
|
||||
EntryInfo infos[] = getInfos();
|
||||
for(int i = 0; i < infos.length; i++){
|
||||
if(includeOverridden || !infos[i].isOverridden())
|
||||
list.add(infos[i].getEntry());
|
||||
for(EntryInfo info : infos){
|
||||
if(includeOverridden || !info.isOverridden())
|
||||
list.add(info.getEntry());
|
||||
}
|
||||
|
||||
return list;
|
||||
|
@ -194,7 +194,7 @@ public class SettingsSet {
|
|||
fCustomInfo = customInfo;
|
||||
}
|
||||
|
||||
public EntryNameKey getNameKey(){
|
||||
public EntryNameKey getContentsKey(){
|
||||
if(fNameKey == null){
|
||||
fNameKey = new EntryNameKey(fEntry);
|
||||
}
|
||||
|
@ -230,7 +230,7 @@ public class SettingsSet {
|
|||
}
|
||||
|
||||
public void adjustOverrideState(){
|
||||
Set set = new HashSet();
|
||||
Set<String> set = new HashSet<String>();
|
||||
SettingLevel level;
|
||||
for(int i = 0; i < fLevels.length; i++){
|
||||
level = fLevels[i];
|
||||
|
@ -240,11 +240,8 @@ public class SettingsSet {
|
|||
}
|
||||
}
|
||||
|
||||
private void adjustOverrideState(SettingLevel level, Set overridenSet){
|
||||
EntryInfo[] infos = level.getInfos();
|
||||
EntryInfo info;
|
||||
for(int i = 0; i < infos.length; i++){
|
||||
info = infos[i];
|
||||
private void adjustOverrideState(SettingLevel level, Set<String> overridenSet){
|
||||
for(EntryInfo info : level.getInfos()){
|
||||
if(overridenSet.add(info.getEntry().getName())){
|
||||
info.makeOverridden(false);
|
||||
} else {
|
||||
|
@ -259,23 +256,18 @@ public class SettingsSet {
|
|||
|
||||
public ICLanguageSettingEntry[] getEntries(int types){
|
||||
adjustOverrideState();
|
||||
List entries = new ArrayList();
|
||||
for(int i = 0; i < fLevels.length; i++){
|
||||
if(isCompatible(fLevels[i], types))
|
||||
getEntries(fLevels[i], entries);
|
||||
List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
|
||||
for(SettingLevel sl : fLevels){
|
||||
if(isCompatible(sl, types))
|
||||
getEntries(sl, entries);
|
||||
}
|
||||
|
||||
return (ICLanguageSettingEntry[])entries.toArray(new ICLanguageSettingEntry[entries.size()]);
|
||||
return entries.toArray(new ICLanguageSettingEntry[entries.size()]);
|
||||
}
|
||||
|
||||
private void getEntries(SettingLevel level, List list){
|
||||
EntryInfo[] infos = level.getInfos();
|
||||
EntryInfo info;
|
||||
for(int i = 0; i < infos.length; i++){
|
||||
info = infos[i];
|
||||
private void getEntries(SettingLevel level, List<ICLanguageSettingEntry> list){
|
||||
for(EntryInfo info : level.getInfos())
|
||||
if(!info.isOverridden())
|
||||
list.add(info.getEntry());
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isCompatible(SettingLevel level, int types){
|
||||
|
@ -305,33 +297,31 @@ public class SettingsSet {
|
|||
return -1;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void applyEntries(ICLanguageSettingEntry[] entries){
|
||||
HashMap map = getEntryLevelMap(WRITABLE | READ_ONLY);
|
||||
Map mapCopy = (HashMap)map.clone();
|
||||
|
||||
Map[] clearedInfos = new Map[fLevels.length];
|
||||
HashMap<EntryNameKey, Object[]> map = getEntryLevelMap(WRITABLE | READ_ONLY);
|
||||
Map<EntryNameKey, Object[]> mapCopy = (HashMap<EntryNameKey, Object[]>)map.clone();
|
||||
Map<EntryNameKey, EntryInfo>[] clearedInfos = new Map [fLevels.length];
|
||||
|
||||
for(int i = 0; i < fLevels.length; i++){
|
||||
if(!fLevels[i].isReadOnly()){
|
||||
if(!fLevels[i].isReadOnly())
|
||||
clearedInfos[i] = fLevels[i].clearAndGetMap();
|
||||
}
|
||||
}
|
||||
|
||||
Integer levelInteger;
|
||||
int levelNum;
|
||||
EntryNameKey key;
|
||||
ICLanguageSettingEntry entry;
|
||||
int writableLevel = getWritableLevelNum();
|
||||
SettingLevel level;
|
||||
|
||||
for(int i = 0; i < entries.length; i++){
|
||||
entry = entries[i];
|
||||
key = new EntryNameKey(entry);
|
||||
EntryNameKey key = new EntryNameKey(entry);
|
||||
Object[] o = (Object[])map.get(key);
|
||||
|
||||
if(o != null){
|
||||
if(o != null && valueMatches(entry, o[1])){
|
||||
mapCopy.remove(key);
|
||||
levelInteger = (Integer)o[0];
|
||||
levelInteger = (Integer)o[0];
|
||||
} else {
|
||||
levelInteger = null;
|
||||
}
|
||||
|
@ -340,7 +330,7 @@ public class SettingsSet {
|
|||
if(levelNum >= 0){
|
||||
level = fLevels[levelNum];
|
||||
if(!level.isReadOnly()){
|
||||
Map clearedInfo = clearedInfos[levelNum];
|
||||
Map<EntryNameKey, EntryInfo> clearedInfo = clearedInfos[levelNum];
|
||||
Object customInfo = null;
|
||||
if(clearedInfo != null){
|
||||
EntryInfo info = (EntryInfo)clearedInfo.get(key);
|
||||
|
@ -356,10 +346,12 @@ public class SettingsSet {
|
|||
if(overrideLevel >= 0){
|
||||
level = fLevels[overrideLevel];
|
||||
if(level.isOverrideSupported() && !mapCopy.isEmpty()){
|
||||
String str;
|
||||
for(Iterator iter = mapCopy.keySet().iterator(); iter.hasNext();){
|
||||
str = ((EntryNameKey)iter.next()).getEntry().getName();
|
||||
if(str != null)
|
||||
for(EntryNameKey enk : mapCopy.keySet()){
|
||||
ICSettingEntry e = enk.getEntry();
|
||||
if ((e.getFlags() & ICSettingEntry.BUILTIN) == 0)
|
||||
continue;
|
||||
String str = e.getName();
|
||||
if(str != null)
|
||||
level.addOverrideName(str);
|
||||
}
|
||||
}
|
||||
|
@ -367,26 +359,38 @@ public class SettingsSet {
|
|||
adjustOverrideState();
|
||||
}
|
||||
|
||||
public HashMap getEntryLevelMap(int types){
|
||||
HashMap map = new HashMap();
|
||||
public HashMap<EntryNameKey, Object[]> getEntryLevelMap(int types){
|
||||
HashMap<EntryNameKey, Object[]> map = new HashMap<EntryNameKey, Object[]>();
|
||||
for(int i = 0; i < fLevels.length; i++){
|
||||
if(isCompatible(fLevels[i], types))
|
||||
addLevelInfoToMap(fLevels[i], i, map);
|
||||
}
|
||||
|
||||
return map;
|
||||
|
||||
}
|
||||
|
||||
private void addLevelInfoToMap(SettingLevel level, int l, Map map){
|
||||
EntryInfo infos[] = level.getInfos();
|
||||
EntryInfo info;
|
||||
EntryNameKey key;
|
||||
for(int i = 0; i < infos.length; i++){
|
||||
info = infos[i];
|
||||
key = info.getNameKey();
|
||||
private void addLevelInfoToMap(SettingLevel level, int l, Map<EntryNameKey, Object[]> map){
|
||||
for(EntryInfo info : level.getInfos()){
|
||||
EntryNameKey key = info.getContentsKey();
|
||||
if(!map.containsKey(key))
|
||||
map.put(key, new Object[]{new Integer(l), info.getEntry()});
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean valueMatches(ICLanguageSettingEntry e, Object o) {
|
||||
if (!(e instanceof ICMacroEntry))
|
||||
return true; // ignore values for other entries
|
||||
if (!(o instanceof ICMacroEntry))
|
||||
return false; // cannot compare different entries
|
||||
String s1 = e.getValue();
|
||||
String s2 = ((ICMacroEntry)o).getValue();
|
||||
if (s1 == null && s2 == null)
|
||||
return true;
|
||||
if (s1 != null)
|
||||
return s1.equals(s2);
|
||||
else
|
||||
return s2.equals(s1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
protected TableColumn columnToFit = null;
|
||||
|
||||
protected ICLanguageSetting lang;
|
||||
protected LinkedList<ICLanguageSettingEntry> incs;
|
||||
protected LinkedList<ICLanguageSettingEntry> shownEntries;
|
||||
protected ArrayList<ICSettingEntry> exported;
|
||||
protected SashForm sashForm;
|
||||
protected ICLanguageSetting [] ls; // all languages known
|
||||
|
@ -221,9 +221,10 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
boolean canExport = index != -1;
|
||||
boolean canEdit = canExport && ids.length == 1;
|
||||
boolean canDelete = canExport;
|
||||
ICLanguageSettingEntry ent = null;
|
||||
if (canExport) {
|
||||
ICLanguageSettingEntry ent = (ICLanguageSettingEntry)(table.getItem(index).getData());
|
||||
if (ent.isBuiltIn() || ent.isReadOnly()) canEdit = false;
|
||||
ent = (ICLanguageSettingEntry)(table.getItem(index).getData());
|
||||
if (ent.isReadOnly()) canEdit = false;
|
||||
if (ent.isReadOnly()) canDelete = false;
|
||||
if (exported.contains(ent))
|
||||
buttonSetText(3, UIMessages.getString("AbstractLangsListTab.4")); //$NON-NLS-1$
|
||||
|
@ -232,10 +233,10 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
} else {
|
||||
buttonSetText(3, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$
|
||||
}
|
||||
boolean canMoveUp = canEdit && index > 0;
|
||||
boolean canMoveDown = canEdit && (index < table.getItemCount() - 1);
|
||||
boolean canMoveUp = canEdit && index > 0 && !ent.isBuiltIn();
|
||||
boolean canMoveDown = canEdit && (index < table.getItemCount() - 1) && !ent.isBuiltIn();
|
||||
if (canMoveDown && showBIButton.getSelection()) {
|
||||
ICLanguageSettingEntry ent = (ICLanguageSettingEntry)(table.getItem(index+1).getData());
|
||||
ent = (ICLanguageSettingEntry)(table.getItem(index+1).getData());
|
||||
if (ent.isBuiltIn()) canMoveDown = false; // cannot exchange with built in
|
||||
}
|
||||
buttonSetEnabled(0, canAdd); // add
|
||||
|
@ -306,8 +307,8 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
if (x == -1) x = 0;
|
||||
else x += shift; // used only for UP/DOWN
|
||||
|
||||
incs = getIncs();
|
||||
tv.setInput(incs.toArray(new Object[incs.size()]));
|
||||
shownEntries = getIncs();
|
||||
tv.setInput(shownEntries.toArray(new Object[shownEntries.size()]));
|
||||
if (table.getItemCount() > x) table.select(x);
|
||||
else if (table.getItemCount() > 0) table.select(0);
|
||||
}
|
||||
|
@ -395,29 +396,48 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
addToAll(ent);
|
||||
} else {
|
||||
if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) {
|
||||
performMulti(ent, false);
|
||||
performMulti(ent, null);
|
||||
} else {
|
||||
incs.add(ent);
|
||||
setSettingEntries(getKind(), incs, toAllLang);
|
||||
changeIt(ent, null);
|
||||
}
|
||||
}
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
private void performMulti(ICLanguageSettingEntry ent, boolean delete) {
|
||||
private void changeIt(ICLanguageSettingEntry add, ICLanguageSettingEntry[] del) {
|
||||
List<ICLanguageSettingEntry> ls = getSettingEntriesList(getKind());
|
||||
if (del != null) {
|
||||
for (ICLanguageSettingEntry d : del) {
|
||||
for (ICLanguageSettingEntry e : ls) {
|
||||
if (d.getName().equals(e.getName())) {
|
||||
ls.remove(e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (add != null)
|
||||
ls.add(add);
|
||||
setSettingEntries(getKind(), ls, toAllLang);
|
||||
}
|
||||
|
||||
private void performMulti(ICLanguageSettingEntry ent, ICLanguageSettingEntry del) {
|
||||
MultiLanguageSetting ms = (MultiLanguageSetting)lang;
|
||||
ICLanguageSetting[] ls = (ICLanguageSetting[])ms.getItems();
|
||||
ICLanguageSettingEntry[][] es = ms.getSettingEntriesM(getKind());
|
||||
for (int i=0; i<ls.length; i++) {
|
||||
List<ICLanguageSettingEntry> entries =
|
||||
new ArrayList<ICLanguageSettingEntry>(Arrays.asList(es[i]));
|
||||
for (ICLanguageSettingEntry e : entries)
|
||||
if (e.getName().equals(ent.getName())) {
|
||||
entries.remove(e);
|
||||
break;
|
||||
if (del != null) {
|
||||
for (ICLanguageSettingEntry e : entries) {
|
||||
if (e.getName().equals(del.getName())) {
|
||||
entries.remove(e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!delete)
|
||||
}
|
||||
if (ent != null)
|
||||
entries.add(ent);
|
||||
ls[i].setSettingEntries(getKind(), entries);
|
||||
}
|
||||
|
@ -428,14 +448,15 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(n).getData());
|
||||
if (old.isReadOnly()) return;
|
||||
ICLanguageSettingEntry ent = doEdit(old);
|
||||
toAllLang = false;
|
||||
if (ent != null) {
|
||||
if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) {
|
||||
performMulti(ent, false);
|
||||
performMulti(ent, old);
|
||||
} else {
|
||||
int toModify = incs.indexOf(old);
|
||||
incs.remove(toModify);
|
||||
incs.add(toModify, ent);
|
||||
setSettingEntries(getKind(), incs, false);
|
||||
ICLanguageSettingEntry[] del = null;
|
||||
if (! ent.getName().equals(old.getName()))
|
||||
del = new ICLanguageSettingEntry[] {old};
|
||||
changeIt(ent, del);
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
@ -447,15 +468,16 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) {
|
||||
for (int x=ids.length-1; x>=0; x--) {
|
||||
ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(ids[x]).getData());
|
||||
performMulti(old, true);
|
||||
performMulti(null, old);
|
||||
}
|
||||
} else {
|
||||
ICLanguageSettingEntry[] del = new ICLanguageSettingEntry[ids.length];
|
||||
for (int x=ids.length-1; x>=0; x--) {
|
||||
ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(ids[x]).getData());
|
||||
if (old.isReadOnly()) continue;
|
||||
incs.remove(old);
|
||||
// if (old.isReadOnly()) continue;
|
||||
del[x] = old;
|
||||
}
|
||||
setSettingEntries(getKind(), incs, false);
|
||||
changeIt(null, del);
|
||||
}
|
||||
update();
|
||||
|
||||
|
@ -497,16 +519,17 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
|||
case 5: // move up
|
||||
case 6: // move down
|
||||
old = (ICLanguageSettingEntry)(table.getItem(n).getData());
|
||||
int x = incs.indexOf(old);
|
||||
int x = shownEntries.indexOf(old);
|
||||
if (x < 0) break;
|
||||
if (i == 6) x++; // "down" simply means "up underlying item"
|
||||
old = incs.get(x);
|
||||
ICLanguageSettingEntry old2 = incs.get(x - 1);
|
||||
incs.remove(x);
|
||||
incs.remove(x - 1);
|
||||
incs.add(x - 1, old);
|
||||
incs.add(x, old2);
|
||||
setSettingEntries(getKind(), incs, false);
|
||||
old = shownEntries.get(x);
|
||||
ICLanguageSettingEntry old2 = shownEntries.get(x - 1);
|
||||
shownEntries.remove(x);
|
||||
shownEntries.remove(x - 1);
|
||||
shownEntries.add(x - 1, old);
|
||||
shownEntries.add(x, old2);
|
||||
|
||||
setSettingEntries(getKind(), shownEntries, false);
|
||||
update(i == 5 ? -1 : 1);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -11,9 +11,7 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui.newui;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.accessibility.AccessibleAdapter;
|
||||
|
@ -73,20 +71,15 @@ public class SymbolTab extends AbstractLangsListTab {
|
|||
public void update() {
|
||||
if (lang != null) {
|
||||
int x = table.getSelectionIndex();
|
||||
if (x == -1) x = 0;
|
||||
incs = getIncs();
|
||||
ArrayList<ICLanguageSettingEntry> lst = new ArrayList<ICLanguageSettingEntry>();
|
||||
if (incs != null) {
|
||||
Iterator it = incs.iterator();
|
||||
while (it.hasNext()) {
|
||||
ICLanguageSettingEntry ent = (ICLanguageSettingEntry)it.next();
|
||||
if (!(ent.isBuiltIn() && (!showBIButton.getSelection()))) lst.add(ent);
|
||||
}
|
||||
Collections.sort(lst, CDTListComparator.getInstance());
|
||||
}
|
||||
tv.setInput(lst.toArray(new Object[lst.size()]));
|
||||
if (table.getItemCount() > x) table.select(x);
|
||||
else if (table.getItemCount() > 0) table.select(0);
|
||||
if (x == -1)
|
||||
x = 0;
|
||||
shownEntries = getIncs();
|
||||
Collections.sort(shownEntries, CDTListComparator.getInstance());
|
||||
tv.setInput(shownEntries.toArray(new Object[shownEntries.size()]));
|
||||
if (table.getItemCount() > x)
|
||||
table.select(x);
|
||||
else if (table.getItemCount() > 0)
|
||||
table.select(0);
|
||||
}
|
||||
updateLbs(lb1, lb2);
|
||||
updateButtons();
|
||||
|
|
Loading…
Add table
Reference in a new issue