diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs
index 8d73abf4d..43d81ee1e 100644
--- a/Source/Editor/Utilities/Utils.cs
+++ b/Source/Editor/Utilities/Utils.cs
@@ -383,6 +383,28 @@ namespace FlaxEditor.Utilities
File.Delete(file);
}
+ ///
+ /// Creates an Import path ui that show the asset import path and adds a button to show the folder in the file system.
+ ///
+ /// The parent layout container.
+ /// The asset item to get the import path of.
+ public static void CreateImportPathUI(CustomEditors.LayoutElementsContainer parentLayout, Content.BinaryAssetItem assetItem)
+ {
+ assetItem.GetImportPath(out var path);
+ if (!string.IsNullOrEmpty(path))
+ {
+ parentLayout.Space(5);
+ parentLayout.Label("Import Path:");
+ var textBox = parentLayout.TextBox().TextBox;
+ textBox.TooltipText = "Path is not editable here.";
+ textBox.IsReadOnly = true;
+ textBox.Text = path;
+ parentLayout.Space(2);
+ var button = parentLayout.Button(Constants.ShowInExplorer).Button;
+ button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
+ }
+ }
+
///
/// Copies the directory. Supports subdirectories copy with files override option.
///
diff --git a/Source/Editor/Windows/Assets/AnimationWindow.cs b/Source/Editor/Windows/Assets/AnimationWindow.cs
index b03eae515..09127a818 100644
--- a/Source/Editor/Windows/Assets/AnimationWindow.cs
+++ b/Source/Editor/Windows/Assets/AnimationWindow.cs
@@ -210,20 +210,9 @@ namespace FlaxEditor.Windows.Assets
var importSettingsField = typeof(PropertiesProxy).GetField("ImportSettings", BindingFlags.NonPublic | BindingFlags.Instance);
var importSettingsValues = new ValueContainer(new ScriptMemberInfo(importSettingsField)) { proxy.ImportSettings };
group.Object(importSettingsValues);
-
- (proxy.Window.Item as BinaryAssetItem).GetImportPath(out var path);
- if (!string.IsNullOrEmpty(path))
- {
- layout.Space(5);
- layout.Label("Import Path:");
- var textBox = layout.TextBox().TextBox;
- textBox.TooltipText = "Path is not editable here.";
- textBox.IsReadOnly = true;
- textBox.Text = path;
- layout.Space(2);
- var button = layout.Button("Open Import Path in Explorer").Button;
- button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
- }
+
+ // Creates the import path UI
+ Utilities.Utils.CreateImportPathUI(layout, proxy.Window.Item as BinaryAssetItem);
layout.Space(5);
var reimportButton = layout.Button("Reimport");
diff --git a/Source/Editor/Windows/Assets/AudioClipWindow.cs b/Source/Editor/Windows/Assets/AudioClipWindow.cs
index e44a4dd4c..87638f8e0 100644
--- a/Source/Editor/Windows/Assets/AudioClipWindow.cs
+++ b/Source/Editor/Windows/Assets/AudioClipWindow.cs
@@ -100,20 +100,9 @@ namespace FlaxEditor.Windows.Assets
}
base.Initialize(layout);
-
- (window.Item as BinaryAssetItem).GetImportPath(out var path);
- if (!string.IsNullOrEmpty(path))
- {
- layout.Space(5);
- layout.Label("Import Path:");
- var textBox = layout.TextBox().TextBox;
- textBox.TooltipText = "Path is not editable here.";
- textBox.IsReadOnly = true;
- textBox.Text = path;
- layout.Space(2);
- var button = layout.Button("Open Import Path in Explorer").Button;
- button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
- }
+
+ // Creates the import path UI
+ Utilities.Utils.CreateImportPathUI(layout, window.Item as BinaryAssetItem);
layout.Space(10);
var reimportButton = layout.Button("Reimport");
diff --git a/Source/Editor/Windows/Assets/CubeTextureWindow.cs b/Source/Editor/Windows/Assets/CubeTextureWindow.cs
index 0efcc3fde..63c697ef2 100644
--- a/Source/Editor/Windows/Assets/CubeTextureWindow.cs
+++ b/Source/Editor/Windows/Assets/CubeTextureWindow.cs
@@ -53,20 +53,9 @@ namespace FlaxEditor.Windows.Assets
}
base.Initialize(layout);
-
- (window.Item as BinaryAssetItem).GetImportPath(out var path);
- if (!string.IsNullOrEmpty(path))
- {
- layout.Space(5);
- layout.Label("Import Path:");
- var textBox = layout.TextBox().TextBox;
- textBox.TooltipText = "Path is not editable here.";
- textBox.IsReadOnly = true;
- textBox.Text = path;
- layout.Space(2);
- var button = layout.Button("Open Import Path in Explorer").Button;
- button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
- }
+
+ // Creates the import path UI
+ Utilities.Utils.CreateImportPathUI(layout, window.Item as BinaryAssetItem);
layout.Space(10);
var reimportButton = layout.Button("Reimport");
diff --git a/Source/Editor/Windows/Assets/ModelWindow.cs b/Source/Editor/Windows/Assets/ModelWindow.cs
index 58ee67d67..3410db0b1 100644
--- a/Source/Editor/Windows/Assets/ModelWindow.cs
+++ b/Source/Editor/Windows/Assets/ModelWindow.cs
@@ -759,19 +759,8 @@ namespace FlaxEditor.Windows.Assets
var importSettingsValues = new ValueContainer(new ScriptMemberInfo(importSettingsField)) { proxy.ImportSettings };
group.Object(importSettingsValues);
- (proxy.Window.Item as BinaryAssetItem).GetImportPath(out var path);
- if (!string.IsNullOrEmpty(path))
- {
- layout.Space(5);
- layout.Label("Import Path:");
- var textBox = layout.TextBox().TextBox;
- textBox.TooltipText = "Path is not editable here.";
- textBox.IsReadOnly = true;
- textBox.Text = path;
- layout.Space(2);
- var button = layout.Button("Open Import Path in Explorer").Button;
- button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
- }
+ // Creates the import path UI
+ Utilities.Utils.CreateImportPathUI(layout, proxy.Window.Item as BinaryAssetItem);
layout.Space(5);
var reimportButton = layout.Button("Reimport");
diff --git a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs
index e2e1bf4da..a53e7a44f 100644
--- a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs
+++ b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs
@@ -1022,20 +1022,9 @@ namespace FlaxEditor.Windows.Assets
var importSettingsField = typeof(ImportPropertiesProxy).GetField("ImportSettings", BindingFlags.NonPublic | BindingFlags.Instance);
var importSettingsValues = new ValueContainer(new ScriptMemberInfo(importSettingsField)) { proxy.ImportSettings };
group.Object(importSettingsValues);
-
- (proxy.Window.Item as BinaryAssetItem).GetImportPath(out var path);
- if (!string.IsNullOrEmpty(path))
- {
- layout.Space(5);
- layout.Label("Import Path:");
- var textBox = layout.TextBox().TextBox;
- textBox.TooltipText = "Path is not editable here.";
- textBox.IsReadOnly = true;
- textBox.Text = path;
- layout.Space(2);
- var button = layout.Button("Open Import Path in Explorer").Button;
- button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
- }
+
+ // Creates the import path UI
+ Utilities.Utils.CreateImportPathUI(layout, proxy.Window.Item as BinaryAssetItem);
layout.Space(5);
var reimportButton = layout.Button("Reimport");
diff --git a/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs b/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs
index b220a6156..cbcecf1df 100644
--- a/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs
+++ b/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs
@@ -119,20 +119,9 @@ namespace FlaxEditor.Windows.Assets
}
base.Initialize(layout);
-
- (proxy._window.Item as BinaryAssetItem).GetImportPath(out var path);
- if (!string.IsNullOrEmpty(path))
- {
- layout.Space(5);
- layout.Label("Import Path:");
- var textBox = layout.TextBox().TextBox;
- textBox.TooltipText = "Path is not editable here.";
- textBox.IsReadOnly = true;
- textBox.Text = path;
- layout.Space(2);
- var button = layout.Button("Open Import Path in Explorer").Button;
- button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
- }
+
+ // Creates the import path UI
+ Utilities.Utils.CreateImportPathUI(layout, proxy._window.Item as BinaryAssetItem);
layout.Space(10);
var reimportButton = layout.Button("Reimport");
diff --git a/Source/Editor/Windows/Assets/TextureWindow.cs b/Source/Editor/Windows/Assets/TextureWindow.cs
index 3e1d436b3..43c499f6e 100644
--- a/Source/Editor/Windows/Assets/TextureWindow.cs
+++ b/Source/Editor/Windows/Assets/TextureWindow.cs
@@ -144,20 +144,9 @@ namespace FlaxEditor.Windows.Assets
// Import settings
base.Initialize(layout);
-
- (proxy._window.Item as BinaryAssetItem).GetImportPath(out var path);
- if (!string.IsNullOrEmpty(path))
- {
- layout.Space(5);
- layout.Label("Import Path:");
- var textBox = layout.TextBox().TextBox;
- textBox.TooltipText = "Path is not editable here.";
- textBox.IsReadOnly = true;
- textBox.Text = path;
- layout.Space(2);
- var button = layout.Button("Open Import Path in Explorer").Button;
- button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path));
- }
+
+ // Creates the import path UI
+ Utilities.Utils.CreateImportPathUI(layout, proxy._window.Item as BinaryAssetItem);
// Reimport
layout.Space(10);