From 8b1a8ed7ba3b7a395b1fc7c1938b0badffee8c62 Mon Sep 17 00:00:00 2001
From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04>
Date: Wed, 17 Aug 2005 09:06:53 +0000
Subject: [PATCH] delete

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@3420 ee4ac58c-ac51-4696-9907-e4b3aa274f04
---
 .../artemis/components/FileManager.java       | 435 --------
 uk/ac/sanger/artemis/components/FileNode.java | 159 ---
 uk/ac/sanger/artemis/components/FileTree.java | 943 ------------------
 3 files changed, 1537 deletions(-)
 delete mode 100644 uk/ac/sanger/artemis/components/FileManager.java
 delete mode 100644 uk/ac/sanger/artemis/components/FileNode.java
 delete mode 100644 uk/ac/sanger/artemis/components/FileTree.java

diff --git a/uk/ac/sanger/artemis/components/FileManager.java b/uk/ac/sanger/artemis/components/FileManager.java
deleted file mode 100644
index 66a67e68d..000000000
--- a/uk/ac/sanger/artemis/components/FileManager.java
+++ /dev/null
@@ -1,435 +0,0 @@
-/********************************************************************
-*
-*  This library is free software; you can redistribute it and/or
-*  modify it under the terms of the GNU Library General Public
-*  License as published by the Free Software Foundation; either
-*  version 2 of the License, or (at your option) any later version.
-*
-*  This library is distributed in the hope that it will be useful,
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-*  Library General Public License for more details.
-*
-*  You should have received a copy of the GNU Library General Public
-*  License along with this library; if not, write to the
-*  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-*  Boston, MA  02111-1307, USA.
-*
-*  Copyright (C) Genome Research Limited
-*
-********************************************************************/
-
-package uk.ac.sanger.artemis.components;
-
-import uk.ac.sanger.artemis.util.StringVector;
-import uk.ac.sanger.artemis.Options;
-
-import javax.swing.*;
-import java.io.File;
-import java.io.FileFilter;
-import java.awt.event.*;
-import java.awt.geom.*;
-import java.awt.*;
-
-public class FileManager extends JFrame
-{
-
-  /** busy cursor */
-  private Cursor cbusy = new Cursor(Cursor.WAIT_CURSOR);
-  /** done cursor */
-  private Cursor cdone = new Cursor(Cursor.DEFAULT_CURSOR);
-
-  public FileManager(JFrame frame)
-  {
-    this(frame,getArtemisFilter());
-  }
-
-  /**
-  *
-  * File Manager Frame
-  * @param frame  parent frame
-  *
-  */
-  public FileManager(JFrame frame, FileFilter filter)
-  {
-    super("File Manager");
-
-    FileTree ftree  = new FileTree(new File(System.getProperty("user.dir")),
-                                   frame, filter);
-    JScrollPane jsp = new JScrollPane(ftree);
-    JPanel pane = (JPanel)getContentPane();
-    pane.setLayout(new BorderLayout());
-    pane.add(jsp, BorderLayout.CENTER);
-    setJMenuBar(makeMenuBar(pane,ftree));
-    pane.add(getFileFileterComboBox(ftree), BorderLayout.SOUTH);
-
-    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
-    jsp.setPreferredSize(new Dimension(210,
-                         (int)(screen.getHeight()/2)));
-    pack();
-    
-    int yloc = (int)((screen.getHeight()-getHeight())/2);
-    setLocation(0,yloc);  
-    setVisible(true);
-  }
-
-  protected JComboBox getFileFileterComboBox(final FileTree ftree)
-  {
-    String[] filters = { "Artemis Files", "Sequence Files", 
-                         "Feature Files", "All Files" };
-    final JComboBox comboFilter = new JComboBox(filters);
-    comboFilter.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        String select = (String)comboFilter.getSelectedItem(); 
-        if(select.equals("Artemis Files"))
-          ftree.setFilter(getArtemisFilter());
-        else if(select.equals("Sequence Files"))
-          ftree.setFilter(getSequenceFilter());
-        else if(select.equals("Feature Files"))
-          ftree.setFilter(getFeatureFilter());
-        else if(select.equals("All Files"))
-        {
-          ftree.setFilter(new FileFilter()
-          {
-            public boolean accept(File pathname)
-            {
-              if(pathname.getName().startsWith("."))
-                return false;
-              return true;
-            }
-          });
-        }
-      }
-    });
-    return comboFilter;
-  }
-
-  /**
-  *
-  * Get a file filter for sequence and feature suffixes.
-  * @return file filter
-  */
-  protected static FileFilter getArtemisFilter()
-  {
-    final StringVector sequence_suffixes =
-      Options.getOptions().getOptionValues("sequence_file_suffixes");
-
-    final StringVector feature_suffixes =
-      Options.getOptions().getOptionValues("feature_file_suffixes");
-
-    final FileFilter artemis_filter = new FileFilter()
-    {
-      public boolean accept(File pathname)
-      {
-        if(pathname.isDirectory() &&
-           !pathname.getName().startsWith("."))
-          return true;
-          
-        for(int i = 0; i<sequence_suffixes.size(); ++i)
-        {
-          final String suffix = sequence_suffixes.elementAt(i);
-
-          if(pathname.getName().endsWith("." + suffix) ||
-             pathname.getName().endsWith("." + suffix + ".gz"))
-            return true;
-        }
-
-        for(int i = 0; i<feature_suffixes.size(); ++i)
-        {
-          final String suffix = feature_suffixes.elementAt(i);
-
-          if(pathname.getName().endsWith("." + suffix) ||
-             pathname.getName().endsWith("." + suffix + ".gz"))
-            return true;
-        }
-        return false;
-      }
-    };
-    return artemis_filter;
-  }
-
-
-  /**
-  *
-  * Get a file filter for feature suffixes.
-  * @return file filter
-  */
-  protected static FileFilter getFeatureFilter()
-  {
-    final StringVector feature_suffixes =
-      Options.getOptions().getOptionValues("feature_file_suffixes");
-
-    final FileFilter feature_filter = new FileFilter()
-    {
-      public boolean accept(File pathname)
-      {
-        if(pathname.isDirectory() &&
-           !pathname.getName().startsWith("."))
-          return true;
-
-        for(int i = 0; i<feature_suffixes.size(); ++i)
-        {
-          final String suffix = feature_suffixes.elementAt(i);
-
-          if(pathname.getName().endsWith("." + suffix) ||
-             pathname.getName().endsWith("." + suffix + ".gz"))
-            return true;
-        }
-        return false;
-      }
-    };
-    return feature_filter;
-  }
-
-  /**
-  *
-  * Get a file filter for sequence suffixes.
-  * @return file filter
-  */
-  protected static FileFilter getSequenceFilter()
-  {
-    final StringVector sequence_suffixes =
-      Options.getOptions().getOptionValues("sequence_file_suffixes");
-
-    final FileFilter seq_filter = new FileFilter()
-    {
-      public boolean accept(File pathname)
-      {
-        if(pathname.isDirectory() &&
-           !pathname.getName().startsWith("."))
-          return true;
-         
-        for(int i = 0; i<sequence_suffixes.size(); ++i)
-        {
-          final String suffix = sequence_suffixes.elementAt(i);
-
-          if(pathname.getName().endsWith("." + suffix) ||
-             pathname.getName().endsWith("." + suffix + ".gz"))
-            return true;
-        }
-
-        return false;
-      }
-    };
-    return seq_filter;
-  }
-
-  /**
-  *
-  * Set up a menu and tool bar
-  * @param pane   panel to add toolbar to
-  * @param ftree  file tree display
-  *
-  */
-  private JMenuBar makeMenuBar(JPanel pane, final FileTree ftree)
-  {
-    JMenuBar mBar = new JMenuBar();
-    JMenu fileMenu = new JMenu("File");
-    mBar.add(fileMenu);
-    
-    JMenuItem fileMenuGoto = new JMenuItem("Go to Directory ...");
-    fileMenuGoto.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        String dir = ftree.getRoot().getAbsolutePath();
-        String newDir = JOptionPane.showInputDialog(FileManager.this,
-                                             "Go to Directory:",dir);      
-
-        if(newDir == null)
-          return;
-       
-        newDir = newDir.trim();
-        File newDirFile = new File(newDir);
-        
-        if(newDirFile.exists() &&
-           newDirFile.canRead() &&
-           !newDir.equals(dir))
-          ftree.newRoot(newDir);
-        else
-        {
-          String error = null;
-          if(!newDirFile.exists())
-            error = new String(newDir+" doesn't exist!");
-          else if(!newDirFile.canRead())
-            error = new String(newDir+" cannot be read!");
-          else if(newDir.equals(dir))
-            error = new String("Same directory!");
-
-          if(error != null)
-            JOptionPane.showMessageDialog(FileManager.this,
-                                        error, "Warning",
-                                        JOptionPane.WARNING_MESSAGE);
-        }
-      }
-    });
-    fileMenu.add(fileMenuGoto);
-    fileMenu.add(new JSeparator());
-    
-    JMenuItem fileMenuClose = new JMenuItem("Close");
-    fileMenuClose.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        setVisible(false);
-      }
-    });
-    fileMenu.add(fileMenuClose);
-
-    // tool bar set up
-    JToolBar toolBar  = new JToolBar();
-    Dimension buttonSize = new Dimension(22,24);
-
-    JButton upBt = new JButton()
-    {
-      public void paintComponent(Graphics g)
-      {
-        super.paintComponent(g);
-        Graphics2D g2 = (Graphics2D)g;
-
-        g2.setColor(new Color(0,128,0));
-        float loc1[][] = { {11,18}, {7,18}, {7,14},
-                           {3,14},  {11,4} };
-                  
-        g2.fill(makeShape(loc1));
-        g2.setColor(Color.green);
-
-        float loc2[][] = { {11,18}, {15,18}, {15,14},
-                           {19,14},  {11,4} };
-        g2.fill(makeShape(loc2));
-
-        setSize(22,24);
-      }
-    };
-    upBt.setPreferredSize(buttonSize);
-    upBt.setMinimumSize(buttonSize);
-
-    upBt.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        FileManager.this.setCursor(cbusy);
-        File root = ftree.getRoot();
-        String parent = root.getParent();
-        if(parent != null)
-          ftree.newRoot(parent);
-        FileManager.this.setCursor(cdone);
-      }
-    });
-    toolBar.add(upBt);
-
-// yeastpub
-    JButton shortCut1 = new JButton()
-    {
-      public void paintComponent(Graphics g)
-      {
-        super.paintComponent(g);
-        Graphics2D g2 = (Graphics2D)g;
-        Font font = new Font("Monospaced", Font.BOLD, 14);
-        g2.setFont(font);
-
-        g2.setColor(Color.black);
-        g2.drawString("Y",4,18);
-        g2.setColor(Color.red);
-        g2.drawString("P",10,15);
-        setSize(22,24);
-      }
-    };
-    shortCut1.setPreferredSize(buttonSize);
-    shortCut1.setMinimumSize(buttonSize);
-    shortCut1.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        ftree.newRoot("/nfs/disk222/yeastpub");
-      }
-    });
-
-    if((new File("/nfs/disk222/yeastpub")).exists())
-      toolBar.add(shortCut1);
-
-// pathdata
-   JButton shortCut2 = new JButton()
-    {
-      public void paintComponent(Graphics g)
-      {
-        super.paintComponent(g);
-        Graphics2D g2 = (Graphics2D)g;
-        Font font = new Font("Monospaced", Font.BOLD, 14);
-        g2.setFont(font);
-
-        g2.setColor(Color.black);
-        g2.drawString("P",4,18);
-        g2.setColor(Color.red);
-        g2.drawString("D",10,15);
-        setSize(22,24);
-      }
-    };
-    shortCut2.setPreferredSize(buttonSize);
-    shortCut2.setMinimumSize(buttonSize);
-    shortCut2.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        ftree.newRoot("/nfs/pathdata/");
-      }
-    });
-
-    if((new File("/nfs/pathdata/")).exists())
-      toolBar.add(shortCut2);
-
-// home button
-    JButton homeBt = new JButton()
-    {
-      public void paintComponent(Graphics g)
-      {
-        super.paintComponent(g);
-        Graphics2D g2 = (Graphics2D)g;
-                                                                                
-        g2.setColor(Color.blue);
-        float loc1[][] = { {3,14}, {11,3}, {19,14},
-                           {17,14}, {17,18}, {5,18}, {5,14} };
-        g2.fill(makeShape(loc1));
-                                                                                
-        setSize(22,24);
-      }
-    };
-    homeBt.setPreferredSize(buttonSize);
-    homeBt.setMinimumSize(buttonSize);
-    homeBt.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        ftree.newRoot(System.getProperty("user.home"));
-      }
-    });
-    toolBar.add(homeBt);
-
-    toolBar.add(Box.createVerticalStrut(35));
-    pane.add(toolBar, BorderLayout.NORTH);
-
-    return mBar;
-  }
-
-  /**
-  *
-  * Used to draw a Shape.
-  *
-  */
-  public static GeneralPath makeShape(float loc[][]) 
-  {
-    GeneralPath path = new GeneralPath(GeneralPath.WIND_NON_ZERO);
-
-    path.moveTo(loc[0][0],loc[0][1]);
-
-    for(int i=1; i<loc.length; i++)
-      path.lineTo(loc[i][0],loc[i][1]);
-    
-    return path;
-  }
-
-
-}
-
diff --git a/uk/ac/sanger/artemis/components/FileNode.java b/uk/ac/sanger/artemis/components/FileNode.java
deleted file mode 100644
index 084ef31b7..000000000
--- a/uk/ac/sanger/artemis/components/FileNode.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/********************************************************************
-*
-*  This library is free software; you can redistribute it and/or
-*  modify it under the terms of the GNU Library General Public
-*  License as published by the Free Software Foundation; either
-*  version 2 of the License, or (at your option) any later version.
-*
-*  This library is distributed in the hope that it will be useful,
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-*  Library General Public License for more details.
-*
-*  You should have received a copy of the GNU Library General Public
-*  License along with this library; if not, write to the
-*  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-*  Boston, MA  02111-1307, USA.
-*
-*  Copyright (C) Genome Research Limited
-*
-********************************************************************/
-
-package uk.ac.sanger.artemis.components;
-
-import java.awt.datatransfer.*;
-import javax.swing.tree.*;
-import java.io.*;
-import java.util.*;
-
-/**
-*
-* File node for local file tree manager
-*
-*/
-public class FileNode extends DefaultMutableTreeNode 
-                 implements Transferable, Serializable
-{
-    /** true if explored */
-    private boolean explored = false;
-    /** data flavour of a file node */
-    public static DataFlavor FILENODE =
-           new DataFlavor(FileNode.class, "Local file");
-    /** flavours file node and string */
-    static DataFlavor flavors[] = { FILENODE, DataFlavor.stringFlavor };
-
-    /**
-    *
-    * @param file	file node file
-    *
-    */
-    public FileNode(File file)
-    { 
-      setUserObject(file); 
-    }
-
-    /** Determine if this is a directory */
-    public boolean getAllowsChildren() { return isDirectory(); }
-    /** Determine if this is a file */
-    public boolean isLeaf() { return !isDirectory(); }
-    /** Get the File this node represents */
-    public File getFile() { return (File)getUserObject(); }
-    /** Determine if this node has been explored */
-    public boolean isExplored() { return explored; }
-    /** Determine if this is a directory */
-    public boolean isDirectory() 
-    {
-      File file = getFile();
-      return file.isDirectory();
-    }
-
-    /**
-    *
-    * Returns the name of the file 
-    *
-    */
-    public String toString() 
-    {
-      File file = (File)getUserObject();
-      String filename = file.toString();
-      int index = filename.lastIndexOf(File.separator);
-
-      return (index != -1 && index != filename.length()-1) ? 
-                          filename.substring(index+1) : 
-                                            filename;
-    }
-
-    /**
-    *
-    * Explores a directory adding a FileNode for each
-    * child
-    *
-    */
-    public void explore(FileFilter filter) 
-    {
-      if(!isDirectory())
-        return;
-
-      if(!isExplored()) 
-      {
-        File file = getFile();
-        explored = true;
-        File[] children;
-// filter files
-        children = file.listFiles(filter);
-        
-// sort into alphabetic order
-        java.util.Arrays.sort(children);
-        for(int i=0; i < children.length; ++i)
-          add(new FileNode(children[i]));
-      }
-    }
-
-    /**
-    *
-    * Forces the directory to be re-explored
-    *
-    */
-    public void reExplore(FileFilter filter)
-    {
-      explored = false;
-      removeAllChildren();
-      explore(filter);
-    }
- 
-// Transferable
-    public DataFlavor[] getTransferDataFlavors()
-    {
-      return flavors;
-    }
-
-    public boolean isDataFlavorSupported(DataFlavor f)
-    {
-      if(f.equals(FILENODE) || f.equals(DataFlavor.stringFlavor))
-        return true;
-      return false;
-    }
-
-    public Object getTransferData(DataFlavor d)
-        throws UnsupportedFlavorException, IOException
-    {
-      if(d.equals(FILENODE))
-        return this;
-      else if(d.equals(DataFlavor.stringFlavor))
-        return getFile().getAbsolutePath();
-      else throw new UnsupportedFlavorException(d);
-    }
-
-//Serializable
-   private void writeObject(java.io.ObjectOutputStream out) throws IOException
-   {
-     out.defaultWriteObject();
-   }
-
-   private void readObject(java.io.ObjectInputStream in)
-     throws IOException, ClassNotFoundException
-   {
-     in.defaultReadObject();
-   }
-
-}
diff --git a/uk/ac/sanger/artemis/components/FileTree.java b/uk/ac/sanger/artemis/components/FileTree.java
deleted file mode 100644
index 4986b2d1c..000000000
--- a/uk/ac/sanger/artemis/components/FileTree.java
+++ /dev/null
@@ -1,943 +0,0 @@
-/********************************************************************
-*
-*  This library is free software; you can redistribute it and/or
-*  modify it under the terms of the GNU Library General Public
-*  License as published by the Free Software Foundation; either
-*  version 2 of the License, or (at your option) any later version.
-*
-*  This library is distributed in the hope that it will be useful,
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-*  Library General Public License for more details.
-*
-*  You should have received a copy of the GNU Library General Public
-*  License along with this library; if not, write to the
-*  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-*  Boston, MA  02111-1307, USA.
-*
-*  Copyright (C) Genome Research Limited
-*
-********************************************************************/
-
-package uk.ac.sanger.artemis.components;
-
-import uk.ac.sanger.artemis.io.EntryInformation;
-import uk.ac.sanger.artemis.io.SimpleEntryInformation;
-import uk.ac.sanger.artemis.*;
-import uk.ac.sanger.artemis.util.InputStreamProgressListener;
-import uk.ac.sanger.artemis.util.InputStreamProgressEvent;
-import uk.ac.sanger.artemis.util.FileDocument;
-import uk.ac.sanger.artemis.util.OutOfRangeException;
-import uk.ac.sanger.artemis.sequence.NoSequenceException;
-import uk.ac.sanger.artemis.components.MessageDialog;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.datatransfer.*;
-import java.awt.dnd.*;
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.tree.*;
-import java.io.*;
-import java.util.Vector;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-
-/**
-*
-* Creates a local file tree manager. This acts as a drag 
-* source and sink for files.
-*
-*/
-public class FileTree extends JTree implements DragGestureListener,
-                 DragSourceListener, DropTargetListener, ActionListener,
-                 Autoscroll 
-{
-
-  /** root directory */
-  private File root;
-  /** store of directories that are opened */
-  private Vector openNode;
-  /** file separator */
-  private String fs = new String(System.getProperty("file.separator"));
-  /** popup menu */
-  private JPopupMenu popup;
-  /** busy cursor */
-  private Cursor cbusy = new Cursor(Cursor.WAIT_CURSOR);
-  /** done cursor */
-  private Cursor cdone = new Cursor(Cursor.DEFAULT_CURSOR);
-  /** AutoScroll margin */
-  private static final int AUTOSCROLL_MARGIN = 45;
-  /** used by AutoScroll method */
-  private Insets autoscrollInsets = new Insets( 0, 0, 0, 0 );
-  /** file filter */
-  private FileFilter filter = null;
-
-  /**
-  *
-  * @param rt		root directory
-  * @param f		frame
-  *
-  */
-  public FileTree(File rt, final JFrame f,
-                  FileFilter filter)
-  {
-    this.root   = rt;
-    this.filter = filter;
-
-    DragSource dragSource = DragSource.getDefaultDragSource();
-
-    dragSource.createDefaultDragGestureRecognizer(
-       this,                             // component where drag originates
-       DnDConstants.ACTION_COPY_OR_MOVE, // actions
-       this);                            // drag gesture recognizer
-
-    setDropTarget(new DropTarget(this,this));
-    DefaultTreeModel model = createTreeModel(root);
-    setModel(model);
-    createTreeModelListener();
-
-    this.getSelectionModel().setSelectionMode
-                  (TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
-
-    // Popup menu
-    addMouseListener(new PopupListener());
-    popup = new JPopupMenu();
-    
-    JMenuItem menuItem = new JMenuItem("Refresh");
-    menuItem.addActionListener(this);
-    popup.add(menuItem);
-    popup.add(new JSeparator());
-    //open menu
-    JMenu openMenu = new JMenu("Open With");
-    popup.add(openMenu);
-    menuItem = new JMenuItem("Jemboss Alignment Editor");
-    menuItem.addActionListener(this);
-    openMenu.add(menuItem);
-    menuItem = new JMenuItem("Artemis");
-    menuItem.addActionListener(this);
-    openMenu.add(menuItem);
-
-    menuItem = new JMenuItem("Rename...");
-    menuItem.addActionListener(this);
-    popup.add(menuItem);
-    menuItem = new JMenuItem("New Folder...");
-    menuItem.addActionListener(this);
-    popup.add(menuItem);
-    menuItem = new JMenuItem("Delete...");
-    menuItem.addActionListener(this);
-    popup.add(menuItem);
-    popup.add(new JSeparator());
-    menuItem = new JMenuItem("De-select All");
-    menuItem.addActionListener(this);
-    popup.add(menuItem);
-
-    //Listen for when a file is selected
-    MouseListener mouseListener = new MouseAdapter() 
-    {
-      public void mouseClicked(MouseEvent me) 
-      {
-        if(me.getClickCount() == 2 && isFileSelection() &&
-           !me.isPopupTrigger()) 
-        {
-          f.setCursor(cbusy);
-          FileNode node = getSelectedNode();
-          String selected = node.getFile().getAbsolutePath();
-          showFilePane(selected);
-          f.setCursor(cdone);
-        }
-      }
-    };
-    this.addMouseListener(mouseListener);
-
-    addTreeExpansionListener(new TreeExpansionListener()
-    {
-      public void treeCollapsed(TreeExpansionEvent e){} 
-      public void treeExpanded(TreeExpansionEvent e) 
-      {
-        TreePath path = e.getPath();
-        if(path != null) 
-        {
-          FileNode node = (FileNode)path.getLastPathComponent();
-
-          if(!node.isExplored()) 
-          {  
-            f.setCursor(cbusy);
-            exploreNode(node);
-            f.setCursor(cdone);
-          }
-        }
-      }
-    });
-
-  }
-
-
-  /**
-  *
-  * Popup menu actions
-  * @param e	action event
-  * 
-  */
-  public void actionPerformed(ActionEvent e) 
-  {
-
-    JMenuItem source = (JMenuItem)(e.getSource());
-    final FileNode node = getSelectedNode();
-
-    if(source.getText().equals("Refresh")) 
-    {
-      if(node == null)
-        newRoot(root.getAbsolutePath());
-      else if(node.isLeaf())
-        refresh((FileNode)node.getParent());
-      else 
-        refresh(node);
-      return;
-    }
-
-    if(node == null)
-    {
-      JOptionPane.showMessageDialog(null,"No file selected.",
-                        "Warning",
-                        JOptionPane.WARNING_MESSAGE);
-      return;
-    }
-    
-    final File f = node.getFile();
-
-    if(source.getText().equals("Jemboss Alignment Editor"))
-    {
-      org.emboss.jemboss.editor.AlignJFrame ajFrame =
-               new org.emboss.jemboss.editor.AlignJFrame(f);
-      ajFrame.setVisible(true);
-    }
-    else if(source.getText().equals("Artemis"))
-    {
-      setCursor(cbusy);
-      String selected = node.getFile().getAbsolutePath();
-      showFilePane(selected);
-      setCursor(cdone);
-    }
-    else if(source.getText().equals("Text Editor"))
-      showFilePane(f.getAbsolutePath());
-    else if(source.getText().equals("New Folder..."))
-    {
-      String path = null;
-      if(node.isLeaf())
-        path = f.getParent();
-      else
-        path = f.getAbsolutePath();
-
-      String inputValue = JOptionPane.showInputDialog(null,
-                    "Folder Name","Create New Folder in "+path,
-                    JOptionPane.QUESTION_MESSAGE);
-
-      if(inputValue != null && !inputValue.equals("") )
-      {
-        String fullname = path+fs+inputValue;
-        File dir = new File(fullname);
-        
-        if(dir.exists())
-          JOptionPane.showMessageDialog(null, fullname+" alread exists!",
-                                   "Error", JOptionPane.ERROR_MESSAGE);
-        else
-        {
-          if(dir.mkdir())
-            addObject(inputValue,path,node);
-          else
-            JOptionPane.showMessageDialog(null,
-                       "Cannot make the folder\n"+fullname,
-                       "Error", JOptionPane.ERROR_MESSAGE);     
-        }
-      }
-    }
-    else if(source.getText().equals("Delete..."))
-    {
-      File fn[] = getSelectedFiles();
-      String names = "";
-      for(int i=0; i<fn.length;i++)
-         names = names.concat(fn[i].getAbsolutePath()+"\n");
-      int n = JOptionPane.showConfirmDialog(null,
-                                 "Delete \n"+names+"?",
-                                 "Delete Files",
-                                 JOptionPane.YES_NO_OPTION);
-
-      FileNode nodes[] = getSelectedNodes();
-      if(n == JOptionPane.YES_OPTION)
-        for(int i=0; i<nodes.length;i++)
-          deleteFile(nodes[i]);
-    }
-    else if(source.getText().equals("De-select All"))
-      clearSelection();
-    else if(isFileSelection() && source.getText().equals("Rename..."))
-    {
-      String inputValue = (String)JOptionPane.showInputDialog(null,
-                              "New File Name","Rename "+f.getName(), 
-                              JOptionPane.QUESTION_MESSAGE,null,null,f.getName());
-
-      if(inputValue != null && !inputValue.equals("") )
-      {
-        String path = f.getParent();
-        String fullname   = path+fs+inputValue;
-        File newFile = new File(fullname);
-
-        try
-        {
-          renameFile(f,node,newFile.getCanonicalPath());
-        }
-        catch(IOException ioe){}
-      }
-    }
-  }
-
-
-  /**
-  *
-  * Delete a file from the tree
-  * @param node		node to delete
-  *
-  */
-  public void deleteFile(final FileNode node)
-  {
-    File f = node.getFile();
-    if(f.delete())
-    {
-      Runnable deleteFileFromTree = new Runnable()
-      {
-        public void run () { deleteObject(node); };
-      };
-      SwingUtilities.invokeLater(deleteFileFromTree);
-    }
-    else
-      JOptionPane.showMessageDialog(null,"Cannot delete\n"+
-                         f.getAbsolutePath(),"Warning",
-                         JOptionPane.ERROR_MESSAGE);
-  }
- 
- 
-  /**
-  *
-  * Method to rename a file and update the filenode's.
-  * @param oldFile 	file to rename
-  * @param oldNode 	filenode to be removed
-  * @param newFullName 	name of the new file
-  *
-  */
-  private void renameFile(final File oldFile, final FileNode oldNode, 
-                          String newFullName)
-  {
-    final File fnew = new File(newFullName);
-    if(fnew.exists())
-      JOptionPane.showMessageDialog(null, newFullName+" alread exists!",
-                               "Warning", JOptionPane.ERROR_MESSAGE);
-    else
-    {
-      if(oldFile.renameTo(fnew))
-      {
-        Runnable renameFileInTree = new Runnable()
-        {
-          public void run ()
-          {
-            addObject(fnew.getName(),fnew.getParent(),oldNode);
-	    deleteObject(oldNode);
-          };
-        };
-        SwingUtilities.invokeLater(renameFileInTree);
-      }
-      else
-        JOptionPane.showMessageDialog(null, 
-                   "Cannot rename \n"+oldFile.getAbsolutePath()+
-                   "\nto\n"+fnew.getAbsolutePath(), "Rename Error",
-                   JOptionPane.ERROR_MESSAGE);
-    }
-    return;
-  }
-
-
-  /**
-  * 
-  * Define a directory root for the file tree
-  * @param newRoot 	directory to use as the root for
-  *        		the tree.
-  *
-  */
-  public void newRoot(String newRoot)
-  {
-    root = new File(newRoot);
-    DefaultTreeModel model = (DefaultTreeModel)getModel();
-    model = createTreeModel(root);
-    setModel(model);
-  }
-
-  /**
-  *
-  * Get the current root node.
-  * @return directory root.
-  *
-  */
-  public File getRoot()
-  {
-    return root;
-  }
-
-  /**
-  *
-  * Refresh
-  * @param FileNode node to refresh 
-  *
-  */
-  public void refresh(FileNode node)
-  {
-    node.reExplore(filter);
-    DefaultTreeModel model = (DefaultTreeModel)getModel();
-    model.nodeStructureChanged(node);
-  }
-
-  /**
-  *
-  * Set the current file filter
-  *
-  */
-  public void setFilter(FileFilter filter)
-  { 
-    this.filter = filter;
-    Enumeration en = openNode.elements();
-
-    while(en.hasMoreElements())
-      refresh((FileNode)en.nextElement());
-  }
-
-  /**
-  *
-  * Get FileNode of selected node
-  * @return     node that is currently selected
-  *
-  */
-  public FileNode getSelectedNode()
-  {
-    TreePath path = getLeadSelectionPath();
-    if(path == null)
-      return null;
-    FileNode node = (FileNode)path.getLastPathComponent();
-    return node;
-  }
-
-
-  /**
-  *
-  * Get FileNodes of selected nodes
-  * @return     node that is currently selected
-  *
-  */
-  public FileNode[] getSelectedNodes()
-  {
-    TreePath path[] = getSelectionPaths();
-    if(path == null)
-      return null;
-
-    int numberSelected = path.length;
-    FileNode nodes[] = new FileNode[numberSelected];
-    for(int i=0;i<numberSelected;i++)
-       nodes[i] = (FileNode)path[i].getLastPathComponent();
-
-    return nodes;
-  }
-
-
-  /**
-  *
-  * Get selected files
-  * @return     node that is currently selected
-  *
-  */
-  public File[] getSelectedFiles()
-  {
-    FileNode[] fn = getSelectedNodes();
-    int numberSelected = fn.length;
-    File files[] = new File[numberSelected];
-    for(int i=0;i<numberSelected;i++)
-       files[i] = fn[i].getFile();
-
-    return files;
-  }
-
-
-  /**
-  *
-  * Return true if selected node is a file
-  * @return true is a file is selected, false if
-  *         a directory is selected
-  *
-  */
-  public boolean isFileSelection()
-  {
-    TreePath path = getLeadSelectionPath();
-    if(path == null)
-      return false;
-
-    FileNode node = (FileNode)path.getLastPathComponent();
-    return node.isLeaf();
-  }
-
-
-  /**
-  *
-  * Make the given directory the root and create a new
-  * DefaultTreeModel.
-  * @param root         root directory
-  * @param              tree model with the root node set
-  *                     to the given directory
-  *
-  */
-  private DefaultTreeModel createTreeModel(File root)
-  {
-    FileNode rootNode = new FileNode(root);
-    rootNode.explore(filter);
-    openNode = new Vector();
-    openNode.add(rootNode);
-    return new DefaultTreeModel(rootNode);
-  }
-
-
-  /**
-  *
-  * Adding a file (or directory) to the file tree manager.
-  * This looks to see if the directory has already been opened
-  * and updates the filetree if it has.
-  * @param child        new child to add in
-  * @param path         path to where child is to be added
-  * @param node         node to add child to
-  *
-  */
-  public DefaultMutableTreeNode addObject(String child,
-                            String path, FileNode node)
-  {
-
-    DefaultTreeModel model = (DefaultTreeModel)getModel();
-    if(node == null)
-    {
-      node = getNode(path);
-      if(node==null)
-        return null;
-    }
-
-    FileNode parentNode = getNode(path);
-    File newleaf = new File(path + fs + child);
-    FileNode childNode = null;
-
-    if(parentNode.isExplored())
-    {
-      childNode = new FileNode(newleaf);
-      int index = getAnIndex(parentNode,child);
-      if(index > -1)
-        model.insertNodeInto(childNode, parentNode, index);
-    }
-    else if(parentNode.isDirectory())
-    {
-      exploreNode(parentNode);
-      childNode = getNode(path + fs + child);
-    }
-
-    // Make sure the user can see the new node.
-    this.scrollPathToVisible(new TreePath(childNode.getPath()));
-    return childNode;
-  }
-
-
-  /**
-  *
-  * Delete a node from the JTree
-  * @param node         node for deletion
-  *
-  */
-  public void deleteObject(FileNode node)
-  {
-    DefaultTreeModel model =(DefaultTreeModel)getModel();
-    FileNode parentNode = getNode(node.getFile().getParent());
-    model.removeNodeFromParent(node);
-  }
-
-
-  /**
-  *
-  * Explore a directory node
-  * @param dirNode      direcory node to display
-  *
-  */
-  public void exploreNode(FileNode dirNode)
-  {
-    DefaultTreeModel model = (DefaultTreeModel)getModel();
-    dirNode.explore(filter);
-    openNode.add(dirNode);
-    model.nodeStructureChanged(dirNode);
-  }
-
-  /**
-  *
-  * Gets the node from the existing explored nodes and their
-  * children.
-  * @param path         path to a file or directory
-  * @return             corresponding node if the directory or
-  *                     file is visible otherwise returns null.
-  *
-  */
-  private FileNode getNode(String path)
-  {
-    Enumeration en = openNode.elements();
-
-    while(en.hasMoreElements())
-    {
-      FileNode node = (FileNode)en.nextElement();
-      String nodeName = node.getFile().getAbsolutePath();
-      if(nodeName.equals(path))
-        return node;
-    }
-
-// check children of explored nodes
-    en = openNode.elements();
-    while(en.hasMoreElements())
-    {
-      FileNode child = getChildNode((FileNode)en.nextElement(),path);
-      if(child != null)
-        return child;
-    }
-
-    return null;
-  }
-
-
-  /**
-  *
-  * Gets the child node of a parent node
-  * @param parent       parent node
-  * @param childName    name of child
-  * @return the child node
-  *
-  */
-  private FileNode getChildNode(FileNode parent, String childName)
-  {
-    for(Enumeration children = parent.children(); children.hasMoreElements() ;)
-    {
-      FileNode childNode = (FileNode)children.nextElement();
-      String nodeName = childNode.getFile().getAbsolutePath();
-      if(childName.equals(nodeName))
-        return childNode;
-    }
-
-    return null;
-  }
-
-  /**
-  *
-  * Finds a new index for adding a new file to the file manager.
-  * @param parentNode   parent directory node
-  * @param child        new child node
-  * @return             index of the child in the directory
-  *
-  */
-  private int getAnIndex(FileNode parentNode, String child)
-  {
-    //find the index for the child
-    int num = parentNode.getChildCount();
-    int childIndex = num;
-    for(int i=0;i<num;i++)
-    {
-      String nodeName =
-            ((FileNode)parentNode.getChildAt(i)).getFile().getName();
-      if(nodeName.compareTo(child) > 0)
-      {
-        childIndex = i;
-        break;
-      }
-      else if (nodeName.compareTo(child) == 0)  //file already exists
-      {
-        childIndex = -1;
-        break;
-      }
-    }
-    return childIndex;
-  }
-
-
-  /**
-  *
-  * Read a file into a byte array.
-  * @param filename     file name
-  * @return             byte[] contents of file
-  *
-  */
-  protected static byte[] readByteFile(String filename)
-  {
-
-    File fn = new File(filename);
-    byte[] b = null;
-    try
-    {
-      long s = fn.length();
-      if(s == 0)
-        return b;
-      b = new byte[(int)s];
-      FileInputStream fi = new FileInputStream(fn);
-      fi.read(b);
-      fi.close();
-    }
-    catch (IOException ioe)
-    {
-      System.out.println("Cannot read file: " + filename);
-    }
-    return b;
-  }
-
-  /**
-  *
-  * Opens a JFrame with the file contents displayed.
-  * @param filename     file name to display
-  *
-  */
-  private void showFilePane(final String filename)
-  {
-    SwingWorker entryWorker = new SwingWorker()
-    {
-      EntryEdit entry_edit;
-      public Object construct()
-      {
-        try
-        {
-          EntryInformation new_entry_information =
-             new SimpleEntryInformation(Options.getArtemisEntryInformation());
-
-          final Entry entry =  new Entry(EntryFileDialog.getEntryFromFile(
-                         null, new FileDocument(new File(filename)),
-                         new_entry_information, true));
-          if(entry == null)
-            return null;
-
-          final EntryGroup entry_group =
-              new SimpleEntryGroup(entry.getBases());
-
-          entry_group.add(entry);
-          entry_edit = new EntryEdit(entry_group);
-          return null;
-        }
-        catch(NoSequenceException e)
-        {
-          new MessageDialog(null, "read failed: entry contains no sequence");
-        }
-        catch(OutOfRangeException e)
-        {
-          new MessageDialog(null, "read failed: one of the features in " +
-                     " the entry has an out of range " +
-                     "location: " + e.getMessage());
-
-        }
-        catch(NullPointerException npe){}
-
-        return null;
-      }
-
-      public void finished()
-      {
-        if(entry_edit != null)
-          entry_edit.setVisible(true);
-      }
-    };
-    entryWorker.start();
-
-  }
-
-
-////////////////////
-// DRAG AND DROP
-////////////////////
-// drag source
-  public void dragGestureRecognized(DragGestureEvent e) 
-  {
-    // ignore if mouse popup trigger
-    InputEvent ie = e.getTriggerEvent();
-    if(ie instanceof MouseEvent) 
-      if(((MouseEvent)ie).isPopupTrigger()) 
-        return;
-    
-    // drag only files 
-    if(isFileSelection())
-      e.startDrag(DragSource.DefaultCopyDrop,     // cursor
-                 (Transferable)getSelectedNode(), // transferable data
-                                       this);     // drag source listener
-  }
-  public void dragDropEnd(DragSourceDropEvent e) {}
-  public void dragEnter(DragSourceDragEvent e) {}
-  public void dragExit(DragSourceEvent e) {}
-  public void dragOver(DragSourceDragEvent e) {}
-  public void dropActionChanged(DragSourceDragEvent e) {}
-
-// drop sink
-  public void dragEnter(DropTargetDragEvent e)
-  {
-    if(e.isDataFlavorSupported(FileNode.FILENODE)) 
-      e.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
-  }
-
-  public void drop(DropTargetDropEvent e)
-  {
-
-    Transferable t = e.getTransferable();
-    final FileNode dropNode = getSelectedNode();
-    if(dropNode == null)
-    {
-      e.rejectDrop();
-      return;
-    }
-
-    //local drop
-    if(t.isDataFlavorSupported(FileNode.FILENODE))
-    {
-       try
-       {
-         FileNode fn = (FileNode)t.getTransferData(FileNode.FILENODE);
-         fn = getNode(fn.getFile().getAbsolutePath());
-
-         if (dropNode.isLeaf())
-         {
-           e.rejectDrop();
-           return;
-         }
-        
-         String dropDir = dropNode.getFile().getAbsolutePath();
-         String newFullName = dropDir+fs+fn.toString();
-         renameFile(fn.getFile(),fn,newFullName);  
-       }
-       catch(Exception ufe){}        
-    }
-    else
-    {
-      e.rejectDrop();
-      return;
-    }
-
-  }
-
-
-  /**
-  *
-  * When a suitable DataFlavor is offered over a remote file
-  * node the node is highlighted/selected and the drag
-  * accepted. Otherwise the drag is rejected.
-  *
-  */
-  public void dragOver(DropTargetDragEvent e)
-  {
-    if(e.isDataFlavorSupported(FileNode.FILENODE))
-    {
-      Point ploc = e.getLocation();
-      TreePath ePath = getPathForLocation(ploc.x,ploc.y);
-      if (ePath == null)
-      {
-        e.rejectDrag();
-        return;
-      }
-      FileNode node = (FileNode)ePath.getLastPathComponent();
-      if(!node.isDirectory())
-        e.rejectDrag();
-      else 
-      {
-        setSelectionPath(ePath);
-        e.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
-      }
-    }
-    else
-      e.rejectDrag();
-    
-    return;
-  }
-
-  public void dropActionChanged(DropTargetDragEvent e) {}
-  public void dragExit(DropTargetEvent e){}
-
-
-////////////////////
-// AUTO SCROLLING //
-////////////////////
-  /**
-  *
-  * Handles the auto scrolling of the JTree.
-  * @param location The location of the mouse.
-  *
-  */
-  public void autoscroll( Point location )
-  {
-    int top = 0, left = 0, bottom = 0, right = 0;
-    Dimension size = getSize();
-    Rectangle rect = getVisibleRect();
-    int bottomEdge = rect.y + rect.height;
-    int rightEdge = rect.x + rect.width;
-    if( location.y - rect.y < AUTOSCROLL_MARGIN && rect.y > 0 ) 
-      top = AUTOSCROLL_MARGIN;
-    if( location.x - rect.x < AUTOSCROLL_MARGIN && rect.x > 0 )
-      left = AUTOSCROLL_MARGIN;
-    if( bottomEdge - location.y < AUTOSCROLL_MARGIN && bottomEdge < size.height )
-      bottom = AUTOSCROLL_MARGIN;
-    if( rightEdge - location.x < AUTOSCROLL_MARGIN && rightEdge < size.width ) 
-      right = AUTOSCROLL_MARGIN;
-    rect.x += right - left;
-    rect.y += bottom - top;
-    scrollRectToVisible( rect );
-  }
-
-
-  /**
-  *
-  * Gets the insets used for the autoscroll.
-  * @return The insets.
-  *
-  */
-  public Insets getAutoscrollInsets()
-  {
-    Dimension size = getSize();
-    Rectangle rect = getVisibleRect();
-    autoscrollInsets.top = rect.y + AUTOSCROLL_MARGIN;
-    autoscrollInsets.left = rect.x + AUTOSCROLL_MARGIN;
-    autoscrollInsets.bottom = size.height - (rect.y+rect.height) + AUTOSCROLL_MARGIN;
-    autoscrollInsets.right  = size.width - (rect.x+rect.width) + AUTOSCROLL_MARGIN;
-    return autoscrollInsets;
-  }
-
-  /**
-  *
-  * Popup menu listener
-  *
-  */
-  class PopupListener extends MouseAdapter
-  {
-    public void mousePressed(MouseEvent e)
-    {
-      maybeShowPopup(e);
-    }
-
-    public void mouseReleased(MouseEvent e)
-    {
-      maybeShowPopup(e);
-    }
-
-    private void maybeShowPopup(MouseEvent e)
-    {
-      if(e.isPopupTrigger())
-        popup.show(e.getComponent(),
-                e.getX(), e.getY());
-    }
-  }
-
-  public static void main(String[] args)
-  {
-    JFrame tree_frame = new JFrame("File Manager");
-    FileTree ftree    = new FileTree(new File(System.getProperty("user.home")),
-                                     tree_frame,null);
-    JScrollPane jsp   = new JScrollPane(ftree);
-    tree_frame.getContentPane().add(jsp);
-    tree_frame.pack();
-    tree_frame.setVisible(true);
-  } 
-
-}
-
-- 
GitLab