// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. using FlaxEditor.Content; using FlaxEditor.CustomEditors; using FlaxEditor.GUI; using FlaxEngine; using FlaxEngine.GUI; namespace FlaxEditor.Windows.Assets { /// /// Editor window to view/modify asset. /// /// /// public sealed class JsonAssetWindow : AssetEditorWindowBase { private readonly CustomEditorPresenter _presenter; private readonly ToolStripButton _saveButton; private object _object; /// public JsonAssetWindow(Editor editor, AssetItem item) : base(editor, item) { // Toolstrip _saveButton = (ToolStripButton)_toolstrip.AddButton(editor.Icons.Save32, Save).LinkTooltip("Save"); // Panel var panel = new Panel(ScrollBars.Vertical) { AnchorPreset = AnchorPresets.StretchAll, Offsets = new Margin(0, 0, _toolstrip.Bottom, 0), Parent = this }; // Properties _presenter = new CustomEditorPresenter(null, "Loading..."); _presenter.Panel.Parent = panel; _presenter.Modified += MarkAsEdited; } /// public override void Save() { if (!IsEdited) return; if (_asset.WaitForLoaded()) { return; } if (Editor.SaveJsonAsset(_item.Path, _object)) { Editor.LogError("Cannot save asset."); return; } ClearEditedFlag(); _item.RefreshThumbnail(); } /// protected override void UpdateToolstrip() { _saveButton.Enabled = IsEdited; base.UpdateToolstrip(); } /// protected override void OnAssetLoaded() { _object = Asset.CreateInstance(); _presenter.Select(_object); ClearEditedFlag(); base.OnAssetLoaded(); } /// public override void OnItemReimported(ContentItem item) { // Refresh the properties (will get new data in OnAssetLoaded) _presenter.Deselect(); ClearEditedFlag(); base.OnItemReimported(item); } } }