818-667-0426
skip to the main content area of this page

Skip Navigation LinksThomson Elite

Thomson Elite

About Elite 3E

Elite is the leading global provider of financial and practice management systems to the legal industry and other professional services markets.
Elite 3E offers powerful core financial and practice management features and built-in application development capabilities—all seamlessly integrated into one high-performance system

We have developed a number of components employed in Elite 3E:

Code Editor

We developed a custom VS-like code editor for VB.NET. The editor uses Actipro Syntax Editor as the text editor and does the lexical and syntactical parsing of the code using ANTLR. A custom CodeDom tree, which is similar yet more comprehensive than the MS Code Dom, is generated during the code parsing. Then, using this CodeDom tree, most of the VS Code Editor’s features are executed.

Components

Editor

The editor supports

  • Intellisense:
    • Member listing after special characters and upon request via Ctrl-Space
    • Parameter information on invocation statements.
    • Word filtering and completion while writing code with respect to current context.
    • QuickInfo for displaying signature of the members and variables using tooltip when mouse comes over a word.
  • Auto-Complete:
    • Automatic insertion of code segments for method and property declarations as well as compound statements such as the If, While, Try-Catch and For statements.
  • Code Navigation:
    • Navigation toolbars simplify the navigation through the methods and events.
  • Code Generation:
    • Automatic event generation when an event selected from the navigation toolbar is not handled.
    • The signature of an event is generated using the internally developed custom CodeDom tree.

The code written in this editor is ultimately compiled into a dll which is executed in an ASP.NET web context as an event or an action method.

We also created an Object Browser to browse the contents of generated dll files.

Parser

ANTLR was selected and used for parsing VB.NET code. Since there was no native support for VB.NET code in either ANLTR or Actipro component, all the grammar was written from scratch consistent with VB.NET Language Specification. New language elements such as the generics were supported as they are released.

CodeDom

Similar to, but more comprehensive than the MS CodeDom, is used as a code block tree that holds crucial information for Intellisense. Every type, type member, statement and expression has corresponding classes created from the parser. Type and type member classes are also used to hold information about built-in .NET classes, which are obtained through reflection, to aid Intellisense.

GAC Iterator

A simple tool to get the assembly, namespace, type, and member information for assemblies located in the Global Assembly Cache.

Code Generator

Used by the Code Editor to generate event handlers as they are selected from the navigation toolbar, this tool generates code for every code block in CodeDom tree.

Object Browser

This is a CodeDom tree browser, which is very similar to Visual Studio’s built-in Object Browser, and shows assemblies, namespaces, types and type members and their parameters in a separate window in the main application IDE.

Technologies Employed

  • .NET Languages: Both VB.NET and C#
  • Windows Forms
  • Reflection
  • XML Serialization
  • Multithreading

Printing Subsytem

We developed a custom printing solution for the client’s environment. The requirements were to produce PDF or MS Word documents from data entry pages, reports, charts, and metrics with specified options and print them, email them or write them to disk.

Components

Print Configuration Pages

There are various configuration pages for printing.

  • Options
    • A combination of system-wide and user specific options are used
    • Default Paper Size, Default Paper Orientation are examples of these options
  • Printer Maintenance
    • The printers installed on the server that could be used as a distribution target
  • Default Printer Configuration
    • A default printer can be configured for every user.
    • A default printer can be specified on report-basis.
Print Dialog

Dialog consists of several options with respect to the type of printing.

Some of the options are:

  • The distribution targets: print, email or file target. Multiple targets may be specified.
    • When a printer is selected, the current status of the printer is acquired to display to the current user.
  • Printing options: paper size, orientation, etc…
  • Fit methods
    • If a report does not fit the page, it is always adjusted to fit to selected paper size.
    • For grids, there is also smart fitting algorithm that resizes the columns according to the data within the cells.
  • Condensed printing
    • If a report is too large to fit to screen, the user may choose to condense the printout by using a pre-configured smaller font size and condense ratio.
  • Cover page selection
  • Paper source selection
    • Multiple paper sources are supported
  • Duplex printing and collate options are also supported if the selected printer allows them.
  • Reprinting
    • It is possible to allow a document to be reprinted later with the same configuration if desired.
  • Print to Screen and Save Local options let the user to decide if she wants to render the document to screen or download it to local computer.
  • Grid formatting options
    • Support for showing / hiding borders
    • Support for header backgrounds and alternating rows
    • Support for underlining header text for better display
  • Report display options
    • Support keeping groups together and not breaking them between pages
    • Support page breaks between pages
    • Support cover pages to display parameters
PDF Renderer

A third party tool, ceTe DynamicPDF Generator, was used to generate PDF documents. Almost all of the classes for visual elements were extended by inheritance and encapsulation depending on the usage.

Features

  • Page templates are supported for the presence and location of page numbers, date and time, company logo, report name and any custom labels.
  • Unicode and ANSI text is supported and can be configured
  • Fonts and font sizes are supported.
  • Supports all print options specified in the Print Dialog section.
  • An advanced queuing system was used with a custom thread pool. The rendering requests are queued and processed in a background thread whose priority can be set by configuration. The thread pool’s concurrent request count is also configurable.
  • At every point in the process, all the information is logged in to a database or the event log in the case of a database problem.
  • Batch printing to control the order of the documents to print.
  • Available for both inline rendering and as a web service.
Word Renderer

Report templates created by the in-house Word Designer or Crystal Reports are saved as Word documents.

Features

  • Uses the same code base with the PDF renderer for queuing the requests.
  • Uses XSLT transformation for Word Designer templates to create WordML document.
  • Uses Word Automation to save the document as DOC or PDF file.
Distributer

Distribution of the generated PDF or Word documents is handled by the thread pool in a background thread.

Features

  • When printing reports, every control is drawn to the paper using GDI+. No third party tool was used for printing PDF documents. Instead, we chose to draw the report just as it looks on the screen.
  • E-mail distribution support with attachments as the printed documents.
  • File distribution support to a network path.
  • Impersonation was used extensively to print and copy documents for security reasons.
Print Jobs Report

A report called Print Jobs was created to track the progress of the printing process. It allows the end users to:

  • View printed documents by user and print date
  • View status of the large printing jobs
  • Reprint the document if it allows reprinting
  • Delete the job
Export

The system supports exporting every printable document to be exported as a tab-separated file for viewing in MS Excel. The data repeats parent data for child records and repeats group headers for detail records.

Technologies Employed

  • ASP.NET
  • VB.NET Language
  • Multithreading
  • Thread pools
  • XML Serialization
  • XSLT Transformation
  • Microsoft WordML
  • Microsoft Word Automation
  • Printing API

Word Designer

This is a custom Word template created with Visual Studio Tools for Office that enables the users to create report templates to print in the system. It is based on WordML technology that comes with Word 2003.

Features

  • Uses XML schemas to define the document data source
  • Uses XPath to define fields in the document layout
  • Accepts XML Data to apply transformation to generate a WordML document
  • Uses Word Bookmarks to create rules
    • Choice Rules, for a select/case structure
    • Repeats, to iterate through the data

Technologies Employed

  • VB.NET Language
  • VS Microsoft Word Document Project
  • Word Add-In
  • WordML Document
  • XML, XSD, XSLT, XPath
  • XSLT Extensions