All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.ac.starlink.connect.ConnectorManager Maven / Gradle / Ivy

package uk.ac.starlink.connect;

import java.awt.Component;
import java.awt.event.ActionEvent;
import uk.ac.starlink.util.Loader;

/**
 * Marshals provision of {@link Connector} objects.
 *
 * 

By default, if the requisite classes are available in this JVM, * the following connectors are known: *

    *
  • {@link uk.ac.starlink.srb.SRBConnector} (SRB) *
  • {@link uk.ac.starlink.astrogrid.AcrConnector} (MySpace) *
* * @author Mark Taylor * @since 21 Feb 2005 */ public class ConnectorManager { private static Connector[] connectors_; private static ConnectorAction[] connectorActions_; /** List of classnames of known {@link Connector} implementations. */ private static final String[] KNOWN_CONNECTORS = new String[] { "uk.ac.starlink.astrogrid.AcrConnector", "uk.ac.starlink.srb.SRBConnector", }; /** * Name of property containing colon-separated list of additional * {@link uk.ac.starlink.connect.Connector} implementations to be made * available from this manager. */ public static final String CONNECTORS_PROPERTY = "star.connectors"; /** * Returns a list of all the known Connector objects. * This includes any of Connector classes which are known about by * default, if the requisite classes are present, as well as * any whose classes are named in the {@link #CONNECTORS_PROPERTY} * system property. * * @return array of avilable connectors */ public static Connector[] getConnectors() { if ( connectors_ == null ) { connectors_ = Loader.getClassInstances( KNOWN_CONNECTORS, CONNECTORS_PROPERTY, Connector.class ) .toArray( new Connector[ 0 ] ); } return connectors_.clone(); } /** * Returns a list of all the currently available ConnectorAction * objects. There will be one for each of the {@link Connector}s * returned by {@link #getConnectors}. Since a ConnectorAction * holds open a single connection at a time, this is a sensible method * to use if you want to get a list of the current connections to * various places. If you want to be able to open guaranteed new * connections, use getConnectors itself instead. * * @return array of connector actions */ public static synchronized ConnectorAction[] getConnectorActions() { if ( connectorActions_ == null ) { Connector[] connectors = getConnectors(); int nconn = connectors.length; connectorActions_ = new ConnectorAction[ nconn ]; for ( int i = 0; i < nconn; i++ ) { connectorActions_[ i ] = new ConnectorAction( connectors[ i ] ); } } return connectorActions_.clone(); } /** * Pops up a modal dialogue which * invites the user to log into a connection using a given connector. * The return value will be either a new connection, or null if * the user declines to supply correct values. The user will be * informed of any errors that occur and invited to retry. * * @param parent component for the dialogue * @param connector connector * @return new connection, or null */ public static Connection showConnectionDialog( Component parent, Connector connector ) { ConnectorAction connAct = new ConnectorAction( connector ); Connection connection = connAct.getConnection(); if ( connection != null ) { return connection; } else { connAct.actionPerformed( new ActionEvent( parent, 0, "Log In" ) ); return connAct.getConnection(); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy