class ViewManager { constructor(app) { this.app = app; } // Switch to 2D view switchTo2D() { this.app.threeJSManager.hide3DViewer(); this.app.redraw(); // Refresh 2D canvas } // Switch to 3D view switchTo3D() { console.log('ViewManager: switchTo3D called'); console.log('Design elements:', this.app.designElements); this.app.threeJSManager.show3DViewer(); this.app.threeJSManager.convertTo3D(this.app.designElements); } // Toggle between 2D and 3D views toggleView() { this.app.threeJSManager.toggleView(this.app.designElements); } // Legacy method for backward compatibility convertTo3D() { this.switchTo3D(); } // Zoom and pan methods zoomIn() { this.app.zoomPanManager.zoomIn(); this.app.redraw(); } zoomOut() { this.app.zoomPanManager.zoomOut(); this.app.redraw(); } resetZoom() { this.app.zoomPanManager.resetZoom(); this.app.redraw(); } // Display toggle methods toggleGrid() { this.app.canvasManager.showGrid = !this.app.canvasManager.showGrid; this.app.canvasManager.updateGridStatus(); this.updateToggleButton('toggleGridBtn', this.app.canvasManager.showGrid); this.app.redraw(); } toggleMeasurements() { this.app.canvasManager.showMeasurements = !this.app.canvasManager.showMeasurements; this.updateToggleButton('toggleMeasurementsBtn', this.app.canvasManager.showMeasurements); this.app.redraw(); } toggleSnap() { this.app.toolManager.snapToGrid = !this.app.toolManager.snapToGrid; this.updateToggleButton('toggleSnapBtn', this.app.toolManager.snapToGrid); } // Update toggle button appearance updateToggleButton(buttonId, isActive) { const button = document.getElementById(buttonId); if (button) { if (isActive) { button.classList.add('bg-green-100'); button.classList.remove('bg-gray-100'); } else { button.classList.remove('bg-green-100'); button.classList.add('bg-gray-100'); } } } }