private void selectLayer(Layer layer) {
    LayerItem item = getItemForLayer(layersTable.getChildren(), layer);
    if (item == null) throw new IllegalStateException("Layer not found");

    // selectedLayer would by already called from item.select
    item.select();
  }
 private void deselectAll() {
   for (Actor a : layersTable.getChildren()) {
     if (a instanceof LayerItem) {
       LayerItem item = (LayerItem) a;
       item.deselect();
     }
   }
 }
  private void rebuildLayersTable() {
    deselectAll();
    Array<Actor> actors = new Array<>(layersTable.getChildren());
    layersTable.clearChildren();

    for (Layer layer : scene.getLayers()) {
      LayerItem item = getItemForLayer(actors, layer);
      if (item == null) item = new LayerItem(layer);
      item.update();
      layersTable.add(item).expandX().fillX().row();

      if (layer == scene.getActiveLayer()) item.select();
    }

    if (scene.getLayers().size() == 1) {
      layerDownButton.setDisabled(true);
      layerUpButton.setDisabled(true);
      layerRemoveButton.setDisabled(true);
    } else layerRemoveButton.setDisabled(false);
  }