Implemented java_authenticate (duh!). Uses appearance manager text controls to implement a pretty convincing password dialog.

This commit is contained in:
beard%netscape.com 1999-09-04 01:57:57 +00:00
parent a3839fe2da
commit 6b9763c789

View File

@ -33,8 +33,10 @@
#include <Files.h>
#include <Dialogs.h>
#include <Appearance.h>
#include <Resources.h>
extern MRJConsole* theConsole;
extern short thePluginRefnum;
static Boolean appearanceManagerExists()
{
@ -120,9 +122,72 @@ static Boolean java_exit(JMSessionRef session, SInt32 status)
return false; /* not allowed in a plugin. */
}
static void getItemText(DialogPtr dialog, DialogItemIndex index, ResType textTag, char str[256])
{
ControlHandle control;
if (::GetDialogItemAsControl(dialog, index, &control) == noErr) {
Size textSize;
::GetControlDataSize(control, kControlNoPart, textTag, &textSize);
if (textSize > 255) textSize = 255;
::GetControlData(control, kControlNoPart, textTag, textSize, (Ptr)str, &textSize);
str[textSize] = '\0';
}
}
static ControlHandle getItemControl(DialogPtr dialog, DialogItemIndex index)
{
ControlHandle control;
if (::GetDialogItemAsControl(dialog, index, &control) == noErr)
return control;
else
return NULL;
}
enum {
kUserNameIndex = 3,
kPasswordIndex,
kAuthenticationDialog = 128
};
static Boolean java_authenticate(JMSessionRef session, const char *url, const char *realm, char userName[255], char password[255])
{
return false;
Boolean result = false;
if (thePluginRefnum != -1) {
// ensure resources come from the plugin (yuck!).
short oldRefnum = ::CurResFile();
::UseResFile(thePluginRefnum);
DialogRecord storage;
DialogPtr dialog = ::GetNewDialog(kAuthenticationDialog, &storage, WindowPtr(-1));
if (dialog != NULL) {
// set up default buttons.
::SetDialogDefaultItem(dialog, kStdOkItemIndex);
::SetDialogCancelItem(dialog, kStdCancelItemIndex);
::SetDialogTracksCursor(dialog, true);
// set up default keyboard focus.
ControlHandle userNameControl = getItemControl(dialog, kUserNameIndex);
if (userNameControl != NULL)
::SetKeyboardFocus(dialog, userNameControl, kControlFocusNextPart);
::ShowWindow(dialog);
DialogItemIndex itemHit = 0;
do {
::ModalDialog(ModalFilterUPP(NULL), &itemHit);
} while (itemHit != 1 && itemHit != 2);
if (itemHit == 1) {
getItemText(dialog, kUserNameIndex, kControlEditTextTextTag, userName);
getItemText(dialog, kPasswordIndex, kControlEditTextPasswordTag, password);
result = true;
}
::CloseDialog(dialog);
::UseResFile(oldRefnum);
}
}
return result;
}
static void java_lowmem(JMSessionRef session)