# UnifiedControl Technical Specification dev-0.3.3

UnifiedControl is the common iToolkits Control Framework and Control Designer package. It supplies UI Control infrastructure, reusable UI and layout component definitions, generic designer canvas, workbench/dock views, property editor foundation, i18n, theme, dialog and regression utilities.

UnifiedControl does not own Form Schema, Form Validation or Form Data Binding. Those remain in UnifiedForm because Form is an executable screen-level Control built on top of UnifiedControl concepts.

## dev-0.3.2 Addendum: Control class hierarchy cleanup

This milestone applies the confirmed class hierarchy policy.

### Control definition

A Control is always a Host-facing UI component. UI-less responsibilities are not modeled as Control classes.

### Class structure

```text
Control
  ├─ ContentControl
  └─ DesignerControl
       └─ UnifiedControlDesignerControl
```

Application packages such as UnifiedWriter, UnifiedSpread and UnifiedSlide may define DocumentControl, SheetControl and SlideControl by extending Control directly because their internal models are not generic ContentControl component trees.

### Removed naming

`BaseControl.js` and `BaseControl` export were removed. Development builds do not keep compatibility aliases because keeping both names would make the official base class ambiguous.

### ContentControl

`ContentControl` represents a designable composite Control similar to a UserControl. It owns a `content` attribute and supports ControlContent load/save APIs. It is appropriate for FormControl, PageControl and DashboardControl style packages.

### Workbench and Dialog

Workbench is implemented as reusable View / Manager classes owned by a Control. It is not a base Control class.

Dialog is exposed through `control.dialog()` and implemented by DialogService. There is no DialogControl class.

## dev-0.3.0 Addendum: Designer Canvas editing foundation

The generic Designer Canvas supports multi-selection, rubber-band selection, grid snap, undo/redo, keyboard operations, arrange commands and model-level nesting.

The nested model is stored as `component.children`. It is still a generic component tree. Application-specific schema adapters, validation rules, data binding and runtime rendering remain outside UnifiedControl.

## dev-0.3.1 Addendum: Positioning guides

Designer Canvas positioning usability was strengthened with smart guides, near-distance hints, palette drop markers, group selection box and equal-gap distribution.


## dev-0.3.3 File processing and event code model

The Designer is the visual editor for `ContentControl.content`. The edited content can now be saved as a single native `.uctlx` work file via Host `OpenFile` / `SaveFile` callbacks. The file contains UI component tree, layout, properties, metadata and event handler definitions. Event source code is stored as definition data and must not be automatically executed while loading. Runtime execution is a later capability-controlled concern owned by the Host or application runtime.
