Tabish F. Mufti wrote:
------------------------------------------------------------------------

#ifndef __com_sun_star_ex_comp_Sentence_idl__
#define __com_sun_star_ex_comp_Sentence_idl__


// Avoid redefinition of already included types or interface, for instance,
// the following case, com/sun/star/foo/Bar.idl have XSentence interface
// definition.

#ifndef __com_sun_star_foo_Bar_idl__
#include "XSentence.idl" #endif

You do not need the above include, the below forward declaration is enough.

module com {  module sun {  module star {  module ex {  module comp {

interface com::sun::star::ex::comp::XSentence; singleton theSentence:XSentence

missing ;

}; }; }; }; };
#endif


------------------------------------------------------------------------

/*
 *  SentenceProtocolHandler.java
 *
 *  Protocol Handler
 *
 *  $Id: SentenceProtocolHandler.java,v 1.1.1.1 2005/11/04 05:57:10 toshi Exp $
 */

/*************************************************************************
 *
 *  The Contents of this file are made available subject to the terms of
 *  the BSD license.
* * Copyright (c) 2004-2005 SAITOU Toshihide <[EMAIL PROTECTED]>
 *  All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions
 *  are met:
 *  1. Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *  2. Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *  3. The name of the author may be used to endorse or promote products
 *     derived from this software without specific prior written permission.
 *
 *  THIS SOFTWARE IS PROVIDED BY SAITOU Toshihide AND CONTRIBUTORS "AS IS"
 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 *  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 *  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL SAITOU Toshihide OR
 *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *************************************************************************/

// Integrate Components into OpenOffice.org
//
// To call from OpenOffice.org user interface, it must be able to take
// part in the communication between the UI layer and the application
// objects.  OpenOffice.org uses command URLs for this purpose.
//  ...
// From version 1.1, OpenOffice.org provides user interface support
// for custom components by two basic mechanisms:
// (Developer's Guide June 2003,  Sun Microsystems, Inc, pp. 230.)
// // 1. Add components that can be enabled to process command URLs
//    (a) make a protocol handler for them(command URLs)
//    (b) integrate them into the job execution environment
//
// 2. The user interface can be adjust to new components.
//    In short replacement.  This also means, it is possible to
//    disable existing command.  This dose not need a additional
//    components differ from the 1.
// // * This example is 1. (a).

package com.sun.star.ex.comp;
// For the above this component implements as inner class with
// Sentence component.  Look the work directory and the Sentence.java.

import com.sun.star.ex.comp.XSentence;

import com.sun.star.beans.PropertyValue;
import com.sun.star.container.XIndexAccess;
import com.sun.star.frame.DispatchDescriptor;
import com.sun.star.frame.XDispatch;
import com.sun.star.frame.XDispatchProvider;
import com.sun.star.frame.XFrame;
import com.sun.star.frame.XModel;
import com.sun.star.frame.XStatusListener;
import com.sun.star.lang.XInitialization;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.lang.XServiceInfo;
import com.sun.star.lib.uno.helper.ComponentBase;
import com.sun.star.text.XTextRange;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
import com.sun.star.util.URL;


/** SentenceProtocolHandler service implementation */

public class SentenceProtocolHandler
    extends ComponentBase
    implements XServiceInfo,
               XDispatchProvider,
               XInitialization
{

    /** points to the component context in which this handler object creates,
        is set in SentenceProtocolHandler(). constructor
    */
    private XComponentContext xContext;

    /** points to the frame context in which this handler runs, is set in
        initialize()
    */
    private XFrame xFrame;


    /** Dispatch object as inner class */
    class OwnDispatch implements XDispatch {

        /** take over all necessary parameters from outside. */
        public OwnDispatch(XComponentContext context, XFrame frame) {
            xContext = context;
            xFrame = frame;
        }

        /** execute the functionality, which is described by this URL. */
public void dispatch(URL aURL, PropertyValue[] lArgs) { try {

                // ------------------------------
                // creates an instance of the XSentence

                //XMultiComponentFactory factory = xContext.getServiceManager();
                //Object transObj = 
factory.createInstanceWithContext("/singletons/com.sun.star.ex.comp.theSentence",
 xContext);
                //XSentence sentence = 
(XSentence)UnoRuntime.queryInterface(XSentence.class, transObj);
                
                    XSentence sentence = theSentence.get(xContext);

XSentence and theSentence are both in package com.sun.star.ex.comp.

                    System.out.println("In dispatch in ProtocolHandler: " + 
aURL.Protocol);

                    if (aURL.Protocol.equals("Reverse:"))
                        {
                            //call reverse method of Sentence service
                            sentence.reverse();
                        }
                    else if (aURL.Protocol.equals("myInput:"))
                        {
                            //call getInput method of Sentence service
                            sentence.getInput();
} else {
                            //targetText = aURL.Main.toString();
                            aURL.Main.toString();
} } catch(Exception e) {
                    e.printStackTrace();
                }
        }
        
        /** register a new listener and bind it toe given URL. */
public void addStatusListener(XStatusListener l, URL url) {}
        
        /** deregister a listener for this URL. */
public void removeStatusListener(XStatusListener l, URL url) {}

    }
/** initialize a new instance of this class with default values. */ public SentenceProtocolHandler( XComponentContext context ) {
        xContext = context;
    }


    // ------------------------------------------------------------

    /** XInitialization implementation */

public void initialize(Object[] object) throws com.sun.star.uno.Exception {
        
if (object.length > 0) {
                xFrame = (XFrame)UnoRuntime.queryInterface(XFrame.class, 
object[0]);
            }
    }


    // ------------------------------------------------------------

    /** XDispatchProvider implementation */

    // should return a valid dispatch object for the given URL.
// // In case the URL is not valid an empty reference can be returned. The
    // parameter sTarget and nFlags can be ignored. These will be "_self" and 0
    // everytime.
    // (Developer's Guide June 2003,  Sun Microsystems, Inc, pp. 236.)

    public XDispatch queryDispatch(com.sun.star.util.URL aURL, String sTarget, 
int nFlags )
    {
        System.out.println("In queryDispatch in ProtocolHandler: " + 
aURL.Protocol);
        
if (aURL.Protocol.equals("Reverse:")) {
                return new OwnDispatch( xContext, xFrame );
            }
if (aURL.Protocol.equals("myInput:")) {
                return new OwnDispatch( xContext, xFrame );
            }
        return null;
    }

    // optimized API call for remote.
// // It should be forwarded to queryDispatch() for every request item of the
    // given DispatchDescriptor list.
// // But note: it is not allowed to pack the return list of dispatch objects.
    // Every request in source list must match to a reference (null or valid) in
    // the destination list!
    // (Developer's Guide June 2003,  Sun Microsystems, Inc, pp. 236.)

    public XDispatch[] queryDispatches(DispatchDescriptor[] descs)
    {
        XDispatch[] lDispatcher = new XDispatch[descs.length];
        
        System.out.println("In queryDispatches in ProtocolHandler descs length: 
" + descs.length);
        
        for(int i = 0; i < descs.length; ++i ) {
            lDispatcher[i] = queryDispatch(descs[i].FeatureURL,
                                           descs[i].FrameName,
                                           descs[i].SearchFlags );
        }
        
return lDispatcher; }


    // ------------------------------------------------------------

    /** XServiceInfo implementation */

    static final String SERVICENAME = "com.sun.star.frame.ProtocolHandler";

    public String getImplementationName() {
        return getClass().getName();
    }

    public boolean supportsService(String serviceName) {
        if (serviceName.equals(SERVICENAME))
            return true;
        return false;
    }

    public String[] getSupportedServiceNames() {
        return new String[] {
            SERVICENAME
        };
    }

}

// End of file.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to