diff --git a/prometeu-studio/src/main/java/p/studio/controls/forms/StudioFormSection.java b/prometeu-studio/src/main/java/p/studio/controls/forms/StudioFormSection.java new file mode 100644 index 00000000..8d4999c9 --- /dev/null +++ b/prometeu-studio/src/main/java/p/studio/controls/forms/StudioFormSection.java @@ -0,0 +1,112 @@ +package p.studio.controls.forms; + +import javafx.application.Platform; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.ScrollPane; +import javafx.scene.layout.VBox; + +public abstract class StudioFormSection extends StudioSection { + private final StudioFormActionBar actionBar = new StudioFormActionBar( + this::handleBeginEdit, + this::handleApply, + this::handleReset, + this::handleCancel); + + protected StudioFormSection() { + super(); + actionBar.getStyleClass().add("studio-form-section-actions"); + } + + public static VBox createReadOnlySection(String title, Node content) { + return StudioSection.createSection(title, content); + } + + public static VBox createEditableSection(String title, Node headerActions, Node content, StudioFormMode mode) { + return StudioSection.createSection(title, headerActions, content, true, mode == StudioFormMode.EDITING, true); + } + + protected final void renderFormSection(Node content) { + updateActionBarState(); + final VBox section = createEditableSection(sectionTitle(), actionBar, content, formMode()); + final String sectionStyleClass = sectionStyleClass(); + if (sectionStyleClass != null && !sectionStyleClass.isBlank()) { + section.getStyleClass().add(sectionStyleClass); + } + getChildren().setAll(section); + } + + protected final void updateActionBarState() { + actionBar.updateState(formMode(), isDirty()); + } + + protected final void rerenderPreservingScrollPosition() { + final ScrollPane scrollPane = findAncestorScrollPane(); + final double previousVvalue = scrollPane == null ? 0.0d : scrollPane.getVvalue(); + renderSection(); + if (scrollPane != null) { + restoreScrollPosition(scrollPane, previousVvalue, 2); + } + } + + protected abstract void renderSection(); + + protected abstract String sectionTitle(); + + protected abstract StudioFormMode formMode(); + + protected abstract boolean isDirty(); + + protected abstract void beginEdit(); + + protected abstract void apply(); + + protected abstract void reset(); + + protected abstract void cancel(); + + protected String sectionStyleClass() { + return null; + } + + private void handleBeginEdit() { + beginEdit(); + rerenderPreservingScrollPosition(); + } + + private void handleApply() { + apply(); + } + + private void handleReset() { + reset(); + rerenderPreservingScrollPosition(); + } + + private void handleCancel() { + cancel(); + rerenderPreservingScrollPosition(); + } + + private void restoreScrollPosition(ScrollPane scrollPane, double vvalue, int remainingPasses) { + Platform.runLater(() -> { + scrollPane.applyCss(); + scrollPane.layout(); + scrollPane.setVvalue(vvalue); + if (remainingPasses > 0) { + restoreScrollPosition(scrollPane, vvalue, remainingPasses - 1); + } + }); + } + + private ScrollPane findAncestorScrollPane() { + Parent current = getParent(); + while (current != null) { + if (current instanceof ScrollPane scrollPane) { + return scrollPane; + } + current = current.getParent(); + } + return null; + } +} diff --git a/prometeu-studio/src/main/java/p/studio/controls/forms/StudioSection.java b/prometeu-studio/src/main/java/p/studio/controls/forms/StudioSection.java new file mode 100644 index 00000000..92321938 --- /dev/null +++ b/prometeu-studio/src/main/java/p/studio/controls/forms/StudioSection.java @@ -0,0 +1,59 @@ +package p.studio.controls.forms; + +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; +import javafx.scene.layout.Region; +import javafx.scene.layout.VBox; +import p.studio.controls.lifecycle.StudioControlLifecycle; +import p.studio.controls.lifecycle.StudioControlLifecycleSupport; + +public abstract class StudioSection extends VBox implements StudioControlLifecycle { + protected StudioSection() { + StudioControlLifecycleSupport.install(this, this); + } + + public static VBox createSection(String title, Node content) { + return createSection(title, null, content, false, false, true); + } + + public static VBox createSectionWithoutHeader(Node content) { + return createSection(null, null, content, false, false, false); + } + + protected static VBox createSection( + String title, + Node headerActions, + Node content, + boolean editable, + boolean editing, + boolean showHeader) { + final VBox section = new VBox(10); + section.getStyleClass().add("studio-form-section"); + if (editable) { + section.getStyleClass().add("studio-form-section-editable"); + } + if (editing) { + section.getStyleClass().add("studio-form-section-editing"); + } + + if (showHeader) { + final Label titleLabel = new Label(title == null ? "" : title); + titleLabel.getStyleClass().add("studio-form-section-title"); + + final Region spacer = new Region(); + HBox.setHgrow(spacer, Priority.ALWAYS); + + final HBox header = new HBox(12, titleLabel, spacer); + header.getStyleClass().add("studio-form-section-header"); + if (headerActions != null) { + header.getChildren().add(headerActions); + } + section.getChildren().add(header); + } + + section.getChildren().add(content); + return section; + } +} diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java index 15059a5a..c262a0db 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsControl.java @@ -12,6 +12,7 @@ import p.packer.dtos.PackerAssetActionAvailabilityDTO; import p.packer.dtos.PackerAssetDetailsDTO; import p.packer.messages.*; import p.studio.Container; +import p.studio.controls.forms.StudioSection; import p.studio.events.StudioWorkspaceEventBus; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; @@ -248,9 +249,9 @@ public final class AssetDetailsControl extends VBox implements StudioEventAware actionsScroll.setFitToWidth(true); actionsScroll.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); actionsScroll.getStyleClass().add("assets-details-actions-scroll"); - return AssetDetailsUiSupport.createSection( - Container.i18n().text(I18n.ASSETS_SECTION_ACTIONS), - actionsScroll); + final VBox section = StudioSection.createSectionWithoutHeader(actionsScroll); + section.getStyleClass().add("assets-details-actions-section"); + return section; } private void syncActionsSectionHeight(double summaryHeight) { diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java index 5cacc932..88c06e10 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/AssetDetailsUiSupport.java @@ -11,6 +11,9 @@ import p.packer.messages.assets.AssetAction; import p.packer.messages.assets.AssetFamilyCatalog; import p.packer.messages.assets.OutputFormatCatalog; import p.studio.Container; +import p.studio.controls.forms.StudioFormMode; +import p.studio.controls.forms.StudioFormSection; +import p.studio.controls.forms.StudioSection; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; import p.studio.workspaces.assets.messages.AssetWorkspaceAssetState; @@ -23,12 +26,15 @@ public final class AssetDetailsUiSupport { } public static VBox createSection(String title, Node content) { - final VBox section = new VBox(10); - section.getStyleClass().add("assets-details-section"); - final Label titleLabel = new Label(title); - titleLabel.getStyleClass().add("assets-details-section-title"); - section.getChildren().addAll(titleLabel, content); - return section; + return StudioSection.createSection(title, content); + } + + public static VBox createSection(String title, Node headerActions, Node content) { + return StudioFormSection.createEditableSection(title, headerActions, content, StudioFormMode.READ_ONLY); + } + + public static VBox createEditableSection(String title, Node headerActions, Node content, StudioFormMode mode) { + return StudioFormSection.createEditableSection(title, headerActions, content, mode); } public static Node createSectionMessage(String text) { diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/bank/AssetDetailsBankCompositionControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/bank/AssetDetailsBankCompositionControl.java index cd2ca561..c23aa0c6 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/bank/AssetDetailsBankCompositionControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/bank/AssetDetailsBankCompositionControl.java @@ -7,9 +7,8 @@ import javafx.scene.layout.VBox; import p.packer.messages.ApplyBankCompositionRequest; import p.studio.Container; import p.studio.controls.banks.StudioAssetCapacityMeter; -import p.studio.controls.forms.StudioFormActionBar; -import p.studio.controls.lifecycle.StudioControlLifecycle; -import p.studio.controls.lifecycle.StudioControlLifecycleSupport; +import p.studio.controls.forms.StudioFormMode; +import p.studio.controls.forms.StudioFormSection; import p.studio.events.StudioWorkspaceEventBus; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; @@ -26,15 +25,12 @@ import p.studio.workspaces.framework.StudioSubscriptionBag; import java.util.Objects; -public final class AssetDetailsBankCompositionControl extends VBox implements StudioControlLifecycle { +public final class AssetDetailsBankCompositionControl extends StudioFormSection { + private static final double CAPACITY_METER_WIDTH = 180.0d; + private final ProjectReference projectReference; private final StudioWorkspaceEventBus workspaceBus; private final StudioSubscriptionBag subscriptions = new StudioSubscriptionBag(); - private final StudioFormActionBar actionBar = new StudioFormActionBar( - this::beginEdit, - this::applyDraft, - this::resetDraft, - this::cancelEdit); private final AssetDetailsBankCompositionDualListView dualListView = new AssetDetailsBankCompositionDualListView(); private final StudioAssetCapacityMeter capacityMeter = new StudioAssetCapacityMeter(); private final AssetDetailsBankCompositionCoordinator coordinator = new AssetDetailsBankCompositionCoordinator(); @@ -42,9 +38,11 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St private AssetWorkspaceDetailsViewState viewState; public AssetDetailsBankCompositionControl(ProjectReference projectReference, StudioWorkspaceEventBus workspaceBus) { - StudioControlLifecycleSupport.install(this, this); this.projectReference = Objects.requireNonNull(projectReference, "projectReference"); this.workspaceBus = Objects.requireNonNull(workspaceBus, "workspaceBus"); + capacityMeter.setMinWidth(CAPACITY_METER_WIDTH); + capacityMeter.setPrefWidth(CAPACITY_METER_WIDTH); + capacityMeter.setMaxWidth(CAPACITY_METER_WIDTH); } @Override @@ -52,7 +50,7 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St subscriptions.add(workspaceBus.subscribe(StudioAssetsDetailsViewStateChangedEvent.class, event -> { viewState = event.viewState(); coordinator.replaceDetails(viewState == null ? null : viewState.selectedAssetDetails()); - render(); + renderSection(); publishStateNotifications(); })); } @@ -62,7 +60,8 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St subscriptions.clear(); } - private void render() { + @Override + protected void renderSection() { if (viewState == null || viewState.selectedAssetDetails() == null) { getChildren().clear(); return; @@ -79,22 +78,22 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St dualListView.setInteractionEnabled(viewModel.editing()); dualListView.setOnMoveToRight(items -> { coordinator.moveToSelected(items); - render(); + renderSection(); publishStateNotifications(); }); dualListView.setOnMoveToLeft(items -> { coordinator.moveToAvailable(items); - render(); + renderSection(); publishStateNotifications(); }); dualListView.setOnMoveUp(index -> { coordinator.moveUp(index); - render(); + renderSection(); publishStateNotifications(); }); dualListView.setOnMoveDown(index -> { coordinator.moveDown(index); - render(); + renderSection(); publishStateNotifications(); }); @@ -102,9 +101,7 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St capacityMeter.setSeverity(viewModel.capacityState().severity()); capacityMeter.setLabelText(viewModel.capacityState().labelText()); capacityMeter.setHintText(viewModel.capacityState().hintText().isBlank() - ? (viewModel.editing() - ? Container.i18n().text(I18n.ASSETS_DETAILS_BANK_COMPOSITION_EDITING_HINT) - : Container.i18n().text(I18n.ASSETS_DETAILS_BANK_COMPOSITION_READONLY_HINT)) + ? Container.i18n().text(I18n.ASSETS_DETAILS_BANK_COMPOSITION_READONLY_HINT) : viewModel.capacityState().hintText()); final HBox body = new HBox(16, dualListView, capacityMeter); @@ -113,23 +110,37 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St dualListView.setMaxWidth(Double.MAX_VALUE); final VBox content = new VBox(12, body); - actionBar.updateState(viewModel.editing() ? p.studio.controls.forms.StudioFormMode.EDITING : p.studio.controls.forms.StudioFormMode.READ_ONLY, viewModel.dirty()); - content.getChildren().add(actionBar); - - final VBox section = AssetDetailsUiSupport.createSection( - Container.i18n().text(I18n.ASSETS_SECTION_BANK_COMPOSITION), - content); - section.getStyleClass().add("assets-details-bank-composition-section"); - getChildren().setAll(section); + renderFormSection(content); } - private void beginEdit() { + @Override + protected String sectionTitle() { + return Container.i18n().text(I18n.ASSETS_SECTION_BANK_COMPOSITION); + } + + @Override + protected StudioFormMode formMode() { + return coordinator.ready() && coordinator.viewModel().editing() ? StudioFormMode.EDITING : StudioFormMode.READ_ONLY; + } + + @Override + protected boolean isDirty() { + return coordinator.ready() && coordinator.viewModel().dirty(); + } + + @Override + protected String sectionStyleClass() { + return "assets-details-bank-composition-section"; + } + + @Override + protected void beginEdit() { coordinator.beginEdit(); - render(); publishStateNotifications(); } - private void applyDraft() { + @Override + protected void apply() { if (viewState == null || viewState.selectedAssetReference() == null || !coordinator.ready()) { return; } @@ -148,7 +159,7 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St Platform.runLater(() -> { if (response.success()) { coordinator.apply(); - render(); + renderSection(); publishStateNotifications(); workspaceBus.publish(new StudioAssetBankCompositionAppliedEvent(assetReference)); workspaceBus.publish(new StudioAssetsRefreshRequestedEvent(assetReference)); @@ -166,15 +177,15 @@ public final class AssetDetailsBankCompositionControl extends VBox implements St }); } - private void resetDraft() { + @Override + protected void reset() { coordinator.reset(); - render(); publishStateNotifications(); } - private void cancelEdit() { + @Override + protected void cancel() { coordinator.cancel(); - render(); publishStateNotifications(); } diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java index aba5e52b..596f96eb 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/contract/AssetDetailsContractControl.java @@ -11,11 +11,9 @@ import p.packer.dtos.PackerCodecConfigurationFieldDTO; import p.packer.messages.UpdateAssetContractRequest; import p.packer.messages.assets.OutputCodecCatalog; import p.studio.Container; -import p.studio.controls.forms.StudioFormActionBar; import p.studio.controls.forms.StudioFormMode; import p.studio.controls.forms.StudioFormSession; -import p.studio.controls.lifecycle.StudioControlLifecycle; -import p.studio.controls.lifecycle.StudioControlLifecycleSupport; +import p.studio.controls.forms.StudioFormSection; import p.studio.events.StudioWorkspaceEventBus; import p.studio.projects.ProjectReference; import p.studio.utilities.i18n.I18n; @@ -29,21 +27,15 @@ import p.studio.workspaces.framework.StudioSubscriptionBag; import java.util.Objects; -public final class AssetDetailsContractControl extends VBox implements StudioControlLifecycle { +public final class AssetDetailsContractControl extends StudioFormSection { private final ProjectReference projectReference; private final StudioWorkspaceEventBus workspaceBus; private final StudioSubscriptionBag subscriptions = new StudioSubscriptionBag(); - private final StudioFormActionBar actionBar = new StudioFormActionBar( - this::beginEdit, - this::applyDraft, - this::resetDraft, - this::cancelEdit); private AssetWorkspaceDetailsViewState viewState; private StudioFormSession formSession; public AssetDetailsContractControl(ProjectReference projectReference, StudioWorkspaceEventBus workspaceBus) { - StudioControlLifecycleSupport.install(this, this); this.projectReference = Objects.requireNonNull(projectReference, "projectReference"); this.workspaceBus = Objects.requireNonNull(workspaceBus, "workspaceBus"); } @@ -53,7 +45,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon subscriptions.add(workspaceBus.subscribe(StudioAssetsDetailsViewStateChangedEvent.class, event -> { viewState = event.viewState(); syncFormSession(); - render(); + renderSection(); })); } @@ -79,7 +71,8 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon } } - private void render() { + @Override + protected void renderSection() { if (viewState == null || viewState.selectedAssetDetails() == null) { getChildren().clear(); return; @@ -129,14 +122,27 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon final VBox content = new VBox(12); content.getChildren().setAll(contractBody); - actionBar.updateState(formSession.mode(), formSession.isDirty()); - content.getChildren().add(actionBar); + renderFormSection(content); + } - final VBox section = AssetDetailsUiSupport.createSection( - Container.i18n().text(I18n.ASSETS_SECTION_RUNTIME_CONTRACT), - content); - section.getStyleClass().add("assets-details-contract-section"); - getChildren().setAll(section); + @Override + protected String sectionTitle() { + return Container.i18n().text(I18n.ASSETS_SECTION_RUNTIME_CONTRACT); + } + + @Override + protected StudioFormMode formMode() { + return formSession == null ? StudioFormMode.READ_ONLY : formSession.mode(); + } + + @Override + protected boolean isDirty() { + return formSession != null && formSession.isDirty(); + } + + @Override + protected String sectionStyleClass() { + return "assets-details-contract-section"; } private Node createPreloadEditor(AssetContractDraft draft, boolean editing) { @@ -147,7 +153,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon checkBox.selectedProperty().addListener((ignored, oldValue, newValue) -> { if (!Objects.equals(oldValue, newValue)) { formSession.updateDraft(current -> current.withPreload(newValue)); - actionBar.updateState(formSession.mode(), formSession.isDirty()); + updateActionBarState(); } }); } else { @@ -182,7 +188,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon codecCombo.valueProperty().addListener((ignored, oldValue, newValue) -> { if (newValue != null && !Objects.equals(oldValue, newValue)) { formSession.updateDraft(current -> current.withSelectedCodec(newValue)); - render(); + renderSection(); } }); } else { @@ -269,7 +275,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon formSession.updateDraft(current -> current.withMetadataFieldValue( field.key(), Boolean.toString(newValue))); - actionBar.updateState(formSession.mode(), formSession.isDirty()); + updateActionBarState(); } }); } else { @@ -292,7 +298,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon formSession.updateDraft(current -> current.withMetadataFieldValue( field.key(), newValue)); - actionBar.updateState(formSession.mode(), formSession.isDirty()); + updateActionBarState(); } }); } else { @@ -315,7 +321,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon formSession.updateDraft(current -> current.withMetadataFieldValue( field.key(), Objects.requireNonNullElse(newValue, ""))); - actionBar.updateState(formSession.mode(), formSession.isDirty()); + updateActionBarState(); } }); } else { @@ -363,7 +369,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon current.selectedCodec(), field.key(), Boolean.toString(newValue))); - actionBar.updateState(formSession.mode(), formSession.isDirty()); + updateActionBarState(); } }); } else { @@ -387,7 +393,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon current.selectedCodec(), field.key(), newValue)); - actionBar.updateState(formSession.mode(), formSession.isDirty()); + updateActionBarState(); } }); } else { @@ -411,7 +417,7 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon current.selectedCodec(), field.key(), Objects.requireNonNullElse(newValue, ""))); - actionBar.updateState(formSession.mode(), formSession.isDirty()); + updateActionBarState(); } }); } else { @@ -434,15 +440,16 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon control.setFocusTraversable(false); } - private void beginEdit() { + @Override + protected void beginEdit() { if (formSession == null) { return; } formSession.beginEdit(); - render(); } - private void applyDraft() { + @Override + protected void apply() { if (formSession == null) { return; } @@ -462,34 +469,38 @@ public final class AssetDetailsContractControl extends VBox implements StudioCon final var r = formSession.apply(); workspaceBus.publish(new StudioAssetLogEvent("ASSET DETAILS CONTRACT", "Asset contract updated")); workspaceBus.publish(new StudioAssetsRefreshRequestedEvent(r.assetReference())); - render(); + renderSection(); }); } else { Platform.runLater(() -> { workspaceBus.publish(new StudioAssetLogEvent("ASSET DETAILS CONTRACT", response.errorMessage())); - cancelEdit(); + cancel(); + renderSection(); }); } } catch (Exception e) { workspaceBus.publish(new StudioAssetLogEvent("ASSET DETAILS CONTRACT", e.getMessage())); - cancelEdit(); + Platform.runLater(() -> { + cancel(); + renderSection(); + }); } }); } - private void resetDraft() { + @Override + protected void reset() { if (formSession == null) { return; } formSession.resetDraft(); - render(); } - private void cancelEdit() { + @Override + protected void cancel() { if (formSession == null) { return; } formSession.cancelEdit(); - render(); } } diff --git a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java index 285b9498..435464a5 100644 --- a/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java +++ b/prometeu-studio/src/main/java/p/studio/workspaces/assets/details/summary/AssetDetailsSummaryControl.java @@ -71,6 +71,8 @@ public final class AssetDetailsSummaryControl extends VBox implements StudioCont AssetDetailsUiSupport.createChip( AssetDetailsUiSupport.buildChipTone(summary.buildParticipation()), AssetDetailsUiSupport.buildParticipationLabel(summary.buildParticipation())))); - getChildren().setAll(AssetDetailsUiSupport.createSection(Container.i18n().text(I18n.ASSETS_SECTION_SUMMARY), content)); + getChildren().setAll(AssetDetailsUiSupport.createSection( + Container.i18n().text(I18n.ASSETS_SECTION_SUMMARY), + content)); } } diff --git a/prometeu-studio/src/main/resources/themes/default-prometeu.css b/prometeu-studio/src/main/resources/themes/default-prometeu.css index adf7d163..57b52824 100644 --- a/prometeu-studio/src/main/resources/themes/default-prometeu.css +++ b/prometeu-studio/src/main/resources/themes/default-prometeu.css @@ -213,6 +213,44 @@ -fx-padding: 8 0 0 0; } +.studio-form-section { + -fx-background-color: #11151b; + -fx-background-radius: 12; + -fx-border-radius: 12; + -fx-border-color: #26313d; + -fx-padding: 12; +} + +.studio-form-section-editing { + -fx-background-color: #24181d; + -fx-border-color: #6f4754; +} + +.studio-form-section-header { + -fx-alignment: center-left; + -fx-background-color: #172331; + -fx-border-color: #35516c; + -fx-border-radius: 10; + -fx-background-radius: 10; + -fx-padding: 8 10 8 10; + -fx-min-height: 42; + -fx-pref-height: 42; +} + +.studio-form-section-title { + -fx-text-fill: #f5f9ff; + -fx-font-size: 14px; + -fx-font-weight: bold; +} + +.studio-form-section-actions { + -fx-padding: 0; + -fx-alignment: center-right; + -fx-min-width: 340; + -fx-pref-width: 340; + -fx-max-width: 340; +} + .studio-workspace-rail-button { -fx-font-size: 16px; } @@ -509,15 +547,15 @@ -fx-alignment: top-left; } -.assets-details-summary-actions-row > .assets-details-section:first-child { +.assets-details-summary-actions-row > .studio-form-section:first-child { -fx-min-width: 0; } -.assets-details-summary-actions-row > .assets-details-section:last-child { +.assets-details-summary-actions-row > .studio-form-section:last-child { -fx-min-width: 0; } -.assets-details-summary-actions-row > .assets-details-section { +.assets-details-summary-actions-row > .studio-form-section { -fx-alignment: top-left; } @@ -542,20 +580,6 @@ -fx-font-size: 12px; } -.assets-details-section { - -fx-background-color: #11151b; - -fx-background-radius: 12; - -fx-border-radius: 12; - -fx-border-color: #26313d; - -fx-padding: 12; -} - -.assets-details-section-title { - -fx-text-fill: #f5f9ff; - -fx-font-size: 14px; - -fx-font-weight: bold; -} - .assets-details-subsection-title { -fx-text-fill: #b8d7f6; -fx-font-size: 12px; diff --git a/test-projects/main/.studio/activities.json b/test-projects/main/.studio/activities.json index 6ea108d9..71f956a5 100644 --- a/test-projects/main/.studio/activities.json +++ b/test-projects/main/.studio/activities.json @@ -298,6 +298,756 @@ "message" : "Asset scan started", "severity" : "INFO", "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "7 assets loaded", + "severity" : "SUCCESS", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan diagnostics updated.", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bla", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: one-more-atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: bbb2", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: ui_atlas", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Discovered asset: Bigode", + "severity" : "INFO", + "sticky" : false +}, { + "source" : "Assets", + "message" : "Asset scan started", + "severity" : "INFO", + "sticky" : false }, { "source" : "Studio", "message" : "Project ready", @@ -1748,754 +2498,4 @@ "message" : "Discovered asset: test", "severity" : "INFO", "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bla", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: one-more-atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: bbb2", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: ui_atlas", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: Bigode", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Asset scan started", - "severity" : "INFO", - "sticky" : false -}, { - "source" : "Assets", - "message" : "8 assets loaded", - "severity" : "SUCCESS", - "sticky" : false -}, { - "source" : "Assets", - "message" : "Discovered asset: test", - "severity" : "INFO", - "sticky" : false } ] \ No newline at end of file diff --git a/test-projects/main/assets/.prometeu/cache.json b/test-projects/main/assets/.prometeu/cache.json index e8998ea1..ebdfb346 100644 --- a/test-projects/main/assets/.prometeu/cache.json +++ b/test-projects/main/assets/.prometeu/cache.json @@ -10,14 +10,14 @@ "last_modified" : 1773571367191, "fingerprint" : "aa7d241deabcebe29a6096e14eaf16fdc06cf06380c11a507620b00fc7bff094", "metadata" : { + "palette" : { + "originalArgb8888" : [ -265674 ], + "convertedRgb565" : [ -122 ] + }, "tile" : { "width" : 16, "height" : 16, "paletteIndices" : "AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEBAQEBAQEBAQEBAQAAAAABAQEBAQEBAQEBAQEAAAAAAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAABAQEBAQEAAAAAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQ==" - }, - "palette" : { - "originalArgb8888" : [ -265674 ], - "convertedRgb565" : [ -122 ] } } } ] @@ -43,14 +43,14 @@ "last_modified" : 1773253076764, "fingerprint" : "aa7d241deabcebe29a6096e14eaf16fdc06cf06380c11a507620b00fc7bff094", "metadata" : { + "palette" : { + "originalArgb8888" : [ -265674 ], + "convertedRgb565" : [ -122 ] + }, "tile" : { "width" : 16, "height" : 16, "paletteIndices" : "AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAEBAQEBAQEBAQEBAQAAAAABAQEBAQEBAQEBAQEAAAAAAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAABAQEBAQEAAAAAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQ==" - }, - "palette" : { - "originalArgb8888" : [ -265674 ], - "convertedRgb565" : [ -122 ] } } } ] diff --git a/test-projects/main/assets/ui/atlas2/asset.json b/test-projects/main/assets/ui/atlas2/asset.json index a55d4de0..ac0b28fe 100644 --- a/test-projects/main/assets/ui/atlas2/asset.json +++ b/test-projects/main/assets/ui/atlas2/asset.json @@ -15,5 +15,8 @@ "preload" : { "enabled" : true }, - "artifacts" : [ ] + "artifacts" : [ { + "file" : "confirm.png", + "index" : 0 + } ] } \ No newline at end of file diff --git a/test-projects/main/assets/ui/atlas2/confirm.tile.json b/test-projects/main/assets/ui/atlas2/confirm.tile.json index c83d7359..19855a64 100644 --- a/test-projects/main/assets/ui/atlas2/confirm.tile.json +++ b/test-projects/main/assets/ui/atlas2/confirm.tile.json @@ -1,5 +1,5 @@ { - "paletteIndices" : [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 ], "width" : 16, - "height" : 16 + "height" : 16, + "paletteIndices" : [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 ] } \ No newline at end of file