Skip to content

窗口管理 API

Trae IDE 提供了强大的窗口管理功能,允许开发者控制编辑器窗口的行为和外观。

概述

窗口管理 API 提供了以下核心功能:

  • 窗口状态管理
  • 多窗口支持
  • 窗口布局控制
  • 焦点管理

主要接口

Window 对象

typescript
interface Window {
  // 窗口标识
  id: string
  
  // 窗口状态
  isActive: boolean
  isVisible: boolean
  isMaximized: boolean
  isMinimized: boolean
  
  // 窗口操作
  show(): void
  hide(): void
  close(): void
  maximize(): void
  minimize(): void
  restore(): void
  
  // 焦点管理
  focus(): void
  blur(): void
}

窗口事件

窗口状态变化

typescript
// 监听窗口激活事件
window.onDidChangeActiveState((isActive: boolean) => {
  console.log('窗口激活状态:', isActive)
})

// 监听窗口可见性变化
window.onDidChangeVisibility((isVisible: boolean) => {
  console.log('窗口可见性:', isVisible)
})

窗口生命周期

typescript
// 窗口创建事件
window.onDidCreate(() => {
  console.log('窗口已创建')
})

// 窗口关闭事件
window.onWillClose(() => {
  console.log('窗口即将关闭')
  // 可以在这里保存数据或执行清理操作
})

多窗口管理

创建新窗口

typescript
import { createWindow } from 'trae-api'

// 创建新的编辑器窗口
const newWindow = await createWindow({
  width: 1200,
  height: 800,
  title: '新窗口',
  workspace: '/path/to/workspace'
})

获取所有窗口

typescript
import { getAllWindows } from 'trae-api'

// 获取所有打开的窗口
const windows = getAllWindows()
windows.forEach(window => {
  console.log(`窗口 ${window.id}: ${window.title}`)
})

窗口布局

分割窗口

typescript
// 水平分割当前窗口
window.split('horizontal')

// 垂直分割当前窗口
window.split('vertical')

窗口组管理

typescript
// 创建窗口组
const group = window.createGroup({
  orientation: 'horizontal',
  size: 0.5
})

// 将窗口添加到组
group.addWindow(window)

实用示例

自动保存窗口状态

typescript
// 保存窗口状态到本地存储
function saveWindowState() {
  const state = {
    position: window.getPosition(),
    size: window.getSize(),
    isMaximized: window.isMaximized
  }
  localStorage.setItem('windowState', JSON.stringify(state))
}

// 恢复窗口状态
function restoreWindowState() {
  const savedState = localStorage.getItem('windowState')
  if (savedState) {
    const state = JSON.parse(savedState)
    window.setPosition(state.position)
    window.setSize(state.size)
    if (state.isMaximized) {
      window.maximize()
    }
  }
}

窗口间通信

typescript
// 向其他窗口发送消息
window.postMessage('other-window-id', {
  type: 'data-update',
  payload: { /* 数据 */ }
})

// 监听来自其他窗口的消息
window.onMessage((message) => {
  if (message.type === 'data-update') {
    // 处理数据更新
    updateUI(message.payload)
  }
})

最佳实践

  1. 资源清理: 在窗口关闭前清理事件监听器和定时器
  2. 状态持久化: 保存重要的窗口状态以便下次启动时恢复
  3. 性能优化: 避免在不可见窗口中执行重计算操作
  4. 用户体验: 提供直观的窗口管理快捷键

相关 API

您的终极 AI 驱动 IDE 学习指南