Changes Before Version 4.0.5
- Added tests for ExtremaTestTransform, ReadFromFileTransform, SelectColumnsTransform, and WriteToFileTransform
- Fixed a bug in NullDataElement to prevent exception when forcing real value on a malformed string
- Added optimization to SelectColumnsTransform to not make a flipped element when zero columns are picked
- Renamed ProgrammaticDataGenerator to NullProgrammaticDataGenerator and ProgrammaticDataSource to ProgrammaticDataGenerator with equivalent changes in implementation
- Made MenuManager give a better error message when its unable to find the resource for a class
- Split the SBML parser out of the Model Builder
- Added ability to parse SBML from a string and changed VTRunOAA to use it
- Fixed loading of JCRMIT to get a working run manager when the run file attribute is set directly
- Revised the input and output descriptions for existing transforms
- Fixed display of input and output descriptions
- Created input and output descriptions for existing objectives
- Made the background for transform and objective input and output descriptions transparent
- Created helper functions in InterfaceManager for building and displaying HTML viewers
- Created helper function in InterfaceManager for fitting components into a dialog
- Added the ability to view the stack trace that caused an error
- Cleaned up inconsistent handling of temporary storage and exceptions during loading
- Refactored source loading code in views to move most functionality to BasicPanelTab, eliminate many instance variables, and not expose a run method
- Made CompareFE trap assertions and uncaught errors to display
- Converted much of the input checking in DefaultTransformEvaluationContext to assertions
- Removed the ability to have parent contexts and many unused methods from TransformEvaluationContext and DefaultTransformEvaluationContext
- Converted support for GeneratorEvaluationDebugger from a single listener callback to multiple listener events and renamed the interface to ProgrammaticDataGeneratorListener
- Added support for listening to evaluation events from individual generators as well as from transform evaluation contexts
- Added support for programmatic data generators to report that an error occured during evaluation
- Simplified handling of debugging state in TransformDebugger and moved some functionality to the debugger thread
- Eliminated some of the convenience methods for stepping through transforms in TransformDebugger
- Fixed bug in TransformDebugger when setting the customizer view to null
- Fixed bug in MEOSummaryView where executed transforms lost their Compare instance and compatible transforms list
- Added a listener interface for receiving updates about transforms in an evaluation context
- Converted TransformEvaluationTransform to listen to context events instead of using a PropertyChangeListener for finding out about new transforms
- Moved storage for the name and displayable comment of a data generator to attributes
- Moved storage for attributes and transient attributes to data source options
- Eliminated unused methods in NullDataGenerator and EditableDataGenerator
- Moved setAttribute, setTransientAttribute from EditableDataGenerator to NullDataGenerator
- Implemented getState and setState for NullDataGenerator
- Moved all control over attributes from EditableDataGenerator to NullDataGenerator
- Deprecated setCommand and removed the override of setComment in InputTransform
- Fixed display bug in InputTransform interface when loaded
- Fixed bug in SelectColumnsTransform where the list of available columns did not immediately appear
- Fixed bug in JCRMIT when getting the annotation with a run file but no run number
- Separated the settings for the customizer interface and customizer class and converted storage from attributes to options
- Made attribute implementation just be thin wrappers over data source options
- Merged much of the code for handling state information and persistence between EditableDataGenerator, NullDataGenerator, and NullDataSource
- Changed InterfaceManager to wrap the display of large error messages in a scroll pane
- Added explicit error reporting for all exceptional conditions in existing transforms and objective functions
- Added addOption method to DataSource to allow other classes to register an option
- Moved OptionType from NullDataSource to DataSource so it could be used with addOption
- Converted all uses of setTransientAttribute to setOption plus either addOption or setOptionType as appropriate
- Changed setOption to check for equality before assignment in EditableDataGenerator
- Removed getTransientAttribute and setTransientAttribute
- Converted the transforms held by a container to a data source option
- Changed CustomizableInterface to use similar methods as CustomizableDataGenerator for customizers
- Added additional cleanup to customizers in NullProgrammaticDataGenerator and TransformStatement
- Revamped customizer creation in TransformStatement and TransformHelper
- Fixed resetting the border of a transform when its name changes
- Modified FunctionalDataGenerator to use the GUID of a generator rather than its name
- Eliminated setNameDirect function from ProgrammaticDataGenerator and EditableDataGenerator
- Moved setName function from EditableDataGenerator to NullDataGenerator
- Switched order of lock acquisition to function before transform in MEOSummaryView
- Eliminated some unused functions in DataGeneratorEvaluator
- Consolidated many uses of ComponentListener to a HierarchyListener in BasicTable
- Replaced all uses of COLUMN and COLUMNNAME variables with support for manging columns in BasicTable
- Eliminated some unused methods in BasicTable
- Cleaned up the getValueAt, setValueAt, editCellAt, and viewCellAt methods of many of the table models
- Consolidated many uses of table cell renderers in a new BasicTable.BasicTableRenderer class
- Added helper methods to BasicTableRenderer for managing colors
- Converted all current renderer color users to use helper methods
- Added a viewer to display errors announced by a ProgrammaticDataGenerator
- Enabled viewing errors in ModelDataSeriesView and MEOSummaryView
- Added ability to clear past errors in the error viewer
- Changed MetricDataGenerator to pass on some options and listeners for evaluation to its metric
- Added a new resizing algorithm to BasicTable
- Added support for sizing columns by weights to BasicTable
- Created a renderer and editor for using buttons in tables
- Added button to errors in the error viewer to display more information about the error
- Added property change notifications to options and made data source listen to their property changes
- Replaced overrides of setOption with property change listeners
- Changed CustomizableInterface to take a parameter indicating the changed option when updating
- Changed existing interfaces to filter update interface events to prevent unnecessary work
- Fixed copying the contained transforms of a container to another container
- Added more documentation for creating a transform
- Added more documentation for using a data element
- Revised documentation on data elements
- Moved the TypeChecker interface from jigcell.compare.impl.type to jigcell.compare
- Added new options to ProgrammaticDataGenerator for associating a type checker with the generator input and output
- Made the existing benchmarks for experiment and transform loading performance more realistic
- Added a benchmark for object loading performance
- Delayed the creation of a menu manager in NullProgrammaticDataGenerator until a customizer is created
- Delated the creation of a popup menu in NullProgrammaticDataGenerator until a popup is triggered
- Refactored performance benchmarks to reduce the amount of code needed
- Recorded the times for intermediate steps in performance benchmarks
- Added convenience function to InterfaceManager to automatically set a prototype element for combo boxes
- Added convenience function to InterfaceManager to automatically set a default size for text fields
- Converted TransformEditor and ObjectiveEditor to use interface builder
- Replaced the direct use of interface controls with models in TOEditorBase, TransformEditor, and ObjectiveEditor
- Moved the getType method from StucturedTypeChecker to TypeChecker
- Made UntypedType correctly validate and compare all primitive types
- Changed updating in views to properly refresh entire row when generator is updated
- Split the configuration in ConfigEditor into readable and writeable portions
- Changed createConfigDialog to createConfigEditor and made the return type be a ConfigEditor
- Required ComparatorTab implementations to provide the tab name
- Changed TabInfo to keep a reference to the ComparatorTab it describes
- Made CompareFE record the last selected tab
- Cleaned up find methods in CompareConfig and added findValue with default
- Added convenience methods to CompareConfig for working with list values and changed Compare, CompareFE, TOEditorBase, TransformEditor, ObjectiveEditor, ExperimentDataSeriesView, adn Compare2 to use them
- Added the ability to edit the configuration of a tab
- Fixed bug in BasicTableRenderer where multiple renderers using the same color class would overwrite each other
- Added configuration editors to ExperimentDataSeriesView, EditableDataSeriesView, ObjectiveSummaryView, ModelDataSeriesView, TransformEditor, ObjectiveEditor, TransformDebugger, and Compare2
- Renamed constants for configuration property names from PROPERTY to CONFIG
- Added a custom editor for colors to ConfigEditor
- Added support for spinners to InterfaceManager
- Added a custom editor for integers to ConfigEditor
- Created ConfigEditor interface to break dependency from compare to compare.ui package and renamed old ConfigEditor class to DefaultConfigEditor
- Added better detection of unreachable transforms to DefaultTransformEvaluationContext which allows all unused transforms to be collected now
- Changed reaper thread in DefaultTransformEvaluationContext to automatically stop itself when no longer needed
- Removed some unnecessary synchronization from DefaultTransformEvaluationContext
- Removed error when duplicate name is registered in a TransformEvaluationContext (last transform to register a name is the one identified by it)
- Made the cancel method of DataGeneratorEvaluator work harder to forcefully cancel the evaluation
- Changed ProgressMonitor to allow external notification of its cancellation
Changes Before Version 4.0.4
- Overhauled VTRunManager interface to be more consistent with its consumers
- Rewrote WrappedMRun from scratch and renamed it to VTRunOAA
- Changed VTRunOAA to lazily launch OAA agent at first use, startup time reduced by 100%
- Added a RunFileReader cache to VTRunOAA to avoid holding duplicate run and model information, simulation memory use reduced by 40%
- Removed most member variables from VTRunOAA, instance memory use reduced by 90%
- Changed VTRunOAA to consistently initialize OAA agent before use
- Fixed VTRunOAA handling of simulator names
- Eliminated unnecessary string copying in Parameter and SimulatorParameter, simulation memory use reduced by 10%
- Eliminated unnecessary string copying in BasalParameterSet and BasalNumericSet, instance memory use reduced by 40%
- Updated RunRow to use VTRunOAA
- Added convenience constructor to RunFileReader for consumers that don't want to mess with tree nodes
- Converted the model cache in RunFileReader from a Hashtable to a HashMap with locking
- Eliminated the characters method in RunFileReader, load time reduced by 20%
- Changed RunFileReader to uncompress the model once in startElement instead of on every access, simulation time reduced by 15%
- Refactored the way parameter, initial condition, and simulator setting sets are computed to reduce duplicated code
- Changed algorithm used by parameter, initial condition, and simulator setting tree walker from O(m*n^3) time and O(n^3) space to O(m*n*lg n) time and O(n) space, simulation time reduced by 20%
- Optimized retrieval of pinned cache elements in CachedDataElement, simulation time reduced by 10%
- Improved handling of partially entered comparison types and criteria
- Changed default comparison type from <= to Ignore
- Updated example frogegg files to fill in all missing comparison types
- Moved the Comparator icons to a resource directory
- Made an automatic generator for the about dialogs
- Converted the main Comparator about dialog to use the automatic generator
- Delayed file chooser creation in RawFileDataSource
- Moved unknown comparison result highlight from acceptable column to objective result column
- Made unacceptable comparisons highlight entire row
- Changed name of Model tab to Transform
- Made BasicTable a standalone class with BasicTableModel a static inner class
- Made list dialogs and TransformDebugger use BasicTable
- Added convenience methods to FunctionalDataGenerator to make handling the default function format easier for subclasses
- Removed unused methods from TransformContainer and container implementations
- Fixed the way transform containers clear and flush
- Replaced customization attributes with transient attributes (they had always been implemented using transient attributes)
- Made TransformStatement and FunctionalDataGenerator do more of the setup work for evaluation
- Changed ExtremaTestTransform to error on bad values instead of clearing
- Changed SelectColumnsTransform to error on bad values
- Expanded interface splitting support from objective functions to all customizable data generators
- Split user interfaces for ExtremaTestTransform and SelectColumnsTransform into separate classes in the new transformui package
- Converted nearly all instance variables in SelectColumnsTransform, FileTransform, and ExtremaTestTransform to attributes
- Cleaned up the way transforms create their interfaces
- Overhauled the use and storage of column names in SelectColumnsTransform
- Converted most instance variables in InputTransform, NullTransformContainer, BoxTransformContainer, and TransformEvaluationTransform to attributes
- Split user interfaces for FileTransform, ReadFromFileTransform, WriteToFileTransform, and TransformEvaluationTransform into separate classes
- Converted more instance variables in TransformStatement to attributes
- Eliminated several places where transforms needed to block interface updates due to a lack of checking before setting attributes
- Cleaned up the way TransformEvaluationTransform maintained the list of known transforms
- Converted most instance variables in JCRMIT to attribute and split user interface into a separate class
- Fixed bug in VTRunOAA setting a new run file
- Added convenience method to InterfaceManager for getting the name of a component without casting to JComponent and converted all callers to use it
- Changed setAttribute to only update if the attribute value is different from the old value
- Changed setAttribute to return whether the attribute was updated
- Removed all code around callers of setAttribute checking whether the attribute was different and removed all code in interfaces designed dto prevent loops when setting an attribute to its current value
- Rewrote ArrayListComboBoxModel to implement all model functionality directly instead of using DefaultComboBoxModel and renamed it to ListComboBoxModel
- Eliminated all unnecessary property updates in ListComboBoxModel and removed all code in interfaces designed to prevent loops when when replacing the contents of a combo box
- Made combo box model variables have consistent names by changing all names like XBoxModel to XModel
Changes Before Version 4.0.3
- Put in another attempt to persist file data sources
- Fixed notification about configuration changes in BasicPanelTab
- Simplified finding the menu item with a specified action command in MenuManager
- Added convenience methods to MenuManager for finding the parent menu of a specified action command
- Added option to MenuManager findMenuItem and findParentMenu controlling whether to search for action commands in menus as well as menu items
- Exposed a recent sources shortcut menu below the open command in views
- Added utility method to Compare for finding calling sites of a function during runtime
- Added a new method to ComparatorTab for controlling when a view reads from the configuration
- Converted existing views initialization to be as repeateable as possible and use prompting for when to read from the configuration
- Changed CompareConsole to use MinimalPanelTab for view services
- Made BasicPanelTab default to creating a MenuManager that supports indexing and removed the createMenuManager method
- Changed clipboardCut in EditableDataSeriesView to check for errors writing the selection to the clipboard before removing generators from the view
- Fixed incorrect error message in EditableDataSeriesView clipboardCut
- Collapsed all existing view transferers to a single transferer class in SimpleDataSeriesView
- Moved clipboard and printing support from EditableDataSeriesView to SimpleDataSeriesView
- Enabled drag support from SimpleDataSeriesView
- Combined selection support in EditableDataSeriesView and Compare2 to BasicTableView
- Fixed all broken javadoc tags
- Fixed output description for transforms in TransformDebugger
- Fixed getting the input and output description of data generators using the context menu
- Fixed all known HTML errors in the documentation
- Changed callers of InterfaceManager.createFileChooser to pass a shared suffix file filter instead of creating a new filter
- Made SelectColumnsTransform more tolerant of invalid columns
- Reduced the number of classes that permanently hold an ExceptionRecorder
- Removed VTRunManagerClient support from JCRMIT
- Created a StreamingStringTokenizer that can tokenize without building an intermediate string
- Added tests for StreamingStringTokenizer
- Converted data element creation to use the StreamingStringTokenizer
- Fixed getting columns by name in SelectColumnsTransform
- Improved progress dialog to support both determinate and indeterminate modes
- Changed DataGeneratorEvaluator to use Comparator progress dialog instead of Swing dialog
- Added a performance tester for measuring experiment creation and loading performance in the Comparator
- Added a performance tester for measuring element creation performance in the Comparator
- Created convenience functions in InterfaceManager for showing common dialogs
- Converted all users of JOptionPane to convenience functions in InterfaceManager
- Refactored some shared code in searching implementations into BasicTableView
- Fixed some edge cases in searching
- Made searching scroll to the line in addition to selecting it
- Fixed update of progress dialog in DataGeneratorEvaluator
- Added an editor for working with configuration data
- Made an interface for tabs to provide about and configure information
- Converted CompareFE to use tab interface for providing about and configure information
- Updated references in documentation
- Added a performance tester for measuring transform creation and loading performance in the Comparator
- Eliminated some duplicated code between the performance testers
Changes Before Version 4.0.2
- Updated plans and documentation
- Changed the Print command in the tabs to use PDFPrinterDataSource instead of SystemPrinterDataSource
- Created exception handler class to handle asynchronous exceptions
- Replaced current ExceptionListener implementations with exception handler class
- Remove jigcell.compare.cellcycle.data package
- Created new interface for marking persistable data sources
- Added convenience method to NullDataSource for saving data sources
- Added methods to BasicPanelTab to record recently used data sources in views
- Added the session marker to instance markers generated by hash code values
- Added convenience method for getting the configuration of a view
- Fixed potential concurrency problem with DataManager
- Prevented sources from potentially appearing in the prototype list twice
- Added a map for finding the first defined source of a particular type
- Fixed cloning of data sources
- Converted views to use sources from DataManager instead of directly picking a type
- Fixed some inconsistencies in remembering the active writeable source
- Fixed private NullEditableDataElement parser use of PackedTreeDataElement
- Created common superclass for packed and sparse tree elements
- Added a map with primitive keys based on fastutil to the build
- Removed the comparecontrib archive from the build completely
- Made building JavaDoc documentation a separate Makefile target
- Moved most factory element creation methods to NullEditableDataElement
- Moved convenience constructors from SparseTreeDataElement to factory methods in NullEditableDataElement
- Updated code using SparseTreeDataElement convenience constructors to use factory methods
- Created packed and sparse tree elements based on maps with primitive keys
- Created a testing program for benchmarking editable element creation
- Cleaned up the code and comments in all of the editable data element implementations
- Moved even more of the element implementation to NullEditableDataElement and TreeDataElement
- Optimized the Long2ObjectAVLTreeMap created by fastutil
- More general documentation cleanup for data elements
- Cleaned up ElementPerformanceTester a little and reused the validation routines as JUnit tests in the Comparator
- Cleaned up the NullDataElement and NullEditableDataElement documentation
- Made ObjectiveSummaryView use a ResultSetMap instead of a LinkedHashMap when saving comparison results
- Fixed bug in NullDataSource.clone that corrupted the option table of cloned sources
- Converted synchronization of DataManager to use the concurrent package to avoid unnecessary contention
- Converted synchronization of NullDataSource to use the concurrent package to avoid unnecessary contention
- Cleaned up synchronization and instance options in ClipboardDataSource
- Separated out the transfer class callback in ClipboardDataSource and PrinterDataSource into a new base class
- Cleaned up synchronization and simplified SystempPrinterDataSource and PDFPrinterDataSource
- Added a limited capability for RawFileDataSource to work through the standard read and write methods
- Cleaned up synchronization in FileDataSource, RawFileDataSource, and XMLFileDataSource
- Converted error checking for many option settings in sources from unchecked exceptions to assertions
- Fixed the way users of ExceptionRecorder were accidentally disabling exception checking
- Improved handling of clone in data sources
- Made a pass to clean up documentation of data sources
- Added the ability for sources to indicate whether their options should be persisted or copied by informing NullDataSource
- Made existing data sources report whether their options should be persisted or copied to NullDataSource
- Made NullDataSource.clone considerably smarter about copying options
- Implemented a default getState and toString for NullDataSource
- Fixed some missing synchronization in FileDataSource
Changes Before Version 4.0.1
- Created a data source for writing to PDF files
- Cleaned up configuration options of PrinterDataSource
- Added configure method to printer data sources
- Refactored PrinterDataSource into a generic printer service and a system printer service
- Added configuration options to PDFPrinterDataSource
- Refactored ListEditorDialog into separate viewer and editor components
- Modified control creation in list dialogs to match ui creation in views
- Added support for displaying and editing list data to all regular views
- Fixed some general bugs with list display
- Added popup chooser for selecting objective comparison type
- Changed element and dimension weight parameters to be non-editable
- Updated weight parameter users to take non-editable weights
- Rewrote weight editor dialogs to be simpler and track list editor dialog changes
- Made weight editors more robust to bad input
- Added more checks to prevent disallowed editing in views
- Created side-by-side viewer for experimental and transform list data
- Cleaned up list of blue sky tasks
- Added transferer to ObjectiveSummaryView
- Exposed file path option in FileDataSource
- Converted ReadFromFileTransform and WriteToFileTransform to use FileDataSource
- Merged shared code in file read and write transforms
- Fixed copying of JCRMIT
- Added persistance delegate to CompareConfig to allow for correct saving
- Added listener to Compare to save configuration when updated
- Moved security manager from CompareFE to Compare
- Updated compare.config to use a more concise program
- Made list viewers try harder to display subcontent as lists
- Fixed error when examining into a side-by-side element and transform list when the transform list is empty
- Refactored the most common data transfer code to SimpleTransferer
- Added a convenience method to Compare for acquiring a Sync
- Removed some unused code from Compare^2
- Changed InterfaceManager to only allocate one GridBagConstraints per interface instead of per block
- Converted weight editors to use InterfaceManager
- Added background coloring for table cells in list dialogs
- Added documentation for using data generators
- Updated documentation for using data sources
- Added documentation for using data elements
- Added source and design models for Comparator and JigCell to documentation
- Updated the list of available resources about the Comparator
- Refactored FileDataSource into generic and XML portions
- Added a raw file data source
- Made the PDF writer use the raw file data source
- Fixed saveDirect using wrong source in BasicPanelTab
- Updated files in Biopack distribution
- Added additional callback mechanisms to DataGeneratorEvaluator to substitute a new generator during preupdate or evaluate
- Converted MEOSummaryView, ModelDataSeriesView, and ObjectiveSummaryView to evaluate using generator substitution callbacks instead of preprocessing
- Added an additional solvable to OAAConnector that takes partial file fragments to work around OAA's maximum atom limits
Changes Before Version 4.0.0
- Forced splash screen to exceed a minimum size
- Added optional index of menu commands to MenuManager
- Added ability to disable or enabled menu items by command through MenuManager
- Changed TransformDebugger to use MenuManager command interface
- Changed TOEditorBase to use MenuManager command interface
- Changed EditableDataSeriesView to use MenuManager command interface
- Changed Compare^2 to use MenuManager command interface
- Added boolean specific lookups to CompareConfig
- Eliminated catching of Throwable in cellcycle package
- Eliminated catching of Throwable in compare package
- Eliminated catching of Throwable in compare2 package
- Made shellHandleException public in Compare and CompareFE
- Added message version of shellHandleException to Compare and CompareFE
- Converted uses of error dialogs to shellHandleException in cellcycle package
- Converted uses of error dialogs to shellHandleException in compare package
- Converted uses of error dialogs to shellHandleException in compare2 package
- Fixed incorrect storage of threshold source in Compare^2
- Removed incorrect configure calls in direct storage methods of Compare^2
- Changed configurable calls in Compare^2 to use direct storage methods
- Eliminated some duplication in the file handler of Compare^2
- Removed incorrect loops in file handlers from Compare2 and ModelDataSeriesView
- Changed configurable calls in BasicPanelTab, ObjectiveSummaryView, and TOEditorBase to use direct storage methods
- Removed error dialogs from ReadFromFileTransform and WriteToFileTransform
- Converted uses of error dialogs to shellHandleException in ui package
- Added message reporting interface to Compare and CompareFE
- Fixed various bugs in error reporting of views
- Converted remaining uses of JOptionPane to message reporting interface
- Eliminated catching of Throwable in impl package
- Eliminated catching of Throwable in ui package
- Added integer specific lookups to CompareConfig
- Eliminated unnecessary position parameter to add function of TOEditorBase
- Added hooks to duplicate the current object in TOEditorBase
- Added duplicate command to TransformEditor and ObjectiveEditor
- Integrated latest code for Model Builder and Run Manager
- Added biopack and Report Generator code to the build
- Reduced the number of jar files created for the project
- Moved CompareFE from the compare to the ui package
- Moved IconLoader from the impl to the ui package
- Moved TransformEvaluationTransform from the transform to the cellcycle package
- Moved GeneratorEvaluationDebugger from the impl to the compare package
- Moved NullDataGeneratorAnnotation from the annotation to the impl package
- Moved ElementWeightEditorDialog and DimensionWeightEditorDialog from ui to functionui package
- Renamed ComponentDescription to HTMLComponentDescription
- Created interface for ComponentDescription
- Added PlainComponentDescription for a lightweight description implementation
- Renamed EditableDataSeriesView.PROPERTY_GENERATORS_EDIT to DataGenerator.PROPERTY_GENERATOR_EDIT
- Renamed TransformEditor.PROPERTY_TRANSFORMS_EDIT to Transform.PROPERTY_TRANSFORM_EDIT
- Renamed ObjectiveEditor.PROPERTY_OBJECTIVES_EDIT to Functional.PROPERTY_FUNCTIONAL_EDIT
- Created separate views package for CompareConsole, EditableDataSeriesView, ObjectiveEditor, ObjectiveSummaryView, TOEditorBase, TransformDebugger, and TransformEditor
- Moved Compare from compare to impl package
- Moved VALUE_NOVALUE, RESOURCE_EXPERIMENTCOMPARISONS, and RESOURCE_EXPERIMENTTHRESHOLDS from Compare2 to Compare2Model
- Added convenience methods for configuration setters
- Added explicit remove methods to CompareConfig instead of making people call setters with a null value
- Updated documentation for using data in the Comparator
- Fixed broken parameter names in documentation
- Revised documentation for adding transforms and objective functions
- Added a new type checking interface for structured types
- Moved ATTRIBUTE_TYPE from ExperimentDataSeriesView to TypeChecker
- Added new attribute ATTRIBUTE_TYPECHECKER to TypeChecker
- Added support to ExperimentDataSeriesView for setting the type checker
- Modified ListEditorDialog to maintain a type checker for the data
- Made some minor cleanup changes to ListEditorDialog
- Converted type checkers to use singleton objects
- Made type checker constructors protected
- Added templates for type checkers and structured type checkers
- Added documentation for creating a type checker
- Added support for setting the prototype element in ExperimentDataSeriesView
- Updated the building and installation instructions
- Updated the main Comparator page