001: /*
002: * Gruntspud
003: *
004: * Copyright (C) 2002 Brett Smith.
005: *
006: * Written by: Brett Smith <t_magicthize@users.sourceforge.net>
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU Library General Public License
010: * as published by the Free Software Foundation; either version 2 of
011: * the License, or (at your option) any later version.
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU Library General Public License for more details.
016: *
017: * You should have received a copy of the GNU Library General Public
018: * License along with this program; if not, write to the Free Software
019: * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
020: */
021:
022: package gruntspud.connection;
023:
024: import gruntspud.CVSRoot;
025: import gruntspud.GruntspudContext;
026: import gruntspud.ui.preferences.AbstractAdditionalOptionsPane;
027:
028: import javax.swing.Icon;
029: import javax.swing.JComponent;
030:
031: import plugspud.Plugin;
032:
033: /**
034: * A specialized type of plugin that provides a connection type
035: *
036: *@author magicthize
037: *@created 26 May 2002
038: */
039: public interface ConnectionPlugin extends Plugin {
040: /**
041: * Return an icon for the plugin
042: *
043: * @return plugin
044: */
045: public Icon getIcon();
046:
047: /**
048: * Implement to return the connection type name that this plugin handles
049: *
050: * @return connection type name
051: */
052: public String getConnectionType();
053:
054: /**
055: * Implement to return a component that can be used to edit any additional
056: * options for this type
057: *
058: * @return options component
059: */
060: public AbstractAdditionalOptionsPane getOptionsComponent();
061:
062: /**
063: * Implement to create an instance of the connection
064: *
065: * @param parent parent component
066: * @param context context
067: * @param profile profile to use for connection
068: * @return connection
069: */
070: public GruntspudConnection createConnection(JComponent parent,
071: GruntspudContext context, ConnectionProfile profile)
072: throws ConnectionException;
073:
074: /**
075: * Valid the specified CVSROOT, throwing an <code>IllegalArgumentException</code>
076: * if the root is not valid for the connection type
077: *
078: * @param root root to validate
079: * @throws IllegalArgumentException if root is not valid for the type
080: */
081: public void validateCVSRoot(CVSRoot root)
082: throws IllegalArgumentException;
083:
084: /**
085: * Return if a host name is required for this type
086: *
087: * @return requires host name
088: */
089: public boolean isHostnameRequired();
090:
091: /**
092: * Return if a user is required for this type
093: *
094: * @return requires user
095: */
096: public boolean isUserRequired();
097:
098: /**
099: * Return if a port is required for this type
100: *
101: * @return requires port
102: */
103: public boolean isPortRequired();
104: }
|