/** * Copyright 2009-14 Simon Andrews * * This file is part of BamQC. * * BamQC is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * BamQC is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with BamQC; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * Changelog: * - Simon Andrews: Class creation. */ package uk.ac.babraham.BamQC.Help; import java.io.File; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; /** * The Class HelpDialog is the root window of the help system. * @author Simon Andrews */ public class HelpDialog extends JDialog implements TreeSelectionListener { private static final long serialVersionUID = -5895752006807164521L; /** The tree. */ private JTree tree; /** The current page. */ private HelpPageDisplay currentPage = null; /** The main split. */ private JSplitPane mainSplit; /** * Instantiates a new help dialog. * * @param parent the parent * @param startingLocation the starting location */ public HelpDialog (JFrame parent, File startingLocation) { super(parent,"Help Contents"); HelpIndexRoot root = new HelpIndexRoot(startingLocation); mainSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); setContentPane(mainSplit); tree = new JTree(new DefaultTreeModel(root)); JSplitPane leftSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT); leftSplit.setTopComponent(new JScrollPane(tree)); leftSplit.setBottomComponent(new HelpSearchPanel(root,this)); mainSplit.setLeftComponent(leftSplit); currentPage = new HelpPageDisplay(null); mainSplit.setRightComponent(currentPage); tree.addTreeSelectionListener(this); setSize(800,500); setLocationRelativeTo(parent); setVisible(true); leftSplit.setDividerLocation(0.7); mainSplit.setDividerLocation(0.3); findStartingPage(); } /** * Find starting page. */ private void findStartingPage () { DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)tree.getModel().getRoot(); DisplayPage((HelpPage)currentNode.getFirstLeaf()); } /** * Display page. * * @param page the page */ public void DisplayPage(HelpPage page) { if (currentPage != null) { int d = mainSplit.getDividerLocation(); mainSplit.remove(currentPage); currentPage = new HelpPageDisplay(page); mainSplit.setRightComponent(currentPage); mainSplit.setDividerLocation(d); } } /* (non-Javadoc) * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent) */ @Override public void valueChanged(TreeSelectionEvent tse) { if (tse.getNewLeadSelectionPath() == null) return; Object o = tse.getNewLeadSelectionPath().getLastPathComponent(); if (o instanceof HelpPage && ((HelpPage)o).isLeaf()) { DisplayPage((HelpPage)o); } } }