From ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- khtml/java/kjavaappletwidget.h | 125 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 khtml/java/kjavaappletwidget.h (limited to 'khtml/java/kjavaappletwidget.h') diff --git a/khtml/java/kjavaappletwidget.h b/khtml/java/kjavaappletwidget.h new file mode 100644 index 000000000..24973c648 --- /dev/null +++ b/khtml/java/kjavaappletwidget.h @@ -0,0 +1,125 @@ +// -*- c++ -*- + +/* This file is part of the KDE project + * + * Copyright (C) 2000 Richard Moore + * 2000 Wynn Wilkes + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef KJAVAAPPLETWIDGET_H +#define KJAVAAPPLETWIDGET_H + +#include +#ifndef Q_WS_QWS //FIXME(?) I don't think this is possible with Qt Embedded +#include "java/kjavaappletcontext.h" +#include "java/kjavaapplet.h" +#include +#include + +/** + * @short A widget for displaying Java applets + * + * KJavaAppletWidget provides support for the inclusion of Java applets + * in Qt and KDE applications. To create an applet, you must first create + * a context object in which it will run. There can be several applets and + * contexts in operation at a given time, for example in a web browser there + * would be one context object for each web page. Applets in the same context + * can communicate with each other, applets in different contexts cannot. + * Once you have created a KJavaAppletContext, you can create as many + * applets in it as you want. + * + * Once you have created the applet widget, you should access the applet() method + * to call the various setXXX methods to configure the applet, + * They correspond to the HTML tags used to embed applets in a web page. + * Once the applet is configured, call the create() method to set things in motion. + * The applet is running when it first appears, but you can start or stop it + * when you like (for example if it scrolls off the screen). + * + * This widget works by using the KJavaAppletServer, which fires off a + * Java server process with which it communicates using the + * KDE Java Applet Server (KJAS) protocol over stdin and stdout. + * The applet windows are swallowed and attached to the QWidget, but they are + * actually running in a different process. This has the advantage of robustness + * and reusability. The details of the communication are hidden from the user + * in the KJASAppletServer class. Normally only a single server process is used for + * all of the applets in a given application, this is all sorted automatically. + * The KJAS server is 100% pure Java, and should also prove useful for people + * wishing to add java support to other systems (for example a perl/Tk binding + * is perfectly feasible). All you need to do is implement the protocol and + * (optionally) swallow the applet windows. + * + * The applet support in KDE is still dependent on the KWin Window Manager. The + * applet swallowing will not work under other Window Managers. Hopefully this + * will be fixed in the future. + * + * For a description of the KJAS protocol, please see the KJAS_GRAMMAR.txt file. + * + * @author Richard J. Moore, rich@kde.org + * @author Wynn Wilkes, wynnw@caldera.com + */ + +class KJavaAppletWidgetPrivate; + +class KJavaAppletWidget : public QXEmbed +{ + Q_OBJECT +public: + KJavaAppletWidget( QWidget* parent=0, const char* name=0 ); + + ~KJavaAppletWidget(); + + /** + * Returns a pointer to the KJavaApplet. Use this to + * configure the applet's parameters. You can also + * use it to start and stop the Applet. + */ + KJavaApplet* applet() { return m_applet; } + + /** + * Tells the AppletServer to create, initialize, and + * show the Applet. + */ + void showApplet(); + + QSize sizeHint() const; + void resize( int, int ); + +protected slots: + /** + * This slot is called by KWin when new windows are added. We check + * to see if the window has the title we set. If so we embed it. + */ + void setWindow( WId w ); + +protected: + //The counter to generate ID's for the applets + static int appletCount; + void showEvent (QShowEvent *); + +private: + KJavaAppletWidgetPrivate* d; + + KJavaApplet* m_applet; + KWinModule* m_kwm; + QString m_swallowTitle; + +}; + +#endif +#endif // KJAVAAPPLETWIDGET_H + -- cgit v1.2.1