--- filter/prj/build.lst	30 Oct 2006 08:51:08 -0000	1.25
+++ filter/prj/build.lst	13 Apr 2007 08:04:20 -0000	1.25.88.2
@@ -1,4 +1,4 @@
-fl	filter	:	svtools unotools goodies xmloff svx javaunohelper jvmaccess XALAN:xalan LIBXSLT:libxslt NULL
+fl	filter	:	svtools unotools goodies xmloff cppu tools cppuhelper sal svx javaunohelper jvmaccess XALAN:xalan LIBXSLT:libxslt NULL
 fl	filter									usr1	-	all	fl_mkout			NULL
 fl	filter\prj								get		-	all	fl_prj				NULL
 fl	filter\inc								nmake	-	all	fl_inc				NULL
@@ -14,6 +14,7 @@ fl	filter\source\xsltfilter				nmake	-	a
 fl	filter\source\xsltvalidate				nmake	-	all fl_xsltvalidate fl_xsltfilter	fl_inc NULL
 fl	filter\source\xsltdialog				nmake	-	all fl_xsltdialog fl_flash		fl_inc NULL
 fl  filter\source\docbook                   nmake   -   all fl_docbook          fl_inc NULL
+fl  filter\source\t602                      nmake   -   all fl_t602             fl_inc NULL
 fl  filter\source\config\cache              nmake   -   all fl_config           fl_inc NULL
 fl  filter\source\config\tools\utils        nmake   -   all fl_fcfg_utils       fl_inc NULL
 fl  filter\source\config\tools\merge        nmake   -   all fl_fcfg_merge fl_fcfg_utils fl_xsltvalidate fl_inc NULL
--- filter/source/config/fragments/fcfg_writer.mk	13 Jul 2006 09:12:35 -0000	1.9
+++ filter/source/config/fragments/fcfg_writer.mk	12 Apr 2007 10:27:50 -0000	1.9.136.1
@@ -47,6 +47,7 @@ T4_WRITER = \
     $(T4_WRITER_BINFILTER) \
     writer_WordPerfect_Document \
     writer_MS_Works_Document \
+    writer_T602_Document \
     writer_Text \
     writer_Text_encoded \
     writer_JustSystem_Ichitaro_10 \
@@ -81,6 +82,7 @@ F4_WRITER = \
 	$(F4_WRITER_BINFILTER) \
 	WordPerfect \
 	MS_Works \
+	T602Document \
 	Text \
 	Text__encoded_ \
 	writer_JustSystem_Ichitaro_10 \
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/config/fragments/filters/T602Document.xcu	12 Apr 2007 10:27:50 -0000	1.1.2.1
@@ -0,0 +1,13 @@
+	<node oor:name="T602Document" oor:op="replace">
+		<prop oor:name="Flags"><value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value></prop>
+		<prop oor:name="UIComponent"/>
+		<prop oor:name="FilterService"><value>com.sun.star.comp.Writer.T602ImportFilter</value></prop>
+		<prop oor:name="UserData"><value>602</value></prop>
+		<prop oor:name="UIName">
+			<value xml:lang="x-default">T602 Document</value>
+		</prop>
+		<prop oor:name="FileFormatVersion"><value>0</value></prop>
+		<prop oor:name="Type"><value>writer_T602_Document</value></prop>
+		<prop oor:name="TemplateName"/>
+		<prop oor:name="DocumentService"><value>com.sun.star.text.TextDocument</value></prop>
+	</node>
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/config/fragments/types/writer_T602_Document.xcu	12 Apr 2007 10:27:50 -0000	1.1.2.1
@@ -0,0 +1,12 @@
+	<node oor:name="writer_T602_Document" oor:op="replace" >
+		<prop oor:name="DetectService"><value>com.sun.star.comp.Writer.T602ImportFilter</value></prop>
+		<prop oor:name="URLPattern"/>
+		<prop oor:name="Extensions"><value>602 txt</value></prop>
+		<prop oor:name="MediaType"><value>application/x-t602</value></prop>
+		<prop oor:name="Preferred"><value>true</value></prop>
+		<prop oor:name="PreferredFilter"><value>T602Document</value></prop>
+		<prop oor:name="UIName">
+			<value>T602 Document</value>
+		</prop>
+		<prop oor:name="ClipboardFormat"/>
+	</node>
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/filterenv.cxx	16 Apr 2007 09:35:53 -0000	1.1.2.4
@@ -0,0 +1,111 @@
+ /*************************************************************************
+ *
+ *  OpenOffice.org - a multi-platform office productivity suite
+ *
+ *  $RCSfile$
+ *
+ *  $Revision$
+ *
+ *  last change: $Author$ $Date$
+ *
+ *  The Contents of this file are made available subject to
+ *  the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ *    GNU Lesser General Public License Version 2.1
+ *    =============================================
+ *    Copyright 2004-2007 Milan Broz <mbroz@redhat.com>
+ *    Copyright 2007 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
+ *
+ ************************************************************************/
+
+#include <osl/mutex.hxx>
+#include <osl/thread.h>
+#include <cppuhelper/factory.hxx>
+
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+
+#include "t602filter.hxx"
+
+using namespace ::rtl;
+using namespace ::cppu;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::registry;
+
+using namespace T602ImportFilter;
+
+extern "C"
+{
+//==================================================================================================
+void SAL_CALL component_getImplementationEnvironment(
+	const sal_Char ** ppEnvTypeName, uno_Environment ** /* ppEnv */ )
+{
+	*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+//==================================================================================================
+sal_Bool SAL_CALL component_writeInfo(
+	void * /* pServiceManager */, void * pRegistryKey )
+{
+	if (pRegistryKey)
+	{
+		try
+		{
+            sal_Int32 nPos = 0;
+            Reference< XRegistryKey > xNewKey(
+				reinterpret_cast< XRegistryKey * >( pRegistryKey )->createKey( T602ImportFilter_getImplementationName() ) );
+            xNewKey = xNewKey->createKey( OUString::createFromAscii( "/UNO/SERVICES" ) );
+			
+			const Sequence< OUString > & rSNL = T602ImportFilter_getSupportedServiceNames();
+			const OUString * pArray = rSNL.getConstArray();
+			for ( nPos = rSNL.getLength(); nPos--; )
+				xNewKey->createKey( pArray[nPos] );
+
+			return sal_True;
+		}
+		catch (InvalidRegistryException &)
+		{
+			OSL_ENSURE( sal_False, "### InvalidRegistryException!" );
+		}
+	}
+	return sal_False;
+}
+//==================================================================================================
+void * SAL_CALL component_getFactory(
+	const sal_Char * pImplName, void * pServiceManager, void * /* pRegistryKey */ )
+{
+	void * pRet = 0;
+
+    OUString implName = OUString::createFromAscii( pImplName );
+	if ( pServiceManager && implName.equals(T602ImportFilter_getImplementationName()) )
+	{
+		Reference< XSingleServiceFactory > xFactory( createSingleFactory(
+			reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
+			OUString::createFromAscii( pImplName ),
+			T602ImportFilter_createInstance, T602ImportFilter_getSupportedServiceNames() ) );
+		
+		if (xFactory.is())
+		{
+			xFactory->acquire();
+			pRet = xFactory.get();
+		}
+	}
+	
+	return pRet;
+}
+}
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/makefile.mk	13 Apr 2007 08:04:21 -0000	1.1.2.2
@@ -0,0 +1,70 @@
+#*************************************************************************
+#
+#   OpenOffice.org - a multi-platform office productivity suite
+#
+#   $RCSfile$
+#
+#   $Revision$
+#
+#   last change: $Author$ $Date$
+#
+#   The Contents of this file are made available subject to
+#   the terms of GNU Lesser General Public License Version 2.1.
+#
+#
+#     GNU Lesser General Public License Version 2.1
+#     =============================================
+#     Copyright 2005 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
+#
+#*************************************************************************
+PRJ	= ..$/..
+PRJNAME = filter
+TARGET  =t602filter
+ENABLE_EXCEPTIONS=TRUE
+LIBTARGET=NO
+
+# --- Settings -----------------------------------------------------
+.INCLUDE: settings.mk
+
+SRS1NAME = $(TARGET)
+SRC1FILES = $(SRS1NAME).src
+
+RESLIB1NAME=$(SRS1NAME)
+RESLIB1SRSFILES= $(SRS)$/$(RESLIB1NAME).srs
+
+SLOFILES=$(SLO)$/t602filter.obj \
+         $(SLO)$/filterenv.obj
+
+LIBNAME=$(TARGET)
+SHL1TARGETDEPN=makefile.mk
+SHL1OBJS=$(SLOFILES)
+SHL1TARGET=$(LIBNAME)$(UPD)$(DLLPOSTFIX)
+SHL1IMPLIB=i$(LIBNAME)
+SHL1VERSIONMAP=$(LIBNAME).map
+#SHL1DEF=$(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+
+SHL1STDLIBS= \
+    $(XMLOFFLIB) \
+	$(CPPULIB) \
+	$(CPPUHELPERLIB) \
+    $(SALLIB) \
+    $(TOOLSLIB)
+
+# --- Targets ------------------------------------------------------
+.INCLUDE :  target.mk
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/t602filter.cxx	16 Apr 2007 09:35:53 -0000	1.1.2.3
@@ -0,0 +1,1174 @@
+ /*************************************************************************
+ *
+ *  OpenOffice.org - a multi-platform office productivity suite
+ *
+ *  $RCSfile$
+ *
+ *  $Revision$
+ *
+ *  last change: $Author$ $Date$
+ *
+ *  The Contents of this file are made available subject to
+ *  the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ *    GNU Lesser General Public License Version 2.1
+ *    =============================================
+ *    Copyright 2004-2007 Milan Broz <mbroz@redhat.com>
+ *    Copyright 2007 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
+ *
+ ************************************************************************/
+
+#include "t602filter.hxx"
+#include "t602filter.hrc"
+
+#include <ctype.h>
+#include <stdio.h>
+
+#include <cppuhelper/factory.hxx>
+#include <cppuhelper/bootstrap.hxx>
+#include <com/sun/star/bridge/XUnoUrlResolver.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XDialog.hpp>
+
+using namespace ::rtl;
+using namespace ::cppu;
+using namespace ::osl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::registry;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::document;
+using com::sun::star::io::XInputStream;
+
+namespace T602ImportFilter {
+
+    unsigned char kam2lat[129] =
+        //    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
+        "\xAC\x81\x82\xD4\x84\xD2\x9B\x9F\xD8\xB7\x91\xD6\x96\x92\x8E\xB5"  // 8
+        "\x90\xA7\xA6\x93\x94\xE0\x85\xE9\xEC\x99\x9A\xE6\x95\xED\xFC\x9C"  // 9
+        "\xA0\xA1\xA2\xA3\xE5\xD5\xDE\xE2\xE7\xFD\xEA\xE8\xCE\xF5\xAE\xAF"  // A
+        "\x80\x80\x83\xB3\xB4\xE1\x87\x88\x89\x8A\x8B\x8C\x8F\x97\x8D\xBF"  // B
+        "\xC0\xC1\xC2\xC3\xC4\xC5\xCF\x98\x9D\x9E\xA4\xA5\xA8\xA9\x86\xF3"  // C
+        "\xCD\xB1\xB2\xB6\xB8\xB9\xBA\xBB\xF7\xD9\xDA\xDB\xDC\xF8\xF9\xDF"  // D
+        "\xD0\xD1\xD3\xD7\xAA\xAB\xDD\xB0\xE3\xE4\xEB\xEE\xEF\xF0\xF2\xF4"  // E
+        "\xBC\xBD\xBE\xC6\xC7\xC8\xF6\xC9\xCA\xFA\xFB\xCB\xF1\xCC\xFE\xFF"; // F
+
+    unsigned char koi2lat[129] =
+        //    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
+        "\x80\x83\x86\xF5\xE1\x87\x88\x89\x8A\x8B\x8C\x8F\x97\xCF\xCF\x98"  // 8
+        "\x9D\x9E\xA4\xA5\xA8\xA9\xDB\xDC\xDF\xB1\xB2\xB6\xB8\xB9\xBA\xBB"  // 9
+        "\xBC\xBD\xBE\xC6\xC7\xC8\xF6\xC9\xCA\xCB\xCC\xCD\xCE\xAD\xAE\xAF"  // A
+        "\xD0\xD1\xD3\xD7\xAA\xAB\xDD\xB0\xE3\xE4\xEB\xEE\xEF\xF0\xF2\xF4"  // B
+        "\xDA\xA0\xC0\x9F\xD4\xD8\xEA\xC4\x81\xA1\x85\x92\x96\x94\xE5\xA2"  // C
+        "\x93\x84\xFD\xE7\x9C\xA3\xC3\x82\xF7\xEC\xA7\xC2\xF3\xF8\xF9\xC5"  // D
+        "\xBF\xB5\xD9\xAC\xD2\xB7\xE8\xB3\x9A\xD6\xDE\x91\x95\x99\xD5\xE0"  // E
+        "\xE2\x8E\xFC\xE6\x9B\xE9\xB4\x90\xFA\xED\xA6\xC1\xF1\xFB\xFE\xFF"; // F
+
+    unsigned char lat2UNC[257] =
+        //    0       1       2       3       4       5       6       7
+        //    8       9       A       B       C       D       E       F
+        "\x00\xe7\x00\xfc\x00\xe9\x00\xf9\x00\xe4\x01\x6f\x00\xe8\x00\xa3"  // 8
+        "\x00\xc6\x00\xd8\x00\xc5\x00\xe6\x00\xf8\x00\xc4\x00\xc4\x00\xe5"
+        "\x00\xc9\x01\x39\x00\xf4\x00\xf4\x00\xf6\x01\x3d\x01\x3e\x00\x20"  // 9
+        "\x00\xf2\x00\xd6\x00\xdc\x01\x64\x01\x65\x00\xec\x20\xa7\x01\x0d"
+        "\x00\xe1\x00\xed\x00\xf3\x00\xfa\x00\xa1\x00\xd1\x01\x7d\x01\x7e"  // A
+        "\x00\xbf\x00\xf1\x22\x11\x03\xc3\x01\x0c\x00\xa7\x00\xbb\x00\xab"
+        "\x25\x91\x25\x92\x25\x93\x25\x02\x25\x24\x00\xc1\x00\xc2\x01\x1a"  // B
+        "\x00\x20\x00\x20\x00\x20\x00\x20\x22\x61\x00\xb1\x22\x65\x25\x10"
+        "\x25\x14\x25\x34\x25\x2c\x25\x1c\x25\x00\x25\x3c\x22\x64\x23\x20"  // C
+        "\x23\x21\x22\x48\x00\xba\x22\x1a\x00\xb2\x00\xbd\x00\xbc\x00\xa4"
+        "\x03\xb1\x03\xb2\x01\x0e\x03\x93\x01\x0f\x01\x47\x00\xcd\x03\xc0"  // D
+        "\x01\x1b\x25\x18\x25\x0c\x25\x88\x25\x84\x00\xb5\x01\x6e\x25\x80"
+        "\x00\xd3\x00\xdf\x00\xd4\x03\xa6\x03\x98\x01\x48\x01\x60\x01\x61"  // E
+        "\x01\x54\x00\xda\x01\x55\x03\xa9\x00\xfd\x00\xdd\x03\xb4\x22\x1e"
+        "\x00\xf8\x02\xdd\x03\xb5\x02\xc7\x22\x29\x00\xa7\x00\xf7\x00\xe0"  // F
+        "\x00\xb4\x00\xb0\x00\xc0\x02\xc6\x01\x58\x01\x59\x00\x20\x00\x20";
+
+    unsigned char rus2UNC[257] =
+        //    0       1       2       3       4       5       6       7
+        //    8       9       A       B       C       D       E       F
+        "\x04\x11\x00\xfc\x00\xe9\x04\x12\x00\xe4\x01\x6f\x04\x13\x04\x14"  // 8
+        "\x04\x01\x04\x16\x04\x17\x04\x18\x04\x19\x00\xc4\x00\xc4\x04\x1a"
+        "\x00\xc9\x01\x39\x01\x3a\x00\xf4\x00\xf6\x01\x3d\x01\x3e\x00\x20"  // 9
+        "\x04\x1c\x00\xd6\x00\xdc\x01\x64\x01\x65\x04\x1d\x04\x1f\x01\x0a"
+        "\x00\xe1\x00\xed\x00\xf3\x00\xfa\x04\x20\x04\x22\x01\x7d\x01\x7e"  // A
+        "\x04\x23\x04\x24\x04\x43\x04\x44\x01\x0c\x00\xa7\x04\x3b\x04\x3c"
+        "\x04\x47\x04\x26\x04\x27\x25\x02\x25\x24\x00\xc1\x04\x28\x01\x1a"  // B
+        "\x04\x29\x04\x2a\x04\x2b\x04\x2c\x04\x2d\x04\x2e\x04\x2f\x25\x10"
+        "\x25\x14\x25\x34\x25\x2c\x25\x1c\x25\x00\x25\x3c\x04\x31\x04\x32"  // C
+        "\x04\x33\x04\x51\x04\x36\x04\x37\x04\x38\x04\x39\x04\x3a\x04\x1b"
+        "\x04\x3d\x04\x3f\x01\x0e\x04\x40\x01\x0f\x01\x47\x00\xcd\x04\x42"  // D
+        "\x01\x1b\x25\x18\x25\x0c\x25\x88\x25\x84\x04\x46\x01\x6e\x25\x80"
+        "\x00\xd3\x00\xdf\x00\xd4\x04\x48\x04\x49\x01\x48\x01\x60\x01\x61"  // E
+        "\x01\x54\x00\xda\x01\x55\x04\x4a\x00\xfd\x00\xdd\x04\x4b\x04\x4c"
+        "\x04\x4d\x02\xdd\x04\x4e\x02\xc7\x04\x4f\x00\xa7\x04\x34\x00\xe0"  // F
+        "\x00\xb4\x00\xb0\x00\xc0\x02\xc6\x01\x58\x01\x59\x00\x20\x00\x20";
+
+#define _AddAtt(_nam, _val) \
+    mpAttrList->AddAttribute(OUString::createFromAscii( _nam ),\
+    OUString::createFromAscii( _val ) );
+
+#define _Start(_nam) \
+    mxHandler->startElement(OUString::createFromAscii(_nam), mAttrList);\
+    mpAttrList->Clear();
+
+#define _End(_nam) \
+    mxHandler->endElement(OUString::createFromAscii(_nam));
+
+#define _Chars(_ch) \
+    mxHandler->characters(OUString::createFromAscii((sal_Char *) _ch) );
+
+
+T602ImportFilter::T602ImportFilter(const ::com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory > &r ) :
+    mxMSF( r ), mpResMgr( NULL ) {}
+
+T602ImportFilter::~T602ImportFilter()
+{
+    if (mpResMgr)
+    	delete mpResMgr;
+}
+
+
+// XExtendedTypeDetection
+::rtl::OUString T602ImportFilter::detect( Sequence<PropertyValue>& Descriptor)
+    throw(RuntimeException)
+{
+    sal_Int32 nLength = Descriptor.getLength();
+    const PropertyValue * pValue = Descriptor.getConstArray();
+    for ( sal_Int32 i = 0 ; i < nLength; i++)
+    {
+        if ( pValue[i].Name.equalsAsciiL ( RTL_CONSTASCII_STRINGPARAM ( "InputStream" ) ) )
+            pValue[i].Value >>= mxInputStream;
+    }
+
+    if (!mxInputStream.is())
+        return ::rtl::OUString();
+
+    ::com::sun::star::uno::Sequence< sal_Int8 > aData;
+    size_t numBytes = 4;
+    size_t numBytesRead = 0;
+
+    numBytesRead = mxInputStream->readSomeBytes (aData, numBytes);
+
+    if ((numBytesRead != numBytes) || (aData[0] != '@') ||
+        (aData[1] != 'C') || (aData[2] != 'T') || (aData[3] != ' '))
+        return ::rtl::OUString();
+
+    return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "writer_T602_Document" ) );;
+}
+
+// XFilter
+sal_Bool SAL_CALL T602ImportFilter::filter( const Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor )
+	throw (RuntimeException)
+{
+	return importImpl ( aDescriptor );
+}
+
+// XImporter
+void SAL_CALL T602ImportFilter::setTargetDocument( const Reference< ::com::sun::star::lang::XComponent >& xDoc )
+	throw (::com::sun::star::lang::IllegalArgumentException, RuntimeException)
+{
+	mxDoc = xDoc;
+}
+
+// XInitialization
+void SAL_CALL T602ImportFilter::initialize( const Sequence< Any >& aArguments )
+    throw (Exception, RuntimeException)
+{
+    Sequence < PropertyValue > aAnySeq;
+    sal_Int32 nLength = aArguments.getLength();
+    if ( nLength && ( aArguments[0] >>= aAnySeq ) )
+    {
+        const PropertyValue * pValue = aAnySeq.getConstArray();
+        nLength = aAnySeq.getLength();
+        for ( sal_Int32 i = 0 ; i < nLength; i++)
+        {
+            if ( pValue[i].Name.equalsAsciiL ( RTL_CONSTASCII_STRINGPARAM ( "Type" ) ) )
+            {
+                pValue[i].Value >>= msFilterName;
+                break;
+            }
+        }
+    }
+}
+
+// XServiceInfo
+OUString SAL_CALL T602ImportFilter::getImplementationName(  )
+    throw (RuntimeException)
+{
+    return T602ImportFilter_getImplementationName();
+}
+
+sal_Bool SAL_CALL T602ImportFilter::supportsService( const OUString& rServiceName )
+    throw (RuntimeException)
+{
+    return T602ImportFilter_supportsService( rServiceName );
+}
+
+Sequence< OUString > SAL_CALL T602ImportFilter::getSupportedServiceNames(  )
+    throw (RuntimeException)
+{
+    return T602ImportFilter_getSupportedServiceNames();
+}
+
+// XLocalizable
+
+void SAL_CALL T602ImportFilter::setLocale( const Locale& eLocale )
+	throw(::com::sun::star::uno::RuntimeException)
+{
+	meLocale = eLocale;
+	initLocale();
+}
+
+Locale SAL_CALL T602ImportFilter::getLocale()
+	throw(::com::sun::star::uno::RuntimeException)
+{
+	return meLocale;
+}
+
+// Other functions
+
+void T602ImportFilter::inschr(unsigned char ch)
+{
+    Reference < XAttributeList > mAttrList ( mpAttrList );
+
+    if(!ini.showcomm&&pst.comment) return;
+
+    if(ch==' ') {
+        setfnt(chngul,true);
+        pst.wasspace++;
+        return;
+    }
+
+    if(pst.wasspace > 0)
+        if(ini.reformatpars) {
+            if(!pst.wasfdash)
+                inschrdef(' ');
+            pst.wasfdash = false;
+        } else {
+            char s[20];
+            sprintf(s,"%i",pst.wasspace);
+            _AddAtt("text:c",s);
+            _Start("text:s");
+            _End("text:s");
+        }
+
+        pst.wasspace = 0;
+        setfnt(chngul,true);
+        inschrdef(ch);
+}
+
+#define IMPLEMENTATION_NAME "com.sun.star.comp.Writer.T602ImportFilter"
+
+OUString T602ImportFilter_getImplementationName ()
+    throw (RuntimeException)
+{
+    return OUString ( RTL_CONSTASCII_USTRINGPARAM ( IMPLEMENTATION_NAME ) );
+}
+
+#define SERVICE_NAME1 "com.sun.star.document.ImportFilter"
+#define SERVICE_NAME2 "com.sun.star.document.ExtendedTypeDetection"
+sal_Bool SAL_CALL T602ImportFilter_supportsService( const OUString& ServiceName )
+    throw (RuntimeException)
+{
+    return (ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( SERVICE_NAME1 ) ) ||
+        ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( SERVICE_NAME2 ) ) );
+}
+
+Sequence< OUString > SAL_CALL T602ImportFilter_getSupportedServiceNames(  )
+    throw (RuntimeException)
+{
+    Sequence < OUString > aRet(2);
+    OUString* pArray = aRet.getArray();
+    pArray[0] =  OUString ( RTL_CONSTASCII_USTRINGPARAM ( SERVICE_NAME1 ) );
+    pArray[1] =  OUString ( RTL_CONSTASCII_USTRINGPARAM ( SERVICE_NAME2 ) );
+    return aRet;
+}
+#undef SERVICE_NAME2
+#undef SERVICE_NAME1
+
+Reference< XInterface > SAL_CALL T602ImportFilter_createInstance( const Reference< XMultiServiceFactory > & rSMgr)
+    throw( Exception )
+{
+    return (cppu::OWeakObject*) new T602ImportFilter( rSMgr );
+}
+
+
+sal_Bool SAL_CALL T602ImportFilter::importImpl( const Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor )
+    throw (RuntimeException)
+{
+    Reset602();
+
+    if (!OptionsDlg())
+        return sal_False;
+
+    sal_Int32 nLength = aDescriptor.getLength();
+    const PropertyValue * pValue = aDescriptor.getConstArray();
+    OUString sURL;
+    for ( sal_Int32 i = 0 ; i < nLength; i++)
+    {
+        if ( pValue[i].Name.equalsAsciiL ( RTL_CONSTASCII_STRINGPARAM ( "InputStream" ) ) )
+            pValue[i].Value >>= mxInputStream;
+    }
+
+    if ( !mxInputStream.is() )
+    {
+        OSL_ASSERT( 0 );
+        return sal_False;
+    }
+
+    // An XML import service: what we push sax messages to..
+    OUString sXMLImportService ( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.comp.Writer.XMLImporter" ) );
+
+    mxHandler = Reference< XDocumentHandler >( mxMSF->createInstance( sXMLImportService ), UNO_QUERY );
+
+    // The XImporter sets up an empty target document for XDocumentHandler to write to..
+    Reference < XImporter > xImporter(mxHandler, UNO_QUERY);
+    xImporter->setTargetDocument(mxDoc);
+
+    char fs[32], fs2[32];
+    sprintf(fs, "%ipt", ini.fontsize);
+    sprintf(fs2,"%ipt", 2*ini.fontsize);
+
+    mpAttrList = new SvXMLAttributeList;
+
+    Reference < XAttributeList > mAttrList ( mpAttrList );
+
+    mxHandler->startDocument();
+
+	_AddAtt("xmlns:office", "http://openoffice.org/2000/office");
+	_AddAtt("xmlns:style", "http://openoffice.org/2000/style");
+	_AddAtt("xmlns:text", "http://openoffice.org/2000/text");
+	_AddAtt("xmlns:table", "http://openoffice.org/2000/table");
+	_AddAtt("xmlns:draw", "http://openoffice.org/2000/draw");
+	_AddAtt("xmlns:fo", "http://www.w3.org/1999/XSL/Format");
+	_AddAtt("xmlns:xlink", "http://www.w3.org/1999/xlink");
+	_AddAtt("xmlns:number", "http://openoffice.org/2000/datastyle");
+	_AddAtt("xmlns:svg", "http://www.w3.org/2000/svg");
+	_AddAtt("xmlns:chart", "http://openoffice.org/2000/chart");
+	_AddAtt("xmlns:dr3d", "http://openoffice.org/2000/dr3d");
+	_AddAtt("xmlns:math", "http://www.w3.org/1998/Math/MathML");
+	_AddAtt("xmlns:form", "http://openoffice.org/2000/form");
+	_AddAtt("xmlns:script", "http://openoffice.org/2000/script");
+	_AddAtt("office:class", "text");
+	_AddAtt("office:version", "1.0");
+    _Start("office:document-content");
+
+    _Start("office:font-decls");
+    _AddAtt("style:name","Courier New");
+    _AddAtt("fo:font-family","Courier New");
+    _AddAtt("style:font-pitch","fixed");
+    _Start("style:font-decl");
+    _End("style:font-decl");
+    _End("office:font-decls");
+
+    _Start("office:automatic-styles");
+
+    // Standardni text
+    _AddAtt("style:name","P1");
+    _AddAtt("style:family","paragraph");
+    _AddAtt("style:parent-style-name","Standard");
+    _Start("style:style");
+    _AddAtt("style:font-name","Courier New");
+    _AddAtt("fo:font-size",fs);
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // Standardni text - konec stranky
+    _AddAtt("style:name","P2");
+    _AddAtt("style:family","paragraph");
+    _AddAtt("style:parent-style-name","Standard");
+    _Start("style:style");
+    _AddAtt("style:font-name","Courier New");
+    _AddAtt("fo:font-size",fs);
+    _AddAtt("fo:break-before","page");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T1 Normalni text
+    _AddAtt("style:name","T1");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T2 Tucny text
+    _AddAtt("style:name","T2");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("fo:font-weight","bold");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T3 Kurziva
+    _AddAtt("style:name","T3");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("fo:font-style","italic");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T4 Siroky text
+    _AddAtt("style:name","T4");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("fo:font-weight","bold");
+    _AddAtt("style:text-scale","200%");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T5 Vysoky text
+    _AddAtt("style:name","T5");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("fo:font-size",fs2);
+    _AddAtt("fo:font-weight","bold");
+    _AddAtt("style:text-scale","50%");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T6 Velky text
+    _AddAtt("style:name","T6");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("fo:font-size",fs2);
+    _AddAtt("fo:font-weight","bold");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T7 Podtrzeny text
+    _AddAtt("style:name","T7");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("style:text-underline","single");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T8 Podtrzena tucny text
+    _AddAtt("style:name","T8");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("fo:font-style","bold");
+    _AddAtt("style:text-underline","single");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T9 Podtrzena kurziva
+    _AddAtt("style:name","T9");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("fo:font-style","italic");
+    _AddAtt("style:text-underline","single");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T10 Horni index
+    _AddAtt("style:name","T10");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("style:text-position","27% 100%");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    // T11 Dolni index
+    _AddAtt("style:name","T11");
+    _AddAtt("style:family","text");
+    _Start("style:style");
+    _AddAtt("style:text-position","-27% 100%");
+    _Start("style:properties");
+    _End("style:properties");
+    _End("style:style");
+
+    _End("office:automatic-styles");
+
+    _Start("office:styles");
+    _End("office:styles");
+
+    _Start("office:body");
+
+    Read602();
+
+    _End("office:body");
+    _End("office:document-content");
+
+    mxHandler->endDocument();
+
+    return sal_True;
+}
+
+void T602ImportFilter::Reset602()
+{
+    node = START;
+
+    format602.mt = 0;
+    format602.mb = 0;
+    format602.tb = 0;
+    format602.ct = 0;
+    format602.pn = 1;
+    format602.lh = 1;
+    format602.lm = 6;
+    format602.rm = 60;
+    format602.pl = 60;
+
+    ini.showcomm    = false;
+    ini.forcecode   = false;
+    ini.xcode    = KAM;
+    ini.ruscode    = false;
+    ini.reformatpars= false;
+    ini.fontsize    = 10;
+
+    fst.nowfnt    = fst.oldfnt    = standard;
+    fst.uline    = fst.olduline    = false;
+
+    pst.pars    = 0;
+    pst.comment    = false;
+    pst.wasspace    = 0;
+    pst.ccafterln    = false;
+    pst.willbeeop    = false;
+    pst.waspar    = false;
+    pst.wasfdash    = false;
+}
+
+void T602ImportFilter::inschrdef(unsigned char ch)
+{
+    static sal_Unicode xch[2];
+
+    xch[1] = 0;
+
+    if(ch > 127) {
+
+        switch(ini.xcode) {
+            case L2 : break;
+            case KOI: ch = koi2lat[ch-128]; break;
+            case KAM: ch = kam2lat[ch-128]; break;
+            default : ch = kam2lat[ch-128];
+        }
+
+        if(ini.ruscode)
+            xch[0] = (rus2UNC[(ch-128)*2] << 8) + rus2UNC[(ch-128)*2+1];
+        else
+            xch[0] = (lat2UNC[(ch-128)*2] << 8) + lat2UNC[(ch-128)*2+1];
+    } else
+        xch[0] = ch;
+
+    pst.waspar = false;
+    mxHandler->characters(OUString(xch));
+}
+
+void T602ImportFilter::wrtfnt()
+{
+    Reference < XAttributeList > mAttrList ( mpAttrList );
+    char *style = "P1";
+
+    switch(fst.nowfnt) {
+        case standard : style = (char*)(fst.uline ? "T7" : "T1"); break;
+        case fat      : style = (char*)(fst.uline ? "T8" : "T2"); break;
+        case cursive  : style = (char*)(fst.uline ? "T9" : "T3"); break;
+        case bold     : style = "T4"; break;
+        case tall     : style = "T5"; break;
+        case big      : style = "T6"; break;
+        case lindex   : style = "T11";break;
+        case hindex   : style = "T10";break;
+        default       : style = "T1"; break;
+    }
+
+    _End("text:span");
+    _AddAtt("text:style-name", style);
+    _Start("text:span");
+}
+
+void T602ImportFilter::setfnt(fonts fnt,bool mustwrite)
+{
+    if( fnt == fst.oldfnt &&
+        fnt == fst.nowfnt &&
+        !mustwrite )
+        fst.nowfnt = standard;
+    else
+        if (fnt != chngul) fst.nowfnt = fnt;
+
+        if(mustwrite)
+            if(fst.oldfnt != fst.nowfnt || fst.olduline != fst.uline) {
+                wrtfnt();
+                fst.oldfnt = fst.nowfnt;
+                fst.olduline = fst.uline;
+            }
+}
+
+unsigned char T602ImportFilter::Readchar602()
+{
+    static Sequence< sal_Int8 > aData;
+
+    return (mxInputStream->readBytes(aData, 1) > 0) ?
+        ((unsigned char *) aData.getConstArray())[0] : 0;
+}
+
+void T602ImportFilter::par602(bool endofpage)
+{
+    int endp;
+    Reference < XAttributeList > mAttrList ( mpAttrList );
+
+    if(!endofpage || !pst.waspar) {
+        if(ini.showcomm||!pst.comment) {
+            if(pst.waspar||ini.reformatpars) {
+                _End("text:span");
+                _End("text:p");
+                _AddAtt("text:style-name", "P1");
+                _Start("text:p");
+                _Start("text:span");
+                wrtfnt();
+            } else {
+                _Start("text:line-break");
+                _End("text:line-break");
+            }
+        }
+
+        pst.waspar = true;
+    }
+
+    if(!pst.comment) {
+        switch(format602.lh) {
+            case 3: pst.pars += 4; break;
+            case 4: pst.pars += 3; break;
+            case 6: pst.pars += 2; break;
+            default: pst.pars +=2; break;
+        }
+        endp = format602.pl-format602.mt-format602.mb;
+        if(((pst.pars+1)/2) >= endp || endofpage) {
+            pst.pars = 0;
+            if(!ini.reformatpars) {
+                _End("text:span");
+                _End("text:p");
+                _AddAtt("text:style-name", "P2");
+                _Start("text:p");
+                _Start("text:span");
+                wrtfnt();
+            }
+        }
+    }
+}
+
+int T602ImportFilter::readnum(unsigned char *ch, bool show)
+{
+    unsigned char buff[21];
+    int i=0;
+
+    while((i<20) && *ch && (*ch!='\n') && (*ch!=','))
+    {
+        *ch = Readchar602();
+        if(show) inschr(*ch);
+        buff[i++] = *ch;
+    }
+    buff[i]='\0';
+
+    return atoi((char *)buff);
+}
+
+unsigned char T602ImportFilter::Setformat602(char *cmd)
+{
+    unsigned char ch;
+    int i;
+
+    ch = Readchar602();
+
+         if (cmd[0]=='M' && cmd[1]=='T') format602.mt = readnum(&ch,false);
+    else if (cmd[0]=='M' && cmd[1]=='B') format602.mb = readnum(&ch,false);
+    // else if (cmd[0]=='T' && cmd[1]=='B') {}
+    // else if (cmd[0]=='H' && cmd[1]=='E') {}
+    // else if (cmd[0]=='F' && cmd[1]=='O') {}
+    else if (cmd[0]=='C' && cmd[1]=='T') {
+        format602.ct = readnum(&ch,false);
+        if (!ini.forcecode)
+            switch(format602.ct) {
+                case 0:  ini.xcode = KAM; break;
+                case 1:  ini.xcode = L2;  break;
+                case 2:  ini.xcode = KOI; break;
+                default: ini.xcode = KAM; break;
+            }
+        }
+    else if (cmd[0]=='P' && cmd[1]=='N')  format602.pn = readnum(&ch,false);
+    else if (cmd[0]=='L' && cmd[1]=='H')  format602.lh = readnum(&ch,false);
+    // else if(cmd[0]=='S' && cmd[1]=='T') {} //styl
+    else if (cmd[0]=='L' && cmd[1]=='M')  format602.lm = readnum(&ch,false);
+    else if (cmd[0]=='R' && cmd[1]=='M')  format602.rm = readnum(&ch,false);
+    else if (cmd[0]=='P' && cmd[1]=='L')  format602.pl = readnum(&ch,false);
+    else if (cmd[0]=='P' && cmd[1]=='A') { if(pst.pars) par602(true); }
+    else if (cmd[0]=='C' && cmd[1]=='P') {
+        i = readnum(&ch,false);
+        if ((i+pst.pars/2) > (format602.pl-format602.mt-format602.mb))
+            if(pst.pars) par602(true);
+    }
+    while (ch && (ch != '\n')) ch = Readchar602();
+    return ch;
+}
+
+tnode T602ImportFilter::PointCmd602(unsigned char *ch)
+{
+    char pcmd[2];
+
+    pcmd[0] = toupper(*ch); inschr(*ch);
+    *ch = Readchar602();
+    if (!*ch) return EEND;
+    if (*ch=='\n') return EOL;
+    if (!isalpha(*ch)) return (*ch<32) ? SETCH : WRITE;
+    pcmd[1] = toupper(*ch); inschr(*ch);
+
+         if (pcmd[0]=='P' && pcmd[1]=='A') { if (pst.pars) pst.willbeeop = true; }
+    else if (pcmd[0]=='C' && pcmd[1]=='P') { if (pst.pars) pst.willbeeop = true; }
+    else if (pcmd[0]=='P' && pcmd[1]=='I') {
+        while (*ch && (*ch != '\n') && (*ch != ','))
+            { *ch = Readchar602(); inschr(*ch); }
+        if (!*ch) return EEND;
+        if (*ch=='\n') return EOL;
+        if (*ch==',') { *ch = Readchar602(); inschr(*ch); }
+        pst.pars += (readnum(ch,true)*2);
+        if (!*ch) return EEND;
+        if (*ch=='\n') return EOL;
+    }
+    // else if(pcmd[0]=='K'&&pcmd[1]=='P') {}
+    // else if(pcmd[0]=='H'&&pcmd[1]=='E') {}
+    // else if(pcmd[0]=='F'&&pcmd[1]=='O') {}
+
+    return READCH;
+}
+
+
+void T602ImportFilter::Read602()
+{
+    unsigned char ch;
+    char cmd602[3];
+
+    Reference < XAttributeList > mAttrList ( mpAttrList );
+
+    if (node==QUIT) return;
+
+    _AddAtt("text:style-name", "P1");
+    _Start("text:p");
+    _AddAtt("text:style-name", "T1");
+    _Start("text:span");
+
+    if (node==START) { node = EOL; }
+
+    while (node != EEND) {
+        switch (node) {
+        case READCH:
+            ch = Readchar602();
+            if (ch == 0) node = EEND;
+            else if (ch == '\n') {
+                if(!pst.willbeeop) par602(false);
+                node = EOL;
+            } else if (ch < 32) node = SETCH;
+            else node = WRITE;
+            break;
+        case EOL:
+            ch = Readchar602();
+            pst.comment = false;
+            if (pst.willbeeop) par602(true);
+            pst.willbeeop = false;
+            if(ch == 0) node = EEND;
+            else if (ch == '@') node = EXPCMD;
+            else if (ch == '\n') { par602(false); node = EOL; }
+            else if (ch < 32) {pst.ccafterln = true; node = SETCH; break;}
+            else node = WRITE;
+            if (ch == '.') { pst.comment = true; node = POCMD; }
+            pst.ccafterln = false;
+            break;
+
+        case POCMD: inschr('.');
+            ch = Readchar602();
+            if(ch == 0) node = EEND;
+            else if(isalpha(ch)) node = PointCmd602(&ch);
+            else if(ch <32) node=SETCH;
+            else node = WRITE;
+            break;
+
+        case EXPCMD: ch = Readchar602();
+            if(ch == 0) {inschr('@'); node = EEND; }
+            else if(isupper(ch)) {
+                cmd602[0] = ch;
+                ch = Readchar602();
+                cmd602[1] = ch;
+                cmd602[2] = '\0';
+                if(isupper(ch)) node = SETCMD;   //nedodelano
+                else { inschr('@'); _Chars(cmd602); node = READCH; }
+            } else {
+                inschr('@');
+                if(ch<32) node = SETCH;
+                else node = WRITE;}
+            break;
+
+        case SETCMD:
+            ch = Setformat602(cmd602);
+            if(ch == 0) node = EEND;
+            else if(ch == '\n') node = EOL;
+            else node = READCH;
+            break;
+
+        case SETCH :
+            switch(ch) {
+            case '\t' : _Start("text:tab-stop");
+                    _End("text:tab-stop");
+                    break;
+            case 0x03 : break; //condensed
+            case 0x01 : break; //elite
+            case 0x11 : break; //uzv1
+            case 0x12 : break; //uzv2
+            case 0x15 : break; //uzv3
+            case 0x17 : break; //uzv4
+            case 0x18 : break; //uzv5
+            case 0x19 : break; //uzv6
+            case 0x13 : fst.uline = !fst.uline;break;
+            case 0x02 : setfnt(fat,false);     break;
+            case 0x04 : setfnt(cursive,false); break;
+            case 0x0f : setfnt(bold,false);    break;
+            case 0x10 : setfnt(tall,false);    break;
+            case 0x1d : setfnt(big,false);     break;
+            case 0x14 : setfnt(hindex,false);  break;
+            case 0x16 : setfnt(lindex,false);  break;
+            default   : break;
+            }
+            if(pst.ccafterln) node = EOL;
+            else node = READCH;
+            break;
+
+        case WRITE :
+            switch(ch) {
+            case 0x8d:
+                ch = Readchar602();
+                if( ch == 0x0a) {
+                    if(ini.reformatpars) inschr(' ');
+                    else par602(false); //formatovaci radek
+                    node = EOL;
+                } else {
+                    inschr(0x8d);//inschr(' ');
+                    if(ch == 0) node = EEND;
+                    else if(ch == '\n') {
+                        if(!pst.willbeeop) par602(false);
+                        node = EOL; }
+                    else if(ch < 32) node = SETCH;
+                    else node = WRITE;
+                }
+                break;
+            case 0xfe:
+                if (ini.showcomm||!pst.comment) inschr(' ');
+                node = READCH;
+                break;
+            case 0xad:
+                ch = Readchar602();
+                if( ch==0x8d ) {
+                    if(ini.showcomm||!pst.comment) { //formatovaci pomlcka
+                        if(!ini.reformatpars)
+                            inschr('-');
+                        else {
+                            pst.wasspace--;
+                            pst.wasfdash = true;
+                        }
+                    }
+                    node=WRITE;
+                } else {
+                    inschr(0xad);
+                    if(ch == 0) node = EEND;
+                    else if(ch == '\n') {
+                        if(!pst.willbeeop) par602(false);
+                        node = EOL; }
+                    else if(ch < 32) node = SETCH;
+                    else node = WRITE;
+                }
+                break;
+            default:
+                inschr(ch);
+                node = READCH;
+                break;
+            }
+            break;
+        default: break;
+        }
+    }
+
+    _End("text:p");
+    node = QUIT;
+}
+
+sal_Bool T602ImportFilter::OptionsDlg()
+{
+    sal_Bool ret = sal_False;
+
+    Any any;
+#define _propInt(_prop,_nam,_val) \
+    any <<= (sal_Int32)_val;\
+    _prop->setPropertyValue(OUString::createFromAscii(_nam), any);
+#define _propShort(_prop,_nam,_val) \
+    any <<= (sal_Int16)_val;\
+    _prop->setPropertyValue(OUString::createFromAscii(_nam), any);
+#define _propBool(_prop,_nam,_val) \
+    any <<= (sal_Bool)_val;\
+    _prop->setPropertyValue(OUString::createFromAscii(_nam), any);
+#define _propString(_prop,_nam,_val) \
+    any <<= OUString::createFromAscii(_val);\
+    _prop->setPropertyValue(OUString::createFromAscii(_nam), any);
+#define _propStringFromResId(_prop,_nam,_val) \
+    any <<= getResStr(_val);\
+    _prop->setPropertyValue(OUString::createFromAscii(_nam), any);
+#define _propGet(_prop,_nam) \
+    _prop->getPropertyValue(OUString::createFromAscii(_nam));
+#define _InstCtx(_path,_ctx)\
+    rServiceManager->createInstanceWithContext(\
+    OUString::createFromAscii(_path),_ctx);
+#define _Inst(_path)\
+    xMultiServiceFactory->createInstance(OUString::createFromAscii(_path) );
+#define _Insert(_cont,_nam,_obj) \
+    any <<= _obj;\
+    _cont->insertByName( OUString::createFromAscii(_nam), any );
+
+    Reference < XComponentContext > rComponentContext = defaultBootstrap_InitialComponentContext();
+    Reference < XMultiComponentFactory > rServiceManager = rComponentContext->getServiceManager();
+    Reference < XInterface > rInstance = _InstCtx("com.sun.star.awt.UnoControlDialogModel", rComponentContext );
+
+    Reference <XMultiServiceFactory> xMultiServiceFactory (rInstance,UNO_QUERY);
+
+    Reference < XPropertySet > xPSetDialog( rInstance, UNO_QUERY );
+    _propInt(xPSetDialog,"PositionX",100);
+    _propInt(xPSetDialog,"PositionY",100);
+    _propInt(xPSetDialog,"Width",130);
+    _propInt(xPSetDialog,"Height",90);
+    _propStringFromResId(xPSetDialog,"Title", T602FILTER_STR_IMPORT_DIALOG_TITLE);
+
+#define T602DLG_OK_BUTTON    "ok_button"
+#define T602DLG_CANCEL_BUTTON    "cancel_button"
+#define T602DLG_CODE_LB        "code_lb"
+#define T602DLG_AZBUKA_CB    "azbuka_cb"
+#define T602DLG_COMMENT_CB    "comment_cb"
+#define T602DLG_REFORMAT_CB    "reformat_cb"
+#define T602DLG_CODE_TXT    "code_txt"
+
+    Reference < XInterface > TextModel = _Inst("com.sun.star.awt.UnoControlFixedTextModel");
+    Reference < XPropertySet > xPSetText( TextModel, UNO_QUERY );
+    _propInt(xPSetText,"PositionX",10);
+    _propInt(xPSetText,"PositionY",8);
+    _propInt(xPSetText,"Width",30);
+    _propInt(xPSetText,"Height",14);
+    _propString(xPSetText,"Name",T602DLG_CODE_TXT);
+    _propStringFromResId(xPSetText,"Label",T602FILTER_STR_ENCODING_LABEL);
+
+    Reference < XInterface > ListBoxModel = _Inst("com.sun.star.awt.UnoControlListBoxModel");
+    Reference < XPropertySet > xPSetCodeLB( ListBoxModel, UNO_QUERY );
+    _propInt(xPSetCodeLB,"PositionX",40);
+    _propInt(xPSetCodeLB,"PositionY",5);
+    _propInt(xPSetCodeLB,"Width",85);
+    _propInt(xPSetCodeLB,"Height",14);
+    _propString(xPSetCodeLB,"Name",T602DLG_CODE_LB);
+    _propShort(xPSetCodeLB,"TabIndex",1);
+    _propBool(xPSetCodeLB,"Dropdown",true);
+    _propBool(xPSetCodeLB,"MultiSelection",false);
+
+    Sequence< OUString > ous(4);
+    ous[0] = getResStr(T602FILTER_STR_ENCODING_AUTO);
+    ous[1] = getResStr(T602FILTER_STR_ENCODING_CP852);
+    ous[2] = getResStr(T602FILTER_STR_ENCODING_CP895);
+    ous[3] = getResStr(T602FILTER_STR_ENCODING_KOI8CS2);
+    any <<= ous;
+    xPSetCodeLB->setPropertyValue(OUString::createFromAscii("StringItemList"), any);
+
+    Sequence < sal_Int16 > shr(1);
+    shr[0] = ini.forcecode ? ini.xcode+1 : 0;
+    any <<= shr;
+    xPSetCodeLB->setPropertyValue(OUString::createFromAscii("SelectedItems"), any);
+
+    Reference < XInterface > AzbCheckBoxModel = _Inst("com.sun.star.awt.UnoControlCheckBoxModel");
+    Reference < XPropertySet > xPSetAzbukaCB( AzbCheckBoxModel, UNO_QUERY );
+    _propInt(xPSetAzbukaCB,"PositionX",10);
+    _propInt(xPSetAzbukaCB,"PositionY",25);
+    _propInt(xPSetAzbukaCB,"Width",100);
+    _propInt(xPSetAzbukaCB,"Height",14);
+    _propString(xPSetAzbukaCB,"Name",T602DLG_AZBUKA_CB);
+    _propShort(xPSetAzbukaCB,"TabIndex",2);
+    _propStringFromResId(xPSetAzbukaCB,"Label",T602FILTER_STR_CYRILLIC_MODE);
+    _propShort(xPSetAzbukaCB,"State",ini.ruscode);
+
+    Reference < XInterface > RefCheckBoxModel = _Inst("com.sun.star.awt.UnoControlCheckBoxModel");
+    Reference < XPropertySet > xPSetRefCB( RefCheckBoxModel, UNO_QUERY );
+    _propInt(xPSetRefCB,"PositionX",10);
+    _propInt(xPSetRefCB,"PositionY",40);
+    _propInt(xPSetRefCB,"Width",100);
+    _propInt(xPSetRefCB,"Height",14);
+    _propString(xPSetRefCB,"Name",T602DLG_REFORMAT_CB);
+    _propShort(xPSetRefCB,"TabIndex",3);
+    _propStringFromResId(xPSetRefCB,"Label",T602FILTER_STR_REFORMAT_TEXT);
+    _propShort(xPSetRefCB,"State",ini.reformatpars);
+
+    Reference < XInterface > CommCheckBoxModel = _Inst("com.sun.star.awt.UnoControlCheckBoxModel");
+    Reference < XPropertySet > xPSetCommCB( CommCheckBoxModel, UNO_QUERY );
+    _propInt(xPSetCommCB,"PositionX",10);
+    _propInt(xPSetCommCB,"PositionY",55);
+    _propInt(xPSetCommCB,"Width",100);
+    _propInt(xPSetCommCB,"Height",14);
+    _propString(xPSetCommCB,"Name",T602DLG_COMMENT_CB);
+    _propShort(xPSetCommCB,"TabIndex",4);
+    _propStringFromResId(xPSetCommCB,"Label",T602FILTER_STR_DOT_COMMANDS);
+    _propShort(xPSetCommCB,"State",ini.showcomm);
+
+    Reference < XInterface > CancelButtonModel = _Inst("com.sun.star.awt.UnoControlButtonModel");
+    Reference < XPropertySet > xPSetCancelButton( CancelButtonModel, UNO_QUERY );
+    _propInt(xPSetCancelButton,"PositionX",10);
+    _propInt(xPSetCancelButton,"PositionY",70);
+    _propInt(xPSetCancelButton,"Width",50);
+    _propInt(xPSetCancelButton,"Height",14);
+    _propString(xPSetCancelButton,"Name",T602DLG_CANCEL_BUTTON);
+    _propShort(xPSetCancelButton,"TabIndex",5);
+    _propShort(xPSetCancelButton,"PushButtonType",2);
+    _propStringFromResId(xPSetCancelButton,"Label",T602FILTER_STR_CANCEL_BUTTON);
+
+    Reference < XInterface > OkButtonModel = _Inst("com.sun.star.awt.UnoControlButtonModel");
+    Reference < XPropertySet > xPSetOkButton( OkButtonModel, UNO_QUERY );
+    _propInt(xPSetOkButton,"PositionX",70);
+    _propInt(xPSetOkButton,"PositionY",70);
+    _propInt(xPSetOkButton,"Width",50);
+    _propInt(xPSetOkButton,"Height",14);
+    _propString(xPSetOkButton,"Name",T602DLG_OK_BUTTON);
+    _propShort(xPSetOkButton,"TabIndex",0);
+    _propShort(xPSetOkButton,"PushButtonType",1);
+    _propStringFromResId(xPSetOkButton,"Label",T602FILTER_STR_OK_BUTTON);
+    _propBool(xPSetOkButton,"DefaultButton",true);
+
+    Reference < XNameContainer > xNameCont (rInstance,UNO_QUERY);
+
+    _Insert(xNameCont, T602DLG_OK_BUTTON, OkButtonModel);
+    _Insert(xNameCont, T602DLG_CANCEL_BUTTON, CancelButtonModel);
+    _Insert(xNameCont, T602DLG_AZBUKA_CB, AzbCheckBoxModel);
+    _Insert(xNameCont, T602DLG_REFORMAT_CB, RefCheckBoxModel);
+    _Insert(xNameCont, T602DLG_COMMENT_CB, CommCheckBoxModel);
+    _Insert(xNameCont, T602DLG_CODE_LB, ListBoxModel);
+    _Insert(xNameCont, T602DLG_CODE_TXT, TextModel);
+
+    Reference< XInterface > dialog = _InstCtx("com.sun.star.awt.UnoControlDialog",rComponentContext);
+
+    Reference < XControl > xControl (dialog,UNO_QUERY);
+    Reference < XControlModel > xControlModel (rInstance,UNO_QUERY);
+
+    if(!xControl.is())
+        return sal_False;
+
+    xControl->setModel( xControlModel );
+
+    Reference< XInterface > toolkit = _InstCtx("com.sun.star.awt.ExtToolkit", rComponentContext);
+
+    Reference < XToolkit > xToolkit (toolkit,UNO_QUERY);
+    Reference < XWindow > xWindow (xControl,UNO_QUERY);
+
+    if(!xWindow.is())
+        return sal_False;
+
+    xWindow->setVisible( false );
+    xControl->createPeer( xToolkit, NULL );
+
+    Reference < XDialog > xDialog (dialog,UNO_QUERY);
+
+    if(!xDialog.is())
+        return sal_False;
+
+    if ((ret = xDialog->execute())) {
+
+        sal_Int16 tt = 0;
+
+        any = _propGet(xPSetAzbukaCB, "State"); any >>= tt; ini.ruscode      = tt;
+        any = _propGet(xPSetRefCB,    "State"); any >>= tt; ini.reformatpars = tt;
+        any = _propGet(xPSetCommCB,   "State"); any >>= tt; ini.showcomm     = tt;
+
+        any = _propGet(xPSetCodeLB,   "SelectedItems"); any >>= shr;
+
+        if( shr[0] > 0 ) {
+            ini.xcode = (tcode)(shr[0]-1);
+            ini.forcecode = true;
+        } else {
+            ini.forcecode = false;
+        }
+    }
+
+    Reference < XComponent > xComponent (dialog,UNO_QUERY);
+
+    xComponent->dispose();
+
+    return ret;
+}
+
+void T602ImportFilter::initLocale()
+{
+	rtl::OString aModName( "t602filter" );
+	aModName += rtl::OString::valueOf( sal_Int32( SUPD ) );
+
+	mpResMgr = ResMgr::CreateResMgr( aModName.getStr(), meLocale );
+}
+
+ResMgr* T602ImportFilter::getResMgr()
+{
+	if( !mpResMgr )
+		initLocale();
+	return mpResMgr;
+}
+
+rtl::OUString T602ImportFilter::getResStr( int resid )
+{
+	ResMgr *pResMgr = getResMgr();
+	if ( pResMgr )
+		return rtl::OUString( String( ResId( resid, *getResMgr() ) ) );
+	
+	return rtl::OUString();
+}
+
+
+Reference < XInterface > SAL_CALL CreateInstance( const Reference< XMultiServiceFactory > &r)
+throw ( Exception )
+{
+    return Reference< XInterface > (( OWeakObject *) new T602ImportFilter(r));
+}
+
+Sequence < OUString > getSupportedServiceNames()
+throw ( RuntimeException )
+{
+    static Sequence < OUString > *pNames = 0;
+    if( ! pNames ) {
+        MutexGuard guard( Mutex::getGlobalMutex() );
+        if( !pNames ) {
+            static Sequence< OUString > seqNames(2);
+            seqNames.getArray()[0] = OUString::createFromAscii(IMPLEMENTATION_NAME);
+            pNames = &seqNames;
+        }
+    }
+    return *pNames;
+}
+
+}
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/t602filter.hrc	13 Apr 2007 08:04:22 -0000	1.1.2.1
@@ -0,0 +1,18 @@
+#ifndef T602FILTER_HRC
+#define T602FILTER_HRC
+
+#define T602FILTER_RES_START 1000
+
+#define T602FILTER_STR_IMPORT_DIALOG_TITLE      (T602FILTER_RES_START)
+#define T602FILTER_STR_ENCODING_LABEL           (T602FILTER_RES_START+1)
+#define T602FILTER_STR_ENCODING_AUTO            (T602FILTER_RES_START+2)
+#define T602FILTER_STR_ENCODING_CP852           (T602FILTER_RES_START+3)
+#define T602FILTER_STR_ENCODING_CP895           (T602FILTER_RES_START+4)
+#define T602FILTER_STR_ENCODING_KOI8CS2         (T602FILTER_RES_START+5)
+#define T602FILTER_STR_CYRILLIC_MODE            (T602FILTER_RES_START+6)
+#define T602FILTER_STR_REFORMAT_TEXT            (T602FILTER_RES_START+7)
+#define T602FILTER_STR_DOT_COMMANDS             (T602FILTER_RES_START+8)
+#define T602FILTER_STR_CANCEL_BUTTON            (T602FILTER_RES_START+9)
+#define T602FILTER_STR_OK_BUTTON                (T602FILTER_RES_START+10)
+
+#endif // T602FILTER_HRC
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/t602filter.hxx	16 Apr 2007 09:35:54 -0000	1.1.2.2
@@ -0,0 +1,257 @@
+ /*************************************************************************
+ *
+ *  OpenOffice.org - a multi-platform office productivity suite
+ *
+ *  $RCSfile$
+ *
+ *  $Revision$
+ *
+ *  last change: $Author$ $Date$
+ *
+ *  The Contents of this file are made available subject to
+ *  the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ *    GNU Lesser General Public License Version 2.1
+ *    =============================================
+ *    Copyright 2004-2007 Milan Broz <mbroz@redhat.com>
+ *    Copyright 2007 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
+ *
+ ************************************************************************/
+
+#ifndef _T602FILTER_HXX
+#define _T602FILTER_HXX
+
+#ifndef _COM_SUN_STAR_DOCUMENT_XFILTER_HPP_
+#include <com/sun/star/document/XFilter.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_DOCUMENT_XIMPORTER_HPP_
+#include <com/sun/star/document/XImporter.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_DOCUMENT_XEXTENDEDFILTERDETECTION_HPP_
+#include <com/sun/star/document/XExtendedFilterDetection.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_IO_XINPUTSTREAM_HPP_
+#include <com/sun/star/io/XInputStream.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
+#include <com/sun/star/lang/XInitialization.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_XLOCALIZABLE
+#include <com/sun/star/lang/XLocalizable.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE6_HXX_
+#include <cppuhelper/implbase6.hxx>
+#endif
+
+#ifndef _ATTRLIST_HPP_
+#include <xmloff/attrlist.hxx>
+#endif
+
+#include <tools/resmgr.hxx>
+
+namespace T602ImportFilter {
+
+typedef enum {L2,KAM,KOI} tcode;
+
+typedef enum {
+        standard,   // default
+        fat,        // tucne
+        cursive,    // kurziva
+        bold,       // siroke
+        tall,       // vysoke
+        big,        // velke
+        lindex,     // dolni index
+        hindex,     // horni index
+        err,        // jeste nenastaveno
+        chngul      // zmena podtrzeni
+} fonts;
+
+typedef enum {START,READCH,EOL,POCMD,EXPCMD,SETCMD,SETCH,WRITE,EEND,QUIT} tnode;
+
+::rtl::OUString getImplementationName()
+    throw ( ::com::sun::star::uno::RuntimeException );
+
+::com::sun::star::uno::Sequence < ::rtl::OUString > getSupportedServiceNames()
+    throw ( ::com::sun::star::uno::RuntimeException );
+
+
+::com::sun::star::uno::Reference < ::com::sun::star::uno::XInterface > SAL_CALL
+    CreateInstance( const ::com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > &r)
+    throw ( ::com::sun::star::uno::Exception );
+
+
+//
+// class T602ImportFilter
+//
+
+class T602ImportFilter : public cppu::WeakImplHelper6 <
+    com::sun::star::document::XFilter,
+    com::sun::star::document::XImporter,
+    com::sun::star::document::XExtendedFilterDetection,
+    com::sun::star::lang::XInitialization,
+    com::sun::star::lang::XServiceInfo,
+    com::sun::star::lang::XLocalizable
+>
+{
+private:
+//    ::com::sun::star::uno::Reference<com::sun::star::io::XInputStream> xInputStream;
+    ::com::sun::star::uno::Reference<com::sun::star::xml::sax::XDocumentHandler> mxHandler;
+    ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMSF;
+    ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > mxDoc;
+    ::com::sun::star::uno::Reference < ::com::sun::star::io::XInputStream > mxInputStream;
+    ::rtl::OUString msFilterName;
+	com::sun::star::lang::Locale meLocale;
+    ResMgr *mpResMgr;
+
+
+    SvXMLAttributeList *mpAttrList;
+
+    tnode node;         // START
+
+    struct {
+        int   mt;       // radek pro hlavicku
+        int   mb;       // radek pro paticku
+        int   tb;       // tabulatory
+        int   ct;       // kodovani 0-kamenici, 1-latin2, 2-koi8
+        int   pn;       // od cisla stranky
+        int   lh;       // radkovani 3-2x, 4-1.5x, 6-1x
+        int   lm;       // levy okraj
+        int   rm;       // pravy okraj
+        int   pl;       // delka stranky
+    } format602;
+
+    struct { // inicializacni konstanty - nemeni se v prubehu konverze
+        bool showcomm;      // true   zobrazit komentarove radky
+        bool forcecode;     // false  uzivatel zmenil kodovani jinak nez je @CT
+        tcode xcode;        // KAM    nastavene kodovani - forced
+        bool ruscode;       // false  zapnuty tabulky pro azbuku
+        bool reformatpars;  // false  preformatovat odstavce (mezery+zalomeni)
+        int fontsize;       // velikost fontu v bodech
+    } ini;
+
+    struct { // font state - meni se podle fontu
+        fonts nowfnt;     // soucasny font
+        fonts oldfnt;     // predchozi font
+        bool uline;       // pise se podrtrzene ?, lze pouzit i zmene fontu
+        bool olduline;    // predchozi hodnota uline (zmena fontu)
+    } fst;
+
+    struct { // paragraph state
+        int pars;            //       pocet koncu radku * radkovani na akt. strance
+        bool comment;        //       jsem v komentari
+        int wasspace;        // 0     byla mezera - pro reformat
+        bool wasfdash;       // 0     form. pomlcka
+        bool ccafterln;      // false
+        bool willbeeop;      // false
+        bool waspar;         // false
+    } pst;
+
+    void Reset602();
+    unsigned char Readchar602();
+    void Read602();
+    void par602(bool endofpage);
+    void inschr(unsigned char ch);
+    void inschrdef(unsigned char ch);
+    unsigned char Setformat602(char *cmd);
+    int readnum(unsigned char *ch, bool show);
+    tnode PointCmd602(unsigned char *ch);
+    void setfnt(fonts fnt,bool mustwrite);
+    void wrtfnt();
+    sal_Bool OptionsDlg();
+    ResMgr* getResMgr();
+    rtl::OUString getResStr( int resid );
+    void initLocale();
+
+    sal_Bool SAL_CALL importImpl( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor )
+        throw (::com::sun::star::uno::RuntimeException);
+
+
+    public:
+        T602ImportFilter(const ::com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory > &r );
+        ~T602ImportFilter();
+
+    // XFilter
+        virtual sal_Bool SAL_CALL filter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor )
+            throw (::com::sun::star::uno::RuntimeException);
+        virtual void SAL_CALL cancel(  )
+            throw (::com::sun::star::uno::RuntimeException) {};
+
+    // XImporter
+        virtual void SAL_CALL setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc )
+            throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
+
+    // XExtendedTypeDetection
+        virtual ::rtl::OUString SAL_CALL detect(
+            com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& Descriptor )
+            throw( com::sun::star::uno::RuntimeException );
+
+    // XInitialization
+        virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
+            throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+
+    // XServiceInfo
+        virtual ::rtl::OUString SAL_CALL getImplementationName(  )
+            throw (::com::sun::star::uno::RuntimeException);
+        virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+            throw (::com::sun::star::uno::RuntimeException);
+        virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  )
+            throw (::com::sun::star::uno::RuntimeException);
+#if 0
+    // XExecutableDialog
+       virtual void SAL_CALL setTitle( const ::rtl::OUString& aTitle )
+            throw (::com::sun::star::uno::RuntimeException);
+       virtual sal_Int16 SAL_CALL execute()
+            throw (::com::sun::star::uno::RuntimeException);
+#endif
+
+    // XLocalizable
+        virtual void SAL_CALL setLocale( const com::sun::star::lang::Locale& eLocale )
+            throw(::com::sun::star::uno::RuntimeException);
+        virtual com::sun::star::lang::Locale SAL_CALL getLocale()
+            throw(::com::sun::star::uno::RuntimeException);
+
+};
+
+::rtl::OUString T602ImportFilter_getImplementationName()
+    throw ( ::com::sun::star::uno::RuntimeException );
+
+sal_Bool SAL_CALL T602ImportFilter_supportsService( const ::rtl::OUString& ServiceName )
+    throw ( ::com::sun::star::uno::RuntimeException );
+
+::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL T602ImportFilter_getSupportedServiceNames(  )
+    throw ( ::com::sun::star::uno::RuntimeException );
+
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
+SAL_CALL T602ImportFilter_createInstance( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rSMgr)
+    throw ( ::com::sun::star::uno::Exception );
+
+
+}
+
+#endif
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/t602filter.map	13 Apr 2007 08:04:23 -0000	1.1.2.1
@@ -0,0 +1,8 @@
+T602IMP_1_0 {
+	global:
+		component_getImplementationEnvironment;
+		component_writeInfo;
+		component_getFactory;
+	local:
+		*;
+};
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/t602filter.src	17 Apr 2007 07:44:59 -0000	1.1.2.5
@@ -0,0 +1,67 @@
+#include "t602filter.hrc"
+
+String T602FILTER_STR_IMPORT_DIALOG_TITLE
+{
+    Text [ en-US ] = "Settings for T602 import";
+    Text [ de ] = "T602 Import Einstellungen";
+};
+
+String T602FILTER_STR_ENCODING_LABEL
+{
+    Text [ en-US ] = "Encoding";
+    Text [ de ] = "Kodierung";
+};
+
+String T602FILTER_STR_ENCODING_AUTO
+{
+    Text [ en-US ] = "Automatic";
+    Text [ de ] = "Automatisch";
+};
+
+String T602FILTER_STR_ENCODING_CP852
+{
+    Text [ en-US ] = "CP852 (Latin2)";
+    Text [ de ] = "CP852 (Latin2)";
+};
+
+String T602FILTER_STR_ENCODING_CP895
+{
+    Text [ en-US ] = "CP895 (KEYB2CS, Kamenicky)";
+    Text [ de ] = "CP895 (KEYB2CS, Kamenicky)";
+};
+
+String T602FILTER_STR_ENCODING_KOI8CS2
+{
+    Text [ en-US ] = "KOI8 CS2";
+    Text [ de ] = "KOI8 CS2";
+};
+
+String T602FILTER_STR_CYRILLIC_MODE
+{
+    Text [ en-US ] = "Mode for Russian language (Cyrillic)";
+    Text [ de ] = "Modus für Russische Sprachen (Cyrillic)";
+};
+
+String T602FILTER_STR_REFORMAT_TEXT
+{
+    Text [ en-US ] = "Reformat the text";
+    Text [ de ] = "Text neuformatieren";
+};
+
+String T602FILTER_STR_DOT_COMMANDS
+{
+    Text [ en-US ] = "Display dot commands";
+    Text [ de ] = "Punkt-Formatierungszeichen anzeigen";
+};
+
+String T602FILTER_STR_CANCEL_BUTTON
+{
+    Text [ en-US ] = "Cancel";
+    Text [ de ] = "Abbrechen";
+};
+
+String T602FILTER_STR_OK_BUTTON
+{
+    Text [ en-US ] = "OK";
+    Text [ de ] = "OK";
+};
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ filter/source/t602/t602import.map	13 Apr 2007 08:04:24 -0000	1.1.2.2
@@ -0,0 +1,8 @@
+T602IMP_1_0 {
+	global:
+		component_getImplementationEnvironment;
+		component_writeInfo;
+		component_getFactory;
+	local:
+		*;
+};
--- scp2/source/ooo/file_library_ooo.scp	26 Mar 2007 14:30:18 -0000	1.227
+++ scp2/source/ooo/file_library_ooo.scp	13 Apr 2007 08:44:50 -0000	1.227.4.2
@@ -1371,6 +1371,8 @@ End
 
 STD_UNO_LIB_FILE_PATCH(gid_File_Lib_Msworks,msworks)

+STD_UNO_LIB_FILE_PATCH(gid_File_Lib_T602Filter,t602filter)
+
 #if !defined(MACOSX) && ( !defined(SYSTEM_MOZILLA) && !defined(WITHOUT_MOZILLA) )
 
 File gid_File_Lib_Mozabdrv
--- scp2/source/ooo/file_resource_ooo.scp	23 Jan 2007 08:09:31 -0000	1.50
+++ scp2/source/ooo/file_resource_ooo.scp	13 Apr 2007 08:44:51 -0000	1.50.76.1
@@ -156,3 +156,5 @@ STD_RES_FILE_PATCH( gid_File_Res_XMLSecu
 
 STD_RES_FILE_PATCH( gid_File_Res_UpdChk, updchk )
 
+STD_RES_FILE_PATCH( gid_File_Res_T602Filter, t602filter )
+
--- scp2/source/writer/module_writer.scp	2 Jan 2007 15:31:51 -0000	1.17
+++ scp2/source/writer/module_writer.scp	13 Apr 2007 08:44:51 -0000	1.17.110.2
@@ -54,6 +54,7 @@ Module gid_Module_Prg_Wrt_Bin
     gid_File_Lib_Swui,
     gid_File_Lib_Wpft,
     gid_File_Lib_Msworks,
+    gid_File_Lib_T602Filter,
     gid_File_Share_Config_Sofficecfg_Writer_Menubar_Xml,
     gid_File_Share_Config_Sofficecfg_Writerweb_Menubar_Xml,
     gid_File_Share_Config_Sofficecfg_Writerglobal_Menubar_Xml,
