001package jmri.jmrix; 002 003import javax.annotation.Nonnull; 004import jmri.spi.JmriServiceProviderInterface; 005 006/** 007 * Definition of objects to handle configuring a layout connection. 008 * 009 * Implementing classes <em>must</em> be registered as service providers of this 010 * type to be recognized and usable. 011 * <p> 012 * General design documentation is available on the 013 * <a href="http://jmri.org/help/en/html/doc/Technical/SystemStructure.shtml">Structure of External System Connections page</a>. 014 * 015 * @author Bob Jacobsen Copyright (C) 2001, 2003 016 * @see JmrixConfigPane 017 * @see ConnectionConfig 018 * @see java.util.ServiceLoader 019 */ 020public interface ConnectionTypeList extends JmriServiceProviderInterface { 021 022 /** 023 * Get a list of classes that can configure a layout connection for the 024 * manufacturers specified in {@link #getManufacturers() }. 025 * 026 * @return an Array of classes or an empty Array if none 027 */ 028 @Nonnull 029 String[] getAvailableProtocolClasses(); 030 031 /** 032 * Get a list of manufacturer names supported by the classes specified in 033 * {@link #getAvailableProtocolClasses() }. 034 * 035 * @return an Array of manufacturers or an empty Array if none 036 */ 037 @Nonnull 038 String[] getManufacturers(); 039}