XTkPopUpButtonsTest.mesa
Copyright Ó 1991, 1992 by Xerox Corporation. All rights reserved.
Christian Jacobi, March 10, 1992 3:33 pm PST
DIRECTORY Commander, Rope, XTkHelpStrings, XTkHelpWidgets, XTkPopUps, Xl, XTk, XTkWidgets;
XTkPopUpButtonsTest: CEDAR MONITOR
IMPORTS Commander, Rope, XTkHelpStrings, XTkHelpWidgets, XTkPopUps, Xl, XTk, XTkWidgets ~
BEGIN
ApplicationEnterLeave: Xl.EventProcType = {
label: XTkWidgets.Widget ~ NARROW[clientData];
SELECT event.type FROM
leaveNotify => {
ev: Xl.LeaveNotifyEvent ~ NARROW[event];
XTkWidgets.SetStyleKey[label, NIL];
};
enterNotify => {
ev: Xl.EnterNotifyEvent ~ NARROW[event];
XTkWidgets.SetStyleKey[label, $BlackOnGray];
};
ENDCASE => {};
};
ApplicationButton2Hit: XTk.WidgetNotifyProc = {
text: Rope.ROPE ¬ NARROW[registerData];
label: XTkWidgets.Widget ¬ XTkWidgets.CreateLabel[text: Rope.Concat["selected: ", text]];
shell: XTkWidgets.Widget ¬ XTkWidgets.CreateShell[child: label, windowHeader: "XTkPopUpButtonsTest", standardMigration: TRUE];
XTkWidgets.RealizeShell[shell];
};
ApplicationDoWithPopShell: XTkPopUps.CreateWidgetProc = {
text: Rope.ROPE ¬ NARROW[closureData];
text1: Rope.ROPE ¬ Rope.Concat[text, "1"];
text2: Rope.ROPE ¬ Rope.Concat[text, "2"];
labtext: Rope.ROPE ¬ Rope.Concat["Label ", text];
buttext: Rope.ROPE ¬ Rope.Concat["Button ", text];
l1: XTkWidgets.Widget ¬ XTkWidgets.CreateLabel[text: labtext];
l2: XTkWidgets.Widget ¬ XTkWidgets.CreateButton[text: buttext, hitProc: ApplicationButton2Hit, registerData: buttext, help: buttext];
recurse1: XTkWidgets.Widget ¬ XTkPopUps.CreatePopUpButton[
text: "Recurse-1",
createMenu: NEW[XTkPopUps.WidgetCreateClosureRec ¬ [ApplicationDoWithPopShell, text1]]
];
recurse2: XTkWidgets.Widget ¬ XTkPopUps.CreatePopUpButton[
text: "Recurse-2",
createMenu: NEW[XTkPopUps.WidgetCreateClosureRec ¬ [ApplicationDoWithPopShell, text2]]
];
container: XTkWidgets.Widget ¬ XTkWidgets.CreateYStack[stack: LIST[l1, l2, recurse1, recurse2]];
XTk.AddPermanentMatch[l1,
[
proc: ApplicationEnterLeave,
handles: Xl.CreateEventFilter[enterNotify, leaveNotify],
tq: NIL,
data: l1
],
[enterWindow: TRUE, leaveWindow: TRUE]
];
XTkPopUps.RegisterBaseSelection[recurse1, ApplicationButton2Hit, Rope.Concat["Base ", text1]];
XTkPopUps.RegisterBaseSelection[recurse2, ApplicationButton2Hit, Rope.Concat["Base ", text2]];
RETURN [container];
};
Test: Commander.CommandProc ~ {
text: Rope.ROPE ¬ "Menu ";
baseButton: XTkWidgets.Widget ¬ XTkPopUps.CreatePopUpButton[
text: "The very base",
createMenu: NEW[XTkPopUps.WidgetCreateClosureRec ¬ [ApplicationDoWithPopShell, text]]
];
helpField: XTkWidgets.Widget ¬ XTkHelpWidgets.Create[].w;
container: XTkWidgets.Widget ¬ XTkWidgets.CreateYStack[[], LIST[baseButton, helpField]];
shell: XTkWidgets.Widget ¬ XTkWidgets.CreateShell[child: container, windowHeader: "X11Test", standardMigration: TRUE];
XTkPopUps.RegisterBaseSelection[baseButton, ApplicationButton2Hit, Rope.Flatten["the very base"]];
XTkHelpStrings.SetHandle[shell, XTkHelpStrings.GetHandle[helpField]];
XTkWidgets.RealizeShell[shell];
};
Commander.Register["XTkPopUpButtonsTest", Test, "test..."];
END.