Files
XCEngine/editor/src/panels/ProjectPanel.h

44 lines
1.4 KiB
C
Raw Normal View History

#pragma once
#include "Panel.h"
#include "Core/AssetItem.h"
2026-03-26 21:18:33 +08:00
#include "UI/PopupState.h"
#include "UI/TreeView.h"
namespace XCEngine {
namespace Editor {
class ProjectPanel : public Panel {
public:
ProjectPanel();
void Render() override;
void Initialize(const std::string& projectPath);
private:
struct AssetItemInteraction {
bool clicked = false;
bool contextRequested = false;
bool openRequested = false;
std::string droppedSourcePath;
};
void RenderToolbar();
void RenderFolderTreePane(IProjectManager& manager);
void RenderFolderTreeNode(IProjectManager& manager, const AssetItemPtr& folder, const std::string& currentFolderPath);
void RenderBrowserPane(IProjectManager& manager);
void RenderBrowserHeader(IProjectManager& manager);
AssetItemInteraction RenderAssetItem(const AssetItemPtr& item, bool isSelected);
static bool MatchesSearch(const AssetItemPtr& item, const std::string& search);
static bool IsCurrentTreeBranch(const std::string& currentFolderPath, const std::string& folderPath);
char m_searchBuffer[256] = "";
float m_navigationWidth = UI::ProjectNavigationDefaultWidth();
UI::TreeViewState m_folderTreeState;
2026-03-26 21:18:33 +08:00
UI::TextInputPopupState<256> m_createFolderDialog;
UI::DeferredPopupState m_emptyContextMenu;
2026-03-26 23:52:05 +08:00
UI::TargetedPopupState<AssetItemPtr> m_itemContextMenu;
};
}
2026-03-26 21:18:33 +08:00
}