156 lines
6.7 KiB
Java
156 lines
6.7 KiB
Java
package appeng.client.gui.implementations;
|
|
|
|
import appeng.api.config.AccessRestriction;
|
|
import appeng.api.config.ActionItems;
|
|
import appeng.api.config.Settings;
|
|
import appeng.api.config.StorageFilter;
|
|
import appeng.client.gui.AEBaseGui;
|
|
import appeng.client.gui.widgets.GuiImgButton;
|
|
import appeng.client.gui.widgets.GuiTabButton;
|
|
import appeng.client.gui.widgets.MEGuiTextField;
|
|
import appeng.container.implementations.ContainerOreDictStorageBus;
|
|
import appeng.core.AELog;
|
|
import appeng.core.localization.GuiText;
|
|
import appeng.core.sync.GuiBridge;
|
|
import appeng.core.sync.network.NetworkHandler;
|
|
import appeng.core.sync.packets.PacketConfigButton;
|
|
import appeng.core.sync.packets.PacketSwitchGuis;
|
|
import appeng.core.sync.packets.PacketValueConfig;
|
|
import appeng.parts.misc.PartOreDicStorageBus;
|
|
import appeng.util.item.OreDictFilterMatcher;
|
|
import net.minecraft.client.gui.GuiButton;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import org.lwjgl.input.Keyboard;
|
|
import org.lwjgl.input.Mouse;
|
|
|
|
import java.io.IOException;
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
public class GuiOreDictStorageBus extends AEBaseGui {
|
|
private final ContainerOreDictStorageBus container;
|
|
PartOreDicStorageBus part;
|
|
private GuiTabButton priority;
|
|
private GuiImgButton partition;
|
|
private GuiImgButton storageFilter;
|
|
private GuiImgButton rwMode;
|
|
private static final Pattern ORE_DICTIONARY_FILTER = Pattern.compile("[0-9a-zA-Z* &|^!()]*");
|
|
private MEGuiTextField searchFieldInputs;
|
|
|
|
public GuiOreDictStorageBus(final InventoryPlayer inventoryPlayer, final PartOreDicStorageBus te) {
|
|
super(new ContainerOreDictStorageBus(inventoryPlayer, te));
|
|
this.container = (ContainerOreDictStorageBus) super.inventorySlots;
|
|
part = te;
|
|
this.ySize = 84;
|
|
}
|
|
|
|
@Override
|
|
public void initGui() {
|
|
super.initGui();
|
|
|
|
this.searchFieldInputs = new MEGuiTextField(this.fontRenderer, this.guiLeft + 3, this.guiTop + 22, 170, 12);
|
|
this.searchFieldInputs.setEnableBackgroundDrawing(false);
|
|
this.searchFieldInputs.setMaxStringLength(512);
|
|
this.searchFieldInputs.setTextColor(0xFFFFFF);
|
|
this.searchFieldInputs.setVisible(true);
|
|
this.searchFieldInputs.setFocused(false);
|
|
this.searchFieldInputs.setValidator(str -> ORE_DICTIONARY_FILTER.matcher(str).matches());
|
|
|
|
this.buttonList.add(this.priority = new GuiTabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.itemRender));
|
|
this.buttonList.add(this.partition = new GuiImgButton(this.guiLeft - 18, this.guiTop + 28, Settings.ACTIONS, ActionItems.WRENCH));
|
|
this.buttonList.add(this.rwMode = new GuiImgButton(this.guiLeft - 18, this.guiTop + 48, Settings.ACCESS, AccessRestriction.READ_WRITE));
|
|
this.buttonList.add(this.storageFilter = new GuiImgButton(this.guiLeft - 18, this.guiTop + 68, Settings.STORAGE_FILTER, StorageFilter.EXTRACTABLE_ONLY));
|
|
|
|
try {
|
|
NetworkHandler.instance().sendToServer(new PacketValueConfig("OreDictStorageBus.getRegex", "1"));
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
|
|
public void fillRegex(String regex) {
|
|
this.searchFieldInputs.setText(regex);
|
|
}
|
|
|
|
@Override
|
|
protected void actionPerformed(final GuiButton btn) throws IOException {
|
|
super.actionPerformed(btn);
|
|
|
|
final boolean backwards = Mouse.isButtonDown(1);
|
|
|
|
try {
|
|
if (btn == this.priority) {
|
|
NetworkHandler.instance().sendToServer(new PacketSwitchGuis(GuiBridge.GUI_PRIORITY));
|
|
} else if (btn == this.partition) {
|
|
NetworkHandler.instance().sendToServer(new PacketValueConfig("StorageBus.Action", "Partition"));
|
|
} else if (btn == this.rwMode) {
|
|
NetworkHandler.instance().sendToServer(new PacketConfigButton(this.rwMode.getSetting(), backwards));
|
|
} else if (btn == this.storageFilter) {
|
|
NetworkHandler.instance().sendToServer(new PacketConfigButton(this.storageFilter.getSetting(), backwards));
|
|
}
|
|
} catch (final IOException e) {
|
|
AELog.debug(e);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void mouseClicked(final int xCoord, final int yCoord, final int btn) throws IOException {
|
|
boolean wasFocused = this.searchFieldInputs.isFocused();
|
|
this.searchFieldInputs.mouseClicked(xCoord, yCoord, btn);
|
|
|
|
if (btn == 1 && this.searchFieldInputs.isMouseIn(xCoord, yCoord)) {
|
|
this.searchFieldInputs.setText("");
|
|
}
|
|
|
|
if (!searchFieldInputs.isFocused() && wasFocused) {
|
|
searchFieldInputs.setText(OreDictFilterMatcher.validateExp(searchFieldInputs.getText()));
|
|
NetworkHandler.instance().sendToServer(new PacketValueConfig("OreDictStorageBus.save", searchFieldInputs.getText()));
|
|
}
|
|
|
|
super.mouseClicked(xCoord, yCoord, btn);
|
|
}
|
|
|
|
@Override
|
|
protected void keyTyped(final char character, final int key) throws IOException {
|
|
if (!this.checkHotbarKeys(key)) {
|
|
if (key == Keyboard.KEY_RETURN || key == Keyboard.KEY_NUMPADENTER) {
|
|
searchFieldInputs.setText(OreDictFilterMatcher.validateExp(searchFieldInputs.getText()));
|
|
NetworkHandler.instance().sendToServer(new PacketValueConfig("OreDictStorageBus.save", searchFieldInputs.getText()));
|
|
}
|
|
if (!this.searchFieldInputs.textboxKeyTyped(character, key)) {
|
|
super.keyTyped(character, key);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
|
|
this.fontRenderer.drawString(this.getGuiDisplayName(GuiText.OreDictStorageBus.getLocal()), 8, 6, 4210752);
|
|
this.fontRenderer.drawString(this.searchFieldInputs.getText().length() + " / " + this.searchFieldInputs.getMaxStringLength(), 120, 36, 4210752);
|
|
this.fontRenderer.drawString("& = AND " + "| = OR", 8, 36, 4210752);
|
|
this.fontRenderer.drawString("^ = XOR " + "! = NOT", 8, 48, 4210752);
|
|
this.fontRenderer.drawString("() for priority " + "* for wildcard", 8, 60, 4210752);
|
|
this.fontRenderer.drawString("Ex.: *Redstone*&!dustRedstone", 8, 72, 4210752);
|
|
|
|
if (this.storageFilter != null) {
|
|
this.storageFilter.set(container.getStorageFilter());
|
|
}
|
|
|
|
if (this.rwMode != null) {
|
|
this.rwMode.set(container.getReadWriteMode());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) {
|
|
this.bindTexture("guis/oredictstoragebus.png");
|
|
this.drawTexturedModalRect(offsetX, offsetY, 0, 0, 175, 85);
|
|
|
|
if (this.searchFieldInputs != null) {
|
|
this.searchFieldInputs.drawTextBox();
|
|
}
|
|
}
|
|
|
|
}
|