package openeye.notes;
import com.google.common.base.Strings;
import java.awt.Desktop;
import java.net.URI;
import java.util.List;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiConfirmOpenLink;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
import openeye.Log;
import openeye.notes.entries.NoteEntry;
public class GuiNotes extends GuiScreen {
private static final int ACTION_GOTO_URL = 0;
private static final int BUTTON_FINISHED_ID = 0;
private static final int BUTTON_GOTO_ID = 1;
private final GuiScreen prevGui;
private GuiNotesList noteList;
private int selectedNote = -1;
private final List<NoteEntry> notes;
private GuiButton gotoButton;
private String gotoUrl;
public GuiNotes(GuiScreen prevGui, List<NoteEntry> notes) {
this.prevGui = prevGui;
this.notes = notes;
}
@Override
public void initGui() {
super.initGui();
buttonList.add(new GuiButton(BUTTON_FINISHED_ID, width / 2, height - 30, 150, 20, I18n.format("gui.done")));
gotoButton = new GuiButton(BUTTON_GOTO_ID, width / 2 - 150, height - 30, 150, 20, I18n.format("openeye.notes.goto_page"));
gotoButton.enabled = false;
buttonList.add(gotoButton);
noteList = new GuiNotesList(this, mc, width, height, 10, height - 40, width, height, notes);
}
@Override
public void drawScreen(int par1, int par2, float par3) {
drawDefaultBackground();
noteList.drawScreen(par1, par2, par3);
super.drawScreen(par1, par2, par3);
}
@Override
protected void actionPerformed(GuiButton button) {
if (button.id == BUTTON_FINISHED_ID) mc.displayGuiScreen(prevGui);
else if (button.id == BUTTON_GOTO_ID) mc.displayGuiScreen(new GuiConfirmOpenLink(this, gotoUrl, ACTION_GOTO_URL, false));
}
private static void openURI(String uri) {
try {
URI parsedUri = new URI(uri);
Desktop.getDesktop().browse(parsedUri);
} catch (Throwable t) {
Log.warn(t, "Failed to open URL %s", uri);
}
}
@Override
public void confirmClicked(boolean result, int action) {
if (action == ACTION_GOTO_URL && result) openURI(gotoUrl);
this.mc.displayGuiScreen(this);
}
public void selectNote(int slot) {
selectedNote = slot;
gotoUrl = getUrl(slot);
gotoButton.enabled = !Strings.isNullOrEmpty(gotoUrl);
}
private String getUrl(int slot) {
if (slot >= 0 && slot < notes.size()) {
NoteEntry entry = notes.get(slot);
return entry.url();
}
return null;
}
public boolean isNoteSelected(int slot) {
return selectedNote == slot;
}
}