Newer
Older
/* 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.
*
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/Utilities.java,v 1.4 2007-02-22 19:45:18 tjc Exp $
*/
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>
**/
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));
}
/**
* 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));
}
/**
* 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);
}
/**
* 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;
}
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
/**
* 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;
}
}