summaryrefslogtreecommitdiffstats
path: root/khtml/java/kjavaapplet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/java/kjavaapplet.cpp')
-rw-r--r--khtml/java/kjavaapplet.cpp288
1 files changed, 288 insertions, 0 deletions
diff --git a/khtml/java/kjavaapplet.cpp b/khtml/java/kjavaapplet.cpp
new file mode 100644
index 000000000..2269bc756
--- /dev/null
+++ b/khtml/java/kjavaapplet.cpp
@@ -0,0 +1,288 @@
+/* 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.
+ */
+
+#include "kjavaappletwidget.h"
+#include "kjavaappletcontext.h"
+
+#include <klocale.h>
+#include <kdebug.h>
+#include <kparts/browserextension.h>
+
+
+
+class KJavaAppletPrivate
+{
+public:
+ bool reallyExists;
+ QString className;
+ QString appName;
+ QString baseURL;
+ QString codeBase;
+ QString archives;
+ QSize size;
+ QString windowName;
+ KJavaApplet::AppletState state;
+ bool failed;
+
+ KJavaAppletWidget* UIwidget;
+};
+
+
+KJavaApplet::KJavaApplet( KJavaAppletWidget* _parent,
+ KJavaAppletContext* _context )
+ : params()
+{
+ d = new KJavaAppletPrivate;
+
+ d->UIwidget = _parent;
+ d->state = UNKNOWN;
+ d->failed = false;
+
+ if( _context )
+ setAppletContext( _context );
+
+ d->reallyExists = false;
+}
+
+KJavaApplet::~KJavaApplet()
+{
+ if ( d->reallyExists )
+ context->destroy( this );
+
+ delete d;
+}
+
+bool KJavaApplet::isCreated()
+{
+ return d->reallyExists;
+}
+
+void KJavaApplet::setAppletContext( KJavaAppletContext* _context )
+{
+ context = _context;
+ context->registerApplet( this );
+}
+
+void KJavaApplet::setAppletClass( const QString& _className )
+{
+ d->className = _className;
+}
+
+QString& KJavaApplet::appletClass()
+{
+ return d->className;
+}
+
+QString& KJavaApplet::parameter( const QString& name )
+{
+ return params[ name ];
+}
+
+void KJavaApplet::setParameter( const QString& name, const QString& value )
+{
+ params.insert( name, value );
+}
+
+QMap<QString,QString>& KJavaApplet::getParams()
+{
+ return params;
+}
+
+void KJavaApplet::setBaseURL( const QString& baseURL )
+{
+ d->baseURL = baseURL;
+}
+
+QString& KJavaApplet::baseURL()
+{
+ return d->baseURL;
+}
+
+void KJavaApplet::setCodeBase( const QString& codeBase )
+{
+ d->codeBase = codeBase;
+}
+
+QString& KJavaApplet::codeBase()
+{
+ return d->codeBase;
+}
+
+void KJavaApplet::setSize( QSize size )
+{
+ d->size = size;
+}
+
+QSize KJavaApplet::size()
+{
+ return d->size;
+}
+
+void KJavaApplet::setArchives( const QString& _archives )
+{
+ d->archives = _archives;
+}
+
+QString& KJavaApplet::archives()
+{
+ return d->archives;
+}
+
+void KJavaApplet::resizeAppletWidget( int width, int height )
+{
+ kdDebug(6100) << "KJavaApplet, id = " << id << ", ::resizeAppletWidget to " << width << ", " << height << endl;
+
+ QStringList sl;
+ sl.push_back( QString::number( 0 ) ); // applet itself has id 0
+ sl.push_back( QString( "eval" ) ); // evaluate next script
+ sl.push_back( QString::number( KParts::LiveConnectExtension::TypeString ) );
+ sl.push_back( QString( "this.setAttribute('WIDTH',%1);this.setAttribute('HEIGHT',%2)" ).arg( width ).arg( height ) );
+ jsData( sl );
+}
+
+void KJavaApplet::setAppletName( const QString& name )
+{
+ d->appName = name;
+}
+
+void KJavaApplet::setWindowName( const QString& title )
+{
+ d->windowName = title;
+}
+
+QString& KJavaApplet::getWindowName()
+{
+ return d->windowName;
+}
+
+QString& KJavaApplet::appletName()
+{
+ return d->appName;
+}
+
+void KJavaApplet::create( )
+{
+ if ( !context->create( this ) )
+ setFailed();
+ d->reallyExists = true;
+}
+
+void KJavaApplet::init()
+{
+ context->init( this );
+}
+
+void KJavaApplet::start()
+{
+ context->start( this );
+}
+
+void KJavaApplet::stop()
+{
+ context->stop( this );
+}
+
+int KJavaApplet::appletId()
+{
+ return id;
+}
+
+void KJavaApplet::setAppletId( int _id )
+{
+ id = _id;
+}
+
+void KJavaApplet::stateChange( const int newStateInt ) {
+ AppletState newState = (AppletState)newStateInt;
+ bool ok = false;
+ if (d->failed) {
+ return;
+ }
+ switch ( newState ) {
+ case CLASS_LOADED:
+ ok = (d->state == UNKNOWN);
+ break;
+ case INSTANCIATED:
+ if (ok) {
+ showStatus(i18n("Initializing Applet \"%1\"...").arg(appletName()));
+ }
+ ok = (d->state == CLASS_LOADED);
+ break;
+ case INITIALIZED:
+ ok = (d->state == INSTANCIATED);
+ if (ok) {
+ showStatus(i18n("Starting Applet \"%1\"...").arg(appletName()));
+ start();
+ }
+ break;
+ case STARTED:
+ ok = (d->state == INITIALIZED || d->state == STOPPED);
+ if (ok) {
+ showStatus(i18n("Applet \"%1\" started").arg(appletName()));
+ }
+ break;
+ case STOPPED:
+ ok = (d->state == INITIALIZED || d->state == STARTED);
+ if (ok) {
+ showStatus(i18n("Applet \"%1\" stopped").arg(appletName()));
+ }
+ break;
+ case DESTROYED:
+ ok = true;
+ break;
+ default:
+ break;
+ }
+ if (ok) {
+ d->state = newState;
+ } else {
+ kdError(6100) << "KJavaApplet::stateChange : don't want to switch from state "
+ << d->state << " to " << newState << endl;
+ }
+}
+
+void KJavaApplet::showStatus(const QString &msg) {
+ QStringList args;
+ args << msg;
+ context->processCmd("showstatus", args);
+}
+
+void KJavaApplet::setFailed() {
+ d->failed = true;
+}
+
+bool KJavaApplet::isAlive() const {
+ return (
+ !d->failed
+ && d->state >= INSTANCIATED
+ && d->state < STOPPED
+ );
+}
+
+KJavaApplet::AppletState KJavaApplet::state() const {
+ return d->state;
+}
+
+bool KJavaApplet::failed() const {
+ return d->failed;
+}
+
+#include "kjavaapplet.moc"