Ejemplo n.º 1
0
  private Widget setupButton(int count, final String name, final String desc) {
    final double size = 10;
    Widget w = new Widget();
    final Tint tint = new Tint();
    w.addComponent(tint);
    w.addComponent(new DrawTexture().setTex(GuiEdit.tex(name)));
    w.transform.setSize(size, size).setPos(2 + count * 12, 11);
    w.regEventHandler(
        new FrameEventHandler() {
          @Override
          public void handleEvent(Widget w, FrameEvent event) {
            Widget target = getAccessTarget();
            tint.enabled = target != null && target.visible;

            if (event.hovering) {
              Font.font.draw(desc, size / 2, size, 10, 0xffffff, Align.CENTER);
            }
          }
        });

    addWidget(w);
    return w;
  }
Ejemplo n.º 2
0
  private class SingleWidget extends Widget {
    int hierLevel;
    Widget target;

    boolean modified = false;
    boolean on = true;

    final ResourceLocation vis_on = GuiEdit.tex("vis_on"), vis_off = GuiEdit.tex("vis_off");

    TextBox box;

    public SingleWidget(Widget w) {
      transform.width = 80;
      transform.height = 12;

      hierLevel = w.getHierarchyLevel();
      target = w;
      regEventHandler(
          new FrameEventHandler() {
            @Override
            public void handleEvent(Widget w, FrameEvent event) {
              double r = 1, g = 1, b = 1;
              double brightness = event.hovering ? .5 : .3;
              if (target.isFocused()) {
                brightness *= 1.6;
                r = b = .6;
              }
              if (modified) {
                r = g = 1;
                b = 0;
              }
              GL11.glColor4d(r, g, b, brightness);
              HudUtils.colorRect(0, 0, w.transform.width, w.transform.height);
            }
          });

      regEventHandler(
          new MouseDownHandler() {
            @Override
            public void handleEvent(Widget w, MouseDownEvent event) {
              guiEdit.toEdit.gainFocus(target);
            }
          });

      {
        Widget eye = new Widget();
        eye.transform.setSize(10, 10).setPos(1, 1);
        eye.addComponent(new Tint());
        eye.addComponent(new DrawTexture().setTex(vis_on));
        eye.regEventHandler(
            new MouseDownHandler() {
              @Override
              public void handleEvent(Widget w, MouseDownEvent event) {
                on = !on;
                target.visible = on;
                DrawTexture.get(w).setTex(on ? vis_on : vis_off);
              }
            });
        addWidget(eye);
      }

      addWidget(new Name());
    }

    private class Name extends Widget {
      public Name() {
        box = new TextBox().setSize(10);
        box.content = target.getName();
        transform.x = 14 + hierLevel * 6;
        transform.setSize(70, 10);
      }

      @Override
      public void onAdded() {
        regEventHandler(
            new FrameEventHandler() {
              int slowdown = 0;

              @Override
              public void handleEvent(Widget w, FrameEvent event) {
                if (++slowdown == 100) {
                  slowdown = 0;
                  transform.x = 14 + hierLevel * 6;
                  w.dirty = true;
                }
              }
            });
        regEventHandler(
            new ConfirmInputHandler() {
              @Override
              public void handleEvent(Widget w, ConfirmInputEvent event) {
                if (target.rename(box.content)) {
                  modified = false;
                }
              }
            });
        regEventHandler(
            new ChangeContentHandler() {
              @Override
              public void handleEvent(Widget w, ChangeContentEvent event) {
                modified = true;
              }
            });
        regEventHandler(
            new GainFocusHandler() {
              @Override
              public void handleEvent(Widget w, GainFocusEvent event) {
                SingleWidget.this.postEvent(new MouseDownEvent(0, 0));
              }
            });
        addComponent(box);
      }
    }
  }