public String getSelectedText() { if (selectionStart != selectionEnd) { return new String(text, selectionStart, selectionEnd); } return getText(); }
@Override public void onMouseReleased(int mouseX, int mouseY) { if (!pressed) { boolean focus = isFocused(); setFocused(false); if (focus && !isFocused()) { onFocusLost(); } } pressed = selecting = false; }
public void writeText(String text) { int i = 0; for (int e = text.length(); i < e; ++i) { if (!insertCharacter(text.charAt(i))) { break; } } clearSelection(); findRenderStart(); onCharacterEntered(i > 0); }
@Override public void drawBackground(int mouseX, int mouseY, float gameTicks) { drawModalRect(posX - 1, posY - 1, posX + sizeX + 1, posY + sizeY + 1, borderColor); drawModalRect(posX, posY, posX + sizeX, posY + sizeY, isEnabled() ? backgroundColor : disabledColor); }
if (!isFocused()) { return false; selectionEnd = caret = textLength; selectionStart = 0; findRenderStart(); return true; case 3: // ^C if (selectionStart != selectionEnd) { GuiScreen.setClipboardString(getSelectedText()); GuiScreen.setClipboardString(getSelectedText()); clearSelection(); resetCaretFlash(); writeText(GuiScreen.getClipboardString()); resetCaretFlash(); switch (keyTyped) { case Keyboard.KEY_ESCAPE: setFocused(false); return !isFocused(); case Keyboard.KEY_RETURN: case Keyboard.KEY_NUMPADENTER: return onEnter(); case Keyboard.KEY_INSERT: if (GuiScreen.isShiftKeyDown()) {
selecting = mouseButton == 0 && isFocused(); l: if (selecting) { break l; FontRenderer font = getFontRenderer(); int posX = mouseX - this.posX - 1, posY = mouseY - this.posY - 1; s: findRenderStart(); setFocused(true); return true;
drawStencil(posX + 1, posY + 1, posX + sizeX - 1, posY + sizeY - 1, 1 << bit); FontRenderer font = getFontRenderer(); char[] text = this.text; int startX = posX + 1 - (multiline ? renderStartX : 0), endX = sizeX - 1; boolean drawCaret = draw && i == caret && (caretCounter & 31) < 16 && isFocused(); if (drawCaret) { int caretEnd = width + 2; caretEnd = width + charW; drawModalRect(startX + width, startY - 1 + height, startX + caretEnd, endY + height, (0xFF000000 & defaultCaretColor) | (~defaultCaretColor & 0xFFFFFF)); boolean selected = i >= selectionStart & i < selectionEnd; if (selected) { drawModalRect(startX + width, startY + height, startX + width + charW, endY + height, selectedLineColor);
@Override protected void drawGuiContainerForegroundLayer(int x, int y) { fontRenderer.drawString(StringHelper.localize(name), getCenteredOffset(StringHelper.localize(name)), 16, 0xddbb1d); if (!searchBox.isFocused() && searchBox.getText().isEmpty()) { fontRenderer.drawString(searchLocal, getCenteredOffset(searchLocal), 88, 0xe0e0e0); } super.drawGuiContainerForegroundLayer(x, y); }
protected void clearSelection() { if (selectionStart != selectionEnd) { if (selectionEnd < textLength) { System.arraycopy(text, selectionEnd, text, selectionStart, textLength - selectionEnd); } textLength -= selectionEnd - selectionStart; selectionEnd = caret = selectionStart; findRenderStart(); onCharacterEntered(true); } }
@Override public ElementTextField setFocused(boolean focused) { if (focused && searchUp) { setText(""); searchUp = false; } return super.setFocused(focused); }
@Override protected void onCharacterEntered(boolean success) { super.onCharacterEntered(success); transportDuct.setName(this.getText()); }
protected void findRenderStart() { caret = MathHelper.clamp(caret, 0, textLength); if (selectionStart == selectionEnd) { selectionStart = selectionEnd = caret; } if (multiline) { findRenderStartML(); return; } renderStartY = 0; if (caret < renderStartX) { renderStartX = caret; return; } FontRenderer font = getFontRenderer(); int endX = sizeX - 2; for (int i = renderStartX, width = 0; i < caret; ++i) { width += font.getCharWidth(text[i]); while (width >= endX) { width -= font.getCharWidth(text[renderStartX++]); if (renderStartX >= textLength) { return; } } } }
@Override public void drawBackground(int mouseX, int mouseY, float gameTicks) { if (drawBack) { super.drawBackground(mouseX, mouseY, gameTicks); } } }.setText(transportDuct.data.name).setBackgroundColor(0, 0, 0));
public ElementTextField setMaxLength(short limit) { char[] oldText = text; text = new char[limit]; textLength = Math.min(limit, textLength); if (oldText != null) { System.arraycopy(oldText, 0, text, 0, textLength); } findRenderStart(); return this; }
protected boolean onEnter() { if (multiline) { boolean typed; if (caretInsert && selectionStart == selectionEnd) { caretInsert = false; typed = insertCharacter('\n'); caretInsert = true; } else { typed = insertCharacter('\n'); } clearSelection(); findRenderStart(); onCharacterEntered(typed); resetCaretFlash(); return true; } return false; }