/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.python.pydev.analysis.indexview;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import org.python.pydev.core.IToken;
import org.python.pydev.core.MisconfigurationException;
import org.python.pydev.editor.codecompletion.revisited.SystemModulesManager;
import org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule;
import org.python.pydev.ui.pythonpathconf.InterpreterInfo;
public class ForcedLibGroup extends ElementWithChildren {
private InterpreterInfo interpreterInfo;
private String forcedLib;
public ForcedLibGroup(ITreeElement parent, InterpreterInfo interpreterInfo, String forcedLib) {
super(parent);
this.interpreterInfo = interpreterInfo;
this.forcedLib = forcedLib;
}
public boolean hasChildren() {
return true;
}
@Override
protected void calculateChildren() throws MisconfigurationException {
SystemModulesManager m = (SystemModulesManager) this.interpreterInfo.getModulesManager();
AbstractModule builtinModule = m.getBuiltinModule(forcedLib, true);
IToken[] globalTokens = builtinModule.getGlobalTokens();
ArrayList<LeafElement> lst = new ArrayList<LeafElement>();
for (IToken iToken : globalTokens) {
lst.add(new LeafElement(this, iToken.getRepresentation()));
}
Collections.sort(lst, new Comparator<LeafElement>() {
public int compare(LeafElement o1, LeafElement o2) {
return o1.toString().compareTo(o2.toString());
}
});
for (LeafElement leafElement : lst) {
addChild(leafElement);
}
}
@Override
public String toString() {
return "Forced builtin: " + forcedLib;
}
}