Skip to content

Commit

Permalink
Try to improve the post processor dropdown (broken due to the separat…
Browse files Browse the repository at this point in the history
…or).
  • Loading branch information
leMaik committed Sep 9, 2023
1 parent 31b1846 commit ac8c34f
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,6 @@ public static Optional<PostProcessingFilter> getPostProcessingFilterFromId(Strin
return Optional.ofNullable(filters.get(id));
}

// TODO Create a ChoiceBox that can use different string as ID and as visual representation
// so this isn't needed
@Deprecated
public static Optional<PostProcessingFilter> getPostProcessingFilterFromName(String name) {
return Optional.ofNullable(filtersByName.get(name));
}

public static Collection<PostProcessingFilter> getFilters() {
return filtersByName.values();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Separator;
import javafx.scene.control.Tooltip;
import javafx.scene.control.SingleSelectionModel;
import javafx.util.StringConverter;
import se.llbit.chunky.renderer.postprocessing.PostProcessingFilter;
import se.llbit.chunky.renderer.postprocessing.PostProcessingFilters;
Expand All @@ -32,20 +33,22 @@
import se.llbit.chunky.ui.DoubleAdjuster;
import se.llbit.chunky.ui.controller.RenderControlsFxController;
import se.llbit.chunky.ui.render.RenderControlsTab;
import se.llbit.chunky.ui.RegisterableCellAdapter;
import se.llbit.fxutil.CustomizedListCellFactory;
import se.llbit.util.ProgressListener;
import se.llbit.util.TaskTracker;
import se.llbit.util.TaskTracker.Task;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import se.llbit.util.TaskTracker.Task;

public class PostprocessingTab extends ScrollPane implements RenderControlsTab, Initializable {
private Scene scene;
private RenderControlsFxController controller;

@FXML private DoubleAdjuster exposure;
@FXML private ChoiceBox<PostProcessingFilter> postprocessingFilter;
@FXML private ComboBox<PostProcessingFilter> postprocessingFilter;

public PostprocessingTab() throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("PostprocessingTab.fxml"));
Expand Down Expand Up @@ -84,21 +87,13 @@ public PostprocessingTab() throws IOException {
postprocessingFilter.getSelectionModel().select(Scene.DEFAULT_POSTPROCESSING_FILTER);
postprocessingFilter.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) -> {
scene.setPostprocess(newValue);
scene.postProcessFrame(new TaskTracker(ProgressListener.NONE));
controller.getCanvas().forceRepaint();
if (!(newValue instanceof Separator)) {
scene.setPostprocess(newValue);
scene.postProcessFrame(new TaskTracker(ProgressListener.NONE));
controller.getCanvas().forceRepaint();
}
});
postprocessingFilter.setConverter(new StringConverter<PostProcessingFilter>() {
@Override
public String toString(PostProcessingFilter object) {
return object == null ? null : object.getName();
}

@Override
public PostProcessingFilter fromString(String string) {
return PostProcessingFilters.getPostProcessingFilterFromName(string).orElse(Scene.DEFAULT_POSTPROCESSING_FILTER);
}
});
CustomizedListCellFactory.install(postprocessingFilter, RegisterableCellAdapter.INSTANCE);
exposure.setName("Exposure");
exposure.setTooltip("Linear exposure of the image.");
exposure.setRange(Scene.MIN_EXPOSURE, Scene.MAX_EXPOSURE);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
Expand All @@ -14,7 +14,7 @@
<DoubleAdjuster fx:id="exposure" />
<HBox alignment="CENTER_LEFT" prefWidth="200.0" spacing="10.0">
<Label text="Postprocessing filter:" />
<ChoiceBox fx:id="postprocessingFilter" prefWidth="150.0" />
<ComboBox fx:id="postprocessingFilter" prefWidth="150.0" />
</HBox>
<Text strokeType="OUTSIDE" strokeWidth="0.0" wrappingWidth="275"
text="Postprocessing affects performance when Render Preview tab is visible. Switching to the Map tab mitigates this." />
Expand Down
14 changes: 10 additions & 4 deletions lib/src/se/llbit/fxutil/CustomizedListCellFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
*/
package se.llbit.fxutil;

import javafx.scene.control.ComboBox;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.Tooltip;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.control.*;
import javafx.util.Callback;
import javafx.util.StringConverter;

/**
* A list cell factory that shows labels and tooltips.
Expand Down Expand Up @@ -66,7 +66,13 @@ protected void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty || adapter == null) {
setGraphic(null);
} else if (item instanceof Separator) {
setDisabled(true);
setMouseTransparent(true);
setGraphic((Node) item);
setPadding(Insets.EMPTY);
} else {
setGraphic(null);
setText(adapter.getLabel(item));
setTooltip(adapter.getTooltip(item));
}
Expand Down

0 comments on commit ac8c34f

Please sign in to comment.