110 lines
2.2 KiB
C++
110 lines
2.2 KiB
C++
#include "stdafx.h"
|
|
#include "EditBox.h"
|
|
#include "..\Minecraft.World\SharedConstants.h"
|
|
|
|
EditBox::EditBox(Screen *screen, Font *font, int x, int y, int width, int height, const wstring& value)
|
|
{
|
|
// 4J - added initialisers
|
|
maxLength = 0;
|
|
frame = 0;
|
|
|
|
this->screen = screen;
|
|
this->font = font;
|
|
this->x = x;
|
|
this->y = y;
|
|
this->width = width;
|
|
this->height = height;
|
|
this->setValue(value);
|
|
}
|
|
|
|
void EditBox::setValue(const wstring& value)
|
|
{
|
|
this->value = value;
|
|
}
|
|
|
|
wstring EditBox::getValue()
|
|
{
|
|
return value;
|
|
}
|
|
|
|
void EditBox::tick()
|
|
{
|
|
frame++;
|
|
}
|
|
|
|
void EditBox::keyPressed(wchar_t ch, int eventKey)
|
|
{
|
|
if (!active || !inFocus) {
|
|
return;
|
|
}
|
|
|
|
|
|
if (ch == 9)
|
|
{
|
|
screen->tabPressed();
|
|
}
|
|
/* 4J removed
|
|
if (ch == 22)
|
|
{
|
|
String msg = Screen.getClipboard();
|
|
if (msg == null) msg = "";
|
|
int toAdd = 32 - value.length();
|
|
if (toAdd > msg.length()) toAdd = msg.length();
|
|
if (toAdd > 0) {
|
|
value += msg.substring(0, toAdd);
|
|
}
|
|
}
|
|
*/
|
|
|
|
if (eventKey == Keyboard::KEY_BACK && value.length() > 0)
|
|
{
|
|
value = value.substr(0, value.length() - 1);
|
|
}
|
|
if (SharedConstants::acceptableLetters.find(ch) != wstring::npos && (value.length() < maxLength || maxLength == 0))
|
|
{
|
|
value += ch;
|
|
}
|
|
|
|
}
|
|
|
|
void EditBox::mouseClicked(int mouseX, int mouseY, int buttonNum)
|
|
{
|
|
bool newFocus = active && (mouseX >= x && mouseX < (x + width) && mouseY >= y && mouseY < (y + height));
|
|
focus(newFocus);
|
|
}
|
|
|
|
void EditBox::focus(bool newFocus)
|
|
{
|
|
if (newFocus && !inFocus)
|
|
{
|
|
// reset the underscore counter to give quicker selection feedback
|
|
frame = 0;
|
|
}
|
|
inFocus = newFocus;
|
|
}
|
|
|
|
void EditBox::render()
|
|
{
|
|
fill(x - 1, y - 1, x + width + 1, y + height + 1, 0xffa0a0a0);
|
|
fill(x, y, x + width, y + height, 0xff000000);
|
|
|
|
if (active)
|
|
{
|
|
bool renderUnderscore = inFocus && (frame / 6 % 2 == 0);
|
|
drawString(font, value + (renderUnderscore ? L"_" : L""), x + 4, y + (height - 8) / 2, 0xe0e0e0);
|
|
}
|
|
else
|
|
{
|
|
drawString(font, value, x + 4, y + (height - 8) / 2, 0x707070);
|
|
}
|
|
}
|
|
|
|
void EditBox::setMaxLength(int maxLength)
|
|
{
|
|
this->maxLength = maxLength;
|
|
}
|
|
|
|
int EditBox::getMaxLength()
|
|
{
|
|
return maxLength;
|
|
} |