summaryrefslogtreecommitdiffstats
path: root/tdehtml/java/kjavaappletwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdehtml/java/kjavaappletwidget.h')
-rw-r--r--tdehtml/java/kjavaappletwidget.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/tdehtml/java/kjavaappletwidget.h b/tdehtml/java/kjavaappletwidget.h
new file mode 100644
index 000000000..e84f96039
--- /dev/null
+++ b/tdehtml/java/kjavaappletwidget.h
@@ -0,0 +1,125 @@
+// -*- c++ -*-
+
+/* This file is part of the KDE project
+ *
+ * Copyright (C) 2000 Richard Moore <rich@kde.org>
+ * 2000 Wynn Wilkes <wynnw@caldera.com>
+ *
+ * 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 <tqwidget.h>
+#ifndef Q_WS_QWS //FIXME(?) I don't think this is possible with Qt Embedded
+#include "java/kjavaappletcontext.h"
+#include "java/kjavaapplet.h"
+#include <qxembed.h>
+#include <twinmodule.h>
+
+/**
+ * @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 TQWidget, 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( TQWidget* 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();
+
+ TQSize 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 (TQShowEvent *);
+
+private:
+ KJavaAppletWidgetPrivate* d;
+
+ KJavaApplet* m_applet;
+ KWinModule* m_kwm;
+ TQString m_swallowTitle;
+
+};
+
+#endif
+#endif // KJAVAAPPLETWIDGET_H
+