/** * Expands the sub folders and image informations under the specified node. * * @param node the node. */ protected void expandNode(DefaultMutableTreeNode node) { try { Object[] paths = node.getPath(); String path_str = ""; Vector folder_list = new Vector(); for (int i = 1; i < paths.length; i++) { String name = (String) ((DefaultMutableTreeNode) paths[i]).getUserObject(); path_str += "/" + name; // Converts January...December to 1...12. if (mode == DATE_ORIENTED && i == 2) { for (int m = 1; m <= 12; m++) { if (JulianDay.getFullSpellMonthString(m).equals(name)) name = String.valueOf(m); } } folder_list.addElement(name); } // When to expand sub folders. Vector folders = new Vector(); if (mode == DATE_ORIENTED) folders = db_manager.getDateOrientedFolders(folder_list); if (mode == PATH_ORIENTED) folders = db_manager.getPathOrientedFolders(folder_list); addNode(node, folders); // When to expand image informations. XmlDBAccessor accessor = null; if (mode == DATE_ORIENTED) accessor = db_manager.getDateOrientedAccessor(folder_list); if (mode == PATH_ORIENTED) accessor = db_manager.getPathOrientedAccessor(folder_list); if (accessor != null) { Vector name_list = new Vector(); XmlInformation info = (XmlInformation) accessor.getFirstElement(); while (info != null) { name_list.addElement(info.getPath()); hash_info.put(path_str + "/" + info.getPath(), info); info = (XmlInformation) accessor.getNextElement(); } addNode(node, name_list); } revalidate(); repaint(); } catch (IOException exception) { String message = "Failed to read the database."; JOptionPane.showMessageDialog(pane, message, "Error", JOptionPane.ERROR_MESSAGE); } }
/** * Adds the listener of image information selection. * * @param listener the listener of image information selection. */ public void addInformationTreeSelectionListener(InformationTreeSelectionListener listener) { listener_list.addElement(listener); }