Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>MG IDO Pro EditorNew to Visual Studio Code? Get it now.
MG IDO Pro Editor

MG IDO Pro Editor

Jeking

| (0) | Free
Visual editor for Mongoose IDO Collection metadata (ObjectStudioExport XML).
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Mongoose IDO Metadata Editor

A VS Code / Kiro IDE extension for editing Mongoose IDO Collection metadata (ObjectStudioExport XML) through a friendly, visual UI instead of hand-editing deeply nested XML.

Version 1.0.4. See CHANGELOG.md for release notes and DESIGN.md for the design and roadmap.

Features (v1)

  • Visual custom editor for any **/Collections/**/*.xml IDO file, with tabs:
    • Properties — the primary working view: a sticky Identity bar (name, module, ext-class, revision, inline-editable description), a read-only property grid (# · Name · Binding badge · Class · Source) that filters, sorts and scrolls independently, and a resizable, toggleable editor side panel that stays in view. The panel edits every field with dropdowns/checkboxes, shows inline validation, has Open ↗ buttons to jump to a referenced IDO, and a read-only inherited PropertyClass section.
    • Overview — edit identity / ext-class / revision fields.
    • Tables — fully editable grid (alias, table, type, join) with add/delete rows.
    • Properties — master–detail with binding badges, key markers, drag-to-reorder (auto-renumbers Sequence), add/delete, and a binding-aware detail form (BOUND/DERIVED/UNBOUND/SUBCOLLECTION fields + PropertyAttributes) with enum dropdowns.
    • Methods — editable method cards (name, type, transactional, stored proc, description) with an editable parameter grid (seq, name, DB type/length/scale, in/out/message) and add/delete for methods and parameters.
  • IDO Outline — a second sidebar tree showing the structure of the active IDO (Tables, Properties grouped by binding, Methods → parameters, Data Rules). Clicking a node navigates the visual editor to that item.
  • Labeled enums — "magic number" fields (MethodType, Binding, OperationType, ActionType, comparison operators, …) render as dropdowns with human labels.
  • Validation — semantic + intra-file reference checks surfaced as diagnostics (Problems panel) and a live footer summary: required fields, invalid enum codes, duplicate names, BOUND/DERIVED/SUBCOLLECTION requirements, ColumnTableAlias must match a real table alias, duplicate sequences, and more.
  • IDO Explorer — activity-bar tree of all collections grouped by module, with a fuzzy Go to Collection… quick-pick. _IDS variants are flagged.
  • Base ⇄ _IDS compare — open a diff between a collection and its _IDS sibling.
  • Clean round-trip — writes are format-conformant (BOM, CRLF, 3-space indent, self-closing empties) and schema-faithful. 98% of the real corpus round-trips byte-for-byte; the rest are irregularly-indented files that get normalized by design.
  • Always available: one-click Open as XML to drop to the raw text editor.

Configuration

Setting Default Description
mgIdo.collectionsGlob **/IdoMetadata/**/Collections/**/*.xml Files discovered for the explorer/index.
mgIdo.indentSize 3 Indent width fallback.
mgIdo.validateOnSave true Validate on save.
mgIdo.openVisualByDefault true Open matching files in the visual editor by default.
mgIdo.sequenceMode contiguous contiguous | preserve | gapped sequence numbering.
mgIdo.formatScope document document | touched formatting scope (v1: document).
mgIdo.referenceScope module module | workspace cross-reference resolution.
mgIdo.sytelineInstallPath C:\Program Files\Infor\CSI Folder with AppMetadataTransport.exe used to import IDO XML for testing. Falls back to …\Setup\WinStudio and the dev …\Mongoose.submod\Setup\WinStudio.
mgIdo.importConfig (empty) Target SyteLine configuration for imports (e.g. Demo_DALS). Prompted and saved here on first import if empty.
mgIdo.bumpRevisionOnSave true On save of a changed IDO file, increment <RevisionNo> and stamp <RevisionDate> (local time).

Commands

  • IDO: Open in Visual Editor / IDO: Open as XML
  • IDO: Validate
  • IDO: Go to Collection…
  • IDO: Compare base ⇄ _IDS variant — native side-by-side XML diff
  • IDO: Compare base ⇄ _IDS (structured) — a readable Markdown report of what differs (added / removed / changed properties, tables, methods, data rules), ignoring the revision stamp
  • IDO: Import to SyteLine (for testing) — deploys the current IDO XML via AppMetadataTransport.exe
  • IDO: Test in MG REST Client — opens a pre-selected quick test form (Load/Update/Invoke/…) using the REST client's active profile; shown only when the jeking.mg-rest-client extension is installed
  • IDO: Enable XSD Validation (Red Hat XML) — binds the bundled official Mongoose IDODefinition.xsd to **/Collections/**/*.xml so the Red Hat XML extension validates IDO files against the schema
  • IDO: Rebuild Index

For other extensions (programmatic)

mgIdo.openIdoByName(name: string): Promise<boolean> — resolve an IDO by name via the workspace index and open it in the visual editor; returns true if found. Hidden from the Command Palette. Example:

const ext = vscode.extensions.getExtension('jeking.mg-ido-pro-editor');
await ext.activate();
const ok = await vscode.commands.executeCommand('mgIdo.openIdoByName', 'SLItems');

Architecture

src/
  model/        XML tree (parse/serialize), typed projection, enums, sequence, edits
  validation/   semantic + reference validation
  editor/       CustomTextEditorProvider (hosts the webview, applies edits)
  explorer/     workspace index + collections tree + active-IDO outline tree
  webview/      UI (framework-free TS) + host/webview message protocol
  extension.ts  activation: editor, explorer, commands, diagnostics
media/          webview.css + activity-bar icon
test/           node:test suites (core + corpus round-trip)

The open TextDocument is the single source of truth. Webview edits post typed messages; the host applies them to the XML tree, re-serializes canonically, and replaces the document via a WorkspaceEdit — so text view, undo/redo, and external edits all stay in sync.

Development

npm install
npm run build        # bundle extension + webview (esbuild)
npm run watch        # rebuild on change
npm run typecheck    # tsc --noEmit
npm test             # compile + run node:test suites

Run the extension: open this folder in VS Code / Kiro and press F5 (Extension Development Host), then open any IDO collection XML.

Tests

  • test/roundtrip.test.ts — runs against the real corpus (set MG_CORPUS to override the path, MG_SAMPLE to change the file count). Hard gates: semantic equality (no data loss) and idempotency (no formatting drift); plus a byte-exact rate metric.
  • test/core.test.ts — enum catalog, model projection, sequence renumbering, edit ops, and validation.
  • test/edits.test.ts — full CRUD edit operations (add/edit/delete for properties, tables, methods, parameters) with serialization-stability checks.
  • test/webview.test.ts — jsdom smoke test that runs the real bundled webview, asserts the Canvas renders, and that inline edits / row-expand / add emit the correct messages.

Status / Roadmap

This is the MVP. Planned next: cross-file reference go-to-definition, the guided DataRule builder, canvas relationship lines + drag-drop binding conversions, _IDS sync, and editors for the sibling constructs (PropertyClass, Form/ComponentClass/Validator). See DESIGN.md.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft