Skip to content
Snippets Groups Projects
Utilities.java 5.46 KiB
Newer Older
  • Learn to ignore specific revisions
  • tjc's avatar
    tjc committed
    /* Utilities.java
     *
     * created: Tue Sep 18 2001
     *
     * This file is part of Artemis
     * 
     * Copyright(C) 2001  Genome Research Limited
     * 
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * as published by the Free Software Foundation; either version 2
     * of the License, or(at your option) any later version.
     * 
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     * 
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
     *
    
    tjc's avatar
    tjc committed
     * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/Utilities.java,v 1.4 2007-02-22 19:45:18 tjc Exp $
    
    tjc's avatar
    tjc committed
     */
    
    package uk.ac.sanger.artemis.components;
    
    import uk.ac.sanger.artemis.util.InputStreamProgressListener;
    import uk.ac.sanger.artemis.EntrySourceVector;
    import uk.ac.sanger.artemis.Options;
    
    import java.awt.*;
    import java.net.MalformedURLException;
    import javax.swing.*;
    
    /**
     *  Utilities methods used by the uk.ac.sanger.artemis.components package.
     *
     *  @author Kim Rutherford <kmr@sanger.ac.uk>
    
    tjc's avatar
    tjc committed
     *  @version $Id: Utilities.java,v 1.4 2007-02-22 19:45:18 tjc Exp $
    
    tjc's avatar
    tjc committed
     **/
    
    public class Utilities 
    {
      /**
       *  Return the JFrame that contains the given component.
       **/
      public static JFrame getComponentFrame(final JComponent component) 
      {
        if(component.getTopLevelAncestor() instanceof JFrame) 
          return(JFrame) component.getTopLevelAncestor();
        else 
          return null;
      }
    
      /**
       *  Move the given JFrame to the centre of the screen.
       **/
      public static void centreFrame(final JFrame frame) 
      {
        final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    
        final int x_position =(screen.width - frame.getSize().width) / 2;
        int y_position =(screen.height - frame.getSize().height) / 2;
    
        if(y_position < 10) 
          y_position = 10;
    
        frame.setLocation(new Point(x_position, y_position));
      }
    
    
       /**
       *  Move the given JFrame to the right of the screen.
       **/
      public static void rightJustifyFrame(final JFrame frame)
      {
        final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        int y_position =(screen.height - frame.getSize().height) / 2;
    
        if(y_position < 10)
          y_position = 10;
    
        frame.setLocation(new Point(0, y_position));
      }
    
    
    tjc's avatar
    tjc committed
      /**
       *  Move the given JFrame to the centre of the screen.
       **/
      public static void centreJustifyFrame(final JFrame frame, final int y_position)
      {
        final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    
        final int x_position =(screen.width - frame.getSize().width) / 2;
    
        frame.setLocation(new Point(x_position, y_position));
      }
    
    
    
    tjc's avatar
    tjc committed
      /**
       *  Find the parent Frame of the given component and re-centre it on the
       *  screen.
       **/
      public static void centreOwningFrame(final JComponent component) 
      {
        final JFrame frame = getComponentFrame(component);
        centreFrame(frame);
      }
    
    tjc's avatar
    tjc committed
      
      /**
       * Test to find if this is a multi-display/device environment
       * @return true if multiple displays found
       */
      public static boolean isMultiDisplay()
      {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        
        if(ge.getScreenDevices().length>1)
          return true;
        
        return false;
      }
    
    tjc's avatar
    tjc committed
    
      /**
       *  Returns a Vector containing the possible Entry sources for this
       *  application.
       *  @param frame The component that is creating the EntrySource objects.
       *   (Used for requesters.)
       *  @param listener InputStreamProgressEvent objects will be sent to this
       *    listener as progress on reading is made.
       **/
      public static EntrySourceVector getEntrySources(final JFrame frame,
                         final InputStreamProgressListener listener) 
      {
        final EntrySourceVector return_vector = new EntrySourceVector();
        
        return_vector.add(new FileDialogEntrySource(frame, listener));
        return_vector.add(new DbfetchEntrySource(frame));
    
        // return_vector.add(new BioJavaEntrySource());
        
        // this doesn't work on a v1.2 system so it is taken out with perl when
        // necessary 
        // CORBA_START_MARKER
    
        // The location of the IOR for the corba server at EMBL.  Can be
        // overridden using the options file. 
        final String embl_ior_url =
          Options.getOptions().getProperty("embl_ior_url");
    
        if(embl_ior_url != null) 
        {
          try 
          {
            return_vector.add(new EMBLCorbaEntrySource(frame, embl_ior_url));
          } 
          catch(MalformedURLException e) 
          {
            new MessageDialog(frame, "the url given for the embl database is " +
                              "badly formatted: " + e.getMessage());
          }
        }
    
        // The location of the IOR for the pathogens group read-write corba
        // server. 
        final String db_ior_url =
          Options.getOptions().getProperty("db_ior_url");
        
        if(db_ior_url != null) 
        {
          try 
          {
            return_vector.add(new WritableEMBLCorbaEntrySource(frame,
                                                               db_ior_url));
          }
          catch(MalformedURLException e)
          {
            new MessageDialog(frame, "the url given for the embl database is " +
                               "badly formatted: " + e.getMessage());
          }
        }
        // CORBA_END_MARKER
    
        return return_vector;
      }
    }