[rhino] 07/13: Removed the out of tree debugger classes (merged upstream)

Emmanuel Bourg ebourg-guest at moszumanska.debian.org
Thu Jan 19 16:55:37 UTC 2017


This is an automated email from the git hooks/post-receive script.

ebourg-guest pushed a commit to branch master
in repository rhino.

commit 776f97e943f6ab1400ff9afc107c8c869cc987e1
Author: Emmanuel Bourg <ebourg at apache.org>
Date:   Thu Jan 19 16:58:43 2017 +0100

    Removed the out of tree debugger classes (merged upstream)
---
 debian/changelog                                   |   1 +
 debian/clean                                       |   1 -
 debian/rules                                       |  12 -
 .../AbstractCellEditor.java                        |  63 --
 .../AbstractTreeTableModel.java                    | 195 ------
 .../FileSystemModel2.java                          | 774 ---------------------
 .../JTreeTable.java                                | 356 ----------
 .../MergeSort.java                                 |  84 ---
 .../TreeTableExample2.java                         | 480 -------------
 .../TreeTableModel.java                            |  71 --
 .../TreeTableModelAdapter.java                     | 128 ----
 11 files changed, 1 insertion(+), 2164 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index ef68801..9d3f0e2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -10,6 +10,7 @@ rhino (1.7.7-1) UNRELEASED; urgency=medium
       and relocate the old coordinates rhino:js to org.mozilla:rhino
   * Removed the transitional package rhino-doc
   * Build with the DH sequencer instead of CDBS
+  * Removed the out of tree debugger classes (merged upstream)
   * Standards-Version updated to 3.9.8
   * Switch to debhelper level 10
   * Use secure Vcs-* URLs
diff --git a/debian/clean b/debian/clean
index c570052..567609b 100644
--- a/debian/clean
+++ b/debian/clean
@@ -1,2 +1 @@
-toolsrc/org/mozilla/javascript/tools/debugger/downloaded/*
 build/
diff --git a/debian/rules b/debian/rules
index fb00be3..191770d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,18 +7,6 @@ BUILDDIR = build/rhino$(VERSION)
 	dh $@ --with javahelper --with maven-repo-helper
 
 override_dh_auto_build:
-	# The upstream build file (toolsrc/org/mozilla/javascript/tools/debugger/build.xml)
-	# downloads a ZIP file containing some sample swing code, which is then modified
-	# and used as part of the debugger. This is obviously not permitted during a Debian build.
-	# Fortunately the sample code is DFSG-free, so it has been included in the debian
-	# directory (in its modified format).  Copying it to the "downloaded" directory
-	# prevents the upstream build.xml from attempting to download it.
-	mkdir -p toolsrc/org/mozilla/javascript/tools/debugger/downloaded
-	cp debian/src_from_treetable_article_see_bug409629/AbstractCellEditor.java    toolsrc/org/mozilla/javascript/tools/debugger/downloaded/
-	cp debian/src_from_treetable_article_see_bug409629/JTreeTable.java            toolsrc/org/mozilla/javascript/tools/debugger/downloaded/
-	cp debian/src_from_treetable_article_see_bug409629/TreeTableModel.java        toolsrc/org/mozilla/javascript/tools/debugger/downloaded/
-	cp debian/src_from_treetable_article_see_bug409629/TreeTableModelAdapter.java toolsrc/org/mozilla/javascript/tools/debugger/downloaded/
-
 	dh_auto_build -- jar javadoc
 
 override_mh_install:
diff --git a/debian/src_from_treetable_article_see_bug409629/AbstractCellEditor.java b/debian/src_from_treetable_article_see_bug409629/AbstractCellEditor.java
deleted file mode 100644
index 7acce07..0000000
--- a/debian/src_from_treetable_article_see_bug409629/AbstractCellEditor.java
+++ /dev/null
@@ -1,63 +0,0 @@
-
-         package org.mozilla.javascript.tools.debugger.downloaded;
-         import java.awt.Component;
-       
-import java.awt.event.*;
-import java.awt.AWTEvent;
-import javax.swing.*;
-import javax.swing.event.*;
-import java.util.EventObject;
-import java.io.Serializable;
-
-public class AbstractCellEditor implements CellEditor {
-
-    protected EventListenerList listenerList = new EventListenerList();
-
-    public Object getCellEditorValue() { return null; }
-    public boolean isCellEditable(EventObject e) { return true; }
-    public boolean shouldSelectCell(EventObject anEvent) { return false; }
-    public boolean stopCellEditing() { return true; }
-    public void cancelCellEditing() {}
-
-    public void addCellEditorListener(CellEditorListener l) {
-	listenerList.add(CellEditorListener.class, l);
-    }
-
-    public void removeCellEditorListener(CellEditorListener l) {
-	listenerList.remove(CellEditorListener.class, l);
-    }
-
-    /*
-     * Notify all listeners that have registered interest for
-     * notification on this event type.  
-     * @see EventListenerList
-     */
-    protected void fireEditingStopped() {
-	// Guaranteed to return a non-null array
-	Object[] listeners = listenerList.getListenerList();
-	// Process the listeners last to first, notifying
-	// those that are interested in this event
-	for (int i = listeners.length-2; i>=0; i-=2) {
-	    if (listeners[i]==CellEditorListener.class) {
-		((CellEditorListener)listeners[i+1]).editingStopped(new ChangeEvent(this));
-	    }	       
-	}
-    }
-
-    /*
-     * Notify all listeners that have registered interest for
-     * notification on this event type.  
-     * @see EventListenerList
-     */
-    protected void fireEditingCanceled() {
-	// Guaranteed to return a non-null array
-	Object[] listeners = listenerList.getListenerList();
-	// Process the listeners last to first, notifying
-	// those that are interested in this event
-	for (int i = listeners.length-2; i>=0; i-=2) {
-	    if (listeners[i]==CellEditorListener.class) {
-		((CellEditorListener)listeners[i+1]).editingCanceled(new ChangeEvent(this));
-	    }	       
-	}
-    }
-}
diff --git a/debian/src_from_treetable_article_see_bug409629/AbstractTreeTableModel.java b/debian/src_from_treetable_article_see_bug409629/AbstractTreeTableModel.java
deleted file mode 100644
index d120672..0000000
--- a/debian/src_from_treetable_article_see_bug409629/AbstractTreeTableModel.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * @(#)AbstractTreeTableModel.java	1.2 98/10/27
- *
- * Copyright 1997, 1998 by Sun Microsystems, Inc.,
- * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
- * All rights reserved.
- *
- * This software is the confidential and proprietary information
- * of Sun Microsystems, Inc. ("Confidential Information").  You
- * shall not disclose such Confidential Information and shall use
- * it only in accordance with the terms of the license agreement
- * you entered into with Sun.
- */
-
-import javax.swing.tree.*;
-import javax.swing.event.*;
- 
-/**
- * @version 1.2 10/27/98
- * An abstract implementation of the TreeTableModel interface, handling the list 
- * of listeners. 
- * @author Philip Milne
- */
-
-public abstract class AbstractTreeTableModel implements TreeTableModel {
-    protected Object root;     
-    protected EventListenerList listenerList = new EventListenerList();
-  
-    public AbstractTreeTableModel(Object root) {
-        this.root = root; 
-    }
-
-    //
-    // Default implmentations for methods in the TreeModel interface. 
-    //
-
-    public Object getRoot() {
-        return root;
-    }
-
-    public boolean isLeaf(Object node) {
-        return getChildCount(node) == 0; 
-    }
-
-    public void valueForPathChanged(TreePath path, Object newValue) {}
-
-    // This is not called in the JTree's default mode: use a naive implementation. 
-    public int getIndexOfChild(Object parent, Object child) {
-        for (int i = 0; i < getChildCount(parent); i++) {
-	    if (getChild(parent, i).equals(child)) { 
-	        return i; 
-	    }
-        }
-	return -1; 
-    }
-
-    public void addTreeModelListener(TreeModelListener l) {
-        listenerList.add(TreeModelListener.class, l);
-    }
-
-    public void removeTreeModelListener(TreeModelListener l) {
-        listenerList.remove(TreeModelListener.class, l);
-    }
-
-    /*
-     * Notify all listeners that have registered interest for
-     * notification on this event type.  The event instance 
-     * is lazily created using the parameters passed into 
-     * the fire method.
-     * @see EventListenerList
-     */
-    protected void fireTreeNodesChanged(Object source, Object[] path, 
-                                        int[] childIndices, 
-                                        Object[] children) {
-        // Guaranteed to return a non-null array
-        Object[] listeners = listenerList.getListenerList();
-        TreeModelEvent e = null;
-        // Process the listeners last to first, notifying
-        // those that are interested in this event
-        for (int i = listeners.length-2; i>=0; i-=2) {
-            if (listeners[i]==TreeModelListener.class) {
-                // Lazily create the event:
-                if (e == null)
-                    e = new TreeModelEvent(source, path, 
-                                           childIndices, children);
-                ((TreeModelListener)listeners[i+1]).treeNodesChanged(e);
-            }          
-        }
-    }
-
-    /*
-     * Notify all listeners that have registered interest for
-     * notification on this event type.  The event instance 
-     * is lazily created using the parameters passed into 
-     * the fire method.
-     * @see EventListenerList
-     */
-    protected void fireTreeNodesInserted(Object source, Object[] path, 
-                                        int[] childIndices, 
-                                        Object[] children) {
-        // Guaranteed to return a non-null array
-        Object[] listeners = listenerList.getListenerList();
-        TreeModelEvent e = null;
-        // Process the listeners last to first, notifying
-        // those that are interested in this event
-        for (int i = listeners.length-2; i>=0; i-=2) {
-            if (listeners[i]==TreeModelListener.class) {
-                // Lazily create the event:
-                if (e == null)
-                    e = new TreeModelEvent(source, path, 
-                                           childIndices, children);
-                ((TreeModelListener)listeners[i+1]).treeNodesInserted(e);
-            }          
-        }
-    }
-
-    /*
-     * Notify all listeners that have registered interest for
-     * notification on this event type.  The event instance 
-     * is lazily created using the parameters passed into 
-     * the fire method.
-     * @see EventListenerList
-     */
-    protected void fireTreeNodesRemoved(Object source, Object[] path, 
-                                        int[] childIndices, 
-                                        Object[] children) {
-        // Guaranteed to return a non-null array
-        Object[] listeners = listenerList.getListenerList();
-        TreeModelEvent e = null;
-        // Process the listeners last to first, notifying
-        // those that are interested in this event
-        for (int i = listeners.length-2; i>=0; i-=2) {
-            if (listeners[i]==TreeModelListener.class) {
-                // Lazily create the event:
-                if (e == null)
-                    e = new TreeModelEvent(source, path, 
-                                           childIndices, children);
-                ((TreeModelListener)listeners[i+1]).treeNodesRemoved(e);
-            }          
-        }
-    }
-
-    /*
-     * Notify all listeners that have registered interest for
-     * notification on this event type.  The event instance 
-     * is lazily created using the parameters passed into 
-     * the fire method.
-     * @see EventListenerList
-     */
-    protected void fireTreeStructureChanged(Object source, Object[] path, 
-                                        int[] childIndices, 
-                                        Object[] children) {
-        // Guaranteed to return a non-null array
-        Object[] listeners = listenerList.getListenerList();
-        TreeModelEvent e = null;
-        // Process the listeners last to first, notifying
-        // those that are interested in this event
-        for (int i = listeners.length-2; i>=0; i-=2) {
-            if (listeners[i]==TreeModelListener.class) {
-                // Lazily create the event:
-                if (e == null)
-                    e = new TreeModelEvent(source, path, 
-                                           childIndices, children);
-                ((TreeModelListener)listeners[i+1]).treeStructureChanged(e);
-            }          
-        }
-    }
-
-    //
-    // Default impelmentations for methods in the TreeTableModel interface. 
-    //
-
-    public Class getColumnClass(int column) { return Object.class; }
-
-   /** By default, make the column with the Tree in it the only editable one. 
-    *  Making this column editable causes the JTable to forward mouse 
-    *  and keyboard events in the Tree column to the underlying JTree. 
-    */ 
-    public boolean isCellEditable(Object node, int column) { 
-         return getColumnClass(column) == TreeTableModel.class; 
-    }
-
-    public void setValueAt(Object aValue, Object node, int column) {}
-
-
-    // Left to be implemented in the subclass:
-
-    /* 
-     *   public Object getChild(Object parent, int index)
-     *   public int getChildCount(Object parent) 
-     *   public int getColumnCount() 
-     *   public String getColumnName(Object node, int column)  
-     *   public Object getValueAt(Object node, int column) 
-     */
-}
diff --git a/debian/src_from_treetable_article_see_bug409629/FileSystemModel2.java b/debian/src_from_treetable_article_see_bug409629/FileSystemModel2.java
deleted file mode 100644
index 5962f7a..0000000
--- a/debian/src_from_treetable_article_see_bug409629/FileSystemModel2.java
+++ /dev/null
@@ -1,774 +0,0 @@
-/*
- * FileSystemModel2.java
- *
- * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the confidential and proprietary information of Sun
- * Microsystems, Inc. ("Confidential Information").  You shall not
- * disclose such Confidential Information and shall use it only in
- * accordance with the terms of the license agreement you entered into
- * with Sun.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
- * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
- * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
- * THIS SOFTWARE OR ITS DERIVATIVES.
- *
- */
-
-import java.io.IOException;
-import java.io.File;
-import java.util.Date;
-import java.util.Stack;
-import javax.swing.SwingUtilities;
-import javax.swing.tree.TreePath;
-
-/**
- * FileSystemModel2 is a TreeTableModel representing a hierarchical file
- * system.<p>
- * This will recursively load all the children from the path it is
- * created with. The loading is done with the method reloadChildren, and
- * happens in another thread. The method isReloading can be invoked to check
- * if there are active threads. The total size of all the files are also
- * accumulated.
- * <p>
- * By default links are not descended. java.io.File does not have a way
- * to distinguish links, so a file is assumed to be a link if its canonical
- * path does not start with its parent path. This may not cover all cases,
- * but works for the time being.
- * <p>Reloading happens such that all the files of the directory are
- * loaded and immediately available. The background thread then recursively
- * loads all the files of each of those directories. When each directory has
- * finished loading all its sub files they are attached and an event is
- * generated in the event dispatching thread. A more ambitious approach
- * would be to attach each set of directories as they are loaded and generate
- * an event. Then, once all the direct descendants of the directory being
- * reloaded have finished loading, it is resorted based on total size.
- * <p>
- * While you can invoke reloadChildren as many times as you want, care
- * should be taken in doing this. You should not invoke reloadChildren
- * on a node that is already being reloaded, or going to be reloaded
- * (meaning its parent is reloading but it hasn't started reloading
- * that directory yet). If this is done odd results may
- * happen. FileSystemModel2 does not enforce any policy in this manner,
- * and it is up to the user of FileSystemModel2 to ensure it doesn't
- * happen.
- * 
- * @version 1.12 05/12/98
- * @author Philip Milne
- * @author Scott Violet
- */
-
-public class FileSystemModel2 extends AbstractTreeTableModel {
-
-    // Names of the columns.
-    static protected String[]  cNames = {"Name", "Size", "Type", "Modified"};
-
-    // Types of the columns.
-    static protected Class[]  cTypes = { TreeTableModel.class,
-					 Integer.class, String.class,
-					 Date.class};
-
-    // The the returned file length for directories. 
-    public static final Integer      ZERO = new Integer(0); 
-
-    /** An array of MergeSorter sorters, that will sort based on size. */
-    static Stack      sorters = new Stack();
-
-
-    /** True if the receiver is valid, once set to false all Threads
-     * loading files will stop. */
-    protected boolean                isValid;
-
-    /** Node currently being reloaded, this becomes somewhat muddy if
-     * reloading is happening in multiple threads. */
-    protected FileNode               reloadNode;
-
-    /** > 0 indicates reloading some nodes. */
-    int                              reloadCount;
-
-    /** Returns true if links are to be descended. */
-    protected boolean                descendLinks;
-
-
-    /**
-     * Returns a MergeSort that can sort on the totalSize of a FileNode.
-     */
-    protected static MergeSort getSizeSorter() {
-	synchronized(sorters) {
-	    if (sorters.size() == 0) {
-		return new SizeSorter();
-	    }
-	    return (MergeSort)sorters.pop();
-	}
-    }
-
-    /**
-     * Should be invoked when a MergeSort is no longer needed.
-     */
-    protected static void recycleSorter(MergeSort sorter) {
-	synchronized(sorters) {
-	    sorters.push(sorter);
-	}
-    }
-
-
-    /**
-     * Creates a FileSystemModel2 rooted at File.separator, which is usually
-     * the root of the file system. This does not load it, you should invoke
-     * <code>reloadChildren</code> with the root to start loading.
-     */
-    public FileSystemModel2() { 
-	this(File.separator);
-    }
-
-    /**
-     * Creates a FileSystemModel2 with the root being <code>rootPath</code>.
-     * This does not load it, you should invoke
-     * <code>reloadChildren</code> with the root to start loading.
-     */
-    public FileSystemModel2(String rootPath) { 
-	super(null);
-	isValid = true;
-	root = new FileNode(new File(rootPath));
-    }
-
-    //
-    // The TreeModel interface
-    //
-
-    /**
-     * Returns the number of children of <code>node</code>.
-     */
-    public int getChildCount(Object node) { 
-	Object[] children = getChildren(node); 
-	return (children == null) ? 0 : children.length;
-    }
-
-    /**
-     * Returns the child of <code>node</code> at index <code>i</code>.
-     */
-    public Object getChild(Object node, int i) { 
-	return getChildren(node)[i]; 
-    }
-
-    /**
-     * Returns true if the passed in object represents a leaf, false
-     * otherwise.
-     */
-    public boolean isLeaf(Object node) {
-	return ((FileNode)node).isLeaf();
-    }
-
-    //
-    //  The TreeTableNode interface. 
-    //
-
-    /**
-     * Returns the number of columns.
-     */
-    public int getColumnCount() {
-	return cNames.length;
-    }
-
-    /**
-     * Returns the name for a particular column.
-     */
-    public String getColumnName(int column) {
-	return cNames[column];
-    }
-
-    /**
-     * Returns the class for the particular column.
-     */
-    public Class getColumnClass(int column) {
-	return cTypes[column];
-    }
-
-    /**
-     * Returns the value of the particular column.
-     */
-    public Object getValueAt(Object node, int column) {
-	FileNode     fn = (FileNode)node;
-
-	try {
-	    switch(column) {
-	    case 0:
-		return fn.getFile().getName();
-	    case 1:
-		if (fn.isTotalSizeValid()) {
-		    return new Integer((int)((FileNode)node).totalSize());
-		}
-		return null;
-	    case 2:
-		return fn.isLeaf() ?  "File" : "Directory";
-	    case 3:
-		return fn.lastModified();
-	    }
-	}
-	catch  (SecurityException se) { }
-   
-	return null; 
-    }
-
-    //
-    // Some convenience methods. 
-    //
-
-    /**
-     * Reloads the children of the specified node.
-     */
-    public void reloadChildren(Object node) {
-	FileNode         fn = (FileNode)node;
-
-	synchronized(this) {
-	    reloadCount++;
-	}
-	fn.resetSize();
-	new Thread(new FileNodeLoader((FileNode)node)).start();
-    }
-
-    /**
-     * Stops and waits for all threads to finish loading.
-     */
-    public void stopLoading() {
-	isValid = false;
-	synchronized(this) {
-	    while (reloadCount > 0) {
-		try {
-		    wait();
-		} catch (InterruptedException ie) {}
-	    }
-	}
-	isValid = true;
-    }
-
-    /**
-     * If <code>newValue</code> is true, links are descended. Odd results
-     * may happen if you set this while other threads are loading.
-     */
-    public void setDescendsLinks(boolean newValue) {
-	descendLinks = newValue;
-    }
-
-    /**
-     * Returns true if links are to be automatically descended.
-     */
-    public boolean getDescendsLinks() {
-	return descendLinks;
-    }
-
-    /**
-     * Returns the path <code>node</code> represents.
-     */
-    public String getPath(Object node) {
-	return ((FileNode)node).getFile().getPath();
-    }
-
-    /**
-     * Returns the total size of the receiver.
-     */
-    public long getTotalSize(Object node) {
-	return ((FileNode)node).totalSize();
-    }
-
-    /**
-     * Returns true if the receiver is loading any children.
-     */
-    public boolean isReloading() {
-	return (reloadCount > 0);
-    }
-
-    /**
-     * Returns the path to the node that is being loaded.
-     */
-    public TreePath getPathLoading() {
-	FileNode      rn = reloadNode;
-
-	if (rn != null) {
-	    return new TreePath(rn.getPath());
-	}
-	return null;
-    }
-
-    /**
-     * Returns the node being loaded.
-     */
-    public Object getNodeLoading() {
-	return reloadNode;
-    }
-
-    protected File getFile(Object node) {
-	FileNode fileNode = ((FileNode)node); 
-	return fileNode.getFile();       
-    }
-
-    protected Object[] getChildren(Object node) {
-	FileNode fileNode = ((FileNode)node); 
-	return fileNode.getChildren(); 
-    }
-
-
-    protected static FileNode[] EMPTY_CHILDREN = new FileNode[0];
-
-    // Used to sort the file names.
-    static private MergeSort  fileMS = new MergeSort() {
-	public int compareElementsAt(int beginLoc, int endLoc) {
-	    return ((String)toSort[beginLoc]).compareTo
-		            ((String)toSort[endLoc]);
-	}
-    };
-
-
-    /**
-     * A FileNode is a derivative of the File class - though we delegate to
-     * the File object rather than subclassing it. It is used to maintain a
-     * cache of a directory's children and therefore avoid repeated access
-     * to the underlying file system during rendering. 
-     */
-    class FileNode { 
-	/** java.io.File the receiver represents. */
-	protected File              file; 
-	/** Parent FileNode of the receiver. */
-	private FileNode            parent;
-	/** Children of the receiver. */
-	protected FileNode[]        children; 
-	/** Size of the receiver and all its children. */
-	protected long              totalSize;
-	/** Valid if the totalSize has finished being calced. */
-	protected boolean           totalSizeValid;
-	/** Path of the receiver. */
-	protected String            canonicalPath;
-	/** True if the canonicalPath of this instance does not start with
-	 * the canonical path of the parent. */
-	protected boolean           isLink;
-	/** Date last modified. */
-	protected Date              lastModified;
-
-
-	protected FileNode(File file) { 
-	    this(null, file);
-	}
-
-	protected FileNode(FileNode parent, File file) { 
-	    this.parent = parent;
-	    this.file = file;
-	    try {
-		canonicalPath = file.getCanonicalPath();
-	    }
-	    catch (IOException ioe) {
-		canonicalPath = "";
-	    }
-	    if (parent != null) {
-		isLink = !canonicalPath.startsWith(parent.getCanonicalPath());
-	    }
-	    else {
-		isLink = false;
-	    }
-	    if (isLeaf()) {
-		totalSize = file.length();
-		totalSizeValid = true;
-	    }
-	}
-
-	/**
-	 * Returns the date the receiver was last modified.
-	 */
-	public Date lastModified() {
-	    if (lastModified == null && file != null) {
-		lastModified = new Date(file.lastModified());
-	    }
-	    return lastModified;
-	}
-
-	/**
-	 * Returns the the string to be used to display this leaf in the JTree.
-	 */
-	public String toString() { 
-	    return file.getName();
-	}
-
-	/**
-	 * Returns the java.io.File the receiver represents.
-	 */
-	public File getFile() {
-	    return file; 
-	}
-
-	/**
-	 * Returns size of the receiver and all its children.
-	 */
-	public long totalSize() {
-	    return totalSize;
-	}
-
-	/**
-	 * Returns the parent of the receiver.
-	 */
-	public FileNode getParent() {
-	    return parent;
-	}
-
-	/**
-	 * Returns true if the receiver represents a leaf, that is it is
-	 * isn't a directory.
-	 */
-	public boolean isLeaf() {
-	    return file.isFile();
-	}
-
-	/**
-	 * Returns true if the total size is valid.
-	 */
-	public boolean isTotalSizeValid() {
-	    return totalSizeValid;
-	}
-
-	/**
-	 * Clears the date.
-	 */
-	protected void resetLastModified() {
-	    lastModified = null;
-	}
-
-	/**
-	 * Sets the size of the receiver to be 0.
-	 */
-	protected void resetSize() {
-	    alterTotalSize(-totalSize);
-	}
-
-	/**
-	 * Loads the children, caching the results in the children
-	 * instance variable.
-	 */
-	protected FileNode[] getChildren() {
-	    return children; 
-	}
-
-	/**
-	 * Recursively loads all the children of the receiver.
-	 */
-	protected void loadChildren(MergeSort sorter) {
-	    totalSize = file.length();
-	    children = createChildren(null);
-	    for (int counter = children.length - 1; counter >= 0; counter--) {
-		Thread.yield(); // Give the GUI CPU time to draw itself.
-		if (!children[counter].isLeaf() &&
-		    (descendLinks || !children[counter].isLink())) {
-		    children[counter].loadChildren(sorter);
-		}
-		totalSize += children[counter].totalSize();
-		if (!isValid) {
-		    counter = 0;
-		}
-	    }
-	    if (isValid) {
-		if (sorter != null) {
-		    sorter.sort(children);
-		}
-		totalSizeValid = true;
-	    }
-	}
-
-	/**
-	 * Loads the children of of the receiver.
-	 */
-	protected FileNode[] createChildren(MergeSort sorter) {
-	    FileNode[]        retArray = null;
-
-	    try {
-		String[] files = file.list();
-		if(files != null) {
-		    if (sorter != null) {
-			sorter.sort(files); 
-		    }
-		    retArray = new FileNode[files.length]; 
-		    String path = file.getPath();
-		    for(int i = 0; i < files.length; i++) {
-			File childFile = new File(path, files[i]); 
-			retArray[i] = new FileNode(this, childFile);
-		    }
-		}
-	    } catch (SecurityException se) {}
-	    if (retArray == null) {
-		retArray = EMPTY_CHILDREN;
-	    }
-	    return retArray;
-	}
-
-	/**
-	 * Returns true if the children have been loaded.
-	 */
-	protected boolean loadedChildren() {
-	    return (file.isFile() || (children != null));
-	}
-
-	/**
-	 * Gets the path from the root to the receiver.
-	 */
-	public FileNode[] getPath() {
-	    return getPathToRoot(this, 0);
-	}
-
-	/**
-	 * Returns the canonical path for the receiver.
-	 */
-	public String getCanonicalPath() {
-	    return canonicalPath;
-	}
-
-	/**
-	 * Returns true if the receiver's path does not begin with the
-	 * parent's canonical path.
-	 */
-	public boolean isLink() {
-	    return isLink;
-	}
-
-	protected FileNode[] getPathToRoot(FileNode aNode, int depth) {
-	    FileNode[]              retNodes;
-
-	    if(aNode == null) {
-		if(depth == 0)
-		    return null;
-		else
-		    retNodes = new FileNode[depth];
-	    }
-	    else {
-		depth++;
-		retNodes = getPathToRoot(aNode.getParent(), depth);
-		retNodes[retNodes.length - depth] = aNode;
-	    }
-	    return retNodes;
-	}
-
-	/**
-	 * Sets the children of the receiver, updates the total size,
-	 * and if generateEvent is true a tree structure changed event
-	 * is created.
-	 */
-	protected void setChildren(FileNode[] newChildren,
-				   boolean generateEvent) {
-	    long           oldSize = totalSize;
-
-	    totalSize = file.length();
-	    children = newChildren;
-	    for (int counter = children.length - 1; counter >= 0;
-		 counter--) {
-		totalSize += children[counter].totalSize();
-	    }
-
-	    if (generateEvent) {
-		FileNode[]   path = getPath();
-
-		fireTreeStructureChanged(FileSystemModel2.this, path, null,
-					 null);
-
-		FileNode             parent = getParent();
-
-		if (parent != null) {
-		    parent.alterTotalSize(totalSize - oldSize);
-		}
-	    }
-	}
-
-	protected synchronized void alterTotalSize(long sizeDelta) {
-	    if (sizeDelta != 0 && (parent = getParent()) != null) {
-		totalSize += sizeDelta;
-		nodeChanged();
-		parent.alterTotalSize(sizeDelta);
-	    }
-	    else {
-		// Need a way to specify the root.
-		totalSize += sizeDelta;
-	    }
-	}
-
-	/**
-	 * This should only be invoked on the event dispatching thread.
-	 */
-	protected synchronized void setTotalSizeValid(boolean newValue) {
-	    if (totalSizeValid != newValue) {
-		nodeChanged();
-		totalSizeValid = newValue;
-
-		FileNode          parent = getParent();
-
-		if (parent != null) {
-		    parent.childTotalSizeChanged(this);
-		}
-	    }
-	}
-
-	/**
-	 * Marks the receivers total size as valid, but does not invoke
-	 * node changed, nor message the parent.
-	 */
-	protected synchronized void forceTotalSizeValid() {
-	    totalSizeValid = true;
-	}
-
-	/**
-	 * Invoked when a childs total size has changed.
-	 */
-	protected synchronized void childTotalSizeChanged(FileNode child) {
-	    if (totalSizeValid != child.isTotalSizeValid()) {
-		if (totalSizeValid) {
-		    setTotalSizeValid(false);
-		}
-		else {
-		    FileNode[]    children = getChildren();
-
-		    for (int counter = children.length - 1; counter >= 0;
-			 counter--) {
-			if (!children[counter].isTotalSizeValid()) {
-			    return;
-			}
-		    }
-		    setTotalSizeValid(true);
-		}
-	    }
-	    
-	}
-
-	/**
-	 * Can be invoked when a node has changed, will create the
-	 * appropriate event.
-	 */
-	protected void nodeChanged() {
-	    FileNode        parent = getParent();
-
-	    if (parent != null) {
-		FileNode[]   path = parent.getPath();
-		int[]        index = { getIndexOfChild(parent, this) };
-		Object[]     children = { this };
-
-		fireTreeNodesChanged(FileSystemModel2.this, path,  index,
-				     children);
-	    }
-	}
-    }
-
-
-    /**
-     * FileNodeLoader can be used to reload all the children of a
-     * particular node. It first resets the children of the FileNode
-     * it is created with, and in its run method will reload all of
-     * that nodes children. FileNodeLoader may not be running in the event
-     * dispatching thread. As swing is not thread safe it is important
-     * that we don't generate events in this thread. SwingUtilities.invokeLater
-     * is used so that events are generated in the event dispatching thread.
-     */
-    class FileNodeLoader implements Runnable {
-	/** Node creating children for. */
-	FileNode          node;
-	/** Sorter. */
-	MergeSort         sizeMS;
-
-	FileNodeLoader(FileNode node) {
-	    this.node = node;
-	    node.resetLastModified();
-	    node.setChildren(node.createChildren(fileMS), true);
-	    node.setTotalSizeValid(false);
-	}
-
-	public void run() {
-	    FileNode[]      children = node.getChildren();
-
-	    sizeMS = getSizeSorter();
-	    for (int counter = children.length - 1; counter >= 0; counter--) {
-		if (!children[counter].isLeaf()) {
-		    reloadNode = children[counter];
-		    loadChildren(children[counter]);
-		    reloadNode = null;
-		}
-		if (!isValid) {
-		    counter = 0;
-		}
-	    }
-	    recycleSorter(sizeMS);
-	    if (isValid) {
-		SwingUtilities.invokeLater(new Runnable() {
-		    public void run() {
-			MergeSort    sorter = getSizeSorter();
-
-			sorter.sort(node.getChildren());
-			recycleSorter(sorter);
-			node.setChildren(node.getChildren(), true);
-			synchronized(FileSystemModel2.this) {
-			    reloadCount--;
-			    FileSystemModel2.this.notifyAll();
-			}
-		    }
-		});
-	    }
-	    else {
-		synchronized(FileSystemModel2.this) {
-		    reloadCount--;
-		    FileSystemModel2.this.notifyAll();
-		}
-	    }
-	}
-
-	protected void loadChildren(FileNode node) {
-	    if (!node.isLeaf() && (descendLinks || !node.isLink())) {
-		final FileNode[]      children = node.createChildren(null);
-
-		for (int counter = children.length - 1; counter >= 0;
-		     counter--) {
-		    if (!children[counter].isLeaf()) {
-			if (descendLinks || !children[counter].isLink()) {
-			    children[counter].loadChildren(sizeMS);
-			}
-			else {
-			    children[counter].forceTotalSizeValid();
-			}
-		    }
-		    if (!isValid) {
-			counter = 0;
-		    }
-		}
-		if (isValid) {
-		    final FileNode       fn = node;
-
-		    // Reset the children 
-		    SwingUtilities.invokeLater(new Runnable() {
-			public void run() {
-			    MergeSort    sorter = getSizeSorter();
-
-			    sorter.sort(children);
-			    recycleSorter(sorter);
-			    fn.setChildren(children, true);
-			    fn.setTotalSizeValid(true);
-			    fn.nodeChanged();
-			}
-		    });
-		}
-	    }
-	    else {
-		node.forceTotalSizeValid();
-	    }
-	}
-    }
-
-
-    /**
-     * Sorts the contents, which must be instances of FileNode based on
-     * totalSize.
-     */
-    static class SizeSorter extends MergeSort {
-	public int compareElementsAt(int beginLoc, int endLoc) {
-	    long    firstSize = ((FileNode)toSort[beginLoc]).totalSize();
-	    long    secondSize = ((FileNode)toSort[endLoc]).totalSize();
-
-	    if (firstSize != secondSize) {
-		return (int)(secondSize - firstSize);
-	    }
-	    return ((FileNode)toSort[beginLoc]).toString().compareTo
-		    (((FileNode)toSort[endLoc]).toString());
-	}
-    }
-}
diff --git a/debian/src_from_treetable_article_see_bug409629/JTreeTable.java b/debian/src_from_treetable_article_see_bug409629/JTreeTable.java
deleted file mode 100644
index a74b873..0000000
--- a/debian/src_from_treetable_article_see_bug409629/JTreeTable.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * @(#)JTreeTable.java	1.2 98/10/27
- *
- * Copyright 1997, 1998 by Sun Microsystems, Inc.,
- * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
- * All rights reserved.
- *
- * This software is the confidential and proprietary information
- * of Sun Microsystems, Inc. ("Confidential Information").  You
- * shall not disclose such Confidential Information and shall use
- * it only in accordance with the terms of the license agreement
- * you entered into with Sun.
- */
-
-
-         package org.mozilla.javascript.tools.debugger.downloaded;
-         import javax.swing.*;
-       
-import javax.swing.event.*;
-import javax.swing.tree.*;
-import javax.swing.table.*;
-
-import java.awt.Dimension;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-
-import java.awt.event.MouseEvent;
-
-import java.util.EventObject;
-
-/**
- * This example shows how to create a simple JTreeTable component, 
- * by using a JTree as a renderer (and editor) for the cells in a 
- * particular column in the JTable.  
- *
- * @version 1.2 10/27/98
- *
- * @author Philip Milne
- * @author Scott Violet
- */
-public class JTreeTable extends JTable {
-    /** A subclass of JTree. */
-    protected TreeTableCellRenderer tree;
-
-    public JTreeTable(TreeTableModel treeTableModel) {
-	super();
-
-	// Create the tree. It will be used as a renderer and editor. 
-	tree = new TreeTableCellRenderer(treeTableModel);
-
-	// Install a tableModel representing the visible rows in the tree. 
-	super.setModel(new TreeTableModelAdapter(treeTableModel, tree));
-
-	// Force the JTable and JTree to share their row selection models. 
-	ListToTreeSelectionModelWrapper selectionWrapper = new 
-	                        ListToTreeSelectionModelWrapper();
-	tree.setSelectionModel(selectionWrapper);
-	setSelectionModel(selectionWrapper.getListSelectionModel()); 
-
-	// Install the tree editor renderer and editor. 
-	setDefaultRenderer(TreeTableModel.class, tree); 
-	setDefaultEditor(TreeTableModel.class, new TreeTableCellEditor());
-
-	// No grid.
-	setShowGrid(false);
-
-	// No intercell spacing
-	setIntercellSpacing(new Dimension(0, 0));	
-
-	// And update the height of the trees row to match that of
-	// the table.
-	if (tree.getRowHeight() < 1) {
-	    // Metal looks better like this.
-	    setRowHeight(18);
-	}
-    }
-
-    /**
-     * Overridden to message super and forward the method to the tree.
-     * Since the tree is not actually in the component hieachy it will
-     * never receive this unless we forward it in this manner.
-     */
-    public void updateUI() {
-	super.updateUI();
-	if(tree != null) {
-	    tree.updateUI();
-	}
-	// Use the tree's default foreground and background colors in the
-	// table. 
-        LookAndFeel.installColorsAndFont(this, "Tree.background",
-                                         "Tree.foreground", "Tree.font");
-    }
-
-    /* Workaround for BasicTableUI anomaly. Make sure the UI never tries to 
-     * paint the editor. The UI currently uses different techniques to 
-     * paint the renderers and editors and overriding setBounds() below 
-     * is not the right thing to do for an editor. Returning -1 for the 
-     * editing row in this case, ensures the editor is never painted. 
-     */
-    public int getEditingRow() {
-        return (getColumnClass(editingColumn) == TreeTableModel.class) ? -1 :
-	        editingRow;  
-    }
-
-    /**
-     * Overridden to pass the new rowHeight to the tree.
-     */
-    public void setRowHeight(int rowHeight) { 
-        super.setRowHeight(rowHeight); 
-	if (tree != null && tree.getRowHeight() != rowHeight) {
-            tree.setRowHeight(getRowHeight()); 
-	}
-    }
-
-    /**
-     * Returns the tree that is being shared between the model.
-     */
-    public JTree getTree() {
-	return tree;
-    }
-
-    /**
-     * A TreeCellRenderer that displays a JTree.
-     */
-    public class TreeTableCellRenderer extends JTree implements
-	         TableCellRenderer {
-	/** Last table/tree row asked to renderer. */
-	protected int visibleRow;
-
-	public TreeTableCellRenderer(TreeModel model) {
-	    super(model); 
-	}
-
-	/**
-	 * updateUI is overridden to set the colors of the Tree's renderer
-	 * to match that of the table.
-	 */
-	public void updateUI() {
-	    super.updateUI();
-	    // Make the tree's cell renderer use the table's cell selection
-	    // colors. 
-	    TreeCellRenderer tcr = getCellRenderer();
-	    if (tcr instanceof DefaultTreeCellRenderer) {
-		DefaultTreeCellRenderer dtcr = ((DefaultTreeCellRenderer)tcr); 
-		// For 1.1 uncomment this, 1.2 has a bug that will cause an
-		// exception to be thrown if the border selection color is
-		// null.
-		// dtcr.setBorderSelectionColor(null);
-		dtcr.setTextSelectionColor(UIManager.getColor
-					   ("Table.selectionForeground"));
-		dtcr.setBackgroundSelectionColor(UIManager.getColor
-						("Table.selectionBackground"));
-	    }
-	}
-
-	/**
-	 * Sets the row height of the tree, and forwards the row height to
-	 * the table.
-	 */
-	public void setRowHeight(int rowHeight) { 
-	    if (rowHeight > 0) {
-		super.setRowHeight(rowHeight); 
-		if (JTreeTable.this != null &&
-		    JTreeTable.this.getRowHeight() != rowHeight) {
-		    JTreeTable.this.setRowHeight(getRowHeight()); 
-		}
-	    }
-	}
-
-	/**
-	 * This is overridden to set the height to match that of the JTable.
-	 */
-	public void setBounds(int x, int y, int w, int h) {
-	    super.setBounds(x, 0, w, JTreeTable.this.getHeight());
-	}
-
-	/**
-	 * Sublcassed to translate the graphics such that the last visible
-	 * row will be drawn at 0,0.
-	 */
-	public void paint(Graphics g) {
-	    g.translate(0, -visibleRow * getRowHeight());
-	    super.paint(g);
-	}
-
-	/**
-	 * TreeCellRenderer method. Overridden to update the visible row.
-	 */
-	public Component getTableCellRendererComponent(JTable table,
-						       Object value,
-						       boolean isSelected,
-						       boolean hasFocus,
-						       int row, int column) {
-	    if(isSelected)
-		setBackground(table.getSelectionBackground());
-	    else
-		setBackground(table.getBackground());
-
-	    visibleRow = row;
-	    return this;
-	}
-    }
-
-
-    /**
-     * TreeTableCellEditor implementation. Component returned is the
-     * JTree.
-     */
-    public class TreeTableCellEditor extends AbstractCellEditor implements
-	         TableCellEditor {
-	public Component getTableCellEditorComponent(JTable table,
-						     Object value,
-						     boolean isSelected,
-						     int r, int c) {
-	    return tree;
-	}
-
-	/**
-	 * Overridden to return false, and if the event is a mouse event
-	 * it is forwarded to the tree.<p>
-	 * The behavior for this is debatable, and should really be offered
-	 * as a property. By returning false, all keyboard actions are
-	 * implemented in terms of the table. By returning true, the
-	 * tree would get a chance to do something with the keyboard
-	 * events. For the most part this is ok. But for certain keys,
-	 * such as left/right, the tree will expand/collapse where as
-	 * the table focus should really move to a different column. Page
-	 * up/down should also be implemented in terms of the table.
-	 * By returning false this also has the added benefit that clicking
-	 * outside of the bounds of the tree node, but still in the tree
-	 * column will select the row, whereas if this returned true
-	 * that wouldn't be the case.
-	 * <p>By returning false we are also enforcing the policy that
-	 * the tree will never be editable (at least by a key sequence).
-	 */
-	public boolean isCellEditable(EventObject e) {
-	    if (e instanceof MouseEvent) {
-		for (int counter = getColumnCount() - 1; counter >= 0;
-		     counter--) {
-		    if (getColumnClass(counter) == TreeTableModel.class) {
-			MouseEvent me = (MouseEvent)e;
-			MouseEvent newME = new MouseEvent(tree, me.getID(),
-				   me.getWhen(), me.getModifiers(),
-				   me.getX() - getCellRect(0, counter, true).x,
-				   me.getY(), me.getClickCount(),
-                                   me.isPopupTrigger());
-			tree.dispatchEvent(newME);
-			break;
-		    }
-		}
-	    }
-	    return false;
-	}
-    }
-
-
-    /**
-     * ListToTreeSelectionModelWrapper extends DefaultTreeSelectionModel
-     * to listen for changes in the ListSelectionModel it maintains. Once
-     * a change in the ListSelectionModel happens, the paths are updated
-     * in the DefaultTreeSelectionModel.
-     */
-    public class ListToTreeSelectionModelWrapper extends DefaultTreeSelectionModel { 
-	/** Set to true when we are updating the ListSelectionModel. */
-	protected boolean         updatingListSelectionModel;
-
-	public ListToTreeSelectionModelWrapper() {
-	    super();
-	    getListSelectionModel().addListSelectionListener
-	                            (createListSelectionListener());
-	}
-
-	/**
-	 * Returns the list selection model. ListToTreeSelectionModelWrapper
-	 * listens for changes to this model and updates the selected paths
-	 * accordingly.
-	 */
-	public ListSelectionModel getListSelectionModel() {
-	    return listSelectionModel; 
-	}
-
-	/**
-	 * This is overridden to set <code>updatingListSelectionModel</code>
-	 * and message super. This is the only place DefaultTreeSelectionModel
-	 * alters the ListSelectionModel.
-	 */
-	public void resetRowSelection() {
-	    if(!updatingListSelectionModel) {
-		updatingListSelectionModel = true;
-		try {
-		    super.resetRowSelection();
-		}
-		finally {
-		    updatingListSelectionModel = false;
-		}
-	    }
-	    // Notice how we don't message super if
-	    // updatingListSelectionModel is true. If
-	    // updatingListSelectionModel is true, it implies the
-	    // ListSelectionModel has already been updated and the
-	    // paths are the only thing that needs to be updated.
-	}
-
-	/**
-	 * Creates and returns an instance of ListSelectionHandler.
-	 */
-	protected ListSelectionListener createListSelectionListener() {
-	    return new ListSelectionHandler();
-	}
-
-	/**
-	 * If <code>updatingListSelectionModel</code> is false, this will
-	 * reset the selected paths from the selected rows in the list
-	 * selection model.
-	 */
-	protected void updateSelectedPathsFromSelectedRows() {
-	    if(!updatingListSelectionModel) {
-		updatingListSelectionModel = true;
-		try {
-		    // This is way expensive, ListSelectionModel needs an
-		    // enumerator for iterating.
-		    int        min = listSelectionModel.getMinSelectionIndex();
-		    int        max = listSelectionModel.getMaxSelectionIndex();
-
-		    clearSelection();
-		    if(min != -1 && max != -1) {
-			for(int counter = min; counter <= max; counter++) {
-			    if(listSelectionModel.isSelectedIndex(counter)) {
-				TreePath     selPath = tree.getPathForRow
-				                            (counter);
-
-				if(selPath != null) {
-				    addSelectionPath(selPath);
-				}
-			    }
-			}
-		    }
-		}
-		finally {
-		    updatingListSelectionModel = false;
-		}
-	    }
-	}
-
-	/**
-	 * Class responsible for calling updateSelectedPathsFromSelectedRows
-	 * when the selection of the list changse.
-	 */
-	class ListSelectionHandler implements ListSelectionListener {
-	    public void valueChanged(ListSelectionEvent e) {
-		updateSelectedPathsFromSelectedRows();
-	    }
-	}
-    }
-}
diff --git a/debian/src_from_treetable_article_see_bug409629/MergeSort.java b/debian/src_from_treetable_article_see_bug409629/MergeSort.java
deleted file mode 100644
index 4a83bc8..0000000
--- a/debian/src_from_treetable_article_see_bug409629/MergeSort.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * MergeSort.java
- *
- * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the confidential and proprietary information of Sun
- * Microsystems, Inc. ("Confidential Information").  You shall not
- * disclose such Confidential Information and shall use it only in
- * accordance with the terms of the license agreement you entered into
- * with Sun.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
- * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
- * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
- * THIS SOFTWARE OR ITS DERIVATIVES.
- *
- */
-
-/**
- * An implementation of MergeSort, needs to be subclassed to
- * compare the terms.
- *
- * @author Scott Violet
- */
-public abstract class MergeSort extends Object {
-    protected Object           toSort[];
-    protected Object           swapSpace[];
-
-    public void sort(Object array[]) {
-	if(array != null && array.length > 1)
-	{
-	    int             maxLength;
-  
-	    maxLength = array.length;
-	    swapSpace = new Object[maxLength];
-	    toSort = array;
-	    this.mergeSort(0, maxLength - 1);
-	    swapSpace = null;
-	    toSort = null;
-	}
-    }
-
-    public abstract int compareElementsAt(int beginLoc, int endLoc);
-
-    protected void mergeSort(int begin, int end) {
-	if(begin != end)
-	{
-	    int           mid;
-
-	    mid = (begin + end) / 2;
-	    this.mergeSort(begin, mid);
-	    this.mergeSort(mid + 1, end);
-	    this.merge(begin, mid, end);
-	}
-    }
-
-    protected void merge(int begin, int middle, int end) {
-	int           firstHalf, secondHalf, count;
-
-	firstHalf = count = begin;
-	secondHalf = middle + 1;
-	while((firstHalf <= middle) && (secondHalf <= end))
-	{
-	    if(this.compareElementsAt(secondHalf, firstHalf) < 0)
-		swapSpace[count++] = toSort[secondHalf++];
-	    else
-		swapSpace[count++] = toSort[firstHalf++];
-	}
-	if(firstHalf <= middle)
-	{
-	    while(firstHalf <= middle)
-		swapSpace[count++] = toSort[firstHalf++];
-	}
-	else
-	{
-	    while(secondHalf <= end)
-		swapSpace[count++] = toSort[secondHalf++];
-	}
-	for(count = begin;count <= end;count++)
-	    toSort[count] = swapSpace[count];
-    }
-}
diff --git a/debian/src_from_treetable_article_see_bug409629/TreeTableExample2.java b/debian/src_from_treetable_article_see_bug409629/TreeTableExample2.java
deleted file mode 100644
index a9e0c7a..0000000
--- a/debian/src_from_treetable_article_see_bug409629/TreeTableExample2.java
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- * TreeTableExample2.java
- *
- * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the confidential and proprietary information of Sun
- * Microsystems, Inc. ("Confidential Information").  You shall not
- * disclose such Confidential Information and shall use it only in
- * accordance with the terms of the license agreement you entered into
- * with Sun.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
- * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
- * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
- * THIS SOFTWARE OR ITS DERIVATIVES.
- *
- */
-
-import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.event.*;
-import javax.swing.table.*;
-import javax.swing.tree.*;
-import java.awt.*;
-import java.awt.event.*;
-import java.text.NumberFormat;
-
-/**
- * Assembles the UI. The UI consists of a JTreeTable and a status label.
- * As nodes are loaded by the FileSystemModel2, in a background thread,
- * the status label updates as well as the renderer to draw the node that
- * is being loaded differently.
- *
- * @author Scott Violet
- * @author Philip Milne
- */
-public class TreeTableExample2 {
-    /** Number of instances of TreeTableExample2. */
-    protected static int         ttCount;
-
-    /** Model for the JTreeTable. */
-    protected FileSystemModel2    model;
-    /** Used to represent the model. */
-    protected JTreeTable         treeTable;
-    /** Row the is being reloaded. */
-    protected int                reloadRow;
-    /** TreePath being reloaded. */
-    protected TreePath           reloadPath;
-    /** A counter increment as the Timer fies and the same path is
-     * being reloaded. */
-    protected int                reloadCounter;
-    /** Timer used to update reload state. */
-    protected Timer              timer;
-    /** Used to indicate status. */
-    protected JLabel             statusLabel;
-    /** Frame containing everything. */
-    protected JFrame             frame;
-    /** Path created with. */
-    protected String             path;
-
-
-    public TreeTableExample2(String path) {
-	this.path = path;
-	ttCount++;
-
-	frame = createFrame();
-
-	Container      cPane = frame.getContentPane();
-	JMenuBar       mb = createMenuBar();
-
-	model = createModel(path);
-	treeTable = createTreeTable();
-	statusLabel = createStatusLabel();
-	cPane.add(new JScrollPane(treeTable));
-	cPane.add(statusLabel, BorderLayout.SOUTH);
-
-	reloadRow = -1;
-	frame.setJMenuBar(mb);
-	frame.pack();
-	frame.show();
-	SwingUtilities.invokeLater(new Runnable() {
-	    public void run() {
-		reload(model.getRoot());
-	    }
-	});
-    }
-
-    /**
-     * Creates and return a JLabel that is used to indicate the status
-     * of loading.
-     */
-    protected JLabel createStatusLabel() {
-	JLabel         retLabel = new JLabel(" ");
-
-	retLabel.setHorizontalAlignment(JLabel.RIGHT);
-	retLabel.setBorder(new BevelBorder(BevelBorder.LOWERED));
-	return retLabel;
-    }
-
-    /**
-     * Creates and returns the instanceof JTreeTable that will be used.
-     * This also creates, but does not start, the Timer that is used to
-     * update the display as files are loaded.
-     */
-    protected JTreeTable createTreeTable() {
-	JTreeTable       treeTable = new JTreeTable(model);
-
-	treeTable.getColumnModel().getColumn(1).setCellRenderer
-	                           (new IndicatorRenderer());
-
-	Reloader rl = new Reloader();
-
-	timer = new Timer(700, rl);
-	timer.setRepeats(true);
-	treeTable.getTree().addTreeExpansionListener(rl);
-	return treeTable;
-    }
-
-    /**
-     * Creates the FileSystemModel2 that will be used.
-     */
-    protected FileSystemModel2 createModel(String path) {
-	return new FileSystemModel2(path);
-    }
-
-    /**
-     * Creates the JFrame that will contain everything.
-     */
-    protected JFrame createFrame() {
-	JFrame       retFrame = new JFrame("TreeTable II");
-
-	retFrame.addWindowListener(new WindowAdapter() {
-	    public void windowClosing(WindowEvent we) {
-		if (--ttCount == 0) {
-		    System.exit(0);
-		}
-	    }
-	});
-	return retFrame;
-    }
-
-    /**
-     * Creates a menu bar.
-     */
-    protected JMenuBar createMenuBar() {
-        JMenu            fileMenu = new JMenu("File"); 
-	JMenuItem        menuItem;
-
-	menuItem = new JMenuItem("Open");
-	menuItem.addActionListener(new ActionListener() {
-	    public void actionPerformed(ActionEvent ae) {
-		JFileChooser      fc = new JFileChooser(path);
-
-		fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-
-		int               result = fc.showOpenDialog(frame);
-
-		if (result == JFileChooser.APPROVE_OPTION) {
-		    String      newPath = fc.getSelectedFile().getPath();
-
-		    new TreeTableExample2(newPath);
-		}
-	    }
-	});
-	fileMenu.add(menuItem);
-	fileMenu.addSeparator();
-	
-	menuItem = new JMenuItem("Reload");
-	menuItem.addActionListener(new ActionListener() {
-	    public void actionPerformed(ActionEvent ae) {
-		TreePath         path = treeTable.getTree().getSelectionPath();
-
-		if (path != null) {
-		    model.stopLoading();
-		    reload(path.getLastPathComponent());
-		}
-	    }
-	});
-	fileMenu.add(menuItem);
-
-	menuItem = new JMenuItem("Stop");
-	menuItem.addActionListener(new ActionListener() {
-	    public void actionPerformed(ActionEvent ae) {
-		model.stopLoading();
-	    }
-	});
-	fileMenu.add(menuItem);
-
-	fileMenu.addSeparator();
-
-	menuItem = new JMenuItem("Exit"); 
-	menuItem.addActionListener(new ActionListener() {
-	    public void actionPerformed(ActionEvent ae) {
-		System.exit(0);
-	    }
-	});
-	fileMenu.add(menuItem); 
-
-
-	// Create a menu bar
-	JMenuBar        menuBar = new JMenuBar();
-
-	menuBar.add(fileMenu);
-
-	// Menu for the look and feels (lafs).
-	UIManager.LookAndFeelInfo[]        lafs = UIManager.
-	                                    getInstalledLookAndFeels();
-	ButtonGroup                        lafGroup = new ButtonGroup();
-
-	JMenu          optionsMenu = new JMenu("Options");
-
-	menuBar.add(optionsMenu);
-
-	for(int i = 0; i < lafs.length; i++) {
-	    JRadioButtonMenuItem rb = new JRadioButtonMenuItem(lafs[i].
-							       getName()); 
-	    optionsMenu.add(rb);
-	    rb.setSelected(UIManager.getLookAndFeel().getName().equals
-			   (lafs[i].getName()));
-	    rb.putClientProperty("UIKey", lafs[i]);
-	    rb.addItemListener(new ItemListener() {
-	        public void itemStateChanged(ItemEvent ae) {
-	            JRadioButtonMenuItem rb2 = (JRadioButtonMenuItem)ae.
-			                       getSource();
-	            if(rb2.isSelected()) {
-		        UIManager.LookAndFeelInfo       info =
-                                      (UIManager.LookAndFeelInfo)
-			               rb2.getClientProperty("UIKey");
-		        try {
-		            UIManager.setLookAndFeel(info.getClassName());
-		            SwingUtilities.updateComponentTreeUI(frame);
-			}
-			catch (Exception e) {
-		             System.err.println("unable to set UI " +
-						e.getMessage());
-			}
-	            }
-	        }
-	    });
-	    lafGroup.add(rb);
-	}
-	return menuBar;
-    }
-
-    /**
-     * Invoked to reload the children of a particular node. This will
-     * also restart the timer.
-     */
-    protected void reload(Object node) {
-	model.reloadChildren(node);
-	if (!timer.isRunning()) {
-	    timer.start();
-	}
-    }
-
-    /**
-     * Updates the status label based on reloadRow.
-     */
-    protected void updateStatusLabel() {
-	if (reloadPath != null) {
-	    statusLabel.setText("Reloading: " + model.getPath
-				(reloadPath.getLastPathComponent()));
-	    if ((reloadCounter % 4) < 2) {
-		statusLabel.setForeground(Color.red);
-	    }
-	    else {
-		statusLabel.setForeground(Color.blue);
-	    }
-	}
-	else if (!model.isReloading()) {
-	    statusLabel.setText("Total Size: " + NumberFormat.getInstance().
-				format(model.getTotalSize(model.getRoot())));
-	    statusLabel.setForeground(Color.black);
-	}
-    }
-
-
-    /**
-     * Reloader is the ActionListener used in the Timer. In response to
-     * the timer updating it will reset the reloadRow/reloadPath and
-     * generate the necessary event so that the display will update. It
-     * also implements the TreeExpansionListener so that if the tree is
-     * altered while loading the reloadRow is updated accordingly.
-     */
-    class Reloader implements ActionListener, TreeExpansionListener {
-	public void actionPerformed(ActionEvent ae) {
-	    if (!model.isReloading()) {
-		// No longer loading.
-		timer.stop();
-		if (reloadRow != -1) {
-		    generateChangeEvent(reloadRow);
-		}
-		reloadRow = -1;
-		reloadPath = null;
-	    }
-	    else {
-		// Still loading, see if paths changed.
-		TreePath       newPath = model.getPathLoading();
-
-		if (newPath == null) {
-		    // Hmm... Will usually indicate the reload thread
-		    // completed between time we asked if reloading.
-		    if (reloadRow != -1) {
-			generateChangeEvent(reloadRow);
-		    }
-		    reloadRow = -1;
-		    reloadPath = null;
-		}
-		else {
-		    // Ok, valid path, see if matches last path.
-		    int        newRow = treeTable.getTree().getRowForPath
-			                          (newPath);
-
-		    if (newPath.equals(reloadPath)) {
-			reloadCounter = (reloadCounter + 1) % 8;
-			if (newRow != reloadRow) {
-			    int             lastRow = reloadRow;
-
-			    reloadRow = newRow;
-			    generateChangeEvent(lastRow);
-			}
-			generateChangeEvent(reloadRow);
-		    }
-		    else {
-			int          lastRow = reloadRow;
-
-			reloadCounter = 0;
-			reloadRow = newRow;
-			reloadPath = newPath;
-			if (lastRow != reloadRow) {
-			    generateChangeEvent(lastRow);
-			}
-			generateChangeEvent(reloadRow);
-		    }
-		}
-	    }
-	    updateStatusLabel();
-	}
-
-	/**
-	 * Generates and update event for the specified row. FileSystemModel2
-	 * could do this, but it would not know when the row has changed
-	 * as a result of expanding/collapsing nodes in the tree.
-	 */
-	protected void generateChangeEvent(int row) {
-	    if (row != -1) {
-		AbstractTableModel     tModel = (AbstractTableModel)treeTable.
-		                                 getModel();
-
-		tModel.fireTableChanged(new TableModelEvent
-				       (tModel, row, row, 1));
-	    }
-	}
-
-	//
-	// TreeExpansionListener
-	//
-
-	/**
-	 * Invoked when the tree has expanded.
-	 */
-	public void treeExpanded(TreeExpansionEvent te) {
-	    updateRow();
-	}
-
-	/**
-	 * Invoked when the tree has collapsed.
-	 */
-	public void treeCollapsed(TreeExpansionEvent te) {
-	    updateRow();
-	}
-
-	/**
-	 * Updates the reloadRow and path, this does not genernate a
-	 * change event.
-	 */
-	protected void updateRow() {
-	    reloadPath = model.getPathLoading();
-
-	    if (reloadPath != null) {
-		reloadRow = treeTable.getTree().getRowForPath(reloadPath);
-	    }
-	}
-    }
-
-
-    /**
-     * A renderer that will give an indicator when a cell is being reloaded.
-     */
-    class IndicatorRenderer extends DefaultTableCellRenderer {
-	/** Makes sure the number of displayed in an internationalized
-	 * manner. */
-	protected NumberFormat       formatter;
-	/** Row that is currently being painted. */
-	protected int                lastRow;
-	
-
-	IndicatorRenderer() {
-	    setHorizontalAlignment(JLabel.RIGHT);
-	    formatter = NumberFormat.getInstance();
-	}
-
-	/**
-	 * Invoked as part of DefaultTableCellRenderers implemention. Sets
-	 * the text of the label.
-	 */
-	public void setValue(Object value) { 
-	    setText((value == null) ? "---" : formatter.format(value)); 
-	}
-
-	/**
-	 * Returns this.
-	 */
-	public Component getTableCellRendererComponent(JTable table,
-			    Object value, boolean isSelected, boolean hasFocus,
-			    int row, int column) {
-	    super.getTableCellRendererComponent(table, value, isSelected,
-						hasFocus, row, column);
-	    lastRow = row;
-	    return this;
-	}
-
-	/**
-	 * If the row being painted is also being reloaded this will draw
-	 * a little indicator.
-	 */
-	public void paint(Graphics g) {
-	    if (lastRow == reloadRow) {
-		int       width = getWidth();
-		int       height = getHeight();
-
-		g.setColor(getBackground());
-		g.fillRect(0, 0, width, height);
-		g.setColor(getForeground());
-
-		int       diameter = Math.min(width, height);
-
-		if (reloadCounter < 5) {
-		    g.fillArc((width - diameter) / 2, (height - diameter) / 2,
-			      diameter, diameter, 90, -(reloadCounter * 90));
-		}
-		else {
-		    g.fillArc((width - diameter) / 2, (height - diameter) / 2,
-			      diameter, diameter, 90,
-			      (4 - reloadCounter % 4) * 90);
-		}
-	    }
-	    else {
-		super.paint(g);
-	    }
-	}
-    }
-
-
-    public static void main(String[] args) {
-	if (args.length > 0) {
-	    for (int counter = args.length - 1; counter >= 0; counter--) {
-		new TreeTableExample2(args[counter]);
-	    }
-	}
-	else {
-	    String            path;
-
-	    try {
-		path = System.getProperty("user.home");
-		if (path != null) {
-		    new TreeTableExample2(path);
-		}
-	    }
-	    catch (SecurityException se) {
-		path = null;
-	    }
-	    if (path == null) {
-		System.out.println("Could not determine home directory");
-	    }
-	}
-    }
-}
diff --git a/debian/src_from_treetable_article_see_bug409629/TreeTableModel.java b/debian/src_from_treetable_article_see_bug409629/TreeTableModel.java
deleted file mode 100644
index 31e33a1..0000000
--- a/debian/src_from_treetable_article_see_bug409629/TreeTableModel.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * TreeTableModel.java
- *
- * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the confidential and proprietary information of Sun
- * Microsystems, Inc. ("Confidential Information").  You shall not
- * disclose such Confidential Information and shall use it only in
- * accordance with the terms of the license agreement you entered into
- * with Sun.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
- * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
- * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
- * THIS SOFTWARE OR ITS DERIVATIVES.
- *
- */
-
-
-         package org.mozilla.javascript.tools.debugger.downloaded;
-         import javax.swing.tree.TreeModel;
-       
-
-/**
- * TreeTableModel is the model used by a JTreeTable. It extends TreeModel
- * to add methods for getting inforamtion about the set of columns each 
- * node in the TreeTableModel may have. Each column, like a column in 
- * a TableModel, has a name and a type associated with it. Each node in 
- * the TreeTableModel can return a value for each of the columns and 
- * set that value if isCellEditable() returns true. 
- *
- * @author Philip Milne 
- * @author Scott Violet
- */
-public interface TreeTableModel extends TreeModel
-{
-    /**
-     * Returns the number ofs availible column.
-     */
-    public int getColumnCount();
-
-    /**
-     * Returns the name for column number <code>column</code>.
-     */
-    public String getColumnName(int column);
-
-    /**
-     * Returns the type for column number <code>column</code>.
-     */
-    public Class getColumnClass(int column);
-
-    /**
-     * Returns the value to be displayed for node <code>node</code>, 
-     * at column number <code>column</code>.
-     */
-    public Object getValueAt(Object node, int column);
-
-    /**
-     * Indicates whether the the value for node <code>node</code>, 
-     * at column number <code>column</code> is editable.
-     */
-    public boolean isCellEditable(Object node, int column);
-
-    /**
-     * Sets the value for node <code>node</code>, 
-     * at column number <code>column</code>.
-     */
-    public void setValueAt(Object aValue, Object node, int column);
-}
diff --git a/debian/src_from_treetable_article_see_bug409629/TreeTableModelAdapter.java b/debian/src_from_treetable_article_see_bug409629/TreeTableModelAdapter.java
deleted file mode 100644
index 6a2e496..0000000
--- a/debian/src_from_treetable_article_see_bug409629/TreeTableModelAdapter.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * @(#)TreeTableModelAdapter.java	1.2 98/10/27
- *
- * Copyright 1997, 1998 by Sun Microsystems, Inc.,
- * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
- * All rights reserved.
- *
- * This software is the confidential and proprietary information
- * of Sun Microsystems, Inc. ("Confidential Information").  You
- * shall not disclose such Confidential Information and shall use
- * it only in accordance with the terms of the license agreement
- * you entered into with Sun.
- */
-
-
-         package org.mozilla.javascript.tools.debugger.downloaded;
-         import javax.swing.JTree;
-       
-import javax.swing.SwingUtilities;
-import javax.swing.table.AbstractTableModel;
-import javax.swing.tree.TreePath;
-import javax.swing.event.TreeExpansionEvent;
-import javax.swing.event.TreeExpansionListener;
-import javax.swing.event.TreeModelEvent;
-import javax.swing.event.TreeModelListener;
-
-/**
- * This is a wrapper class takes a TreeTableModel and implements 
- * the table model interface. The implementation is trivial, with 
- * all of the event dispatching support provided by the superclass: 
- * the AbstractTableModel. 
- *
- * @version 1.2 10/27/98
- *
- * @author Philip Milne
- * @author Scott Violet
- */
-public class TreeTableModelAdapter extends AbstractTableModel
-{
-    JTree tree;
-    TreeTableModel treeTableModel;
-
-    public TreeTableModelAdapter(TreeTableModel treeTableModel, JTree tree) {
-        this.tree = tree;
-        this.treeTableModel = treeTableModel;
-
-	tree.addTreeExpansionListener(new TreeExpansionListener() {
-	    // Don't use fireTableRowsInserted() here; the selection model
-	    // would get updated twice. 
-	    public void treeExpanded(TreeExpansionEvent event) {  
-	      fireTableDataChanged(); 
-	    }
-            public void treeCollapsed(TreeExpansionEvent event) {  
-	      fireTableDataChanged(); 
-	    }
-	});
-
-	// Install a TreeModelListener that can update the table when
-	// tree changes. We use delayedFireTableDataChanged as we can
-	// not be guaranteed the tree will have finished processing
-	// the event before us.
-	treeTableModel.addTreeModelListener(new TreeModelListener() {
-	    public void treeNodesChanged(TreeModelEvent e) {
-		delayedFireTableDataChanged();
-	    }
-
-	    public void treeNodesInserted(TreeModelEvent e) {
-		delayedFireTableDataChanged();
-	    }
-
-	    public void treeNodesRemoved(TreeModelEvent e) {
-		delayedFireTableDataChanged();
-	    }
-
-	    public void treeStructureChanged(TreeModelEvent e) {
-		delayedFireTableDataChanged();
-	    }
-	});
-    }
-
-    // Wrappers, implementing TableModel interface. 
-
-    public int getColumnCount() {
-	return treeTableModel.getColumnCount();
-    }
-
-    public String getColumnName(int column) {
-	return treeTableModel.getColumnName(column);
-    }
-
-    public Class getColumnClass(int column) {
-	return treeTableModel.getColumnClass(column);
-    }
-
-    public int getRowCount() {
-	return tree.getRowCount();
-    }
-
-    protected Object nodeForRow(int row) {
-	TreePath treePath = tree.getPathForRow(row);
-	return treePath.getLastPathComponent();         
-    }
-
-    public Object getValueAt(int row, int column) {
-	return treeTableModel.getValueAt(nodeForRow(row), column);
-    }
-
-    public boolean isCellEditable(int row, int column) {
-         return treeTableModel.isCellEditable(nodeForRow(row), column); 
-    }
-
-    public void setValueAt(Object value, int row, int column) {
-	treeTableModel.setValueAt(value, nodeForRow(row), column);
-    }
-
-    /**
-     * Invokes fireTableDataChanged after all the pending events have been
-     * processed. SwingUtilities.invokeLater is used to handle this.
-     */
-    protected void delayedFireTableDataChanged() {
-	SwingUtilities.invokeLater(new Runnable() {
-	    public void run() {
-		fireTableDataChanged();
-	    }
-	});
-    }
-}
-

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/rhino.git



More information about the pkg-java-commits mailing list