最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Is there a way to add a Java Swing JPanel to the UNO-AWT of LibreOffice? - Stack Overflow

programmeradmin8浏览0评论

I now learned that it is possible to place a Swing JPanel into an AWT Panel. older question Now the next step. As far as I understand it, the Java Extensions of LibreOffice use UNO-AWT. Is there a way to add the main JPanel of my vocabulary trainer to the UNO-AWT of LibreOffice?

UPDATE

As I learned now, my Swing Application should be started in a new Window as an extension. How to do this?

UPDATE

libreoffice-starter-extension

I learned that StarterProjectImpl is the entry point.

    package .libreoffice.examplep;

    import com.sun.star.uno.XComponentContext;
    import com.sun.star.lib.uno.helper.Factory;

    import .libreoffice.example.dialog.ActionOneDialog;
    import .libreoffice.example.helper.DialogHelper;

    import com.sun.star.lang.XSingleComponentFactory;
    import com.sun.star.registry.XRegistryKey;
    import com.sun.star.lib.uno.helper.WeakBase;


    public final class StarterProjectImpl extends WeakBase
       implements com.sun.star.lang.XServiceInfo,
              com.sun.star.task.XJobExecutor
    {
        private final XComponentContext m_xContext;
        private static final String m_implementationName = StarterProjectImpl.class.getName();
        private static final String[] m_serviceNames = {
            ".libreoffice.example.StarterProject" };


        public StarterProjectImpl( XComponentContext context )
        {
            m_xContext = context;
        };

        public static XSingleComponentFactory __getComponentFactory( String sImplementationName ) {
        XSingleComponentFactory xFactory = null;

            if ( sImplementationName.equals( m_implementationName ) )
                xFactory = Factory.createComponentFactory(StarterProjectImpl.class, m_serviceNames);
            return xFactory;
        }

        public static boolean __writeRegistryServiceInfo( XRegistryKey xRegistryKey ) {
        return Factory.writeRegistryServiceInfo(m_implementationName,
                                                m_serviceNames,
                                                xRegistryKey);
        }

        // com.sun.star.lang.XServiceInfo:
        public String getImplementationName() {
             return m_implementationName;
        }

        public boolean supportsService( String sService ) {
        int len = m_serviceNames.length;

        for( int i=0; i < len; i++) {
            if (sService.equals(m_serviceNames[i]))
                return true;
            }
            return false;
        }

        public String[] getSupportedServiceNames() {
            return m_serviceNames;
        }

        // com.sun.star.task.XJobExecutor:
        public void trigger(String action)
    {
        switch (action) {
        case "actionOne":
            ActionOneDialog actionOneDialog = new ActionOneDialog(m_xContext);
            actionOneDialog.show();
            break;
        default:
            DialogHelper.showErrorMessage(m_xContext, null, "Unknown action: " + action);
        }
        
    }

}

What I do not understand, is how to start my Swing App in this class?

发布评论

评论列表(0)

  1. 暂无评论