sclass G22SnPSelector is MetaWithChangeListeners is Swingable { settable new SnPSettings settings; SnPSettings get() { ret settings; } cachedVisualize { var colors = jspinner(settings.colors, 2, 256); main onChange(colors, -> { settings.colors = intFromSpinner(colors); change(); }); var pixelRows = jPowersOfTwoSpinner(512, settings.pixelRows); main onChange(pixelRows, -> { settings.pixelRows = intFromSpinner(pixelRows); change(); }); ret hstack( colors, jlabel(" colors @ "), pixelRows, jlabel(" p")); } }