package crazypants.enderio.machine.transceiver.gui;
import java.awt.Color;
import java.util.Set;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import com.enderio.core.client.gui.widget.GuiScrollableList;
import com.enderio.core.client.render.ColorUtil;
import com.google.common.base.Predicate;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Sets;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.transceiver.Channel;
public class GuiChannelList extends GuiScrollableList<Channel> {
private FluentIterable<Channel> channels;
// private Channel activeChannel;
private final GuiTransceiver parent;
public GuiChannelList(GuiTransceiver parent, int width, int height, int originX, int originY) {
super(width, height, originX, originY, Minecraft.getMinecraft().fontRenderer.FONT_HEIGHT + 4);
this.parent = parent;
}
void setChannels(Set<Channel> val, Predicate<Channel> filter) {
if(val == null) {
channels = FluentIterable.from(Sets.<Channel>newHashSet());
}
channels = FluentIterable.from(val).filter(filter);
}
@Override
public int getNumElements() {
return channels.size();
}
@Override
public Channel getElementAt(int index) {
if(index < 0 || index >= channels.size()) {
return null;
}
return channels.get(index);
}
@Override
protected boolean elementClicked(int i, boolean flag) {
if(getElementAt(i) == null) {
return false;
} else {
return true;
}
}
@Override
protected void drawElement(int index, int xPosition, int yPosition, int rowHeight, Tessellator tessellator) {
if(index < 0 || index >= channels.size()) {
return;
}
Channel c = getElementAt(index);
if(c == null) {
return;
}
int col = ColorUtil.getRGB(Color.white);
parent.drawString(parent.getFontRenderer(), c.getName(), xPosition + margin, yPosition + margin / 2, col);
if(!c.isPublic()) {
IconEIO.map.render(IconEIO.LOCK_LOCKED, xPosition + width - 18, yPosition - 3, 16, 15, 0, true);
}
}
}