public UIZoneBook() {

    setId("zonebook");
    setModal(true);
    maximize();
    setCloseKeys(new int[] {Keyboard.KEY_ESCAPE});

    background = new UIImage();
    background.setTexture(Assets.getTexture("miniion:openbook"));
    background.setHorizontalAlign(EHorizontalAlign.CENTER);
    background.setVerticalAlign(EVerticalAlign.CENTER);
    background.setSize(new Vector2f(500, 300));
    background.setVisible(true);
    addDisplayElement(background);

    uizonelist = new UIList();
    uizonelist.setSize(new Vector2f(200, 220));
    uizonelist.setPosition(new Vector2f(40, 20));
    uizonelist.setVisible(true);
    background.addDisplayElement(uizonelist);

    uizonelistgroup = new UIList();
    uizonelistgroup.setSize(new Vector2f(200, 250));
    uizonelistgroup.setPosition(new Vector2f(40, 20));
    uizonelistgroup.setVisible(true);
    background.addDisplayElement(uizonelistgroup);

    lblzonename = new UILabel("Zone name :");
    lblzonename.setPosition(new Vector2f(260, 20));
    lblzonename.setColor(Color.black);
    lblzonename.setVisible(true);
    background.addDisplayElement(lblzonename);

    txtzonename = new UIText();
    txtzonename.setPosition(new Vector2f(350, 20));
    txtzonename.setColor(Color.black);
    txtzonename.setSize(new Vector2f(80, 20));
    txtzonename.setVisible(true);
    background.addDisplayElement(txtzonename);

    lblheight = new UILabel("Height :");
    lblheight.setPosition(new Vector2f(260, 40));
    lblheight.setColor(Color.black);
    lblheight.setVisible(true);
    background.addDisplayElement(lblheight);

    txtheight = new UIText();
    txtheight.setPosition(new Vector2f(350, 40));
    txtheight.setColor(Color.black);
    txtheight.setSize(new Vector2f(80, 20));
    txtheight.setVisible(true);
    background.addDisplayElement(txtheight);

    lblwidth = new UILabel("Width :");
    lblwidth.setPosition(new Vector2f(260, 60));
    lblwidth.setColor(Color.black);
    lblwidth.setVisible(true);
    background.addDisplayElement(lblwidth);

    txtwidth = new UIText();
    txtwidth.setPosition(new Vector2f(350, 60));
    txtwidth.setColor(Color.black);
    txtwidth.setSize(new Vector2f(80, 20));
    txtwidth.setVisible(true);
    background.addDisplayElement(txtwidth);

    lbldepth = new UILabel("Depth :");
    lbldepth.setPosition(new Vector2f(260, 80));
    lbldepth.setColor(Color.black);
    lbldepth.setVisible(true);
    background.addDisplayElement(lbldepth);

    txtdepth = new UIText();
    txtdepth.setPosition(new Vector2f(350, 80));
    txtdepth.setColor(Color.black);
    txtdepth.setSize(new Vector2f(80, 20));
    txtdepth.setVisible(true);
    background.addDisplayElement(txtdepth);

    lblzonetype = new UILabel("");
    lblzonetype.setPosition(new Vector2f(260, 100));
    lblzonetype.setColor(Color.black);
    lblzonetype.setVisible(true);
    background.addDisplayElement(lblzonetype);

    cmbType = new UIComboBox(new Vector2f(80, 20), new Vector2f(80, 200));
    cmbType.setPosition(new Vector2f(350, 100));
    cmbType.setVisible(false);
    background.addDisplayElement(cmbType);
    initTypes();

    lblError = new UILabel("");
    lblError.setWrap(true);
    lblError.setSize(new Vector2f(200, 80));
    lblError.setPosition(new Vector2f(260, 130));
    lblError.setColor(Color.red);
    lblError.setVisible(true);
    background.addDisplayElement(lblError);

    btnSave = new UIModButton(new Vector2f(50, 20), ButtonType.NORMAL);
    btnSave.setPosition(new Vector2f(260, 230));
    btnSave.setLabel("Save");
    btnSave.setId("btnSave");
    btnSave.setVisible(true);
    btnSave.addClickListener(
        new ClickListener() {
          @Override
          public void click(UIDisplayElement element, int button) {
            executeClick(element, button);
          }
        });
    background.addDisplayElement(btnSave);

    btnDelete = new UIModButton(new Vector2f(50, 20), ButtonType.NORMAL);
    btnDelete.setPosition(new Vector2f(260, 230));
    btnDelete.setLabel("Delete");
    btnDelete.setId("btnDelZone");
    btnDelete.setVisible(false);
    btnDelete.addClickListener(
        new ClickListener() {
          @Override
          public void click(UIDisplayElement element, int button) {
            executeDelClick(element, button, (Zone) uizonelist.getSelection().getValue());
          }
        });
    background.addDisplayElement(btnDelete);

    btnBack = new UIModButton(new Vector2f(50, 20), ButtonType.NORMAL);
    btnBack.setPosition(new Vector2f(40, 240));
    btnBack.setLabel("Back");
    btnBack.setId("btnBack");
    btnBack.setVisible(false);
    btnBack.addClickListener(
        new ClickListener() {
          @Override
          public void click(UIDisplayElement element, int button) {
            initList();
            btnBack.setVisible(false);
          }
        });
    background.addDisplayElement(btnBack);
  }
  /** Init. the HUD. */
  public UIScreenHUD() {
    maximize();

    _hearts = new UIImage[10];

    // Create hearts
    for (int i = 0; i < 10; i++) {
      _hearts[i] = new UIImage(AssetManager.loadTexture("engine:icons"));
      _hearts[i].setVisible(true);
      _hearts[i].setTextureSize(new Vector2f(9f, 9f));
      _hearts[i].setTextureOrigin(new Vector2f(52f, 0.0f)); // 106f for poison
      _hearts[i].setSize(new Vector2f(18f, 18f));
      _hearts[i].setVerticalAlign(EVerticalAlign.BOTTOM);
      _hearts[i].setHorizontalAlign(EHorizontalAlign.CENTER);
      _hearts[i].setPosition(new Vector2f(18f * i - 212f, -52f));

      addDisplayElement(_hearts[i]);
    }

    crosshair = new UIImage(AssetManager.loadTexture("engine:gui"));
    crosshair.setTextureSize(new Vector2f(20f, 20f));
    crosshair.setTextureOrigin(new Vector2f(24f, 24f));
    crosshair.setSize(new Vector2f(40f, 40f));
    crosshair.setHorizontalAlign(EHorizontalAlign.CENTER);
    crosshair.setVerticalAlign(EVerticalAlign.CENTER);
    crosshair.setVisible(true);

    debugLine1 = new UIText();
    debugLine1.setPosition(new Vector2f(4, 4));
    debugLine2 = new UIText();
    debugLine2.setPosition(new Vector2f(4, 22));
    debugLine3 = new UIText();
    debugLine3.setPosition(new Vector2f(4, 38));
    debugLine4 = new UIText();
    debugLine4.setPosition(new Vector2f(4, 54));

    toolbar = new UIItemContainer(9);
    toolbar.setVisible(true);
    toolbar.setHorizontalAlign(EHorizontalAlign.CENTER);
    toolbar.setVerticalAlign(EVerticalAlign.BOTTOM);

    minionbar = new UIMinionbar();
    minionbar.setVisible(true);

    messagequeue = new UIMessageQueue();
    messagequeue.setVisible(true);

    buffBar = new UIBuff();
    buffBar.setVisible(true);

    addDisplayElement(crosshair, "crosshair");
    addDisplayElement(debugLine1);
    addDisplayElement(debugLine2);
    addDisplayElement(debugLine3);
    addDisplayElement(debugLine4);

    addDisplayElement(toolbar);
    addDisplayElement(minionbar);
    addDisplayElement(messagequeue);
    addDisplayElement(buffBar);

    CoreRegistry.get(EventSystem.class).registerEventHandler(this);

    update();
    layout();
  }