ctbrec-5.3.2-experimental/client/src/main/java/ctbrec/ui/settings/CreateContactSheetPaneFacto...

68 lines
3.4 KiB
Java

package ctbrec.ui.settings;
import static ctbrec.recorder.postprocessing.CreateContactSheet.*;
import static java.lang.Boolean.*;
import ctbrec.recorder.postprocessing.PostProcessor;
import ctbrec.ui.settings.api.Category;
import ctbrec.ui.settings.api.Preferences;
import ctbrec.ui.settings.api.Setting;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.control.ColorPicker;
import javafx.scene.paint.Color;
public class CreateContactSheetPaneFactory extends AbstractPostProcessingPaneFactory {
private SimpleStringProperty background;
@Override
public Preferences doCreatePostProcessorPane(PostProcessor pp) {
SimpleStringProperty totalSize = new SimpleStringProperty(null, TOTAL_SIZE, pp.getConfig().getOrDefault(TOTAL_SIZE, "1920"));
SimpleStringProperty padding = new SimpleStringProperty(null, PADDING, pp.getConfig().getOrDefault(PADDING, "4"));
SimpleStringProperty cols = new SimpleStringProperty(null, COLS, pp.getConfig().getOrDefault(COLS, "8"));
SimpleStringProperty rows = new SimpleStringProperty(null, ROWS, pp.getConfig().getOrDefault(ROWS, "7"));
SimpleStringProperty filename = new SimpleStringProperty(null, FILENAME, pp.getConfig().getOrDefault(FILENAME, "contactsheet.jpg"));
background = new SimpleStringProperty(null, BACKGROUND, pp.getConfig().getOrDefault(BACKGROUND, "0x333333"));
SimpleBooleanProperty burnTimestamp = new SimpleBooleanProperty(null, BURN_IN_TIMESTAMP,
Boolean.valueOf(pp.getConfig().getOrDefault(BURN_IN_TIMESTAMP, TRUE.toString())));
properties.add(totalSize);
properties.add(padding);
properties.add(cols);
properties.add(rows);
properties.add(filename);
properties.add(background);
properties.add(burnTimestamp);
Setting backgroundSetting = Setting.of("", background, "Hexadecimal value of the background color for the space between the thumbnails");
Preferences prefs = Preferences.of(new MapPreferencesStorage(),
Category.of(pp.getName(),
Setting.of("Total Width", totalSize, "Total width of the generated contact sheet"),
Setting.of("Padding", padding, "Padding between the thumbnails"),
Setting.of("Columns", cols ),
Setting.of("Rows", rows),
Setting.of("File Name", filename),
Setting.of("Background", createColorPicker(background.get())),
Setting.of("Timestamp (experimental)", burnTimestamp, "Burn in a timestamp on each thumb. Can be very slow on some systems."),
backgroundSetting
)
);
try {
// hide the background color input field, because we use a color picker instead
backgroundSetting.getGui().setVisible(false);
} catch (Exception e) {
// hiding the background color input field didn't work, that's ok
}
return prefs;
}
private ColorPicker createColorPicker(String hexColor) {
Color preselection = Color.web(hexColor);
ColorPicker colorPicker = new ColorPicker(preselection);
colorPicker.setOnAction(e -> background.set(colorPicker.getValue().toString()));
return colorPicker;
}
}