ATF Programmer's Guide - kaisu1986/ATF GitHub Wiki
The ATF Programmer's Guide assists programmers in writing ATF applications. Its topics include:
- How to create an ATF application from an ATF sample.
- Using and creating Managed Extensibility Framework (MEF) components in ATF to quickly add capabilities to your application.
- Learning about key ATF concepts, such as adaptation and contexts.
- Seeing how basic tasks, such as adding commands and controls, are done in ATF.
- Writing an editor application using ATF.
This Guide discusses the ATF Document Object Model (DOM) in the DOM in a Nutshell section. Some of the concepts discussed here, such as adaptation, apply to the DOM, and you should probably read the sections Adaptation in ATF and ATF Contexts before the DOM section. For more details on using the ATF DOM, download the ATF Programmer's Guide: Document Object Model (DOM) from ATF Documentation.
This guide contains the following sections:
- ATF Structure: Structure of ATF, guiding you to find what you need to develop specific items in ATF.
- Creating an Application from an ATF Sample: Starting with an ATF sample, shows how to develop a new application.
- MEF with ATF: Introduction to the Managed Extensibility Framework (MEF), and how to use existing MEF components in ATF and develop your own components.
- ATF Application Basics and Services: Information on basic structure of an ATF-based application, for both WinForms and ATF, including discussing the Application Shell Framework.
- Controls in ATF: How to use controls in ATF, including the component, and a survey of ATF custom controls and dialogs.
- Commands in ATF: Adding custom commands for application menus, buttons, and other controls, including context menus.
- Adaptation in ATF: How to support different kinds of data models and managed data stores, such as a DOM or other CLR objects, by converting objects to other types.
- ATF Contexts: Using the variety of ATF contexts, which are logical views of application data presented to a user for viewing or editing.
- DOM in a Nutshell: What you need to know to use the ATF Document Object Model (DOM), which is a framework for managing application data as a tree of nodes that can be adapted to other objects, edited, monitored, and stored persistently.
- Instancing In ATF: Using the Instancing Framework, which works with object instances that can be edited, that is, copied, inserted, or deleted.
- Documents in ATF: Using components to track documents that a user is working on.
- Property Editing in ATF: How to edit properties of application data, setting up property descriptors, value editors, editing controls, and converters, and using property editing components.
- Creating an Editor Application: Shows how to create an editor application using the facilities ATF offers.
- Graphs in ATF: Description of graph support in ATF, such as in circuits and statecharts.
- Timelines in ATF: Discussion of timelines, which are graphical representations of time-sequences.
- Development, Debugging, and Testing: Discusses techniques for developing, debugging, and testing applications developed using ATF.
- Special Topics: Covers topics of special interest to some developers.
- ATF Code Samples Discussions: Overview of ATF samples, including their programming.
- ATF Glossary: Glossary defining ATF technical terms and utilities.

- Choose ATF Sample to Base Application On
- Copy ATF Sample and Run It
- Start Customizing Your Application Software
- Define Your Application's New Data Model
- Modify Your Application's Existing Software
- Add New Code and Parts to Your Application
- Build, Run, and Debug Your Application

- What is MEF
- How MEF is Used in ATF
- Initializing Components
- Using ATF Components
- Creating MEF Components
- Important ATF Components
- Details on Selected ATF Components
- Finding ATF Components

- WinForms Application
- WPF Application
- ControlHostService Component
- CommandService Component
- SettingsService Component
- StatusService Component
- Other ATF Services

- Using Controls in ATF
- ControlInfo and ControlDef Classes
- ATF Control Groups
- Registering Controls
- Creating Control Clients
- Using WinForms Controls in WPF
- Adaptable Controls
- ATF Custom Controls
- ATF Custom Dialogs

- Using Commands in ATF
- CommandInfo and CommandDef Classes
- ATF Command Groups
- Using Standard Command Components
- Registering Menus and Commands
- Creating Command Clients
- Using WinForms Commands in WPF
- Using Context Menus

- What is Adaptation
- General Adaptation Interfaces
- General Adaptation Classes
- Control Adapters
- Other Adaptation Classes
- Adapting to All Available Interfaces

- What is a Context
- Context Registry
- Context Interfaces
- Context Classes
- Context Related Classes
- Implementing a Context Interface

- What is the DOM For
- It All Starts With Data
- DomNodes and DOM Metadata Classes
- Type Loaders
- DOM Adapters
- DOM Property Descriptors
- Using DOM Metadata for Palettes and Other Items
- DOM Persistence
- DOM Debugging
- DOM Use in Simple DOM Editor

- What is Instancing
- IInstancingContext and IHierarchicalInsertionContext Interfaces
- StandardEditCommands and Instancing
- Drag and Drop and Instancing
- Implementing Instancing

- What is a Document in ATF
- Document Registry and Services
- Document Handling Components
- Implementing a Document and Its Client

- Using Properties in ATF
- Selection Property Editing Context
- Property Descriptors
- Value Editors
- Value Editors and Value Editing Controls
- Value Converters
- Property Editor Components
- Implementing a Property Editor

- Designing the Application Data Model with the DOM
- Creating Documents for Application Data
- Editing and Selecting Data with Contexts
- Creating Data Instances
- Editing Data Properties
- Role Playing with Adaptation

- What is a Graph in ATF
- Graph Data Model
- Types of Graphs
- ATF Graph Interfaces
- General Graph Support
- Circuit Graph Support
- Statechart Graph Support

- What is a Timeline in ATF
- Timeline Interfaces
- WinForms Timeline Renderers, Controls, and Manipulators
- General Timeline Classes

- Debugging the DOM with Visual Studio
- Visual Studio Debugger Display Attributes and Other Features
- Using DomExplorer
- Using the DomRecorder Component
- General ATF Scripting Support
- Scripting Applications with Python
- ATF Test Code
- Writing Python Scripts for ATF Applications


- Circuit Editor Programming Discussion
- Code Editor Programming Discussion
- Diagram Editor Programming Discussion
- DOM Property Editor Programming Discussion
- DOM Tree Editor Programming Discussion
- File Explorer Programming Discussion
- FSM Editor Programming Discussion
- Model Viewer Programming Discussion
- Simple DOM Editor Programming Discussion
- Simple DOM No XML Editor Programming Discussion
- State Chart Editor Programming Discussion
- Target Manager Programming Discussion
- Timeline Editor Programming Discussion
- Tree List Editor Programming Discussion
- Using Dom Programming Discussion
- WinForms and WPF Apps Programming Discussion
