68 lines
3.4 KiB
Java
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;
|
|
}
|
|
}
|