public void run() { SearchTOCItem tocitem; Vector nodes = new Vector(); // Add all the children of the topnode to the Vector of nodes. Enumeration children = topNode.children(); while (children.hasMoreElements()) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) children.nextElement(); nodes.addElement(node); } debug("items found"); HelpModel helpmodel = searchnav.getModel(); HelpSet hs = helpmodel.getHelpSet(); debug("hs:" + hs.toString()); Map map = hs.getCombinedMap(); Enumeration itemEnum = e.getSearchItems(); while (itemEnum.hasMoreElements()) { SearchItem item = (SearchItem) itemEnum.nextElement(); debug(" item: " + item); URL url; try { url = new URL(item.getBase(), item.getFilename()); } catch (MalformedURLException me) { System.err.println( "Failed to create URL from " + item.getBase() + "|" + item.getFilename()); continue; } boolean foundNode = false; DefaultMutableTreeNode node = null; Enumeration nodesEnum = nodes.elements(); while (nodesEnum.hasMoreElements()) { node = (DefaultMutableTreeNode) nodesEnum.nextElement(); tocitem = (SearchTOCItem) node.getUserObject(); URL testURL = tocitem.getURL(); if (testURL != null && url != null && url.sameFile(testURL)) { tocitem = (SearchTOCItem) node.getUserObject(); tocitem.addSearchHit( new SearchHit(item.getConfidence(), item.getBegin(), item.getEnd())); foundNode = true; break; } } if (!foundNode) { tocitem = new SearchTOCItem(item); node = new DefaultMutableTreeNode(tocitem); nodes.addElement(node); } } reorder(nodes); ((DefaultTreeModel) tree.getModel()).reload(); }
private int compare(DefaultMutableTreeNode node1, DefaultMutableTreeNode node2) { SearchTOCItem item1, item2; double confidence1, confidence2; int hits1, hits2; item1 = (SearchTOCItem) node1.getUserObject(); confidence1 = item1.getConfidence(); hits1 = item1.hitCount(); item2 = (SearchTOCItem) node2.getUserObject(); confidence2 = item2.getConfidence(); hits2 = item2.hitCount(); // confidence is a penality. The lower the better if (confidence1 > confidence2) { // node1 is less than node2 return -1; } else if (confidence1 < confidence2) { // node1 is greater than node2 return 1; } else { // confidences are the same check the hits if (hits1 < hits2) { // node1 is less than node2 return -1; } else if (hits1 > hits2) { // node2 is greater than node2 return 1; } } // nodes1 and nodes2 are equivalent return 0; }
private void doSave() { ObjectOutputStream objectStream = getObjectOutputStream(); if (objectStream != null) { try { System.out.println("Saving " + selectedChildrenPaths.size() + " Selected Generations..."); for (int i = 0; i < selectedChildrenPaths.size(); i++) { // Get the userObject at the supplied path Object selectedPath = ((TreePath) selectedChildrenPaths.elementAt(i)).getLastPathComponent(); DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) selectedPath; objectStream.writeObject(selectedNode.getUserObject()); } objectStream.close(); System.out.println("Save completed successfully."); } catch (IOException e) { System.err.println(e); } } else { System.out.println("Save Selected Files has been aborted!"); } }
public DefaultMutableTreeNode findNode(DefaultMutableTreeNode parent, String match) { if (parent == null) return null; // Commented by Balan on 15/03/03 // String treename = (String)parent.getUserObject (); // Comment Ends // Added by Balan on 15/03/03 String treename = "" + ((Hashtable) parent.getUserObject()).get("TREE-NAME"); // Add Ends if (treename != null) { if (treename.equals(match)) return parent; } if (frame.model.isLeaf(parent)) return null; Enumeration en = parent.children(); if ((en == null) || (!en.hasMoreElements())) return null; for (; en.hasMoreElements(); ) { DefaultMutableTreeNode child = (DefaultMutableTreeNode) en.nextElement(); DefaultMutableTreeNode returnNode = findNode(child, match); if (returnNode != null) return returnNode; } return null; }
/** * Called when the selection changed in the tree. Loads the selected certificate. * * @param e the event */ private void valueChangedPerformed(TreeSelectionEvent e) { Object o = e.getNewLeadSelectionPath().getLastPathComponent(); if (o instanceof DefaultMutableTreeNode) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) o; infoTextPane.setText(toString(node.getUserObject())); } }
/** * Recursively rebuild the tree nodes. * * @param root The full abstract path to the root saved layout directory. * @param local The current directory relative to root (null if none). * @param tnode The current parent tree node. */ private void rebuildTreeModel(Path root, Path local, DefaultMutableTreeNode tnode) { TreeSet<Path> subdirs = new TreeSet<Path>(); TreeSet<String> layouts = new TreeSet<String>(); { Path current = new Path(root, local); File files[] = current.toFile().listFiles(); if (files != null) { int wk; for (wk = 0; wk < files.length; wk++) { String name = files[wk].getName(); if (files[wk].isDirectory()) subdirs.add(new Path(local, name)); else if (files[wk].isFile()) layouts.add(name); } } } for (Path subdir : subdirs) { TreeData data = new TreeData(subdir); DefaultMutableTreeNode child = new DefaultMutableTreeNode(data, true); tnode.add(child); rebuildTreeModel(root, subdir, child); } for (String lname : layouts) { TreeData data = new TreeData(new Path(local, lname), lname); DefaultMutableTreeNode child = new DefaultMutableTreeNode(data, false); tnode.add(child); } }
/** * Adds nodes to the specified parent node recurrsively. * * @param parent_node the parent node. * @param list the list of child node names. */ protected void addNode(DefaultMutableTreeNode parent_node, Vector list) { SortableArray array = null; if (mode == DATE_ORIENTED && parent_node.getLevel() <= 2) { array = new Array(list.size()); for (int i = 0; i < list.size(); i++) ((Array) array).set(i, Integer.parseInt((String) list.elementAt(i))); } else { array = new StringArray(list.size()); for (int i = 0; i < list.size(); i++) ((StringArray) array).set(i, (String) list.elementAt(i)); } ArrayIndex index = array.sortAscendant(); for (int i = 0; i < array.getArraySize(); i++) { String name = (String) list.elementAt(index.get(i)); // Converts 1...12 to January...December. if (mode == DATE_ORIENTED && parent_node.getLevel() == 1) { int month = Integer.parseInt(name); name = JulianDay.getFullSpellMonthString(month); } DefaultMutableTreeNode node = new DefaultMutableTreeNode(name); parent_node.add(node); } }
// reorder the nodes private void reorder(Vector nodes) { debug("reorder nodes"); // remove all the children of topNode (they'll be added back later) topNode.removeAllChildren(); // Create an array of the elements for sorting & copy the elements // into the array. DefaultMutableTreeNode[] array = new DefaultMutableTreeNode[nodes.size()]; nodes.copyInto(array); // Sort the array (Quick Sort) quickSort(array, 0, array.length - 1); // Reload the topNode. Everthing is in order now. for (int i = 0; i < array.length; i++) { topNode.add((DefaultMutableTreeNode) array[i]); } // Tell the tree to repaint itself ((DefaultTreeModel) tree.getModel()).reload(); tree.invalidate(); tree.repaint(); }
/** A value has changed. This is used as a TreeSelectionListener. */ public void valueChanged(TreeSelectionEvent e) { JHelpNavigator navigator = getHelpNavigator(); HelpModel helpmodel = navigator.getModel(); debug("ValueChanged: " + e); debug(" model: " + helpmodel); // send selected items into navigator TreeItem[] items = null; TreePath[] paths = tree.getSelectionPaths(); if (paths != null) { items = new TreeItem[paths.length]; for (int i = 0; i < paths.length; i++) { if (paths[i] != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) paths[i].getLastPathComponent(); items[i] = (TreeItem) node.getUserObject(); } } } navigator.setSelectedItems(items); // change current id only if one items is selected if (items != null && items.length == 1) { SearchTOCItem item = (SearchTOCItem) items[0]; if (item != null) { if (item.getID() != null) { try { // navigator.setCurrentID(item.getID()); helpmodel.setCurrentID(item.getID(), item.getName(), navigator); } catch (InvalidHelpSetContextException ex) { System.err.println("BadID: " + item.getID()); return; } } else if (item.getURL() != null) { // navigator.setCurrentURL(item.getURL()); helpmodel.setCurrentURL(item.getURL(), item.getName(), navigator); } else { // no ID, no URL return; } if (helpmodel instanceof TextHelpModel) { DefaultHighlight h[] = new DefaultHighlight[item.hitCount()]; int i = 0; Enumeration enum1 = item.getSearchHits(); while (enum1.hasMoreElements()) { SearchHit info = (SearchHit) enum1.nextElement(); h[i] = new DefaultHighlight(info.getBegin(), info.getEnd()); i++; } // using setHighlights() instead of removeAll + add // avoids one highlighting event ((TextHelpModel) helpmodel).setHighlights(h); } } } }
private MutableTreeNode populatePlot(Plot p) throws SQLException { DefaultMutableTreeNode tree = new DefaultMutableTreeNode(p); // tree.add(populateAttributes(p)); Statement stmt = db.statement(); for (Tree t : p.loadTrees(stmt)) { tree.add(populateTree(t)); } stmt.close(); return tree; }
private MutableTreeNode populateCavity(Cavity c) throws SQLException { DefaultMutableTreeNode tree = new DefaultMutableTreeNode(c); // tree.add(populateAttributes(c)); Statement stmt = db.statement(); for (Nest n : c.loadNests(stmt)) { tree.add(populateNest(n)); } stmt.close(); return tree; }
private MutableTreeNode populateTree(Tree t) throws SQLException { DefaultMutableTreeNode tree = new DefaultMutableTreeNode(t); // tree.add(populateAttributes(t)); Statement stmt = db.statement(); for (Cavity c : t.loadCavities(stmt)) { tree.add(populateCavity(c)); } stmt.close(); return tree; }
private MutableTreeNode populateNest(Nest n) throws SQLException { DefaultMutableTreeNode tree = new DefaultMutableTreeNode(n); // tree.add(populateAttributes(n)); Statement stmt = db.statement(); for (Visit v : n.loadVisits(stmt)) { tree.add(populateVisit(v)); } stmt.close(); return tree; }
public void editSelected() { TreePath selected = tree.getSelectionPath(); if (selected != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) selected.getLastPathComponent(); Object obj = node.getUserObject(); if (obj instanceof CavityDBObject) { CavityDBObject dbObj = (CavityDBObject) obj; new ObjectEditingFrame(new ObjectEditingPanel(dbObj)); } } }
/** * Update the layouts tree. * * @param current The name of the current layout or <CODE>null</CODE> if none. */ public void updateLayouts(Path current) throws PipelineException { DefaultMutableTreeNode root = null; { root = new DefaultMutableTreeNode(new TreeData(), true); { Path path = new Path(PackageInfo.getSettingsPath(), "layouts"); rebuildTreeModel(path, new Path("/"), root); } DefaultTreeModel model = (DefaultTreeModel) pTree.getModel(); model.setRoot(root); { Enumeration e = root.depthFirstEnumeration(); if (e != null) { while (e.hasMoreElements()) { DefaultMutableTreeNode tnode = (DefaultMutableTreeNode) e.nextElement(); pTree.expandPath(new TreePath(tnode.getPath())); } } } } pTree.clearSelection(); if (current != null) { TreePath tpath = null; DefaultMutableTreeNode tnode = root; for (String comp : current.getComponents()) { DefaultMutableTreeNode next = null; Enumeration e = tnode.children(); if (e != null) { while (e.hasMoreElements()) { DefaultMutableTreeNode child = (DefaultMutableTreeNode) e.nextElement(); TreeData data = (TreeData) child.getUserObject(); if (data.toString().equals(comp)) { tpath = new TreePath(child.getPath()); next = child; break; } } } if (next == null) break; tnode = next; } if (tpath != null) { pTree.setSelectionPath(tpath); pTree.makeVisible(tpath); } } }
/** Remove the currently selected node. */ public void removeCurrentNode() { TreePath currentSelection = tree.getSelectionPath(); if (currentSelection != null) { DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode) (currentSelection.getLastPathComponent()); MutableTreeNode parent = (MutableTreeNode) (currentNode.getParent()); if (parent != null) { treeModel.removeNodeFromParent(currentNode); return; } } // Either there was no selection, or the root was selected. toolkit.beep(); }
void addChildren(DefaultMutableTreeNode parent, File parentDirFile) { for (File file : parentDirFile.listFiles()) { String[] namesplitStrings = file.toString().split("\\\\"); String filename = namesplitStrings[namesplitStrings.length - 1]; if (file.isDirectory()) { DefaultMutableTreeNode child = new DefaultMutableTreeNode(filename); addChildren(child, file); parent.add(child); } else if (file.isFile()) { parent.add(new DefaultMutableTreeNode(filename)); } } }
/** * Reloads data from new model, creates new search engine to search in new model if model contains * view with the same name */ private void reloadData(HelpModel model) { debug("reloadData using new model"); helpsearch = null; SearchView view = null; newHelpSet = model.getHelpSet(); SearchView oldView = (SearchView) searchnav.getNavigatorView(); String oldName = oldView.getName(); NavigatorView[] navViews = newHelpSet.getNavigatorViews(); for (int i = 0; i < navViews.length; i++) { if ((navViews[i].getName()).equals(oldName)) { NavigatorView tempView = navViews[i]; if (tempView instanceof SearchView) { view = (SearchView) tempView; break; } } } if (view == null) return; topNode.removeAllChildren(); searchnav.setSearchEngine(new MergingSearchEngine(view)); setCellRenderer(view, tree); // add all subhelpsets addSubHelpSets(newHelpSet); }
private TreeModel buildModel(Object[] resolvers) { TreeModel fullModel = null; DefaultMutableTreeNode top = new DefaultMutableTreeNode(Tr.t("root")); try { cpos = null; for (Object resolver : resolvers) { if (resolver instanceof ColorPository) { cpos = (ColorPository) resolver; GraphCellRenderer graphCellRenderer = new GraphCellRenderer(cpos); colors.setCellRenderer(graphCellRenderer); break; } } Collection<ColorPository.ClassRecord> classes = cpos.getClasses(); String[] classNames = new String[classes.size()]; Iterator<ColorPository.ClassRecord> it = classes.iterator(); int count = 0; while (it.hasNext()) { classNames[count] = it.next().name; count++; } Arrays.sort(classNames); for (String className : classNames) { ColorPository.ColorRecord[] colors = cpos.enumerateColors(className); String[] colorNames = new String[colors.length]; for (int a = 0; a < colorNames.length; a++) { colorNames[a] = colors[a].name; } Arrays.sort(colorNames); DefaultMutableTreeNode tn = new DefaultMutableTreeNode(className); top.add(tn); for (String colorName : colorNames) { tn.add(new DefaultMutableTreeNode(colorName)); } } fullModel = new DefaultTreeModel(top); } catch (Exception e) { fullModel = new DefaultTreeModel(new DefaultMutableTreeNode(Tr.t("root.failed"))); // e.printStackTrace(); } return fullModel; }
public void treeNodesChanged(TreeModelEvent e) { DefaultMutableTreeNode node; node = (DefaultMutableTreeNode) (e.getTreePath().getLastPathComponent()); /* * If the event lists children, then the changed * node is the child of the node we've already * gotten. Otherwise, the changed node and the * specified node are the same. */ int index = e.getChildIndices()[0]; node = (DefaultMutableTreeNode) (node.getChildAt(index)); System.out.println("The user has finished editing the node."); System.out.println("New value: " + node.getUserObject()); }
/** {@inheritDoc} */ @Override public void setParent(final MutableTreeNode aNewParent) { if (this.parent == aNewParent) { // Nothing to do... return; } super.setParent(aNewParent); }
/** {@inheritDoc} */ @Override public void setUserObject(Object aUserObject) { if ((aUserObject != ROOT_ID) && (aUserObject instanceof String)) { setText((String) aUserObject); } else if (aUserObject instanceof Boolean) { setVisible(((Boolean) aUserObject).booleanValue()); } else if (aUserObject instanceof IUIElement) { super.setUserObject(aUserObject); } }
private MutableTreeNode populateAttributes(CavityDBObject obj) { DefaultMutableTreeNode tree = new DefaultMutableTreeNode("attrs"); Class cls = obj.getClass(); for (Field f : cls.getFields()) { int mod = f.getModifiers(); if (Modifier.isPublic(mod) && !Modifier.isStatic(mod)) { String fieldName = f.getName(); try { Object value = f.get(obj); tree.add( new DefaultMutableTreeNode(String.format("%s=%s", fieldName, String.valueOf(value)))); } catch (IllegalAccessException e) { // do nothing. } } } return tree; }
/** * Called whenever the value of the selection changes. * * @param e the event that characterizes the change. */ public void valueChanged(TreeSelectionEvent e) { TreePath path = e.getPath(); if (path != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); if (node.isLeaf()) { if (getInformation(path) != null) { // When selecting an image information. XmlInformation info = getInformation(path); for (int i = 0; i < listener_list.size(); i++) { InformationTreeSelectionListener listener = (InformationTreeSelectionListener) listener_list.elementAt(i); listener.select(info); } } else { // When expanding a folder. expandNode(node); } } } }
// Public Methods public void appendNextTreeGeneration(Vector generation) { DefaultMutableTreeNode nextGeneration = generationNodeBuilder(generation); generations.add(nextGeneration); // If Generations contains leaf nodes (generated objects) // Enabled Save All Menu Item if (generations.getLeafCount() > 0) miSaveAll.setEnabled(true); else miSaveAll.setEnabled(false); // Update JTree View // affected nodes needing updating int[] nodeRangeToUpdate = {generations.getIndex(nextGeneration)}; ((DefaultTreeModel) tree.getModel()).nodesWereInserted(generations, nodeRangeToUpdate); // Expand Parent after first child node is displayed if (generationNumber == 1) tree.expandRow(0); ++generationNumber; }
/** * Processes an idChanged event. Search is different from all other navigators in that you while * search tree is synchronized the highlighting doesn't occur unless selected from the search * navigator. */ public void idChanged(HelpModelEvent e) { ID id = e.getID(); URL url = e.getURL(); HelpModel helpModel = searchnav.getModel(); debug("idChanged(" + e + ")"); if (e.getSource() != helpModel) { debug("Internal inconsistency!"); debug(" " + e.getSource() + " != " + helpModel); throw new Error("Internal error"); } TreePath s = tree.getSelectionPath(); if (s != null) { Object o = s.getLastPathComponent(); // should require only a TreeNode if (o instanceof DefaultMutableTreeNode) { DefaultMutableTreeNode tn = (DefaultMutableTreeNode) o; SearchTOCItem item = (SearchTOCItem) tn.getUserObject(); if (item != null) { ID nId = item.getID(); if (nId != null && nId.equals(id)) { return; } } } } DefaultMutableTreeNode node = findIDorURL(topNode, id, url); if (node == null) { // node doesn't exist. Need to clear the selection. debug("node didn't exist"); tree.clearSelection(); return; } TreePath path = new TreePath(node.getPath()); tree.expandPath(path); tree.setSelectionPath(path); tree.scrollPathToVisible(path); }
private void doSaveAll() { ObjectOutputStream objectStream = getObjectOutputStream(); if (objectStream != null) { try { System.out.println("Saving All " + generations.getLeafCount() + " Generations..."); for (Enumeration e = generations.depthFirstEnumeration(); e.hasMoreElements(); ) { DefaultMutableTreeNode tmpNode = (DefaultMutableTreeNode) e.nextElement(); if (tmpNode.isLeaf()) objectStream.writeObject(tmpNode.getUserObject()); } objectStream.close(); System.out.println("Save completed successfully."); } catch (IOException e) { System.err.println(e); } } else { System.out.println("Save All Files has been aborted!"); } }
/** {@inheritDoc} */ @Override public void insert(final MutableTreeNode aNewChild, final int aChildIndex) { super.insert(aNewChild, aChildIndex); Object newChildUserObject = ((ElementTreeNode) aNewChild).getUserObject(); if ((this.userObject instanceof ElementGroup) && (newChildUserObject instanceof SignalElement)) { // Move the actual element as well... ((ElementGroup) this.userObject) .moveChannel((SignalElement) newChildUserObject, aChildIndex); } }
private DefaultMutableTreeNode findIDorURL(DefaultMutableTreeNode node, ID id, URL url) { SearchTOCItem item = (SearchTOCItem) node.getUserObject(); if (item != null) { ID testID = item.getID(); if (testID != null && id != null && testID.equals(id)) { return node; } else { URL testURL = item.getURL(); if (testURL != null && url != null && url.sameFile(testURL)) { return node; } } } int size = node.getChildCount(); for (int i = 0; i < size; i++) { DefaultMutableTreeNode tmp = (DefaultMutableTreeNode) node.getChildAt(i); DefaultMutableTreeNode test = findIDorURL(tmp, id, url); if (test != null) { return test; } } return null; }
/** * 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); } }