/*************************************************************************
 *
 *  $RCSfile: FTPContent.idl,v $
 *
 *  $Revision: 1.5 $
 *
 *  last change: $Author: rt $ $Date: 2003/04/17 10:18:04 $
 *
 *  The Contents of this file are made available subject to the terms of
 *  either of the following licenses
 *
 *         - GNU Lesser General Public License Version 2.1
 *         - Sun Industry Standards Source License Version 1.1
 *
 *  Sun Microsystems Inc., October, 2000
 *
 *  GNU Lesser General Public License Version 2.1
 *  =============================================
 *  Copyright 2000 by Sun Microsystems, Inc.
 *  901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License version 2.1, as published by the Free Software Foundation.
 *
 *  This library 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
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *  MA  02111-1307  USA
 *
 *
 *  Sun Industry Standards Source License Version 1.1
 *  =================================================
 *  The contents of this file are subject to the Sun Industry Standards
 *  Source License Version 1.1 (the "License"); You may not use this file
 *  except in compliance with the License. You may obtain a copy of the
 *  License at http://www.openoffice.org/license.html.
 *
 *  Software provided under this License is provided on an "AS IS" basis,
 *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
 *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
 *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
 *  See the License for the specific provisions governing your rights and
 *  obligations concerning the Software.
 *
 *  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
 *
 *  Copyright: 2000 by Sun Microsystems, Inc.
 *
 *  All Rights Reserved.
 *
 *  Contributor(s): _______________________________________
 *
 *
 ************************************************************************/
#ifndef __com_sun_star_ucb_FTPContent_idl__
#define __com_sun_star_ucb_FTPContent_idl__

#ifndef __com_sun_star_lang_XComponent_idl__
#include <com/sun/star/lang/XComponent.idl>
#endif

#ifndef __com_sun_star_ucb_XContent_idl__
#include <com/sun/star/ucb/XContent.idl>
#endif

#ifndef __com_sun_star_ucb_XContentCreator_idl__
#include <com/sun/star/ucb/XContentCreator.idl>
#endif

#ifndef __com_sun_star_ucb_XCommandProcessor_idl__
#include <com/sun/star/ucb/XCommandProcessor.idl>
#endif

#ifndef __com_sun_star_beans_XPropertiesChangeNotifier_idl__
#include <com/sun/star/beans/XPropertiesChangeNotifier.idl>
#endif

#ifndef __com_sun_star_beans_XPropertyContainer_idl__
#include <com/sun/star/beans/XPropertyContainer.idl>
#endif

#ifndef __com_sun_star_beans_XPropertySetInfoChangeNotifier_idl__
#include <com/sun/star/beans/XPropertySetInfoChangeNotifier.idl>
#endif

#ifndef __com_sun_star_ucb_XCommandInfoChangeNotifier_idl__
#include <com/sun/star/ucb/XCommandInfoChangeNotifier.idl>
#endif

#ifndef __com_sun_star_container_XChild_idl__
#include <com/sun/star/container/XChild.idl>
#endif

//=============================================================================

module com { module sun { module star { module ucb {

//=============================================================================
/** A FTPContent provides an object representing either a (ftp-server-side) 
    directory object allowing listing of children or a content object providing
    access to a (ftp-server-side) file.

	@see com::sun::star::ucb::FTPContentProvider

    @since #107627#
*/
service FTPContent
{
	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.
	 */
	interface com::sun::star::lang::XComponent;

	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.
	 */
	interface com::sun::star::ucb::XContent;

	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.

		<p>An object representing a directory in the file system is able
		to create a new object, which in turn can become the representation
		of a physical file/directory being contained in the initial directory.
		The precise way is the following:

		<p>

		<ol>
		<li>
		Let the parent folder create a new content by calling
		<member>XContentCreator::createNewContent</member> on it. The content
		type to use for new directories is
		"application/vnd.sun.staroffice.ftp-folder". To create a new file
		use the type "application/vnd.sun.staroffice.ftp-file".
		As return value you get a new file content object.
		</li>
		<li>
		Set a title at the new object by letting it execute
		the command "setPropertyValues", which sets at least the property
		"Title" to a non-empty value ).
		</li>
		<li>
		Let the new object ( not the parent! ) execute the command "insert".
		This will create the corresponding physical file or directory.
		For files, you need to supply the implementation of
		an <type scope="com::sun::star::io">XInputStream</type> with the
		command's parameters, that provides access to the stream data.
		</li>
		</ol>

		</p>
	 */
	interface com::sun::star::ucb::XContentCreator;

	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.

		<p>

		<b>Supported Commands</b>

		<ul>
		<li>
		getCommandInfo
		</li>
		<li>
		getPropertySetInfo
		</li>
		<li>
		getPropertyValues
		</li>
		<li>
		setPropertyValues
		</li>
		<li>
		open
		</li>
		<li>
		insert
		</li>
		<li>
		delete
		</li>
		</ul>

		<b>Supported Properties</b>
		<ul>
		<li>
		string ContentType ( read-only, either
		"application/vnd.sun.staroffice.ftp-folder" or
		"application/vnd.sun.staroffice.ftp-file" )
		</li>
		<li>
		boolean IsDocument ( read-only, always <true/> for files, always
		<false/> for directories )
		</li>
		<li>
		boolean IsFolder ( read-only ), always <false/> for files, always
		<true/> for directories )
		</li>
		<li>
		boolean IsReadOnly ( read-only attribute )
		</li>
		<li>
		string Title ( file name )
		</li>
		<li>
		hyper Size ( file size )
		</li>
		<li>
		string Title ( file name )
		</li>
		<li>
		<type scope="com::sun::star::util">DateTime</type>DateCreated ( read-only )
		</li>
		</ul>
		</p>
	 */
	interface com::sun::star::ucb::XCommandProcessor;
    
	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.
	 */
	interface com::sun::star::beans::XPropertiesChangeNotifier;

	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.
	 */
	interface com::sun::star::beans::XPropertyContainer;

	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.
	 */
	interface com::sun::star::beans::XPropertySetInfoChangeNotifier;

	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.
	 */
	interface com::sun::star::ucb::XCommandInfoChangeNotifier;

	//-------------------------------------------------------------------------
	/** This interface is implemented according to the specification of
		service <type>Content</type>.
	 */
	interface com::sun::star::container::XChild;
};

//=============================================================================

}; }; }; };

#endif
