private void tiledDrawableSettingsDialog(String title, DrawableData drawable, boolean newDrawable) {
        final Spinner minWidthSpinner = new Spinner(0.0f, 1.0f, true, Spinner.Orientation.HORIZONTAL, getSkin());
        final Spinner minHeightSpinner = new Spinner(0.0f, 1.0f, true, Spinner.Orientation.HORIZONTAL, getSkin());
        TextField textField = new TextField("", getSkin()) {
            @Override
            public void next(boolean up) {
                if (up) {
                    getStage().setKeyboardFocus(minHeightSpinner.getTextField());
                    minHeightSpinner.getTextField().selectAll();
                } else {
                    getStage().setKeyboardFocus(minWidthSpinner.getTextField());
                    minWidthSpinner.getTextField().selectAll();
                }
            }

        };
        Dialog tileDialog = new Dialog(title, getSkin(), "bg") {
            @Override
            protected void result(Object object) {
                super.result(object);

                if (object instanceof Boolean && (boolean) object == true) {
                    Button button = this.findActor("color-selector");
                    tiledDrawableSettings(drawable, (ColorData) button.getUserObject(), (float) minWidthSpinner.getValue(), (float) minHeightSpinner.getValue(), textField.getText());
                }
                getStage().setScrollFocus(scrollPane);
            }

            @Override
            public Dialog show(Stage stage) {
                Dialog dialog = super.show(stage);
                stage.setKeyboardFocus(textField);
                return dialog;
            }
        };

        tileDialog.getTitleTable().padLeft(5.0f);
        tileDialog.getContentTable().padLeft(10.0f).padRight(10.0f).padTop(5.0f);
        tileDialog.getButtonTable().padBottom(15.0f);

        var label = new Label("Please enter a name for the TiledDrawable: ", getSkin());
        label.setName("name-label");
        tileDialog.getContentTable().add(label);

        tileDialog.button("OK", true);
        tileDialog.button("Cancel", false).key(Keys.ESCAPE, false);
        TextButton okButton = (TextButton) tileDialog.getButtonTable().getCells().first().getActor();
        okButton.addListener(handListener);
        tileDialog.getButtonTable().getCells().get(1).getActor().addListener(handListener);
        
        tileDialog.getContentTable().row();
        var table = new Table();
        table.defaults().space(10.0f);
        tileDialog.getContentTable().add(table);
        
        textField.setText(drawable.name);
        textField.selectAll();
        table.add(textField).growX().colspan(2);
        
        table.row();
        label = new Label("Color:", getSkin());
        label.setName("color-label");
        table.add(label).right();
        
        var subTable = new Table();
        subTable.setBackground(getSkin().getDrawable("dark-gray"));
        table.add(subTable).growX().height(35);

        var button = new Button(getSkin(), "color-selector");
        button.setName("color-selector");
        if (drawable.tintName != null) {
            button.setColor(jsonData.getColorByName(drawable.tintName).color);
        } else {
            label = new Label("none", getSkin());
            button.add(label);
        }
        button.setUserObject(jsonData.getColorByName(drawable.tintName));
        subTable.add(button).grow().pad(3);
        button.addListener(handListener);
        button.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeListener.ChangeEvent ce, Actor actor) {
                DialogColors dialog = new DialogColors(main, (StyleProperty) null, true, (colorData, pressedCancel) -> {
                    Button button = tileDialog.findActor("color-selector");
                    if (colorData != null) {
                        button.setColor(colorData.color);
                        button.setUserObject(colorData);
                        button.clearChildren();
                    } else {
                        if (button.getUserObject() != null) {
                            button.setColor(((ColorData) button.getUserObject()).color);
                        } else {
                            button.setColor(Color.WHITE);
                        }
                    }
                    okButton.setDisabled(!validateTiledDrawable(tileDialog, textField.getText(), drawable.name, (ColorData) button.getUserObject(), newDrawable));
                });
                dialog.setFillParent(true);
                dialog.show(getStage());
                dialog.refreshTable();
            }
        });
        
        table.row();
        label = new Label("MinWidth:", getSkin());
        table.add(label).right();
        minWidthSpinner.setValue(drawable.minWidth);
        minWidthSpinner.setMinimum(0.0f);
        table.add(minWidthSpinner).minWidth(150.0f);
        minWidthSpinner.setTransversalPrevious(textField);
        minWidthSpinner.setTransversalNext(minHeightSpinner.getTextField());
        minWidthSpinner.getButtonMinus().addListener(handListener);
        minWidthSpinner.getButtonPlus().addListener(handListener);
        minWidthSpinner.getTextField().addListener(ibeamListener);

        table.row();
        label = new Label("MinHeight:", getSkin());
        table.add(label).right();
        minHeightSpinner.setValue(drawable.minHeight);
        minHeightSpinner.setMinimum(0.0f);
        table.add(minHeightSpinner).minWidth(150.0f);
        minHeightSpinner.setTransversalPrevious(minWidthSpinner.getTextField());
        minHeightSpinner.setTransversalNext(textField);
        minHeightSpinner.getButtonMinus().addListener(handListener);
        minHeightSpinner.getButtonPlus().addListener(handListener);
        minHeightSpinner.getTextField().addListener(ibeamListener);

        okButton.setDisabled(!validateTiledDrawable(tileDialog, textField.getText(), drawable.name, (ColorData) button.getUserObject(), newDrawable));
        
        textField.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeListener.ChangeEvent event,
                    Actor actor) {
                
                Button button = tileDialog.findActor("color-selector");
                
                okButton.setDisabled(!validateTiledDrawable(tileDialog, textField.getText(), drawable.name, (ColorData) button.getUserObject(), newDrawable));
                
            }
        });
        textField.setTextFieldListener((TextField textField1, char c) -> {
            if (c == '\n') {
                if (!okButton.isDisabled()) {
                    Button button1 = tileDialog.findActor("color-selector");
                    tiledDrawableSettings(drawable, (ColorData) button1.getUserObject(), (float) minWidthSpinner.getValue(), (float) minHeightSpinner.getValue(), textField1.getText());
                    tileDialog.hide();
                }
            }
        });
        textField.addListener(ibeamListener);

        tileDialog.show(getStage());
    }
Recreates the drawables array only including visible drawables.
core/src/com/ray3k/skincomposer/dialog/DialogDrawables.java