Add more functionality and thumbnail to content items in finder for scripts
This commit is contained in:
@@ -139,8 +139,8 @@ namespace FlaxEditor.Windows.Search
|
||||
{
|
||||
var item = items[i];
|
||||
SearchItem searchItem;
|
||||
if (item.Item is AssetItem assetItem)
|
||||
searchItem = new AssetSearchItem(item.Name, item.Type, assetItem, this, itemsWidth, itemHeight);
|
||||
if (item.Item is ContentItem contentItem)
|
||||
searchItem = new ContentSearchItem(item.Name, item.Type, contentItem, this, itemsWidth, itemHeight);
|
||||
else
|
||||
searchItem = new SearchItem(item.Name, item.Type, item.Item, this, itemsWidth, itemHeight);
|
||||
searchItem.Y = i * itemHeight;
|
||||
|
||||
@@ -113,17 +113,17 @@ namespace FlaxEditor.Windows.Search
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The <see cref="SearchItem"/> for assets. Supports using asset thumbnail.
|
||||
/// The <see cref="SearchItem"/> for assets. Supports using content item thumbnail.
|
||||
/// </summary>
|
||||
/// <seealso cref="FlaxEditor.Windows.Search.SearchItem" />
|
||||
/// <seealso cref="FlaxEditor.Content.IContentItemOwner" />
|
||||
internal class AssetSearchItem : SearchItem, IContentItemOwner
|
||||
internal class ContentSearchItem : SearchItem, IContentItemOwner
|
||||
{
|
||||
private AssetItem _asset;
|
||||
private FlaxEditor.GUI.ContextMenu.ContextMenu _cm;
|
||||
private ContentItem _asset;
|
||||
private ContextMenu _cm;
|
||||
|
||||
/// <inheritdoc />
|
||||
public AssetSearchItem(string name, string type, AssetItem item, ContentFinder finder, float width, float height)
|
||||
public ContentSearchItem(string name, string type, ContentItem item, ContentFinder finder, float width, float height)
|
||||
: base(name, type, item, finder, width, height)
|
||||
{
|
||||
_asset = item;
|
||||
@@ -136,31 +136,41 @@ namespace FlaxEditor.Windows.Search
|
||||
/// <inheritdoc />
|
||||
public override bool OnShowTooltip(out string text, out Float2 location, out Rectangle area)
|
||||
{
|
||||
if (string.IsNullOrEmpty(TooltipText) && Item is AssetItem assetItem)
|
||||
if (string.IsNullOrEmpty(TooltipText) && Item is ContentItem contentItem)
|
||||
{
|
||||
assetItem.UpdateTooltipText();
|
||||
TooltipText = assetItem.TooltipText;
|
||||
contentItem.UpdateTooltipText();
|
||||
TooltipText = contentItem.TooltipText;
|
||||
}
|
||||
return base.OnShowTooltip(out text, out location, out area);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool OnMouseDown(Float2 location, MouseButton button)
|
||||
{
|
||||
if (base.OnMouseDown(location, button))
|
||||
return true;
|
||||
if (button == MouseButton.Right && Item is ContentItem)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool OnMouseUp(Float2 location, MouseButton button)
|
||||
{
|
||||
if (base.OnMouseUp(location, button))
|
||||
return true;
|
||||
if (button == MouseButton.Right && Item is AssetItem assetItem)
|
||||
if (button == MouseButton.Right && Item is ContentItem contentItem)
|
||||
{
|
||||
// Show context menu
|
||||
var proxy = Editor.Instance.ContentDatabase.GetProxy(assetItem);
|
||||
var proxy = Editor.Instance.ContentDatabase.GetProxy(contentItem);
|
||||
ContextMenuButton b;
|
||||
var cm = new FlaxEditor.GUI.ContextMenu.ContextMenu { Tag = assetItem };
|
||||
var cm = new ContextMenu { Tag = contentItem };
|
||||
b = cm.AddButton("Open", () => Editor.Instance.ContentFinding.Open(Item));
|
||||
cm.AddSeparator();
|
||||
cm.AddButton(Utilities.Constants.ShowInExplorer, () => FileSystem.ShowFileExplorer(System.IO.Path.GetDirectoryName(assetItem.Path)));
|
||||
cm.AddButton("Show in Content window", () => Editor.Instance.Windows.ContentWin.Select(assetItem, true));
|
||||
b.Enabled = proxy != null && proxy.CanReimport(assetItem);
|
||||
if (assetItem is BinaryAssetItem binaryAsset)
|
||||
cm.AddButton(Utilities.Constants.ShowInExplorer, () => FileSystem.ShowFileExplorer(System.IO.Path.GetDirectoryName(contentItem.Path)));
|
||||
cm.AddButton("Show in Content window", () => Editor.Instance.Windows.ContentWin.Select(contentItem, true));
|
||||
b.Enabled = proxy != null && proxy.CanReimport(contentItem);
|
||||
if (contentItem is BinaryAssetItem binaryAsset)
|
||||
{
|
||||
if (!binaryAsset.GetImportPath(out string importPath))
|
||||
{
|
||||
@@ -172,14 +182,17 @@ namespace FlaxEditor.Windows.Search
|
||||
}
|
||||
}
|
||||
cm.AddSeparator();
|
||||
cm.AddButton("Copy asset ID", () => Clipboard.Text = FlaxEngine.Json.JsonSerializer.GetStringID(assetItem.ID));
|
||||
cm.AddButton("Select actors using this asset", () => Editor.Instance.SceneEditing.SelectActorsUsingAsset(assetItem.ID));
|
||||
cm.AddButton("Show asset references graph", () => Editor.Instance.Windows.Open(new AssetReferencesGraphWindow(Editor.Instance, assetItem)));
|
||||
cm.AddSeparator();
|
||||
proxy?.OnContentWindowContextMenu(cm, assetItem);
|
||||
assetItem.OnContextMenu(cm);
|
||||
cm.AddButton("Copy name to Clipboard", () => Clipboard.Text = assetItem.NamePath);
|
||||
cm.AddButton("Copy path to Clipboard", () => Clipboard.Text = assetItem.Path);
|
||||
if (contentItem is AssetItem assetItem)
|
||||
{
|
||||
cm.AddButton("Copy asset ID", () => Clipboard.Text = FlaxEngine.Json.JsonSerializer.GetStringID(assetItem.ID));
|
||||
cm.AddButton("Select actors using this asset", () => Editor.Instance.SceneEditing.SelectActorsUsingAsset(assetItem.ID));
|
||||
cm.AddButton("Show asset references graph", () => Editor.Instance.Windows.Open(new AssetReferencesGraphWindow(Editor.Instance, assetItem)));
|
||||
cm.AddButton("Copy name to Clipboard", () => Clipboard.Text = assetItem.NamePath);
|
||||
cm.AddButton("Copy path to Clipboard", () => Clipboard.Text = assetItem.Path);
|
||||
cm.AddSeparator();
|
||||
}
|
||||
proxy?.OnContentWindowContextMenu(cm, contentItem);
|
||||
contentItem.OnContextMenu(cm);
|
||||
cm.Show(this, location);
|
||||
_cm = cm;
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user