ModelMaker Code Explorer for Visual Studio Features

General Features

  • Browser and Refactorings are fully Form Designer aware.
  • IntelliReplace ™ (optionally) propagates renamed identifiers within module, class etc. Optionally replaces in comments, strings etc.
  • Comments and Attributes are copied/moved/rearranged with code entities.
  • Property accessors and state fields are created, maintained and deleted where necessary.
  • Refactorings work directly on the IDE edit buffers, changes can be undone with the standard IDE Undo/Redo commands.
  • New members are (optionally) inserted sorted according to a user definable sorting scheme. Additionally, Methods can be inserted before or after current method.
  • IDE editor refactorings available through the MMX menu or keyboard shortcuts apply a refactoring to the entity at cursor position.
  • A well chosen set of options let you customize ModelMaker Code Explorer to your preferences.

Browser

  • Classes view displays classes, interfaces, namespaces etc. in top most module - either arranged by name, code order or by inheritance.
  • Optionally immediate ancestors are displayed. Click the shortcut to navigate to the corresponding module and class.
  • Optionally supported interfaces are displayed. Click the shortcut to navigate to the interface declaration.
  • Optionall Regions inside classes are displayed in the classes view.
  • Members view displays contained members and types using filters and various sorting modes.
  • Property accessors and state fields appear grouped with properties and can be filtered.
  • Local procedures are optionally displayed (pascal).
  • Optionally Declaration hints are displayed is a declaration spans multiple lines. Unwrap declaration unwraps the selected declarations into a single line.
  • Documentation Pane shows documentation for entity at cursor position. Pascal: includes declaration documentation.

Navigation and History

  • Member Search bar for ultra fast finding members.
  • Module Search finds members in entire module.
  • Member Favorites help finding back often visited members.
  • Class and Global Navigation History help find your way around - and back.
  • Go to Next/Previous entity: scrolls to the next/previous entity.
  • Find Next / Previous occurrence of identifier, scrolls editor and shows how often an indentifier is used in a module.
  • Back to Last Editing Position: positions the editor on the last modified source.

Standard Entity Operations

  • Add Class, Interface, Record/Struct, Descendant.
  • Add Field, Method, Property, Event, Delegate etc.
  • Property completion: Edit entity detects a property without access specifiers and applies the defaults for new properties when showing the Property dialog.
  • Property access code is fully customizable using code-snippets.
  • Property Access Code for existing access methods can be replaced with a new access code snippets (pascal only).
  • Add Delegate from Method, adds a delegate based on a method's signature
  • Create Event or Event handler from Delegate with copy and paste or drag drop.
  • Add Indexer adds a fully implemented indexer (array) property with just a few clicks. Read Article...
  • Add Local Variable: Adds a local variable, taking the word at cursor position as input. Read Article...
  • Add Parameter to method at cursor.
  • Integrated Parameter Wizard in method dialog Parameter wizard allows structured editing and renaming of parameters. Supports multiple selection copy/paste.
  • Edit entity (method, class) at cursor. Dedicated dialogs help selecting and defining declarations and avoid entering illegal modifier combinations.
  • Delete (multiple) selected members. Property state field and access methods are automatically maintained.
  • Change Visibility: change visibility for multiple selected members.
  • Change Modifiers: change modifiers for multiple selected members (C#).

Clipboard

  • Cut, Copy, Paste entity at cursor. Includes comments and attributes. Paste converts and corrects for new context.
  • Copy to/ Move to copies / moves selected members to a different class.
  • Paste Prototype allows changing visibility, method binding and method implementation when pasting / dropping methods.
  • Select Token and Copy, Cut, Paste: if no text is selected, Ctrl+C selects the token at cursor position and copies it to the clipboard. Similar Select + Cut (Ctrl+X) and Select + Paste (Ctrl+Shift+V).

Drag and drop support / conversions

  • Drag and Drop members to a module or class to copy or move the selected members.
  • Pascal: Convert module procedures to method and vice versa by drag drop.
  • Create event or event handler by dropping delegate on class.
  • Pressing the Alt-key when dropping members invokes Paste Prototype logic.
  • Convert members: field to property, method to property etc.
  • Instantly visualize classes by dragging classes etc. from ModelMaker Code Explorer to the ModelMaker UML Explorer diagram surface.

Standard Refactorings

  • Extract Method: creates a new method using the selected text as main body.
  • Extract Property: similar as Extract Method, but creates a new property with read-access method instead.
  • Rename Local: rename an identifier in a method, class, namespace.
  • Rename Parameter: renames a method parameter and propagates the new name in the method's source and declaration.
  • Introduce Explaining Variable: commonly used to make complex expressions more readible. Read Article...
  • Convert Member: Field to Method, Property and Method to Property etc.
  • Convert class methods or local procedures to module procedures and vice versa with copy and paste or drag and drop.
  • Extract Class, Extract Interface: creates a new class / interface and copies the selected members to it.
  • Replace Method with Method Object: creates a new class containing a copy of the selected method plus a backpointer. Inserts code to instantiate and call the new class. The first step to decompose a long method into other methods on the same object.
  • Introduce Parameter Object: converts method parameters to a new class with one property for each parameter.
  • Create Factory Method: creates a method that returns a new instance of the class.

Sorting and Rearranging

ModelMaker Code Explorer has extended support to Sort and Rearrange Delphi and C# .NET source code:


String scanning and conversion

ModelMaker Code Explorer comes with an extensive set of tools to help manage locating and converting hard coded strings in Delphi Pascal source files:

  • Convert string at editor cursor to resource string or constant: simply press Ctrl+Alt+R to convert a string to a resourcestring. Similar, press Ctrl+Alt+N to convert a string to a constant.
  • Live Metrics™ hints are displayed if a unit contains hard coded strings.
  • Module String Conversion Wizard: scan entire file for hard code string and allows mass extraction and conversion.
  • Multi File String Wizard: used to manage and scan lists of source files for hard coded strings
  • Extensive Options to control string scanning and conversion.
  • Command Line string scanner to include in automated build processes.

Wizards

  • Synchronize Implementation/ Declaration: synchronizes method declaration header with implementation header, or reverse (pascal). Read Article...
  • try..finally wizard: inserts a try .. finally" statement and inserts the code for the finally block based on preceding code. Read Article...
  • Surround with Template: inserts text before and after the selected text. Insert for example try /finally statements around existing code. Read Article...
  • Default block wizard: surrounds current line or selection with a { } or begin end block and determines indentation on preceding code.
  • Creational Wizard: used to insert field and property initialization code snippets in a constructor. Optionally a parameter is added to the constructor parameter list to initialize a field or property. You may select an existing constructor or create a new one. Similar finalization snippets can be inserted in a destructor. Read article.
  • Extract Class definitions from Assembly utility. Converts an Assembly to a C# or Pascal source file containing class and interface definitions. Read Article...
  • Unit Dependency Analyzer: shows (reverse) dependencies for any set of modules (pascal).
  • Linked Module Analyzer list of modules (units) and binary resources that are linked into a compiled project based on .map file. Borland IDEs
  • Use Module/ NameSpace: inserts a module to the uses clause or adds a using statement.
  • Attributes Wizard: Add an (Delphi.NET or C#) attribute to multiple members at once. Attributes can be picked form presets that can be customized and parameterized using macros.
  • Show / Hide non-visual components (Delphi Win32 designer only).
  • Flatten Property implements directive: Remove property implements directives and insert wrappers for interface implementing code.
  • Show Wired Eventhandlers: lists component events with associated eventhandlers.
  • Auto Complete Used Units™ adds referenced units to uses clause (pascal).
  • Reverse Assignment: reverses the left and right expressions in an := (pascal) or = (C#) statement.
  • Comment selected members.
  • Toggle comment selected code.
  • Unwrap declaration: unwraps declaration into a single line. Declaration hints are optionally displayed to point at declarations spanning multiple lines.