00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#include "kjavaappletwidget.h"
00023
#include "kjavaappletcontext.h"
00024
00025
#include <klocale.h>
00026
#include <kdebug.h>
00027
00028
00029
00030
class KJavaAppletPrivate
00031 {
00032
public:
00033
bool reallyExists;
00034
QString className;
00035
QString appName;
00036
QString baseURL;
00037
QString codeBase;
00038
QString archives;
00039
QSize size;
00040
QString windowName;
00041 KJavaApplet::AppletState state;
00042
bool failed;
00043
00044 KJavaAppletWidget* UIwidget;
00045 };
00046
00047
00048 KJavaApplet::KJavaApplet( KJavaAppletWidget* _parent,
00049 KJavaAppletContext* _context )
00050 : params()
00051 {
00052 d =
new KJavaAppletPrivate;
00053
00054 d->UIwidget = _parent;
00055 d->state = UNKNOWN;
00056 d->failed =
false;
00057
00058
if( _context )
00059 setAppletContext( _context );
00060
00061 d->reallyExists =
false;
00062 }
00063
00064 KJavaApplet::~KJavaApplet()
00065 {
00066
if ( d->reallyExists )
00067 context->destroy(
this );
00068
00069
delete d;
00070 }
00071
00072
bool KJavaApplet::isCreated()
00073 {
00074
return d->reallyExists;
00075 }
00076
00077
void KJavaApplet::setAppletContext( KJavaAppletContext* _context )
00078 {
00079 context = _context;
00080 context->registerApplet(
this );
00081 }
00082
00083
void KJavaApplet::setAppletClass(
const QString& _className )
00084 {
00085 d->className = _className;
00086 }
00087
00088
QString& KJavaApplet::appletClass()
00089 {
00090
return d->className;
00091 }
00092
00093
QString& KJavaApplet::parameter(
const QString& name )
00094 {
00095
return params[
name ];
00096 }
00097
00098
void KJavaApplet::setParameter(
const QString& name,
const QString& value )
00099 {
00100 params.insert( name, value );
00101 }
00102
00103
QMap<QString,QString>& KJavaApplet::getParams()
00104 {
00105
return params;
00106 }
00107
00108
void KJavaApplet::setBaseURL(
const QString& baseURL )
00109 {
00110 d->baseURL = baseURL;
00111 }
00112
00113
QString& KJavaApplet::baseURL()
00114 {
00115
return d->baseURL;
00116 }
00117
00118
void KJavaApplet::setCodeBase(
const QString& codeBase )
00119 {
00120 d->codeBase = codeBase;
00121 }
00122
00123
QString& KJavaApplet::codeBase()
00124 {
00125
return d->codeBase;
00126 }
00127
00128
void KJavaApplet::setSize(
QSize size )
00129 {
00130 d->size = size;
00131 }
00132
00133
QSize KJavaApplet::size()
00134 {
00135
return d->size;
00136 }
00137
00138
void KJavaApplet::setArchives(
const QString& _archives )
00139 {
00140 d->archives = _archives;
00141 }
00142
00143
QString& KJavaApplet::archives()
00144 {
00145
return d->archives;
00146 }
00147
00148
void KJavaApplet::resizeAppletWidget(
int width,
int height )
00149 {
00150
kdDebug(6100) <<
"KJavaApplet, id = " <<
id <<
", ::resizeAppletWidget to " << width <<
", " << height <<
endl;
00151
00152
if( d->UIwidget )
00153 d->UIwidget->resize( width, height );
00154 }
00155
00156
void KJavaApplet::setAppletName(
const QString& name )
00157 {
00158 d->appName =
name;
00159 }
00160
00161
void KJavaApplet::setWindowName(
const QString& title )
00162 {
00163 d->windowName = title;
00164 }
00165
00166
QString& KJavaApplet::getWindowName()
00167 {
00168
return d->windowName;
00169 }
00170
00171
QString& KJavaApplet::appletName()
00172 {
00173
return d->appName;
00174 }
00175
00176
void KJavaApplet::create( )
00177 {
00178
if ( !context->create(
this ) )
00179 setFailed();
00180 d->reallyExists =
true;
00181 }
00182
00183
void KJavaApplet::init()
00184 {
00185 context->init(
this );
00186 }
00187
00188
void KJavaApplet::start()
00189 {
00190 context->start(
this );
00191 }
00192
00193
void KJavaApplet::stop()
00194 {
00195 context->stop(
this );
00196 }
00197
00198
int KJavaApplet::appletId()
00199 {
00200
return id;
00201 }
00202
00203
void KJavaApplet::setAppletId(
int _id )
00204 {
00205
id = _id;
00206 }
00207
00208
void KJavaApplet::stateChange(
const int newStateInt ) {
00209 AppletState newState = (AppletState)newStateInt;
00210
bool ok =
false;
00211
if (d->failed) {
00212
return;
00213 }
00214
switch ( newState ) {
00215
case CLASS_LOADED:
00216 ok = (d->state == UNKNOWN);
00217
break;
00218
case INSTANCIATED:
00219
if (ok) {
00220 showStatus(i18n(
"Initializing Applet \"%1\"...").arg(appletName()));
00221 }
00222 ok = (d->state == CLASS_LOADED);
00223
break;
00224
case INITIALIZED:
00225 ok = (d->state == INSTANCIATED);
00226
if (ok) {
00227 showStatus(i18n(
"Starting Applet \"%1\"...").arg(appletName()));
00228 start();
00229 }
00230
break;
00231
case STARTED:
00232 ok = (d->state == INITIALIZED || d->state == STOPPED);
00233
if (ok) {
00234 showStatus(i18n(
"Applet \"%1\" started").arg(appletName()));
00235 }
00236
break;
00237
case STOPPED:
00238 ok = (d->state == INITIALIZED || d->state == STARTED);
00239
if (ok) {
00240 showStatus(i18n(
"Applet \"%1\" stopped").arg(appletName()));
00241 }
00242
break;
00243
case DESTROYED:
00244 ok =
true;
00245
break;
00246
default:
00247
break;
00248 }
00249
if (ok) {
00250 d->state = newState;
00251 }
else {
00252
kdError(6100) <<
"KJavaApplet::stateChange : don't want to switch from state "
00253 << d->state <<
" to " << newState <<
endl;
00254 }
00255 }
00256
00257
void KJavaApplet::showStatus(
const QString &msg) {
00258
QStringList args;
00259 args << msg;
00260 context->processCmd(
"showstatus", args);
00261 }
00262
00263
void KJavaApplet::setFailed() {
00264 d->failed =
true;
00265 }
00266
00267
bool KJavaApplet::isAlive()
const {
00268
return (
00269 !d->failed
00270 && d->state >= INSTANCIATED
00271 && d->state < STOPPED
00272 );
00273 }
00274
00275 KJavaApplet::AppletState KJavaApplet::state()
const {
00276
return d->state;
00277 }
00278
00279
bool KJavaApplet::failed()
const {
00280
return d->failed;
00281 }
00282
00283
#include "kjavaapplet.moc"