Skip to content
Commits on Source (2)
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/nanoxml-2.2.2.jar"/>
<classpathentry kind="lib" path="compile_lib/xml-apis.jar"/>
<classpathentry kind="lib" path="compile_lib/xercesImpl.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>LinkedView</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
#Thu Aug 17 20:08:10 PDT 2006
eclipse.preferences.version=1
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
# CONTRIBUTING #
This document is a summary of how to get involved in contributing to the TreeView 3 project.
## Dependencies
1. Java 1.7+
## Contribution guidelines
### General Workflow
Our workflow follows a modified version of the [Github Workflow](https://guides.github.com/introduction/flow/).
We've added release branches to make it easier to cherry-pick merge trivial
bugfixes from the cutting-edge master branch.
### Commit Messages
Short one liner as header + 1 blank line + body to explain details.
Reference: http://chris.beams.io/posts/git-commit/
### Code Style & Conventions
[Google Java Style](https://google-styleguide.googlecode.com/svn/trunk/javaguide.html)
Eclipse configuration XML files can be found here:
LinkedView/doc/softeng/eclipse_java_codestyle_preferences
To install the configuration files:
1. Open the Eclipse Preferences and expand the categories in the left pane to:
Java->Code Style
2. Click "Clean up" in the left pane
3. Click the "Import..." button & select the
princeton_bioinf_eclipse_cleanup_prifile.xml file
4. Click "Code Template" in the left pane
5. Click the "Import..." button & select the
princeton_bioinf_eclipse_codetemplate_prifile.xml file
6. Click "Formatter" in the left pane
7. Click the "Import..." button & select the
princeton_bioinf_eclipse_formatter_prifile.xml file
### Developer Change Procedure
For all change pocedures, please refer to section 3.2 (CONFIGURATION CONTROL) of
the Software Configuration Management Plan in the plan document located here:
doc/softeng/SCMP_TreeView3.doc
### JUnit - Writing tests
1. [Small intro to JUnit in Eclipse](https://courses.cs.washington.edu/courses/cse143/11wi/eclipse-tutorial/junit.shtml)
2. [Another good intro](http://www.vogella.com/tutorials/JUnit/article.html)
3. JUnit supports all sorts of unit testing (correctness, timing, etc.).
4. JUnit testing for all classes and methods is highly encouraged. Pull
requests without JUnit tests may be rejected.
### Recommended Coding Practices
In general, clean & concise & functional code. The goal is minimum effort
required by other devs to understand code and what it is supposed to do.
1. Debug code that can be set to a specific feature type is encouraged, but must
be able to be turned off easily. When a problem is encountered, selecting a
debug mode appropriate to the issue can be used to figure out a problem
quickly. Eventually a user-level debug mode may utilize the debug code so
that users can debug issues themselves, or the debug output could be pasted
in an email to help developers diagnose a problem. A user-accessible debug
mode however will only remain until a stable non-beta has been released, at
which point much of the debug code may be pulled out.
2. Comments are highly encouraged and represent a significant portion of well-
written code (http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6613836),
but the selection of method and class names which are self-explanatory are a
preferred method of conveying function and intent. Anywhere in the code
where a simple function name is insufficient to capture concisely what the
code underneath is doing and why it is doing it should be well commented.
3. Documentation for all classes, functions are to be done with JavaDoc.
4. Follow the [OOD principles](http://www.oodesign.com/design-principles.html) (e.g. "Single Responsibility Principle").
6. Run the Eclipse clean-up settings (see Code Style & Conventions) before
merging.
7. While there cannot be a hard limit for line count in methods/ classes, code
should be organized in classes and methods so that responsibilities and
knowledge are distributed as much as possible. To help others read and
understand code, such organization is critical.
### Testing
Testing is a part of the Developer Change Procedure (section 3.2 (CONFIGURATION
CONTROL) of the SCMP), but in addition, the following is the procedure for
generating a project snapshot:
1. Switch to master branch
2. Pull & Sync repository
3. Export a jar file
4. Upload jar file to the downloads page named with the short build number
5. Notify project testers
### Building / Releasing
To share builds between developers for testing, we use gradle. A simple jar file build is sufficient for testing. To create a jar, simply run:
- `gradle`
To release a build, a package must be created for 4 systems and the package must successfully install on the target system:
#### Mac
- `gradle createDmg`
- Double-click to mount & drag the app to /Applications
- Run by double-clicking the app (confirm icon)
#### Windows
- `gradle msi`
- Double-click to mount & follow instructions
- Run via start menu entry (confirm icon)
#### Debian (can also be built in RedHat)
- `gradle buildDeb`
- `sudo dpkg -i *.deb`
- `treeview3`
- Also run via start menu entry (confirm icon)
#### RedHat (can also be built in Debian)
- `gradle buildRpm`
- `sudo dpkg -i *.rpm`
- `treeview3`
- Also run via start menu entry (confirm icon)
### Who do I talk to?
* Repo owner or admin
* Other community or team contact
\ No newline at end of file
The MIT License (MIT)
Original work Copyright (c) 2001-2003 Alok Saldanha
Modified work Copyright (c) 2013-2016 Princeton University
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
=========================================================================
== NOTICE file corresponding to section 4(d) of the Apache License, ==
== Version 2.0, in this case for the Apache xml-commons xml-apis ==
== distribution. ==
=========================================================================
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
Portions of this software were originally based on the following:
- software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
- software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
- software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
\ No newline at end of file
License (BSD):
==============
Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (miglayout (at) miginfocom (dot) com)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of the MiG InfoCom AB nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
\ No newline at end of file
TREEVIEW 3.0
============
TreeView is an open-source Java app for visualizing large data matrices. It can load a dataset, cluster it, browse it, customize its appearance and export it into a figure.
![treeview_screenshot.png](https://bitbucket.org/repo/AXqk7r/images/101136785-treeview_screenshot.png)
DOWNLOAD
========
** [Downloads page](https://bitbucket.org/TreeView3Dev/treeview3/wiki/Home) **
INSTALL & RUN
=============
## Requirements ##
* Java 7 or higher - visit <http://java.com/en/download/installed.jsp> to verify your current Java version.
## Windows ##
1. Download the [msi package](https://bitbucket.org/TreeView3Dev/treeview3/downloads/treeview3-beta1-win-bdc455da.msi) from the [download page](https://bitbucket.org/TreeView3Dev/treeview3/wiki/Home)
2. Double-click the downloaded msi package.
3. Follow the on-screen instructions in the TreeView3 Setup Wizard.
* Click Next.
* Click the checkbox to accept the license agreement.
* Click Next.
* If desired, change the install location & click Next.
* Click Install.
* Click Yes to allow installation of the app from an unknown publisher (bitbucket.org).
* Click Finish.
4. Click the start menu in the lower left-hand corner
5. Scroll down until you see TreeView3
6. Click TreeView3
7. If you have used a previous version of TreeView3: Select File->Preferences->Reset Preferences & click reset. You will have to restart TreeView3 afterwards.
OPTIONAL: If you would like to edit the default amount of memory to assign to TreeView3, refer to the [instructions here](https://bitbucket.org/TreeView3Dev/treeview3/wiki/OutOfMemory).
## Mac ##
1. Download the [dmg package](https://bitbucket.org/TreeView3Dev/treeview3/downloads/treeview3-beta1-osx-f4a69b16.dmg) from the [download page](https://bitbucket.org/TreeView3Dev/treeview3/wiki/Home)
2. Double-click the downloaded dmg package.
3. Drag TreeView3.app to your Applications folder.
4. Double-click TreeView3
5. Security steps (if necessary)
* If you are prompted to confirm open of an app downloaded from the internet, click "Open".
* If your security preferences prevent you from opening TreeView3, dismiss the warning, then right-(or control-)click the TreeView3 app and click "Open".
6. If you have used a previous version of TreeView3: Select File->Preferences->Reset Preferences & click reset. You will have to restart TreeView3 afterwards.
OPTIONAL: If you would like to edit the default amount of memory to assign to TreeView3, refer to the [instructions here](https://bitbucket.org/TreeView3Dev/treeview3/wiki/OutOfMemory).
## Linux (Debian) ##
1. Download the [deb package](https://bitbucket.org/TreeView3Dev/treeview3/downloads/treeview3-beta1-debian-f4a69b16.deb) from the [download page](https://bitbucket.org/TreeView3Dev/treeview3/wiki/Home)
2. Open a terminal.
3. cd to the location of the deb package.
4. Run the following commands.
* `sudo apt install ./treeview3*.deb`
* `treeview3`
5. If you have used a previous version of TreeView3: Select File->Preferences->Reset Preferences & click reset. You will have to restart TreeView3 afterwards.
OPTIONAL: If you would like to edit the default amount of memory to assign to TreeView3, refer to the [instructions here](https://bitbucket.org/TreeView3Dev/treeview3/wiki/OutOfMemory).
Note, the `./` in front of the deb package (or rather, the path to the package) is essential. Otherwise, the installation will fail. Alternatively, you can run `sudo apt install ./treeview3*.deb`.
## Linux (Redhat) ##
1. Download the [rpm package](https://bitbucket.org/TreeView3Dev/treeview3/downloads/treeview3-beta1-redhat-f4a69b16.rpm) from the [download page](https://bitbucket.org/TreeView3Dev/treeview3/wiki/Home)
2. Open a terminal.
3. cd to the location of the rpm package.
4. Run the following commands.
* `sudo rpm -ivh treeview3*.rpm`
* `treeview3`
5. If you have used a previous version of TreeView3: Select File->Preferences->Reset Preferences & click reset. You will have to restart TreeView3 afterwards.
OPTIONAL: If you would like to edit the default amount of memory to assign to TreeView3, refer to the [instructions here](https://bitbucket.org/TreeView3Dev/treeview3/wiki/OutOfMemory).
WHAT'S NEW
==========
## In Treeview 3.0 ##
* We have completely re-designed the interface to include one main data panel, with zooming, scrolling and searching options.
* We have made clustering an integral part of TreeView (no need for Cluster 3.0).
* We have added more flexible color settings (multiple colors, varying ranges) and label settings.
* We have eliminated some of the features that we considered obsolete or in need of a major re-work.
* We have improved image export.
## In the Beta 1 Release ##
* Added: Label export capabilities
* Added: Simplified installation for specific operating systems
* Fixed: File open bug
* Added: Data ticker improvements: visible data average & column/row hover averages
* Added: New label settings to control how live labels are displayed
* Fixed: "As seen on screen" export bug
* Added: Performance enhancements
* Other minor updates and bug fixes
## In the Alpha 3 Release ##
* Added: New window layout that optimizes screen space
* Added: Improved navigation:
* always-visible "live" labels and trees
* double-click to zoom
* Added: New data export:
* copy labels to clipboard
* export matrix view to PDF, SVG, PNG, JPG and PPM
* Added: Improved search
* Added: Improved color selection and editing
* Other minor updates and bug fixes
DOCUMENTATION
=============
TreeView3 is designed to be intuitive and easy to use. If anything is unclear, contact us at treeview@princeton.edu.
HOW TO CITE
===========
The manuscript describing Treeview 3.0 is currently in preparation. In the meantime, please use the following reference:
> Keil C, Leach RW, Faizaan SM, Bezawada S, Parsons L, Baryshnikova A. (2016). Treeview 3.0 (beta 1) - Visualization and analysis of large data matrices [Data set]. Zenodo. http://doi.org/10.5281/zenodo.1303402
DEVELOPERS
==========
TreeView was first developed by Michael Eisen in 1998 (Treeview 1.0) and updated a few years later by Alok Saldanha (Treeview 2.0). The development team for Treeview 3.0 includes:
* Chris Keil - University of Hamburg
* Robert Leach - Princeton University
* Srikanth Bezawada
* Faizaan Shaik
* Lance Parsons - Princeton University
* Anastasia Baryshnikova - Princeton University - <http://www.baryshnikova-lab.org>
FEEDBACK
========
If you are interested in providing feedback, you can watch this repository, create new issues or contact us at <treeview@princeton.edu>.
Also, you can subscribe to the (very low-traffic) Treeview users' mailing list at <http://eepurl.com/A2Xzf>. You will receive an email when new software versions are available.
LICENSE
=======
Treeview 3.0 is released under the MIT license, which can be found [here](https://bitbucket.org/TreeView3Dev/treeview3/src/85ca08ccd77f32f80d1f219aaf8ec23898a29828/LICENSE?at=master&fileviewer=file-view-default).
NODE1X ARRY40X ARRY42X 0.924061
NODE2X ARRY41X NODE1X 0.909011
NODE3X ARRY30X ARRY28X 0.814679
NODE4X ARRY26X ARRY24X 0.775419
NODE5X ARRY23X ARRY34X 0.775383
NODE6X ARRY11X ARRY13X 0.769649
NODE7X ARRY14X ARRY4X 0.755824
NODE8X NODE3X ARRY33X 0.754616
NODE9X NODE8X ARRY39X 0.783089
NODE10X ARRY12X ARRY3X 0.748005
NODE11X NODE10X NODE6X 0.756459
NODE12X NODE2X ARRY27X 0.703598
NODE13X ARRY48X ARRY49X 0.701895
NODE14X NODE4X ARRY35X 0.695634
NODE15X NODE9X NODE14X 0.727332
NODE16X ARRY21X NODE5X 0.695448
NODE17X ARRY29X NODE12X 0.692598
NODE18X ARRY52X ARRY50X 0.682034
NODE19X ARRY55X ARRY54X 0.681472
NODE20X ARRY17X ARRY8X 0.674981
NODE21X ARRY2X NODE11X 0.671204
NODE22X ARRY36X NODE17X 0.657099
NODE23X ARRY18X ARRY19X 0.656918
NODE24X ARRY37X ARRY22X 0.654637
NODE25X NODE16X NODE22X 0.650792
NODE26X ARRY47X NODE13X 0.637016
NODE27X NODE18X ARRY56X 0.616270
NODE28X ARRY51X NODE27X 0.624450
NODE29X NODE20X ARRY9X 0.613810
NODE30X NODE7X ARRY6X 0.609020
NODE31X NODE21X ARRY5X 0.603245
NODE32X NODE15X NODE24X 0.603061
NODE33X NODE32X NODE25X 0.582390
NODE34X ARRY0X NODE31X 0.571978
NODE35X ARRY7X NODE29X 0.568242
NODE36X ARRY15X ARRY10X 0.558131
NODE37X ARRY32X NODE33X 0.555680
NODE38X NODE26X ARRY53X 0.543727
NODE39X ARRY44X ARRY43X 0.538451
NODE40X NODE34X NODE36X 0.533930
NODE41X NODE40X NODE30X 0.553252
NODE42X NODE23X ARRY20X 0.529384
NODE43X NODE19X NODE28X 0.476463
NODE44X ARRY38X NODE37X 0.474308
NODE45X NODE44X ARRY31X 0.463230
NODE46X ARRY57X NODE41X 0.447218
NODE47X NODE45X ARRY25X 0.437801
NODE48X ARRY46X NODE38X 0.410414
NODE49X NODE48X ARRY45X 0.373935
NODE50X ARRY16X NODE35X 0.369765
NODE51X NODE46X ARRY1X 0.296702
NODE52X NODE50X ARRY59X 0.266416
NODE53X NODE52X NODE39X 0.290097
NODE54X NODE43X NODE49X 0.192820
NODE55X NODE42X NODE51X 0.178140
NODE56X ARRY58X NODE47X 0.083517
NODE57X NODE54X NODE55X 0.052870
NODE58X NODE56X NODE57X 0.037174
NODE59X NODE53X NODE58X -0.176313
NodeId LEFT RIGHT Time
NODE1X GENE9X GENE8X 0.946388
NODE2X GENE66X GENE63X 0.818218
NODE3X GENE74X GENE47X 0.803403
NODE4X GENE14X GENE25X 0.796600
NODE5X GENE48X GENE68X 0.781745
NODE6X GENE59X GENE77X 0.766262
NODE7X GENE34X NODE6X 0.773278
NODE8X NODE5X GENE38X 0.757889
NODE9X GENE21X GENE73X 0.750137
NODE10X NODE3X NODE9X 0.755202
NODE11X GENE17X NODE8X 0.734751
NODE12X GENE36X NODE11X 0.739148
NODE13X GENE3X NODE12X 0.750985
NODE14X GENE24X NODE10X 0.727383
NODE15X GENE42X NODE14X 0.750373
NODE16X GENE43X NODE15X 0.750354
NODE17X GENE61X GENE57X 0.723031
NODE18X NODE7X NODE2X 0.712228
NODE19X NODE16X NODE13X 0.709522
NODE20X GENE15X NODE19X 0.734497
NODE21X GENE67X GENE96X 0.704953
NODE22X GENE51X GENE53X 0.702323
NODE23X GENE76X GENE82X 0.701609
NODE24X GENE69X GENE91X 0.688077
NODE25X GENE90X GENE88X 0.681057
NODE26X GENE83X NODE17X 0.674750
NODE27X NODE26X GENE81X 0.701246
NODE28X GENE33X NODE18X 0.669320
NODE29X NODE22X GENE56X 0.665398
NODE30X NODE29X NODE4X 0.672702
NODE31X NODE27X GENE30X 0.661914
NODE32X GENE12X NODE20X 0.661428
NODE33X GENE95X GENE44X 0.656548
NODE34X GENE87X GENE1X 0.653656
NODE35X NODE34X GENE72X 0.729800
NODE36X NODE32X GENE23X 0.647346
NODE37X NODE21X GENE39X 0.646902
NODE38X GENE40X NODE36X 0.637830
NODE39X GENE89X GENE62X 0.627577
NODE40X NODE39X NODE23X 0.628549
NODE41X GENE2X GENE35X 0.627290
NODE42X NODE28X NODE37X 0.626427
NODE43X GENE80X GENE65X 0.621924
NODE44X NODE35X NODE42X 0.621224
NODE45X GENE32X GENE27X 0.620129
NODE46X GENE28X NODE45X 0.628758
NODE47X NODE33X NODE38X 0.585905
NODE48X GENE31X GENE84X 0.585058
NODE49X GENE45X GENE41X 0.582161
NODE50X NODE49X GENE6X 0.597140
NODE51X NODE47X NODE50X 0.599999
NODE52X GENE92X NODE25X 0.579301
NODE53X NODE51X GENE10X 0.571830
NODE54X NODE46X GENE5X 0.570731
NODE55X GENE50X GENE11X 0.567234
NODE56X GENE58X NODE30X 0.565278
NODE57X NODE43X NODE31X 0.562706
NODE58X NODE40X NODE44X 0.553371
NODE59X NODE53X GENE86X 0.527105
NODE60X GENE70X GENE71X 0.524629
NODE61X GENE26X GENE75X 0.520780
NODE62X NODE59X NODE52X 0.506543
NODE63X NODE24X GENE13X 0.499535
NODE64X GENE49X NODE56X 0.495072
NODE65X NODE64X GENE60X 0.502426
NODE66X NODE65X GENE0X 0.494449
NODE67X NODE60X GENE37X 0.489497
NODE68X GENE4X NODE58X 0.484606
NODE69X GENE18X GENE55X 0.476444
NODE70X NODE69X NODE66X 0.485185
NODE71X NODE1X GENE94X 0.464797
NODE72X NODE62X NODE67X 0.458117
NODE73X GENE64X NODE57X 0.457208
NODE74X NODE63X GENE54X 0.455800
NODE75X GENE78X NODE68X 0.455386
NODE76X NODE70X GENE7X 0.415908
NODE77X NODE76X NODE75X 0.432884
NODE78X NODE73X NODE72X 0.414975
NODE79X GENE79X NODE71X 0.414243
NODE80X GENE29X GENE20X 0.398031
NODE81X GENE85X NODE77X 0.397222
NODE82X NODE78X GENE16X 0.388753
NODE83X NODE82X NODE54X 0.371482
NODE84X NODE80X GENE19X 0.367100
NODE85X NODE83X NODE41X 0.312006
NODE86X NODE55X NODE61X 0.282325
NODE87X NODE81X GENE46X 0.266833
NODE88X GENE93X NODE85X 0.264754
NODE89X NODE48X NODE88X 0.253354
NODE90X NODE84X GENE22X 0.247727
NODE91X NODE90X NODE87X 0.227798
NODE92X NODE91X NODE74X 0.163597
NODE93X NODE89X GENE52X 0.133688
NODE94X NODE86X NODE79X 0.029715
NODE95X NODE93X NODE94X -0.100053
NODE96X NODE92X NODE95X -0.382232
<DocumentConfig><UrlExtractor/><ArrayUrlExtractor/><MainView><ColorExtractor><ColorSet/></ColorExtractor><ArrayDrawer/><GlobalXMap><FixedMap type="Fixed" scale="1.0"/><FillMap type="Fill"/><NullMap type="Null"/></GlobalXMap><GlobalYMap><FixedMap type="Fixed" scale="1.0"/><FillMap type="Fill"/><NullMap type="Null"/></GlobalYMap><ZoomXMap><FixedMap type="Fixed"/><FillMap type="Fill"/><NullMap type="Null"/></ZoomXMap><ZoomYMap><FixedMap type="Fixed"/><FillMap type="Fill"/><NullMap type="Null"/></ZoomYMap><TextView/><ArrayNameView/><Height value="0.1875"/><Height value="0.0625"/><Height value="0.75"/><Width value="0.1818181872367859"/><Width value="0.27272728085517883"/><Width value="0.27272728085517883"/><Width value="0.27272728085517883"/></MainView><Views selected="0"><View type="Dendrogram"><ColorExtractor><ColorSet/></ColorExtractor><ArrayDrawer/><GlobalXMap><FixedMap type="Fixed" scale="3.0"/><FillMap type="Fill"/><NullMap type="Null"/></GlobalXMap><GlobalYMap><FixedMap type="Fixed" scale="5.0"/><FillMap type="Fill"/><NullMap type="Null"/></GlobalYMap><ZoomXMap><FixedMap type="Fixed"/><FillMap type="Fill"/><NullMap type="Null"/></ZoomXMap><ZoomYMap><FixedMap type="Fixed"/><FillMap type="Fill"/><NullMap type="Null"/></ZoomYMap><TextView/><ArrayNameView/><Height value="0.1875"/><Height value="0.0625"/><Height value="0.75"/><Width value="0.1818181872367859"/><Width value="0.27272728085517883"/><Width value="0.27272728085517883"/><Width value="0.27272728085517883"/></View><View type="Scatterplot" xindex="-1" yindex="-1"><ScatterView><ScatterColorSet name="BlackBG"><Color type="Background" hex="#FFFFFF"/><Color type="Axis" hex="#003366"/><Color type="Data" hex="#00CC00"/><Color type="Selected" hex="#CC0000"/></ScatterColorSet><AxisInfo type="x"><AxisParameter value="0.0"/><AxisParameter type="1" value="96.0"/><AxisParameter type="2"/><AxisParameter type="3"/></AxisInfo><AxisInfo type="y"><AxisParameter value="0.0"/><AxisParameter type="1" value="96.0"/><AxisParameter type="2"/><AxisParameter type="3"/></AxisInfo></ScatterView></View><View type="Karyoscope"><KaryoDrawer><KaryoColorSet name="BlackBG"><Color type="Up"/><Color type="Down"/><Color type="Highlight"/><Color type="Genome"/><Color type="Background"/><Color type="Line"/></KaryoColorSet></KaryoDrawer><KaryoView><SimpleAverager/><IntervalAverager/><NearestAverager/><NeighborAverager/></KaryoView></View></Views></DocumentConfig>
\ No newline at end of file
<html>
<head>
<title>Java TreeView Test </title>
</head>
<body>
<h1>Java TreeView Test</h1>
<h2>PLEASE NOTE: This applet has been shown to work on Mac OSX and Win2K. </h2>
<hr>
<APPLET CODE="edu/stanford/genetics/treeview/applet/ButtonApplet.class"
archive="TreeViewApplet.jar,nanoxml-2.2.2.jar,plugins/Dendrogram.jar" width=150 height=50
alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
>
Your browser is completely ignoring the &lt;APPLET&gt; tag!
<param name="cdtFile" value="spellman.cdt">
<param name="cdtName" value="spellman">
<param name="plugins" value="edu.stanford.genetics.treeview.plugin.dendroview.DendrogramFactory">
</applet>
<hr>
</body>
</html>
# This is a build configuration for Gradle.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: java:7
image: qlik/gradle
pipelines:
default:
- step:
script: # Modify the commands below to build your repository.
- gradle
plugins {
//For building .app/.dmg Mac packages/apps - WORKS
id "edu.sc.seis.macAppBundle" version "2.2.1"
//For building shell-script/.deb Debian packages/scripts
id "nebula.ospackage" version "4.4.0"
//For building windows exes/msis
id 'de.inetsoftware.setupbuilder' version "4.5.3c"
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
apply plugin: "nebula.ospackage"
apply plugin: 'de.inetsoftware.setupbuilder'
defaultTasks "clean", "fatJar", "eclipse"
version = getVersionName()
sourceCompatibility = 1.7
targetCompatibility = 1.7
repositories {
mavenCentral()
}
dependencies {
compile 'com.miglayout:miglayout-swing:5.0'
compile 'com.googlecode.plist:dd-plist:1.3'
compile 'org.freehep:freehep-graphicsio:2.4'
compile 'org.freehep:freehep-graphicsio-pdf:2.4'
compile 'org.freehep:freehep-graphicsio-ps:2.4'
compile 'org.freehep:freehep-graphicsio-svg:2.4'
compile 'org.freehep:freehep-graphics2d:2.4'
compile 'org.swinglabs.swingx:swingx-autocomplete:1.6.5-1'
compile 'commons-io:commons-io:2.5'
}
sourceSets {
main {
java {
srcDir 'src/main/java/'
// Deprecated files excluded from build path - check if removal makes sense!
exclude '**/edu/stanford/genetics/treeview/model/FlatFileParser2.java'
exclude '**/edu/stanford/genetics/treeview/reg/**'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/DendroView_Deprec.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/DendroView2.java'
exclude '**/edu/stanford/genetics/treeview/model/TVModelLoader2.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/GTRZoomView.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/ZoomView.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/ColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/PostscriptColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/GifColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/BitmapColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/TextView_deprec.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/FontSettingsPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/InvertedTreeDrawer.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/KnnDendrogramFactory.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/KnnDendroView2.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/TextViewManager.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/GlobalView_deprec.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/ArrayNameView_deprec.java'
exclude '**/edu/stanford/genetics/treeview/LoadProgress2.java'
exclude '**/edu/stanford/genetics/treeview/CustomConfigs.java'
exclude '**/edu/stanford/genetics/treeview/MenuPanel.java'
}
}
}
def copyMacPkgFiles() {
copy {
from file("${projectDir}/")
into file("${buildDir}/macApp")
include 'README.md'
rename('README.md','README.txt')
}
mkdir file("${buildDir}/macApp/Sample")
copy {
from file("${projectDir}/src/main/resources")
into file("${buildDir}/macApp/Sample")
include 'spellman.cdt'
}
}
task fatJar(type: Jar) {
manifest {
attributes 'Main-Class':'edu.stanford.genetics.treeview.app.TreeView3'
}
baseName = project.name + '-all'
from {configurations.compile.collect {it.isDirectory() ? it : zipTree(it)}}
with jar
}
/*
* Gets the version name from the latest Git tag
* Thank you @ http://ryanharter.com/blog/2013/07/30/automatic-versioning-with-git-and-gradle/
*/
def getVersionName() {
def stdout = new ByteArrayOutputStream()
exec {
// might be useful for later version management
// commandLine 'git', 'describe', '--tags'
commandLine 'git', 'rev-parse', '--short=8', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
//Mac App Builder stuff - Use createDmg/createApp
macAppBundle {
mainClassName = "edu.stanford.genetics.treeview.app.TreeView3"
icon = "src/main/resources/TreeView3.icns"
appName = "TreeView3"
bundleJRE = false
javaExtras.put("-Xmx4g",null) //If value of key/value pair is null, it just
//adds the flag as-is without adding '='
//Put the readme & sample file(s) in the dmg
copyMacPkgFiles()
//The following does not work because macAppBundle follows symlinks when it creates the dmg
//exec {
// commandLine 'ln', '-s', '/Applications', "${buildDir}/macApp/Applications"
// standardOutput = new ByteArrayOutputStream()
//}
//We do not want a background image, but defining one causes a /Applications
//alias to get automatically created, so I created a single transparent pixel
//background png image
backgroundImage = "src/main/resources/dmg_bkgd.png"
//codeSign certificate information:
//Princeton "Developer ID Application" Certificate ID string:
certIdentity = "Y3TW367T4G"
}
createDmg.dependsOn(codeSign)
//Deb builder stuff (creates shell script & puts in /usr/local) - Use buildDeb
ospackage {
packageName = 'treeview3'
version = '1beta'
release = getVersionName()
arch = ''
os = LINUX
into '/usr/local/treeview3'
from ( 'build/install/treeview3/lib' ) {
include '*.jar'
into "lib"
}
from ( 'build/scripts' ) {
include 'treeview3'
fileMode 0555
into "bin"
}
from ( 'scripts/lnx' ) {
include 'treeview3.desktop'
into "desktop"
}
from ( 'src/main/resources' ) {
include 'logo.png'
into "desktop"
}
from ( "." ) {
include 'README.md'
into "docs"
}
from ( 'src/main/resources' ) {
include 'spellman.cdt'
into "docs/Sample"
}
}
buildRpm {
link('/usr/local/bin/treeview3', '/usr/local/treeview3/bin/treeview3')
String libname = 'treeview3-' + getVersionName() + '.jar'
link('/usr/local/lib/' + libname, '/usr/local/treeview3/lib/' + libname)
link('/usr/share/applications/treeview3.desktop', '/usr/local/treeview3/desktop/treeview3.desktop')
}
buildDeb {
link('/usr/local/bin/treeview3', '/usr/local/treeview3/bin/treeview3')
String libname = 'treeview3-' + getVersionName() + '.jar'
link('/usr/local/lib/' + libname, '/usr/local/treeview3/lib/' + libname)
link('/usr/share/applications/treeview3.desktop', '/usr/local/treeview3/desktop/treeview3.desktop')
}
//This code is required in order to have a shell script created for the .deb package installer
//The following is based on:
//https://blog.heckel.xyz/2014/05/29/gradle-create-windows-installers-debian-packages-manage-a-ppa-and-optional-sub-projects/#Building-Debian-Ubuntu-packages-and-uploading-to-a-PPA
mainClassName = "edu.stanford.genetics.treeview.app.TreeView3"
String applicationVersionFull = getVersionName()
task debianClean(type: Delete) {
delete 'build/debian'
}
tasks.addRule("Pattern: debianPrepare<distribution>") { String taskName ->
if (taskName.startsWith("debianPrepare")) {
task(taskName, dependsOn: [installDist, debianClean]){
String debianDistribution = (taskName - "debianPrepare").toLowerCase()
//String debianPpaVersion = getVersionName()
String debianApplicationVersionFull = getVersionName()
doLast {
copy {
from rootProject.files("build/install/treeview3")
into rootProject.file("build/debian/treeview3")
exclude '**/edu/stanford/genetics/treeview/model/FlatFileParser2.java'
exclude '**/edu/stanford/genetics/treeview/reg/**'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/DendroView_Deprec.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/DendroView2.java'
exclude '**/edu/stanford/genetics/treeview/model/TVModelLoader2.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/GTRZoomView.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/ZoomView.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/ColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/PostscriptColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/GifColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/BitmapColorBarExportPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/TextView_deprec.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/FontSettingsPanel.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/InvertedTreeDrawer.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/KnnDendrogramFactory.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/KnnDendroView2.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/TextViewManager.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/GlobalView_deprec.java'
exclude '**/edu/stanford/genetics/treeview/plugin/dendroview/ArrayNameView_deprec.java'
exclude '**/edu/stanford/genetics/treeview/LoadProgress2.java'
exclude '**/edu/stanford/genetics/treeview/CustomConfigs.java'
exclude '**/edu/stanford/genetics/treeview/MenuPanel.java'
}
copy {
from rootProject.files("gradle/debian/debian")
into rootProject.file("build/debian/treeview3/debian")
}
}
}
}
}
buildDeb.dependsOn debianPreparetreeview3
buildRpm.dependsOn debianPreparetreeview3
//SetupBuilder attempt...
setupBuilder {
vendor = 'Princeton University Bioinformatics Group'
application = "TreeView3"
appIdentifier = "treeview3"
description = "Clustering heatmap browser"
version = '1.0'
icons = 'src/main/resources/TreeView3.icns'
licenseFile = 'LICENSES/LICENSE'
from fatJar.outputs
mainClass = 'edu.stanford.genetics.treeview.app.TreeView3'
mainJar = 'TreeView3.jar'
}
msi {
String contents = new File( 'scripts/win/TreeView3.template' ).getText( 'UTF-8' )
contents = contents.replaceAll( 'HASHSTR', getVersionName() )
new File( 'scripts/win/final/TreeView3.bat' ).write( contents, 'UTF-8' )
from( 'scripts/win/final' ) {
include '*'
fileMode 0755
}
from ( "." ) {
include 'README.md'
}
from ( 'src/main/resources' ) {
include 'spellman.cdt'
into "Sample"
}
def jarfile = 'treeview3' + '-all-' + getVersionName() + '.jar'
setupBuilder.desktopStarter {
displayName = 'TreeView3'
executable = 'TreeView3.vbs'
}
}
msi.dependsOn fatJar
<project name="Java TreeView" default="compile" basedir=".">
<!-- to make doc: javadoc -private -classpath lib/nanoxml-2.2.2.jar -d javadoc `find src | grep java` -->
<target name="javadoc" description="make java docs">
<javadoc destdir="javadoc" author="true"
version="true"
use="true"
windowtitle="Java Treeview API"
access="private"
>
<classpath refid="classpath"/>
<packageset dir="src/edu">
</packageset>
<packageset dir="src/com">
</packageset>
<doctitle><![CDATA[<h1>Java Treeview</h1>]]></doctitle>
<bottom><![CDATA[<i>http://jtreeview.sourceforge.net</i>]]></bottom>
<link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/>
</javadoc>
</target>
<!-- ========== Prerequisite Properties =================================== -->
<property name="app.name" value="TreeView" />
<property name="build.home" value="target" />
<property name="plugin.dir" value="plugins" />
<!-- ========== Initialization Properties ================================= -->
<!--
These property values may optionally be overridden with property
settings from an "ant" command line, the "antrc" properties file
in your home directory, or from settings in a superior build.xml
script.
-->
<!-- Should Java compilations set the debug compiler option? -->
<property name="compile.debug" value="false" />
<!-- libs only used for compiling -->
<property name="compile.lib" value="compile_lib" />
<!-- Should Java compilations set the deprecation compiler option? -->
<property name="compile.deprecation" value="false" />
<!-- Should Java compilations set the optimize compiler option? -->
<property name="compile.optimize" value="false" />
<!-- The base directory for distribution targets -->
<property name="dist.home" value="dist" />
<!-- directory in which to put output -->
<property name="app.target" value="target" />
<!-- copy source? -->
<property name="app.suppress" value="true" />
<!-- The source directory for Java compilations related to this app -->
<property name="app.src" value="src" />
<!-- The source directory for static content related to this app -->
<property name="app.static" value="static" />
<!-- The name of the web application archive file to be produced -->
<property name="app.jar" value="${app.name}.jar" />
<property name="app.appletJar" value="${app.name}Applet.jar" />
<property name="app.libs" value="lib" />
<!-- ========== Derived Properties ======================================== -->
<!--
These property values are derived from values defined above, and
generally should NOT be overridden by command line settings
-->
<!-- The class path used for compiling this library -->
<path id="classpath">
<fileset dir="${app.libs}">
<include name="*.jar"/>
</fileset>
<fileset dir="${compile.lib}">
<include name="*.jar"/>
</fileset>
<pathelement location="src"/>
</path>
<!-- ========== Executable Targets ======================================== -->
<!--
The "prepare" target creates a directory structure in the build target
area for the unpacked files associated with this web application
-->
<target name="prepare"
description="Prepare target directory">
<echo message="Processing app ${app.name}"/>
<mkdir dir="${app.target}" />
<mkdir dir="${dist.home}" />
</target>
<!--
The "libs" target copies specified library JAR files (if any) from the
"${webapp.libs} directory into the WEB-INF/lib directory of this app.
<target name="libs" depends="prepare"
description="Copy dependent libraries">
<echo message="Processing configuration files and libraries for webapp ${webapp.name}"/>
<mkdir dir="${webapp.target}/WEB-INF/lib" />
<copy todir="${webapp.target}/WEB-INF/lib">
<fileset dir="${webapp.libs}" includes="*.jar"/>
</copy>
<copy todir="${webapp.target}/WEB-INF">
<fileset dir="etc" includes="**/*.xml"/>
<fileset dir="etc/struts" includes="*"/>
</copy>
</target>
-->
<target name="libs" depends="prepare"
description="Copy dependent libraries"/>
<!--
The "source" target copies the Java source code of your web application
into the build target area, IF AND ONLY IF the "webapp.source"
property has been set to an arbitrary value.
-->
<target name="source" depends="prepare"
unless="app.suppress"
description="Copy Java sources">
<echo message="Copying source files webapp ${webapp.name}"/>
<mkdir dir="${app.target}/src"/>
<copy todir="${app.target}/src">
<fileset dir="${app.src}"/>
</copy>
</target>
<!--
The "static" target copies the static web resources portion of your
web application source into the build target area.
<target name="static" depends="prepare,source,libs"
description="Copy static files">
<echo message="Copying static web content ${app.name}"/>
<copy todir="${app.target}">
<fileset dir="${app.static}"/>
</copy>
</target>
-->
<target name="static" depends="prepare,source,libs"
description="Copy static files">
<echo message="Copying static web content ${app.name}"/>
<copy todir="${app.target}">
<fileset dir="${app.static}"/>
</copy>
</target>
<!--
The "compile" target compiles the Java source code of your web
application, if and only if the specified source directory
actually exists.
-->
<target name="compile" depends="static"
description="Compile Java sources">
<echo message="Compiling app ${app.name}"/>
<javac target = "1.5" source ="1.5" srcdir="${app.src}"
destdir="${app.target}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}">
<classpath refid="classpath"/>
</javac>
<copy todir="${app.target}">
<fileset dir="${app.src}">
<exclude name="**/*.java"/>
<exclude name="**/*.pcl"/>
</fileset>
</copy>
</target>
<!--
7. Test the deployment
The "dist" target creates a web application archive containing
your completed web application, suitable for deployment on any
compatible servlet container.
-->
<target name="jar" depends="compile"
description="Create jar file ">
<echo message="Creating jar file for ${app.name}"/>
<!-- The ** bullshit matches any level of directories, * just matches one -->
<jar jarfile="${app.jar}"
basedir="${app.target}"
includes="**/*.class"
excludes="edu/stanford/genetics/treeview/plugin/**">
<manifest>
<attribute name="Main-Class" value="LinkedView"/>
<attribute name="Class-Path" value=". lib/nanoxml-2.2.2.jar"/>
</manifest>
</jar>
</target>
<target name="appletJar" depends="compile"
description="Create applet jar file">
<echo message="Creating applet jar file for ${app.name}"/>
<jar jarfile="${app.appletJar}"
basedir="${app.target}"
includes="**/*.class"
excludes="*coordinates/*,edu/stanford/genetics/treeview/plugin/**,edu/stanford/genetics/treeview/reg/**">
<manifest>
<attribute name="Main-Class" value="LinkedView"/>
<attribute name="Class-Path" value="lib/nanoxml-2.2.2.jar"/>
</manifest>
</jar>
</target>
<target name="applet" depends="appletJar,plugins"
description="assembles applet test case">
<echo message="Creating applet test case for ${app.name}"/>
<mkdir dir="applet"/>
<move todir="applet">
<fileset file="TreeViewApplet.jar"/>
</move>
<copy todir="applet">
<fileset dir="appletStatic"/>
</copy>
<copy todir="applet">
<fileset file="lib/nanoxml-2.2.2.jar"/>
</copy>
<move file ="${plugin.dir}" todir="applet">
</move>
</target>
<target name="pluginDir">
<mkdir dir="${plugin.dir}"/>
</target>
<target name="dendrogramPlugin" depends="pluginDir,compile">
<echo message="Creating jar file for dendrogram plugin"/>
<copy file="${app.src}/edu/stanford/genetics/treeview/plugin/dendroview/tv_plugins.cd"
todir="${app.target}/edu/stanford/genetics/treeview/plugin/dendroview">
</copy>
<!-- The ** bullshit matches any level of directories, * just matches one -->
<jar jarfile="${plugin.dir}/Dendrogram.jar"
basedir="${app.target}"
includes="edu/stanford/genetics/treeview/plugin/dendroview**/*">
</jar>
</target>
<target name="karyoscopePlugin" depends="pluginDir,compile">
<echo message="Creating jar file for karyoscope plugin"/>
<copy file="${app.src}/edu/stanford/genetics/treeview/plugin/karyoview/tv_plugins.cd"
todir="${app.target}/edu/stanford/genetics/treeview/plugin/karyoview">
</copy>
<!-- The ** bullshit matches any level of directories, * just matches one -->
<jar jarfile="${plugin.dir}/Karyoscope.jar"
basedir="${app.target}"
includes="edu/stanford/genetics/treeview/plugin/karyoview**/*">
</jar>
</target>
<target name="scatterplotPlugin" depends="pluginDir,compile">
<echo message="Creating jar file for scatterplot plugin"/>
<copy file="${app.src}/edu/stanford/genetics/treeview/plugin/scatterview/tv_plugins.cd"
todir="${app.target}/edu/stanford/genetics/treeview/plugin/scatterview">
</copy>
<!-- The ** bullshit matches any level of directories, * just matches one -->
<jar jarfile="${plugin.dir}/Scatterplot.jar"
basedir="${app.target}"
includes="edu/stanford/genetics/treeview/plugin/scatterview**/*">
</jar>
</target>
<target name="treeannoPlugin" depends="pluginDir,compile">
<echo message="Creating jar file for treeanno plugin"/>
<copy file="${app.src}/edu/stanford/genetics/treeview/plugin/treeanno/tv_plugins.cd"
todir="${app.target}/edu/stanford/genetics/treeview/plugin/treeanno">
</copy>
<!-- The ** bullshit matches any level of directories, * just matches one -->
<jar jarfile="${plugin.dir}/Treeanno.jar"
basedir="${app.target}"
includes="edu/stanford/genetics/treeview/plugin/treeanno**/*">
</jar>
</target>
<target name="plugins" depends="dendrogramPlugin,karyoscopePlugin,scatterplotPlugin,treeannoPlugin">
</target>
<target name="dist" depends="jar,plugins"
description="Creates a complete running app in dist">
<echo message="Creating distribution app ${app.name}"/>
<move todir="${dist.home}">
<fileset file="TreeView.jar"/>
</move>
<move file ="${plugin.dir}" todir="${dist.home}">
</move>
<mkdir dir="${dist.home}/lib"/>
<copy todir="${dist.home}/lib">
<fileset dir="lib"/>
</copy>
<copy todir="${dist.home}">
<fileset dir="static"/>
</copy>
</target>
<!--
The "clean" task deletes any created directories that have resulted
from running any of the other targets in this script.
-->
<target name="clean"
description="Clean build and distribution directories">
<echo message="Processing app ${app.name}"/>
<delete dir="${app.target}" />
<delete file="${app.jar}" />
<delete dir="${dist.home}" />
<delete dir="applet" />
<delete dir="bundle" />
</target>
<!-- some stuff for Mac OSX application bundles... -->
<!-- unfortunately, this only work on max os X right now. -->
<taskdef name="jarbundler"
classname="net.sourceforge.jarbundler.JarBundler">
<classpath>
<pathelement path="${compile.lib}/jarbundler-1.8.1.jar" />
<pathelement path="${compile.lib}/xercesImpl.jar" />
<pathelement path="${compile.lib}/xml-apis.jar" />
</classpath>
</taskdef>
<target name="bundle" depends="jar,plugins"
description="Make a mac application bundle">
<delete dir="bundle" />
<mkdir dir="bundle"/>
<mkdir dir="bundle/TreeView"/>
<jarbundler dir="bundle/TreeView"
name="Java TreeView"
mainclass="edu.stanford.genetics.treeview.app.LinkedViewApp"
jars="TreeView.jar lib/nanoxml-2.2.2.jar"
icon="static/images/treeviewIcon.icns"
version="1.1.6r4"
aboutmenuname="Java TreeView"
vmoptions="-Xmx500m -Dapple.awt.TextAntialiasing=false "
arguments="-b ."
/>
<mkdir dir="bundle/TreeView/images"/>
<copy todir="bundle/TreeView/images">
<fileset dir="static/images"/>
</copy>
<move file ="${plugin.dir}" todir="bundle/TreeView">
</move>
<mkdir dir="bundle/TreeView/coordinates"/>
<copy todir="bundle/TreeView/coordinates">
<fileset dir="static/coordinates"/>
</copy>
<delete file="TreeView.jar"/>
</target>
</project>
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/css"
href="/common/mozilla/layout/xml/tests/docbook.css" ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"../../docbook/docbookx.dtd">
<book>
<title> Java TreeView Programmer&apos;s Guide </title>
<info>
<author>
<personname>
<firstname> Alok </firstname>
<surname> Saldanha </surname>
</personname>
</author>
</info>
<preface>
<title> Preface </title>
<para>
This manual is designed to get you started developing Java TreeView derivatives. This consists of two things:
</para>
<orderedlist>
<listitem> <para> Getting the tools necessary to develop Java TreeView </para></listitem>
<listitem> <para> An Overview of the archtecture </para></listitem>
</orderedlist>
<para>
Detailed descriptions of classes and stuff can be found in the Javadoc, and probably change too quickly to be worth documenting in a separate manual.
</para>
<para>
An outdated description of the architecture can be found in my thesis, which is available online. Until we get real funding, I will focus on putting useful reference material in here. This information will not be useful to you unless you are willing to read a lot of source code.
</para>
</preface>
<chapter id="ch1">
<title> Getting Started </title>
<para>
This chapter will get you started with developing java treeview.
</para>
<itemizedlist>
<title>Tools required for developing Java TreeView</title>
<listitem> <para> Java SDK </para> </listitem>
<listitem> <para> JEdit or other code editor </para> </listitem>
<listitem> <para> ant, a Java-based replacement for make</para> </listitem>
<listitem> <para> DocBook environment,
<emphasis>
only for documentation authoring
</emphasis>
</para>
</listitem>
</itemizedlist>
<sect1 id="ch1_requiredTools">
<title> Required Tools </title>
<para>
In this section, I will describe the tools required to build java treeview.
</para>
<sect2>
<title> TreeView Source Code </title>
<para>
You must, of course, download the source distribution of Java Treeview from http://jtreeview.sourceforge.net
</para>
</sect2>
<sect2>
<title> Java SDK </title>
<para>
The java sdk can be downloaded from the sun website at http://java.sun.com/j2se/.
</para>
</sect2>
<sect2>
<title> ant </title>
<para>
Apache Ant, the build tool, is available from
http://ant.apache.org/bindownload.cgi
</para>
</sect2>
<sect2>
<title> Code Editor </title>
<para>
The crossplatform editor jedit is recommended, available from
http://www.jedit.org/index.php?page=download
</para>
</sect2>
<sect2>
<title> DocBook </title>
<para>
Docbook is more of a file format (an XML dialect to be precise) than a tool.
</para>
</sect2>
</sect1>
<sect1 id="ch1_buildJTV">
<title> Building Java Treeview </title>
<para>
Once you have the java sdk and apache ant installed, unpack the source distribution of java treeview, open a command line shell, switch to the unpacked source directory, which should contain the build.xml file, and type "ant dist" to build java treeview. You should now have a freshly built TreeView.jar sitting in the "dist" subdirectory.
</para>
</sect1>
<sect1 id="ch1_buildDocs">
<title> Building the documentation</title>
<para>
Download a recent version of docbook-xsl or docbook-xsl-ns from
<ulink url="http://sourceforge.net/project/showfiles.php?group_id=21935">
http://sourceforge.net/project/showfiles.php?group_id=21935
</ulink>
unpack, and set an environment variable $XSL equal to the path. In mac os x, if docbook-xsl is unpacked in /usr/local/share/xml/xsl/docbook-xsl,
then you would set the path with <command>export XSL=/usr/local/share/xml/xsl/docbook-xsl</command>.
</para>
<para>
Download the current version of docbook (or docbook-4.5.zip, which is known to work) from
<ulink url="http://www.oasis-open.org/docbook/">http://www.oasis-open.org/docbook/</ulink>, unpack
and make a link called "docbook" in the LinkedView directory.
This will enable your xml source files to be checked against the DTD, which
greatly helps with writing the source when you have a DTD aware editor (such as
<ulink url="http://xmlbuddy.com/">XML Buddy</ulink> for Eclipse). This is also required to resolve external entities, such as "&eacute;".
</para>
<para>
You will probably also need the ISO entity sets from http://www.oasis-open.org/docbook/xmlcharent/0.3/index.shtml. Put them in an "ent" subdirectory of the docbook directory (i.e. the docbook-4.5 directory, not the xsl direcgtory).
</para>
<para>
If you want to make the PDFs, you will need FOP (<ulink url="http://xmlgraphics.apache.org/fop/">http://xmlgraphics.apache.org/fop/</ulink>.
After you unpack this file, set an environment variable $FOP to point at the directory containing the fop shell script, for example <command>export FOP=/usr/local/share/xml/fop</command>.
</para>
<para>
Make sure you have xsltproc installed. You should now be able to run the createAllDoc.pl script.
</para>
</sect1>
</chapter>
<chapter id="ch2">
<title> Reference Material </title>
<para> This chapter will hold reference material for java treeview development
</para>
<sect1> <title> Structure of XML Configuration Files </title>
<para> There are two types of xml configuration files used by java treeview,
a global xml configuration file and a per-document configuration file or JTV. The location of the global xml configuration file is described in the user manual.
</para>
<sect2> <title> Structure of Global XML Configuration File </title>
<para>
There is a single global XML configuration file in which java treeview stores the following information
</para>
<orderedlist>
<listitem> <para> recently used files list</para></listitem>
<listitem> <para> last style used</para></listitem>
<listitem> <para> whether parse quoted strings was used</para></listitem>
<listitem> <para> defaults settings for views</para></listitem>
</orderedlist>
<sect3 id="ch2_xml_global">
<title> Java Treeview 1.1.1 Global XML config</title>
<itemizedlist>
<listitem> <para> ProgramConfig </para> <para> Root node of XML config</para>
<itemizedlist>
<listitem> <para> FileMru arributes (style, quotes)</para>
<para> Node holds recent files, style attribute indicates last style used to open file, quotes indicate whether parseQuotedStrings was selected</para>
<itemizedlist>
<listitem> <para> File attributes (root, dir, style) optional (cdt) </para>
<para> Node represents an individual file, with the dir it is found in, the root of the filename, and the style to open with. If cdt is specified, it means to use that extension instead of cdt to find the GCDT file.
</para> </listitem>
</itemizedlist>
</listitem>
<listitem> <para> GeneUrlPresets attribute (default) </para>
<para> Holds default gene url presets, default attribute indicated default preset. -1 means do not link at all by default. </para>
<itemizedlist>
<listitem> <para> Preset attributes (name, template, header, enabled) </para>
<para> Holds info for one url preset. Name is the name of the preset, template is the template to fill in, header is which header to fill it in with (by name, not index) and enabled is whether the preset is enabled. I'm not sure when or why I added an enabled flag to all presets.
</para>
</listitem></itemizedlist>
</listitem>
<listitem> <para> ArrayUrlPresets attribute (default) </para>
<para> Holds default array url presets, default attribute indicated default preset. -1 means do not link at all by default. </para>
<itemizedlist>
<listitem> <para> Preset attributes (name, template, header, enabled) </para>
<para> Holds info for one url preset. Name is the name of the preset, template is the template to fill in, header is which header to fill it in with (by name, not index) and enabled is whether the preset is enabled. I'm not sure when or why I added an enabled flag to all presets.
</para>
</listitem></itemizedlist>
</listitem>
<listitem> <para> Plugins</para>
<para> Presets and defaults for particular plugins. </para>
<itemizedlist>
<listitem> <para>PluginPresets attrbutes (name)</para>
<para> presets for plugin identified by name. Nodes will be provided to "presets configuration" dialogs that plugins make available, as well as the plugins themselves. </para>
</listitem>
<listitem> <para> PluginDefaults attributes (name) </para>
<para> Defaults for particular plugin, identified by name. These defaults shadow the configuration of the plugin in the per-document jtv, and are not directly modified by the plugin.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem> <para> Registration </para> <para> registration status </para>
<itemizedlist> <listitem>
<para> Entry attributes (jtv_version, java_version, java_vendor, os_name, os_arch, os_version, install_ip, install_host, install_date, status, first_name, last_name, email, institution, contactOkay) </para>
<para> Registration entry, with various info about the installation. status keeps track of the status of that registration, and has values "deferred", "declined", "pending" and "complete". The meaning of these settings, as of all settings, is currently defined only in the source code of java treeview.
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="ch2_xml_global_1_0">
<title> Java Treeview 1.0.12 Global XML config</title>
<para>
In Java Treeview up until 1.0.12, the global configuration did not make any real distinction between places in which view-specific default values were stored, and places where program-wide defaults were stored. Moving forward, view specific defaults are now placed in a special "Defaults" node, which has subnodes for each type of view, and view-specific presets are put in a special "Presets" node. There are two things that are retained as view-indpendent general presets, the url and gene linking configuration. These pieces are actually provided to the views by the ViewFrame through the getUrlExtractor and getArrayUrlExtractor methods. Moving the per-view presets to their own nodes removes management of the dialogs from the main program, as well as weird calls such as "getKaryoColorPresets" that are clearly used by only one type of view from the LinkedViewFrame interface.
</para>
<para>
The following is the structure of the global configuration as of JTV 1.0.12
</para>
<itemizedlist>
<listitem> <para> ProgramConfig </para> <para> Root node of XML config</para>
<itemizedlist>
<listitem> <para> FileMru arributes (style, quotes)</para>
<para> Node holds recent files, style attribute indicates last style used to open file, quotes indicate whether parseQuotedStrings was selected</para>
<itemizedlist>
<listitem> <para> File attributes (root, dir, style) optional (cdt) </para>
<para> Node represents an individual file, with the dir it is found in, the root of the filename, and the style to open with. If cdt is specified, it means to use that extension instead of cdt to find the GCDT file.
</para> </listitem>
</itemizedlist>
</listitem>
<listitem> <para> GeneUrlPresets attribute (default) </para>
<para> Holds default gene url presets, default attribute indicated default preset. -1 means do not link at all by default. </para>
<itemizedlist>
<listitem> <para> Preset attributes (name, template, header, enabled) </para>
<para> Holds info for one url preset. Name is the name of the preset, template is the template to fill in, header is which header to fill it in with (by name, not index) and enabled is whether the preset is enabled. I'm not sure when or why I added an enabled flag to all presets.
</para>
</listitem></itemizedlist>
</listitem>
<listitem> <para> ArrayUrlPresetsattribute (default) </para>
<para> Holds default array url presets, default attribute indicated default preset. -1 means do not link at all by default. </para>
<itemizedlist>
<listitem> <para> Preset attributes (name, template, header, enabled) </para>
<para> Holds info for one url preset. Name is the name of the preset, template is the template to fill in, header is which header to fill it in with (by name, not index) and enabled is whether the preset is enabled. I'm not sure when or why I added an enabled flag to all presets.
</para>
</listitem></itemizedlist>
</listitem>
<listitem> <para> ColorPresets</para>
<para> color presets for dendrogram</para>
<itemizedlist>
<listitem> <para>ColorSet attrbutes (name, up, down)</para>
<para> Set of colors to use for dendrogram view. name is name, up is up color, down is down color. </para>
</listitem>
</itemizedlist>
</listitem>
<listitem> <para> KaryoColorPresets</para> <para>color presets forkaryoscope </para>
<itemizedlist>
<listitem> <para> KaryoColorSet attribute (name) </para>
<para> Set of colors for karyoscope view. name is name of set. </para>
<itemizedlist><listitem>
<para> Color attribute (type, hex) </para>
<para> Particular color in set. Type is type of color, hex is hex value for color. </para>
</listitem> </itemizedlist>
</listitem>
</itemizedlist>
</listitem>
<listitem> <para> ScatterColorPresets</para><para> sctterview color presets </para>
<itemizedlist>
<listitem> <para> ScatterColorSet attribute (name) </para>
<para> Set of colors for karyoscope view. name is name of set. </para>
<itemizedlist>
<listitem>
<para> Color attribute (type, hex) </para>
<para> Particular color in set. Type is type of color, hex is hex value for color. </para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</listitem>
<listitem> <para> CoordsPresets </para> <para> coordinates presets for karyoscope </para> </listitem>
<listitem> <para> Registration </para> <para> registration status </para>
<itemizedlist> <listitem>
<para> Entry attributes (jtv_version, java_version, java_vendor, os_name, os_arch, os_version, install_ip, install_host, install_date, status, first_name, last_name, email, institution, contactOkay) </para>
<para> Registration entry, with various info about the installation. status keeps track of the status of that registration, and has values "deferred", "declined", "pending" and "complete". The meaning of these settings, as of all settings, is currently defined only in the source code of java treeview.
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect3>
</sect2>
<sect2> <title> Structure of JTV XML Configuration File </title>
<para>
Each document also has a local JTV file for document-level settings. The nodes i
<itemizedlist>
<listitem>
<para> UrlExtractor attribute (urlTemplate,isEnabled, index)</para>
<para> used for gene url linking </para>
</listitem>
<listitem>
<para> ArrayUrlExtractor attribute (urlTemplate,isEnabled, index)</para>
<para> used for array url linking </para>
</listitem>
</itemizedlist>
</para>
</sect2>
</sect1>
<sect1 id="ch2_karyoscope">
<title> Architecture of Karyoscope Plugin </title>
<para>
The main class of the Karyoscope Plugin is KaryoPanel.
It is a container for the KaryoView, KaryoViewParameterPanel and a
StatusPanel, and coordinates interaction between them.
</para>
</sect1>
<sect1 id="ch2_dendrogram">
<title> Architecture of Dendrogram Plugin </title>
<sect2 id="ch2_dendrogram_urlextractor">
<title> Url Extraction </title>
<para>
There is a single instance of the UrlExtractor for each document that is loaded
by java treeview. Each instance contains a reference to the application level
UrlPresets. Internally, there are two ways that a URL extractor can resolve a
request to make a URL, with the specific URL for a given HEADER (via lookup of the
column header in the presets) or via the generic URL preset.
</para>
</sect2>
</sect1>
</chapter>
</book>