1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-29 11:55:40 +02:00

Bug #214194 : Adding a preprocessor symbol erases previously defined ones

This commit is contained in:
Oleg Krasilnikov 2008-04-09 11:08:40 +00:00
parent 9aefe705a6
commit d9d5293cf4
3 changed files with 144 additions and 124 deletions

View file

@ -13,13 +13,14 @@ package org.eclipse.cdt.core.settings.model.util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry; 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 class SettingsSet {
public static final int READ_ONLY = 1; public static final int READ_ONLY = 1;
@ -31,12 +32,12 @@ public class SettingsSet {
private int fFlagsToClear; private int fFlagsToClear;
private boolean fIsReadOnly; private boolean fIsReadOnly;
private boolean fIsOverrideSupported; private boolean fIsOverrideSupported;
private LinkedHashMap fEntries; private LinkedHashMap<EntryNameKey, EntryInfo> fEntries;
HashSet fOverrideSet; HashSet<String> fOverrideSet;
private Object fContext; private Object fContext;
private SettingLevel(){ private SettingLevel(){
fEntries = new LinkedHashMap(); fEntries = new LinkedHashMap<EntryNameKey, EntryInfo>();
} }
public boolean isReadOnly(){ public boolean isReadOnly(){
@ -79,10 +80,11 @@ public class SettingsSet {
return (baseFlags | fFlagsToSet) & (~fFlagsToClear); return (baseFlags | fFlagsToSet) & (~fFlagsToClear);
} }
public Set getOverrideSet(){ @SuppressWarnings("unchecked")
public Set<String> getOverrideSet(){
if(fOverrideSet != null) if(fOverrideSet != null)
return (HashSet)fOverrideSet.clone(); return (HashSet<String>)fOverrideSet.clone();
return new HashSet(); return new HashSet<String>();
} }
public void addEntries(ICLanguageSettingEntry entries[]){ public void addEntries(ICLanguageSettingEntry entries[]){
@ -93,11 +95,9 @@ public class SettingsSet {
} }
} }
public void addEntries(List list){ public void addEntries(List<ICLanguageSettingEntry> list){
int size = list.size(); for(ICLanguageSettingEntry se : list)
for(int i = 0; i < size; i++){ addEntry(se);
addEntry((ICLanguageSettingEntry)list.get(i));
}
} }
public void addEntry(ICLanguageSettingEntry entry){ public void addEntry(ICLanguageSettingEntry entry){
@ -107,23 +107,23 @@ public class SettingsSet {
public void addEntry(ICLanguageSettingEntry entry, Object customInfo){ public void addEntry(ICLanguageSettingEntry entry, Object customInfo){
entry = CDataUtil.createEntry(entry, fFlagsToSet, fFlagsToClear); entry = CDataUtil.createEntry(entry, fFlagsToSet, fFlagsToClear);
EntryInfo info = new EntryInfo(entry, customInfo); EntryInfo info = new EntryInfo(entry, customInfo);
fEntries.put(info.getNameKey(), info); fEntries.put(info.getContentsKey(), info);
} }
public void addOverrideName(String name){ public void addOverrideName(String name){
if(fOverrideSet == null) if(fOverrideSet == null)
fOverrideSet = new HashSet(); fOverrideSet = new HashSet<String>();
fOverrideSet.add(name); fOverrideSet.add(name);
} }
public void addOverrideNameSet(Set set){ public void addOverrideNameSet(Set<String> set){
if(set == null) if(set == null)
return; return;
if(fOverrideSet != null){ if(fOverrideSet != null){
fOverrideSet.addAll(set); fOverrideSet.addAll(set);
} else if(set.size() != 0){ } else if(set.size() != 0){
fOverrideSet = new HashSet(set); fOverrideSet = new HashSet<String>(set);
} }
} }
@ -142,33 +142,33 @@ public class SettingsSet {
fOverrideSet = null; fOverrideSet = null;
} }
public Map clearAndGetMap(){ public Map<EntryNameKey, EntryInfo> clearAndGetMap(){
Map map = fEntries; Map<EntryNameKey, EntryInfo> map = fEntries;
fEntries = new LinkedHashMap(); fEntries = new LinkedHashMap<EntryNameKey, EntryInfo>();
fOverrideSet = null; fOverrideSet = null;
return map; return map;
} }
public EntryInfo[] getInfos(){ public EntryInfo[] getInfos(){
return (EntryInfo[])fEntries.values().toArray(new EntryInfo[fEntries.size()]); return fEntries.values().toArray(new EntryInfo[fEntries.size()]);
} }
public ICLanguageSettingEntry[] getEntries(){ public ICLanguageSettingEntry[] getEntries(){
List list = getEntriesList(false); List<ICLanguageSettingEntry> list = getEntriesList(false);
return (ICLanguageSettingEntry[])list.toArray(new ICLanguageSettingEntry[list.size()]); return list.toArray(new ICLanguageSettingEntry[list.size()]);
} }
public ICLanguageSettingEntry[] getEntries(boolean includeOverridden){ public ICLanguageSettingEntry[] getEntries(boolean includeOverridden){
List list = getEntriesList(includeOverridden); List<ICLanguageSettingEntry> list = getEntriesList(includeOverridden);
return (ICLanguageSettingEntry[])list.toArray(new ICLanguageSettingEntry[list.size()]); return list.toArray(new ICLanguageSettingEntry[list.size()]);
} }
public List getEntriesList(boolean includeOverridden){ public List<ICLanguageSettingEntry> getEntriesList(boolean includeOverridden){
List list = new ArrayList(); List<ICLanguageSettingEntry> list = new ArrayList<ICLanguageSettingEntry>();
EntryInfo infos[] = getInfos(); EntryInfo infos[] = getInfos();
for(int i = 0; i < infos.length; i++){ for(EntryInfo info : infos){
if(includeOverridden || !infos[i].isOverridden()) if(includeOverridden || !info.isOverridden())
list.add(infos[i].getEntry()); list.add(info.getEntry());
} }
return list; return list;
@ -194,7 +194,7 @@ public class SettingsSet {
fCustomInfo = customInfo; fCustomInfo = customInfo;
} }
public EntryNameKey getNameKey(){ public EntryNameKey getContentsKey(){
if(fNameKey == null){ if(fNameKey == null){
fNameKey = new EntryNameKey(fEntry); fNameKey = new EntryNameKey(fEntry);
} }
@ -230,7 +230,7 @@ public class SettingsSet {
} }
public void adjustOverrideState(){ public void adjustOverrideState(){
Set set = new HashSet(); Set<String> set = new HashSet<String>();
SettingLevel level; SettingLevel level;
for(int i = 0; i < fLevels.length; i++){ for(int i = 0; i < fLevels.length; i++){
level = fLevels[i]; level = fLevels[i];
@ -240,11 +240,8 @@ public class SettingsSet {
} }
} }
private void adjustOverrideState(SettingLevel level, Set overridenSet){ private void adjustOverrideState(SettingLevel level, Set<String> overridenSet){
EntryInfo[] infos = level.getInfos(); for(EntryInfo info : level.getInfos()){
EntryInfo info;
for(int i = 0; i < infos.length; i++){
info = infos[i];
if(overridenSet.add(info.getEntry().getName())){ if(overridenSet.add(info.getEntry().getName())){
info.makeOverridden(false); info.makeOverridden(false);
} else { } else {
@ -259,23 +256,18 @@ public class SettingsSet {
public ICLanguageSettingEntry[] getEntries(int types){ public ICLanguageSettingEntry[] getEntries(int types){
adjustOverrideState(); adjustOverrideState();
List entries = new ArrayList(); List<ICLanguageSettingEntry> entries = new ArrayList<ICLanguageSettingEntry>();
for(int i = 0; i < fLevels.length; i++){ for(SettingLevel sl : fLevels){
if(isCompatible(fLevels[i], types)) if(isCompatible(sl, types))
getEntries(fLevels[i], entries); getEntries(sl, entries);
} }
return entries.toArray(new ICLanguageSettingEntry[entries.size()]);
return (ICLanguageSettingEntry[])entries.toArray(new ICLanguageSettingEntry[entries.size()]);
} }
private void getEntries(SettingLevel level, List list){ private void getEntries(SettingLevel level, List<ICLanguageSettingEntry> list){
EntryInfo[] infos = level.getInfos(); for(EntryInfo info : level.getInfos())
EntryInfo info;
for(int i = 0; i < infos.length; i++){
info = infos[i];
if(!info.isOverridden()) if(!info.isOverridden())
list.add(info.getEntry()); list.add(info.getEntry());
}
} }
private boolean isCompatible(SettingLevel level, int types){ private boolean isCompatible(SettingLevel level, int types){
@ -305,33 +297,31 @@ public class SettingsSet {
return -1; return -1;
} }
@SuppressWarnings("unchecked")
public void applyEntries(ICLanguageSettingEntry[] entries){ public void applyEntries(ICLanguageSettingEntry[] entries){
HashMap map = getEntryLevelMap(WRITABLE | READ_ONLY); HashMap<EntryNameKey, Object[]> map = getEntryLevelMap(WRITABLE | READ_ONLY);
Map mapCopy = (HashMap)map.clone(); Map<EntryNameKey, Object[]> mapCopy = (HashMap<EntryNameKey, Object[]>)map.clone();
Map<EntryNameKey, EntryInfo>[] clearedInfos = new Map [fLevels.length];
Map[] clearedInfos = new Map[fLevels.length];
for(int i = 0; i < fLevels.length; i++){ for(int i = 0; i < fLevels.length; i++){
if(!fLevels[i].isReadOnly()){ if(!fLevels[i].isReadOnly())
clearedInfos[i] = fLevels[i].clearAndGetMap(); clearedInfos[i] = fLevels[i].clearAndGetMap();
}
} }
Integer levelInteger; Integer levelInteger;
int levelNum; int levelNum;
EntryNameKey key;
ICLanguageSettingEntry entry; ICLanguageSettingEntry entry;
int writableLevel = getWritableLevelNum(); int writableLevel = getWritableLevelNum();
SettingLevel level; SettingLevel level;
for(int i = 0; i < entries.length; i++){ for(int i = 0; i < entries.length; i++){
entry = entries[i]; entry = entries[i];
key = new EntryNameKey(entry); EntryNameKey key = new EntryNameKey(entry);
Object[] o = (Object[])map.get(key); Object[] o = (Object[])map.get(key);
if(o != null){ if(o != null && valueMatches(entry, o[1])){
mapCopy.remove(key); mapCopy.remove(key);
levelInteger = (Integer)o[0]; levelInteger = (Integer)o[0];
} else { } else {
levelInteger = null; levelInteger = null;
} }
@ -340,7 +330,7 @@ public class SettingsSet {
if(levelNum >= 0){ if(levelNum >= 0){
level = fLevels[levelNum]; level = fLevels[levelNum];
if(!level.isReadOnly()){ if(!level.isReadOnly()){
Map clearedInfo = clearedInfos[levelNum]; Map<EntryNameKey, EntryInfo> clearedInfo = clearedInfos[levelNum];
Object customInfo = null; Object customInfo = null;
if(clearedInfo != null){ if(clearedInfo != null){
EntryInfo info = (EntryInfo)clearedInfo.get(key); EntryInfo info = (EntryInfo)clearedInfo.get(key);
@ -356,10 +346,12 @@ public class SettingsSet {
if(overrideLevel >= 0){ if(overrideLevel >= 0){
level = fLevels[overrideLevel]; level = fLevels[overrideLevel];
if(level.isOverrideSupported() && !mapCopy.isEmpty()){ if(level.isOverrideSupported() && !mapCopy.isEmpty()){
String str; for(EntryNameKey enk : mapCopy.keySet()){
for(Iterator iter = mapCopy.keySet().iterator(); iter.hasNext();){ ICSettingEntry e = enk.getEntry();
str = ((EntryNameKey)iter.next()).getEntry().getName(); if ((e.getFlags() & ICSettingEntry.BUILTIN) == 0)
if(str != null) continue;
String str = e.getName();
if(str != null)
level.addOverrideName(str); level.addOverrideName(str);
} }
} }
@ -367,26 +359,38 @@ public class SettingsSet {
adjustOverrideState(); adjustOverrideState();
} }
public HashMap getEntryLevelMap(int types){ public HashMap<EntryNameKey, Object[]> getEntryLevelMap(int types){
HashMap map = new HashMap(); HashMap<EntryNameKey, Object[]> map = new HashMap<EntryNameKey, Object[]>();
for(int i = 0; i < fLevels.length; i++){ for(int i = 0; i < fLevels.length; i++){
if(isCompatible(fLevels[i], types)) if(isCompatible(fLevels[i], types))
addLevelInfoToMap(fLevels[i], i, map); addLevelInfoToMap(fLevels[i], i, map);
} }
return map; return map;
} }
private void addLevelInfoToMap(SettingLevel level, int l, Map map){ private void addLevelInfoToMap(SettingLevel level, int l, Map<EntryNameKey, Object[]> map){
EntryInfo infos[] = level.getInfos(); for(EntryInfo info : level.getInfos()){
EntryInfo info; EntryNameKey key = info.getContentsKey();
EntryNameKey key;
for(int i = 0; i < infos.length; i++){
info = infos[i];
key = info.getNameKey();
if(!map.containsKey(key)) if(!map.containsKey(key))
map.put(key, new Object[]{new Integer(l), info.getEntry()}); 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);
}
} }

View file

@ -83,7 +83,7 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
protected TableColumn columnToFit = null; protected TableColumn columnToFit = null;
protected ICLanguageSetting lang; protected ICLanguageSetting lang;
protected LinkedList<ICLanguageSettingEntry> incs; protected LinkedList<ICLanguageSettingEntry> shownEntries;
protected ArrayList<ICSettingEntry> exported; protected ArrayList<ICSettingEntry> exported;
protected SashForm sashForm; protected SashForm sashForm;
protected ICLanguageSetting [] ls; // all languages known protected ICLanguageSetting [] ls; // all languages known
@ -221,9 +221,10 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
boolean canExport = index != -1; boolean canExport = index != -1;
boolean canEdit = canExport && ids.length == 1; boolean canEdit = canExport && ids.length == 1;
boolean canDelete = canExport; boolean canDelete = canExport;
ICLanguageSettingEntry ent = null;
if (canExport) { if (canExport) {
ICLanguageSettingEntry ent = (ICLanguageSettingEntry)(table.getItem(index).getData()); ent = (ICLanguageSettingEntry)(table.getItem(index).getData());
if (ent.isBuiltIn() || ent.isReadOnly()) canEdit = false; if (ent.isReadOnly()) canEdit = false;
if (ent.isReadOnly()) canDelete = false; if (ent.isReadOnly()) canDelete = false;
if (exported.contains(ent)) if (exported.contains(ent))
buttonSetText(3, UIMessages.getString("AbstractLangsListTab.4")); //$NON-NLS-1$ buttonSetText(3, UIMessages.getString("AbstractLangsListTab.4")); //$NON-NLS-1$
@ -232,10 +233,10 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
} else { } else {
buttonSetText(3, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$ buttonSetText(3, UIMessages.getString("AbstractLangsListTab.2")); //$NON-NLS-1$
} }
boolean canMoveUp = canEdit && index > 0; boolean canMoveUp = canEdit && index > 0 && !ent.isBuiltIn();
boolean canMoveDown = canEdit && (index < table.getItemCount() - 1); boolean canMoveDown = canEdit && (index < table.getItemCount() - 1) && !ent.isBuiltIn();
if (canMoveDown && showBIButton.getSelection()) { 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 if (ent.isBuiltIn()) canMoveDown = false; // cannot exchange with built in
} }
buttonSetEnabled(0, canAdd); // add buttonSetEnabled(0, canAdd); // add
@ -306,8 +307,8 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
if (x == -1) x = 0; if (x == -1) x = 0;
else x += shift; // used only for UP/DOWN else x += shift; // used only for UP/DOWN
incs = getIncs(); shownEntries = getIncs();
tv.setInput(incs.toArray(new Object[incs.size()])); tv.setInput(shownEntries.toArray(new Object[shownEntries.size()]));
if (table.getItemCount() > x) table.select(x); if (table.getItemCount() > x) table.select(x);
else if (table.getItemCount() > 0) table.select(0); else if (table.getItemCount() > 0) table.select(0);
} }
@ -395,29 +396,48 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
addToAll(ent); addToAll(ent);
} else { } else {
if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) { if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) {
performMulti(ent, false); performMulti(ent, null);
} else { } else {
incs.add(ent); changeIt(ent, null);
setSettingEntries(getKind(), incs, toAllLang);
} }
} }
update(); 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; MultiLanguageSetting ms = (MultiLanguageSetting)lang;
ICLanguageSetting[] ls = (ICLanguageSetting[])ms.getItems(); ICLanguageSetting[] ls = (ICLanguageSetting[])ms.getItems();
ICLanguageSettingEntry[][] es = ms.getSettingEntriesM(getKind()); ICLanguageSettingEntry[][] es = ms.getSettingEntriesM(getKind());
for (int i=0; i<ls.length; i++) { for (int i=0; i<ls.length; i++) {
List<ICLanguageSettingEntry> entries = List<ICLanguageSettingEntry> entries =
new ArrayList<ICLanguageSettingEntry>(Arrays.asList(es[i])); new ArrayList<ICLanguageSettingEntry>(Arrays.asList(es[i]));
for (ICLanguageSettingEntry e : entries) if (del != null) {
if (e.getName().equals(ent.getName())) { for (ICLanguageSettingEntry e : entries) {
entries.remove(e); if (e.getName().equals(del.getName())) {
break; entries.remove(e);
break;
}
} }
if (!delete) }
if (ent != null)
entries.add(ent); entries.add(ent);
ls[i].setSettingEntries(getKind(), entries); ls[i].setSettingEntries(getKind(), entries);
} }
@ -428,14 +448,15 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(n).getData()); ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(n).getData());
if (old.isReadOnly()) return; if (old.isReadOnly()) return;
ICLanguageSettingEntry ent = doEdit(old); ICLanguageSettingEntry ent = doEdit(old);
toAllLang = false;
if (ent != null) { if (ent != null) {
if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) { if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) {
performMulti(ent, false); performMulti(ent, old);
} else { } else {
int toModify = incs.indexOf(old); ICLanguageSettingEntry[] del = null;
incs.remove(toModify); if (! ent.getName().equals(old.getName()))
incs.add(toModify, ent); del = new ICLanguageSettingEntry[] {old};
setSettingEntries(getKind(), incs, false); changeIt(ent, del);
} }
update(); update();
} }
@ -447,15 +468,16 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) { if (isWModifyMode() && (lang instanceof MultiLanguageSetting)) {
for (int x=ids.length-1; x>=0; x--) { for (int x=ids.length-1; x>=0; x--) {
ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(ids[x]).getData()); ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(ids[x]).getData());
performMulti(old, true); performMulti(null, old);
} }
} else { } else {
ICLanguageSettingEntry[] del = new ICLanguageSettingEntry[ids.length];
for (int x=ids.length-1; x>=0; x--) { for (int x=ids.length-1; x>=0; x--) {
ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(ids[x]).getData()); ICLanguageSettingEntry old = (ICLanguageSettingEntry)(table.getItem(ids[x]).getData());
if (old.isReadOnly()) continue; // if (old.isReadOnly()) continue;
incs.remove(old); del[x] = old;
} }
setSettingEntries(getKind(), incs, false); changeIt(null, del);
} }
update(); update();
@ -497,16 +519,17 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
case 5: // move up case 5: // move up
case 6: // move down case 6: // move down
old = (ICLanguageSettingEntry)(table.getItem(n).getData()); old = (ICLanguageSettingEntry)(table.getItem(n).getData());
int x = incs.indexOf(old); int x = shownEntries.indexOf(old);
if (x < 0) break; if (x < 0) break;
if (i == 6) x++; // "down" simply means "up underlying item" if (i == 6) x++; // "down" simply means "up underlying item"
old = incs.get(x); old = shownEntries.get(x);
ICLanguageSettingEntry old2 = incs.get(x - 1); ICLanguageSettingEntry old2 = shownEntries.get(x - 1);
incs.remove(x); shownEntries.remove(x);
incs.remove(x - 1); shownEntries.remove(x - 1);
incs.add(x - 1, old); shownEntries.add(x - 1, old);
incs.add(x, old2); shownEntries.add(x, old2);
setSettingEntries(getKind(), incs, false);
setSettingEntries(getKind(), shownEntries, false);
update(i == 5 ? -1 : 1); update(i == 5 ? -1 : 1);
break; break;
default: default:

View file

@ -11,9 +11,7 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.ui.newui; package org.eclipse.cdt.ui.newui;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.accessibility.AccessibleAdapter; import org.eclipse.swt.accessibility.AccessibleAdapter;
@ -73,20 +71,15 @@ public class SymbolTab extends AbstractLangsListTab {
public void update() { public void update() {
if (lang != null) { if (lang != null) {
int x = table.getSelectionIndex(); int x = table.getSelectionIndex();
if (x == -1) x = 0; if (x == -1)
incs = getIncs(); x = 0;
ArrayList<ICLanguageSettingEntry> lst = new ArrayList<ICLanguageSettingEntry>(); shownEntries = getIncs();
if (incs != null) { Collections.sort(shownEntries, CDTListComparator.getInstance());
Iterator it = incs.iterator(); tv.setInput(shownEntries.toArray(new Object[shownEntries.size()]));
while (it.hasNext()) { if (table.getItemCount() > x)
ICLanguageSettingEntry ent = (ICLanguageSettingEntry)it.next(); table.select(x);
if (!(ent.isBuiltIn() && (!showBIButton.getSelection()))) lst.add(ent); else if (table.getItemCount() > 0)
} table.select(0);
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);
} }
updateLbs(lb1, lb2); updateLbs(lb1, lb2);
updateButtons(); updateButtons();