@isthatuzii/create-nano-app
Version:
Desktop application scaffolding tool for the Nano Framework
115 lines (97 loc) • 3.25 kB
JSX
import { createSignal, onMount } from "solid-js";
import "./TemplateApp.css";
// Layout Components
import TopMenuBar from "./components/layout/TopMenuBar.jsx";
import IconToolbar from "./components/layout/IconToolbar.jsx";
import DataBrowser from "./components/layout/DataBrowser.jsx";
import MainWorkspace from "./components/layout/MainWorkspace.jsx";
import PropertiesPanel from "./components/layout/PropertiesPanel.jsx";
function TemplateApp() {
const [appState, setAppState] = createSignal({
status: "Ready",
version: "v0.1.0",
selectedTool: 'open',
selectedItem: null,
activeTab: null
});
let propertiesPanelRef;
let mainWorkspaceRef;
const handleMenuSelect = (menuId) => {
console.log("Menu selected:", menuId);
};
const handleToolSelect = (toolId) => {
setAppState(prev => ({
...prev,
selectedTool: toolId
}));
console.log("Tool selected:", toolId);
};
const handleItemSelect = (item) => {
setAppState(prev => ({
...prev,
selectedItem: item
}));
// Update properties panel
if (propertiesPanelRef && propertiesPanelRef.functions) {
propertiesPanelRef.functions.handleItemSelection(item);
}
// Open tab in main workspace if it's an entity
if (mainWorkspaceRef && mainWorkspaceRef.functions && item.type === 'EntityClassDefinition') {
mainWorkspaceRef.functions.openTab(item);
}
console.log("Item selected:", item);
};
const handleTabChange = (tabId) => {
setAppState(prev => ({
...prev,
activeTab: tabId
}));
console.log("Tab changed:", tabId);
};
return (
<div class="blender-app">
{/* Top Menu Bar */}
<TopMenuBar onMenuSelect={handleMenuSelect} />
{/* Main Layout */}
<div class="app-layout">
{/* Left Icon Toolbar */}
<IconToolbar
onToolSelect={handleToolSelect}
/>
{/* Left Data Browser */}
<DataBrowser
onItemSelect={handleItemSelect}
/>
{/* Main Workspace */}
<MainWorkspace
ref={mainWorkspaceRef}
onTabChange={handleTabChange}
selectedItem={appState().selectedItem}
/>
{/* Right Properties Panel */}
<PropertiesPanel
ref={propertiesPanelRef}
selectedItem={appState().selectedItem}
/>
</div>
{/* Status Bar */}
<div class="status-bar">
<div class="status-left">
<span class="status-item">{appState().status}</span>
<span class="status-separator">|</span>
<span class="status-item">Nano Framework {appState().version}</span>
</div>
<div class="status-right">
<span class="status-item">Tool: {appState().selectedTool}</span>
{appState().selectedItem && (
<>
<span class="status-separator">|</span>
<span class="status-item">Selected: {appState().selectedItem.name}</span>
</>
)}
</div>
</div>
</div>
);
}
export default TemplateApp;