Created GuiEntryListEntry interface for GuiEntryList contained classes to avoid toString() methods from having to be abused
Created GuiFileChooser and according Listeners Added (non-functional) GuiAssetAdder for CustomImageObjects
This commit is contained in:
@@ -41,7 +41,7 @@ public class GuiAdvancedTextField extends GuiTextField implements GuiElement {
|
||||
super.setDisabledTextColour(hintTextColor);
|
||||
text = hint;
|
||||
|
||||
drawTextBox();
|
||||
super.drawTextBox();
|
||||
|
||||
text = "";
|
||||
super.setDisabledTextColour(disabledTextColor);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package eu.crushedpixel.replaymod.gui.elements;
|
||||
|
||||
import eu.crushedpixel.replaymod.gui.elements.listeners.SelectionListener;
|
||||
import eu.crushedpixel.replaymod.holders.GuiEntryListEntry;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
@@ -10,7 +11,7 @@ import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiEntryList<T> extends GuiTextField {
|
||||
public class GuiEntryList<T extends GuiEntryListEntry> extends GuiTextField {
|
||||
|
||||
public final static int elementHeight = 14;
|
||||
private int selectionIndex = -1;
|
||||
@@ -61,7 +62,7 @@ public class GuiEntryList<T> extends GuiTextField {
|
||||
|
||||
drawRect(xPosition, yPosition + (i + 1 - upperIndex) * elementHeight - 1, xPosition + width,
|
||||
yPosition + (i + 1 - upperIndex) * elementHeight, -6250336);
|
||||
drawString(mc.fontRendererObj, mc.fontRendererObj.trimStringToWidth(elements.get(i).toString(), width - 4),
|
||||
drawString(mc.fontRendererObj, mc.fontRendererObj.trimStringToWidth(elements.get(i).getDisplayString(), width - 4),
|
||||
xPosition + 2, yPosition + (i - upperIndex) * elementHeight + 3, Color.WHITE.getRGB());
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
package eu.crushedpixel.replaymod.gui.elements;
|
||||
|
||||
import eu.crushedpixel.replaymod.gui.elements.listeners.FileChooseListener;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiFileChooser extends GuiButton {
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private File selectedFile;
|
||||
|
||||
private String baseString;
|
||||
|
||||
private String[] allowedExtensions = null;
|
||||
|
||||
private List<FileChooseListener> listeners = new ArrayList<FileChooseListener>();
|
||||
|
||||
public GuiFileChooser(int buttonId, int x, int y, String buttonText, File selectedFile, String[] allowedExtensions) {
|
||||
super(buttonId, x, y, buttonText);
|
||||
this.selectedFile = selectedFile;
|
||||
|
||||
this.baseString = buttonText;
|
||||
updateDisplayString();
|
||||
|
||||
this.allowedExtensions = allowedExtensions;
|
||||
}
|
||||
|
||||
public void registerListener(FileChooseListener listener) {
|
||||
this.listeners.add(listener);
|
||||
}
|
||||
|
||||
protected void updateDisplayString() {
|
||||
this.displayString = baseString + (selectedFile == null ? "-" : selectedFile.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mousePressed(Minecraft mc, int mouseX, int mouseY) {
|
||||
boolean success = super.mousePressed(mc, mouseX, mouseY);
|
||||
if (success) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Frame frame = new Frame();
|
||||
FileDialog fileDialog = new FileDialog(frame);
|
||||
|
||||
fileDialog.setFilenameFilter(new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(File dir, String name) {
|
||||
if(allowedExtensions == null) return true;
|
||||
for(String extension : allowedExtensions) {
|
||||
String[] split = name.split("\\.");
|
||||
String ext = split[split.length-1];
|
||||
if(extension.equalsIgnoreCase(ext)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
//frame.setVisible(true);
|
||||
fileDialog.setVisible(true);
|
||||
|
||||
String filename = fileDialog.getFile();
|
||||
if(filename != null) {
|
||||
selectedFile = new File(filename);
|
||||
|
||||
updateDisplayString();
|
||||
|
||||
for(FileChooseListener listener : listeners) {
|
||||
listener.onFileChosen(selectedFile);
|
||||
}
|
||||
}
|
||||
|
||||
frame.dispose();
|
||||
}
|
||||
}, "replaymod-file-chooser").start();
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package eu.crushedpixel.replaymod.gui.elements.listeners;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public interface FileChooseListener {
|
||||
|
||||
void onFileChosen(File file);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user