LineageTool is a Java-based genealogy visualization application that helps users explore and understand family trees through an interactive graphical interface.
- Interactive Graph Visualization: Drag and arrange family nodes freely
- Collapsible Nodes: Double-click to collapse/expand family branches
- Path Highlighting: Click nodes to highlight ancestral paths
- Information Panel: View detailed information about selected family members
- Multi-Root Support: Display multiple family trees simultaneously
- Smooth Navigation: Enhanced scrolling and zooming capabilities
- Search Functionality: Search function allows collapsing of irrelevant information and view lineage of specific person in tree.
- Mass Collapsing/Expanding can collapse entire tree and slowly expand by each generation
- Java Swing for GUI components
- JGraphX for graph visualization
- Maven for dependency management
- Java 8 or higher
- Maven 3.x
# Clone the repository
git clone https://github.com/your-username/LineageTool.git
cd LineageTool
# Build with Maven also ensure correct sub directory folder
cd ./lineagetool
mvn clean install
# Run the application
mvn exec:java -Dexec.mainClass="com.lineagetool.App"- Tree currently does not allow during runtime manipulation of trees and only compiles tree at start with text file (see lineage.txt)
- Scroll: Use mouse wheel to navigate vertically
- Pan: Click and drag empty space to move around
- Zoom: Hold Ctrl + mouse wheel to zoom in/out
- Single Click: View person's details and highlight path to root
- Double Click: Collapse/expand node's children
- Drag: Click and drag nodes to rearrange the tree
Lineages are all controlled by single text file with example tree pre filled out. (Run time data modification on the way)
lineagetool/
├── src/main/java/com/lineagetool/
│ ├── App.java # Application entry point
│__lineage.txt # Modify tree data through here.
└── pom.xml # Maven configuration
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.