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.
* 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.
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.
* Normalize Local vars: sorts and aligns local variables according to customizable schemes.
Sorting and Rearranging
ModelMaker Code Explorer has extended support to Sort and Rearrange Delphi and C# .NET source code:
* Drag-drop rearrange members with Members view Rearrange mode.
* Sort classes with user definable sorting scheme.
* Sort members selected in IDE editor (C# only).
* Highly configurable default sorting scheme
* Custom Rearrange members using predefined sorting schemes.
* Move Entity Up/Down : moves the entity at cursor in front of the previous / after the next entity.
* Sorting hints are emitted for classes violating the default sorting scheme.
* Source Regions are maintained when sorting (moved to top / bottom). Optionally sort within source regions.
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.