Added GuiProgressBar and implemented it in GuiUploadFile

Fixed incorrect success messages in GuiUploadFile
This commit is contained in:
CrushedPixel
2015-05-29 13:22:04 +02:00
parent d986db7c95
commit 8efcf0bb29
5 changed files with 124 additions and 30 deletions

View File

@@ -112,20 +112,20 @@ public class FileUploader {
success = true; success = true;
is = con.getInputStream(); is = con.getInputStream();
} else { } else {
success = false;
is = con.getErrorStream(); is = con.getErrorStream();
} }
if(is != null) { if(is != null) {
BufferedReader r = new BufferedReader(new InputStreamReader(is)); BufferedReader r = new BufferedReader(new InputStreamReader(is));
info = null; info = null;
String result = "";
while(r.ready()) {
result += r.readLine();
}
if(responseCode != 200) { if(responseCode != 200) {
String json = ""; ApiError error = gson.fromJson(result, ApiError.class);
while(r.ready()) {
json += r.readLine();
}
ApiError error = gson.fromJson(json, ApiError.class);
info = error.getTranslatedDesc(); info = error.getTranslatedDesc();
System.out.println(info);
} }
} }
con.disconnect(); con.disconnect();
@@ -133,8 +133,6 @@ public class FileUploader {
if(info == null) info = I18n.format("replaymod.gui.unknownerror"); if(info == null) info = I18n.format("replaymod.gui.unknownerror");
ReplayMod.uploadedFileHandler.markAsUploaded(file); ReplayMod.uploadedFileHandler.markAsUploaded(file);
success = true;
} catch(Exception e) { } catch(Exception e) {
success = false; success = false;
} finally { } finally {

View File

@@ -7,6 +7,7 @@ import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.client.config.GuiCheckBox; import net.minecraftforge.fml.client.config.GuiCheckBox;
import java.awt.*;
import java.io.IOException; import java.io.IOException;
public class GuiVideoRenderer extends GuiScreen { public class GuiVideoRenderer extends GuiScreen {
@@ -84,12 +85,14 @@ public class GuiVideoRenderer extends GuiScreen {
drawBackground(0); drawBackground(0);
String framesProgress = I18n.format("replaymod.gui.rendering.progress", renderer.getFramesDone(), renderer.getTotalFrames()); String framesProgress = I18n.format("replaymod.gui.rendering.progress", renderer.getFramesDone(), renderer.getTotalFrames());
drawCenteredString(fontRendererObj, framesProgress, centerX, centerY - 45, 0xffffffff); drawCenteredString(fontRendererObj, framesProgress, centerX, centerY - 45, Color.WHITE.getRGB());
int previewX = width / 4; int previewX = width / 4;
int previewY = height / 2 + 10;
int previewWidth = width / 2; int previewWidth = width / 2;
int previewY = height / 2 + 10;
int previewHeight = height - 30 - previewY; int previewHeight = height - 30 - previewY;
if (previewCheckBox.isChecked()) { if (previewCheckBox.isChecked()) {
frameRenderer.renderPreview(previewX, previewY, previewWidth, previewHeight); frameRenderer.renderPreview(previewX, previewY, previewWidth, previewHeight);
} else { } else {

View File

@@ -0,0 +1,80 @@
package eu.crushedpixel.replaymod.gui.elements;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import java.awt.*;
public class GuiProgressBar extends Gui {
private static final int BORDER_WIDTH = 2;
private final Minecraft mc = Minecraft.getMinecraft();
private int xPosition, yPosition, width, height;
private float progress = 0;
public GuiProgressBar(int xPosition, int yPosition, int width, int height) {
this(xPosition, yPosition, width, height, 0);
}
public GuiProgressBar(int xPosition, int yPosition, int width, int height, float initialProgress) {
this.xPosition = xPosition;
this.yPosition = yPosition;
this.width = width;
this.height = height;
this.progress = initialProgress;
}
/**
* Sets the progress amount of this GuiProgressBar.
* @param progress A value between 0 and 1
*/
public void setProgress(float progress) {
this.progress = progress;
}
public float getProgress() {
return progress;
}
/**
* Sets position and size of this GuiProgressBar.
*/
public void setBounds(int xPosition, int yPosition, int width, int height) {
this.xPosition = xPosition;
this.yPosition = yPosition;
this.width = width;
this.height = height;
}
public void drawProgressBar() {
int progressWidth = Math.round((width - (2*BORDER_WIDTH)) * progress);
String progressString = (int)Math.floor(progress * 100) + "%";
// Draws black outline
drawRect(xPosition, yPosition, xPosition + width, yPosition + height, Color.BLACK.getRGB());
// Draws white background
drawRect(xPosition + BORDER_WIDTH, yPosition + BORDER_WIDTH,
xPosition + width - BORDER_WIDTH, yPosition + height - BORDER_WIDTH, Color.WHITE.getRGB());
// Draws red progress
drawRect(xPosition + BORDER_WIDTH, yPosition + BORDER_WIDTH,
xPosition + BORDER_WIDTH + progressWidth, yPosition + height - BORDER_WIDTH, Color.RED.getRGB());
int xMiddle = xPosition + (width/2);
int yMiddle = yPosition + (height/2);
int progressStringWidth = mc.fontRendererObj.getStringWidth(progressString);
int progressStringHeight = mc.fontRendererObj.FONT_HEIGHT-3;
int progressStringXPosition = xMiddle - (progressStringWidth/2);
int progressStringYPosition = yMiddle - (progressStringHeight/2);
mc.fontRendererObj.drawString(progressString, progressStringXPosition, progressStringYPosition, Color.BLACK.getRGB());
}
}

View File

@@ -1,10 +1,10 @@
package eu.crushedpixel.replaymod.gui.online; package eu.crushedpixel.replaymod.gui.online;
import com.google.gson.Gson;
import eu.crushedpixel.replaymod.api.ApiException; import eu.crushedpixel.replaymod.api.ApiException;
import eu.crushedpixel.replaymod.api.replay.FileUploader; import eu.crushedpixel.replaymod.api.replay.FileUploader;
import eu.crushedpixel.replaymod.api.replay.holders.Category; import eu.crushedpixel.replaymod.api.replay.holders.Category;
import eu.crushedpixel.replaymod.gui.GuiConstants; import eu.crushedpixel.replaymod.gui.GuiConstants;
import eu.crushedpixel.replaymod.gui.elements.GuiProgressBar;
import eu.crushedpixel.replaymod.gui.replayviewer.GuiReplayViewer; import eu.crushedpixel.replaymod.gui.replayviewer.GuiReplayViewer;
import eu.crushedpixel.replaymod.online.authentication.AuthenticationHandler; import eu.crushedpixel.replaymod.online.authentication.AuthenticationHandler;
import eu.crushedpixel.replaymod.recording.ReplayMetaData; import eu.crushedpixel.replaymod.recording.ReplayMetaData;
@@ -36,21 +36,31 @@ import java.util.regex.Pattern;
public class GuiUploadFile extends GuiScreen { public class GuiUploadFile extends GuiScreen {
private static final Pattern p = Pattern.compile("[^a-z0-9 \\-_]", Pattern.CASE_INSENSITIVE); private final Minecraft mc = Minecraft.getMinecraft();
private static final Pattern pt = Pattern.compile("[^a-z0-9,]", Pattern.CASE_INSENSITIVE);
private static final Pattern titlePattern = Pattern.compile("[^a-z0-9 \\-_]", Pattern.CASE_INSENSITIVE);
private static final Pattern tagsPattern = Pattern.compile("[^a-z0-9,]", Pattern.CASE_INSENSITIVE);
private final ResourceLocation textureResource; private final ResourceLocation textureResource;
private DynamicTexture dynTex = null;
private GuiTextField fileTitleInput, tagInput, messageTextField, tagPlaceholder; private GuiTextField fileTitleInput, tagInput, messageTextField, tagPlaceholder;
private GuiButton categoryButton, startUploadButton, cancelUploadButton, backButton; private GuiButton categoryButton, startUploadButton, cancelUploadButton, backButton;
private Gson gson = new Gson(); private GuiProgressBar progressBar;
private File replayFile; private File replayFile;
private ReplayMetaData metaData; private ReplayMetaData metaData;
private BufferedImage thumb; private BufferedImage thumb;
private FileUploader uploader = new FileUploader(); private FileUploader uploader = new FileUploader();
private Category category = Category.MINIGAME; private Category category = Category.MINIGAME;
private DynamicTexture dynTex = null;
private Minecraft mc = Minecraft.getMinecraft();
private GuiReplayViewer parent; private GuiReplayViewer parent;
private boolean lockUploadButton = false;
private final Logger logger = LogManager.getLogger(); private final Logger logger = LogManager.getLogger();
public GuiUploadFile(File file, GuiReplayViewer parent) { public GuiUploadFile(File file, GuiReplayViewer parent) {
@@ -204,6 +214,12 @@ public class GuiUploadFile extends GuiScreen {
tagPlaceholder.width = Math.min(200, this.width - 20 - 260); tagPlaceholder.width = Math.min(200, this.width - 20 - 260);
} }
if(progressBar == null) {
progressBar = new GuiProgressBar(19, height - 52, width - (2*19), 15);
} else {
progressBar.setBounds(19, height - 52, width - (2*19), 15);
}
validateStartButton(); validateStartButton();
} }
@@ -251,7 +267,7 @@ public class GuiUploadFile extends GuiScreen {
this.drawDefaultBackground(); this.drawDefaultBackground();
drawString(fontRendererObj, metaData.getServerName(), (this.width / 2) + 20 + 10, 50, Color.GRAY.getRGB()); drawString(fontRendererObj, metaData.getServerName(), (this.width / 2) + 20 + 10, 50, Color.GRAY.getRGB());
drawString(fontRendererObj, I18n.format("replaymod.gui.duration")+": " + String.format("%02dm%02ds", drawString(fontRendererObj, I18n.format("replaymod.gui.duration") + ": " + String.format("%02dm%02ds",
TimeUnit.MILLISECONDS.toMinutes(metaData.getDuration()), TimeUnit.MILLISECONDS.toMinutes(metaData.getDuration()),
TimeUnit.MILLISECONDS.toSeconds(metaData.getDuration()) - TimeUnit.MILLISECONDS.toSeconds(metaData.getDuration()) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(metaData.getDuration())) TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(metaData.getDuration()))
@@ -285,17 +301,8 @@ public class GuiUploadFile extends GuiScreen {
super.drawScreen(mouseX, mouseY, partialTicks); super.drawScreen(mouseX, mouseY, partialTicks);
this.drawRect(19, this.height - 52, width - 19, this.height - 37, Color.BLACK.getRGB()); progressBar.setProgress(uploader.getUploadProgress());
this.drawRect(21, this.height - 50, width - 21, this.height - 39, Color.WHITE.getRGB()); progressBar.drawProgressBar();
int width = this.width - 21 - 21;
float prog = uploader.getUploadProgress();
float w = width * prog;
this.drawRect(21, this.height - 50, Math.round(21 + w), this.height - 39, Color.RED.getRGB());
String perc = (int) Math.floor(prog * 100) + "%";
fontRendererObj.drawString(perc, this.width / 2 - fontRendererObj.getStringWidth(perc) / 2, this.height - 48, Color.BLACK.getRGB());
} }
@Override @Override
@@ -337,16 +344,19 @@ public class GuiUploadFile extends GuiScreen {
boolean enabled = true; boolean enabled = true;
if(fileTitleInput.getText().trim().length() < 5 || fileTitleInput.getText().trim().length() > 30) { if(fileTitleInput.getText().trim().length() < 5 || fileTitleInput.getText().trim().length() > 30) {
enabled = false; enabled = false;
} else if(p.matcher(fileTitleInput.getText()).find()) { } else if(titlePattern.matcher(fileTitleInput.getText()).find()) {
enabled = false; enabled = false;
fileTitleInput.setTextColor(Color.RED.getRGB()); fileTitleInput.setTextColor(Color.RED.getRGB());
} else if(pt.matcher(tagInput.getText()).find()) { } else if(tagsPattern.matcher(tagInput.getText()).find()) {
enabled = false; enabled = false;
tagInput.setTextColor(Color.RED.getRGB()); tagInput.setTextColor(Color.RED.getRGB());
} else { } else {
fileTitleInput.setTextColor(Color.WHITE.getRGB()); fileTitleInput.setTextColor(Color.WHITE.getRGB());
tagInput.setTextColor(Color.WHITE.getRGB()); tagInput.setTextColor(Color.WHITE.getRGB());
} }
if(lockUploadButton) enabled = false;
startUploadButton.enabled = enabled; startUploadButton.enabled = enabled;
} }
@@ -369,6 +379,8 @@ public class GuiUploadFile extends GuiScreen {
if(success) { if(success) {
messageTextField.setText(I18n.format("replaymod.gui.upload.success")); messageTextField.setText(I18n.format("replaymod.gui.upload.success"));
messageTextField.setTextColor(Color.GREEN.getRGB()); messageTextField.setTextColor(Color.GREEN.getRGB());
startUploadButton.enabled = false;
lockUploadButton = true;
} else { } else {
messageTextField.setText(info); messageTextField.setText(info);
messageTextField.setTextColor(Color.RED.getRGB()); messageTextField.setTextColor(Color.RED.getRGB());

View File

@@ -25,6 +25,7 @@ replaymod.api.invalidmail=Invalid Email Address
replaymod.api.nopermissions=You don't have permission to do this replaymod.api.nopermissions=You don't have permission to do this
replaymod.api.authfailed=Authentication to the Minecraft Session Servers failed replaymod.api.authfailed=Authentication to the Minecraft Session Servers failed
replaymod.api.mcuserexists=A ReplayMod account is already associated with this Minecraft account replaymod.api.mcuserexists=A ReplayMod account is already associated with this Minecraft account
replaymod.api.filetoobig=The uploaded file is too big
#All of the chat messages #All of the chat messages
replaymod.chat.recordingstarted=Recording started replaymod.chat.recordingstarted=Recording started