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; }
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); } } }