The newest addition to my collection of open-source material is a modest set of user controls I have developed.
The major ones include:
SyntaxHilightTextBox:
Extends a RichTextBox with customizable, language-specific, syntax highlighting, along with a variety of keyboard editing enhancements (comment/uncomment, block shift, resize). This is an abstract control that you subclass with a list of language keywords. Supplied subclasses include SqlServerSyntaxHilightTextBox and OracleSyntaxHilightTextBox.
Read my published article on this control
at DevX.com.
ConnectionStringManager:
Provides a plug-and-play compound user control that allows defining and testing
connection strings to connect to a SqlServer database, an Oracle database,
or any data source that has ODBC connectivity.
This handy control provides a complete solution for interactive handling of database credentials, giving you everything you need to control how users input usernames and passwords, select servers, and choose connection types.
Read my published article on this control
at DevX.com.
MultiConnectionStringManager:
Provides the capability for a user to manipulate and test
a set of database connection strings and associated details.
This control builds upon the ConnectionStringManager control, expanding it to handle
multiple connections and providing a mechanism for easy loading and saving of the set
to persistent storage (configuration file).
QueryPicker:
Builds meta-queries from templates,
dynamically generating a set of input fields for the place holders within
a meta-query template,
then letting the user enter values in any or all fields,
and finally returning a finished meta-query.
and finally returns a finished meta-query.
Meta-queries include: displaying the version of a database, listing columns for a given table,
finding tables containing a given column, and listing the size of all non-empty tables.
There are a few other smaller ones as well; the whole list
is available
here.
Standalone Utilities
DataDiagnostic: Provides an extensible, configurable diagnostic tool allowing precise control to isolate and dissect the output of your diagnostically-instrumented program, and to channel it to your console, a web page, and/or a log file.
JSArchive: Consolidate and compress one or more JavaScript files to create a single release archive for production, as well as to improve network throughput.
MultiFileReplace: MultiFileReplace provides a search and replace facility for all files (or selected files) in an entire directory tree. With two preview modes, it helps you ensure that you modify exactly what you want. And you may work with text blocks of arbitrary length by using file references rather than strings as your target and replacement text.
PageValidator: For both front-end and back-end processing, this validation engine provides an extensible and user-configurable library to verify values from a web page form. PageValidator uses a single library for client and for server validation, guaranteeing synchronization. Accommodating new fields on a page is just a matter of updating the dictionary--no code needs to be changed. Moreover, PageValidator can validate not just single fields but also multiple dependent fields.
Pod2HtmlTree: Pod2HtmlTree bridges the gap between perldoc and javadoc, generating a hierarchical, hyperlinked documentation tree of your Perl library. This includes a full hyperlinked index of functions, methods, variables, and modules in your library. Pod2HtmlTree also supports multi-lingual libraries, cross-linking common modules between languages. Finally, each generated documentation page includes a capability bar that identifies generic capabilities of the module.
ServerFileExplorer: View files on a remote host with a Windows Explorer-like interface. If you have command-line access to a remote host or server but no windowing interface, this package allows you to use your browser as an interactive file explorer. Offering list, tree, and image modes, ServerFileExplorer provides unique features not found in Windows Explorer or even Novatix' ExplorerPlus, including the ability to view all files below any point in your directory tree, and the ability to enlarge or reduce thumbnails with a single keystroke.
WebPageInspector: An interactive tool that fetches a web page and provides tables detailing headers, links, cookies, parameters, and meta-data, and provides windows to view the source code, the web page text, and the conventional display of the web page.
WebSite-In-A-Box: Quickly build a dynamic web site with this CGI framework. Unlike some frameworks, this includes sufficient infrastructure so you literally have a website right out of the box.
XmlTransform: Preprocess HTML (or any XML), or generally convert XML to HTML, or XML to XML, via XSLT transformation. This package operates on an entire input tree of files, generating a comparable output tree after conversion. XmlTransform also provides XML Schema validation for either the input tree or output tree, or both. And, while transforming to HTML, you may choose to generate multiple tables of contents to go down a tree, and add navigational linkages to move sideways or up a tree.
Libraries
CleanCode libraries currently exist for C#, Perl, Java, SQL, and JavaScript.
These are all closely related in that many of the modules and methods overlap from one language to another.
As time is a typically scarce resource, however, the overlap has been
need-driven; I have not attempted to generate all modules in all languages,
but rather I have spun a web of interrelated libraries based
on the needs of the tools which require them from language to language.
Examples:
The validation engine exists in Perl and in JavaScript,
and is virtually identical line-for-line
within the constraints of these languages. This engine has been used in
front-end validation (JavaScript) and in CGI processing (Perl).
I have not yet gone on to Java Server Pages so you won't find it in Java.
I have developed a related but not identical model for C# that is closely
integrated into Windows Form applications.
The diagnostic system exists in Java, Perl, and JavaScript,
since it is useful during development in any language context.
I have not mirrored the identical system in C# since the .NET framework
has extensive diagnostic support already. However--new as of 2008--
I have developed some
enhancements
to the .NET diagnostics components.
As far as documentation, I endeavor to be both thorough and meticulous.
Since Java has javadoc to aid in documentation, the Java documentation
is extensive. javadoc not only generates single-module documentation,
but a documentation tree for all modules.
The CleanCode utility Pod2HtmlTree described above performs similarly
for Perl documentation.
For the .Net world, while amazingly not supported by Visual Studio itself,
the excellent third-party ndoc tool provides mostly the same
bells and whistles as javadoc, so the C# library is completely documented.
And JavaScript...? Alas, there's that precious resource again--time.
Since I'm not aware of any JavaScript documentation generator,
the documentation so far has been limited to a single page
that describes each module.
Formal JavaScript documentation will be forthcoming as time and demand allows.
For each language's library (Java, C#, Perl, and SQL), you will find
a fully-documented application programming interface (API).
That is, for every module, each public method, function, constructor, variable,
plus each parameter to each of these, is itemized and described,
along with a discussion of how to use each module.
Further, each library's documentation tree
includes a global table of contents, a global index,
a global summary, and, for every package, a package summary.
All of these are hyperlinked together to produce an intricate navigation web
designed to get you the information you need quickly.
For the standalone products, the links at the top of this page provide a
good introduction with copious illustrations and screen shots.
Each product page includes a link to the technical API page to show you how to actually use the product.