public ActionWidgetDropdown(WidgetComboBox widget) {
   super(widget);
   width = widget.width;
   height = widget.height;
   widget.setText(I18n.format("remote.dropdown.name"));
   widget.setTooltip(
       WordUtils.wrap(I18n.format("remote.dropdown.tooltip"), 50)
           .split(System.getProperty("line.separator")));
 }
 @Override
 public void keyTyped(char key, int keyCode) {
   if (keyCode == 1) {
     widg.setVariable(variableField.getText());
   }
   super.keyTyped(key, keyCode);
 }
  @Override
  public void initGui() {
    super.initGui();

    //  metaInfoStat = new GuiAnimatedStat(this, "Metadata?", Textures.GUI_INFO_LOCATION, xStart +
    // xSize, yStart + 5, 0xFF00AA00, null, false);

    buttonList.add(new GuiButton(0, guiLeft + 4, guiTop + 20, 70, 20, "Search item..."));
    buttonList.add(new GuiButton(1, guiLeft + 78, guiTop + 20, 100, 20, "Search inventory..."));
    decButton = new GuiButton(2, guiLeft + 140, guiTop + 85, 10, 20, "-");
    incButton = new GuiButton(3, guiLeft + 167, guiTop + 85, 10, 20, "+");
    buttonList.add(decButton);
    buttonList.add(incButton);
    checkBoxUseDamage =
        new GuiCheckBox(0, guiLeft + 4, guiTop + 72, 0xFF000000, "Use metadata / damage values");
    checkBoxUseDamage.setTooltip(
        Arrays.asList(
            new String[] {
              "Check to handle differently damaged tools",
              "or different colors of Wool as different."
            }));
    checkBoxUseDamage.checked = widg.useMetadata;
    addWidget(checkBoxUseDamage);
    checkBoxUseNBT = new GuiCheckBox(2, guiLeft + 4, guiTop + 108, 0xFF000000, "Use NBT");
    checkBoxUseNBT.setTooltip(
        Arrays.asList(
            new String[] {
              "Check to handle items like Enchanted Books", "or Firework as different."
            }));
    checkBoxUseNBT.checked = widg.useNBT;
    addWidget(checkBoxUseNBT);
    checkBoxUseOreDict =
        new GuiCheckBox(3, guiLeft + 4, guiTop + 120, 0xFF000000, "Use Ore Dictionary");
    checkBoxUseOreDict.setTooltip(
        Arrays.asList(
            new String[] {
              "Check to handle items registered in the", "Ore Dictionary (like Wood) as the same."
            }));
    checkBoxUseOreDict.checked = widg.useOreDict;
    addWidget(checkBoxUseOreDict);
    checkBoxUseModSimilarity =
        new GuiCheckBox(4, guiLeft + 4, guiTop + 132, 0xFF000000, "Use Mod similarity");
    checkBoxUseModSimilarity.setTooltip(
        Arrays.asList(new String[] {"Check to handle items from the", "same mod as the same."}));
    checkBoxUseModSimilarity.checked = widg.useModSimilarity;
    addWidget(checkBoxUseModSimilarity);

    variableField =
        new WidgetComboBox(
            fontRendererObj, guiLeft + 90, guiTop + 56, 80, fontRendererObj.FONT_HEIGHT + 1);
    variableField.setElements(guiProgrammer.te.getAllVariables());
    variableField.setText(widg.getVariable());

    if (Config.getProgrammerDifficulty() == 2) {
      addWidget(variableField);
    }

    checkBoxUseDamage.enabled = !checkBoxUseOreDict.checked && !checkBoxUseModSimilarity.checked;
    incButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
    decButton.enabled = checkBoxUseDamage.enabled && checkBoxUseDamage.checked;
    checkBoxUseNBT.enabled = !checkBoxUseOreDict.checked && !checkBoxUseModSimilarity.checked;
    checkBoxUseOreDict.enabled = !checkBoxUseModSimilarity.checked;
    checkBoxUseModSimilarity.enabled = !checkBoxUseOreDict.checked;

    if (searchGui != null) widg.setFilter(searchGui.getSearchStack());
    if (invSearchGui != null) widg.setFilter(invSearchGui.getSearchStack());
  }