home *** CD-ROM | disk | FTP | other *** search
- /**************************************************************/
- /* Menu Test Program for IAccelerator */
- /* IMenu */
- /* IActionBarMenu */
- /* IPopUpMenu */
- /* ISystemMenu */
- /* IMenuItem */
- /* ITitle */
- /* IWindowIcon */
- /* */
- /* CHANGE ACTIVITY: */
- /* DATE: INITIAL: DESCRIPTION */
- /* */
- /* 071882 Peter Hoa Initial code */
- /* 090192 SPH Changes for Driver 3 */
- /**************************************************************/
-
- #include <tmenu.hpp>
- #include "tmenu.h"
-
- #include <imprintf.h>
-
- #define INCL_DOSDEVIOCTL
- // need os2.h for DosBeep() NOT for any PM stuff
- extern "C" {
- #include <os2.h>
- #include <stdio.h>
- }
-
-
- /**************************************************************/
- /* main() program entry point */
- /**************************************************************/
- void main()
- {
-
- imprintf("About to create TestWindow from Main\n");
-
- TestWindow theTestWindow(1, (IWindow*)0, (IWindow*)0, IRectangle());
-
- imprintf("About to run application\n");
-
- IApplication::current.run();
-
- }
-
-
-
- /**************************************************************/
- /* TestWindow Constructor */
- /**************************************************************/
- TestWindow :: TestWindow( unsigned long windowId, const IWindow* parentWindow,
- const IWindow* ownerWindow, const IRectangle& initialSize)
- : IFrameWindow(windowId, parentWindow, ownerWindow, initialSize),
-
- resmgr_exe(),
-
- tle(this, PSZ_TITLE_OBJ1, PSZ_TITLE_VIEW1,1),
-
- ac(),
- ac_title(ID_MENU_WITH_ACCEL_CTL, this),
-
- abmn(ID_MENU, this),
- sysmn(this),
-
- // The false as third parameter indicates that this
- // PopUp Menu should not be automatically deleted by
- // the IMenuHandler.
- ppumn(new IPopUpMenu(ID_POPUP, this, false)),
-
- ic_doc(ID_ICON_DOC,this,this,IRectangle(100,300,130,330), ID_ICON1,IIconControl::autosize),
- ic_hr(ID_ICON_HR,this,this,IRectangle(100,300,130,330), ID_ICON2,IIconControl::autosize),
- ic_inbasket(ID_ICON_INBASKET,this,this,IRectangle(100,300,130,330), ID_ICON3,IIconControl::autosize),
- ic_folder(ID_ICON_FOLDER,this,this,IRectangle(100,300,130,330), ID_ICON4,IIconControl::autosize),
-
- mni_text1(&(abmn), ID_MENU_TEXT1, "Text Menu Added",
- IMenuItem::defStyle,
- IMenuItem::checked | IMenuItem::framed),
-
- mni_text2(&(abmn), ID_MENU_TEXT2, PSZ_MENU_TEXT2,
- IMenuItem::Text),
-
- mni_text3(&(abmn), ID_MENU_TEXT3, PSZ_MENU_TEXT3,
- IMenuItem::Text, IMenuItem::subMenu),
- mni_system(&(sysmn), ID_MENU_TEXT4, "System Text Menu Added"),
- mni_popup(ppumn, ID_POPUP_TEXT, "Popup Text Item added"),
-
- mni_bitmap(&(abmn), ID_MENU_BITMAP1,
- IResourceId(ID_BITMAP1),
- IMenuItem::Bitmap),
- mni_bitmap2(&(abmn), ID_MENU_BITMAP2,
- resmgr_exe.loadBitmap(ID_BITMAP2)),
- mni_bitmap5(&(sysmn), ID_MENU_BITMAP5,
- resmgr_exe.loadBitmap(ID_BITMAP5) ),
-
- mni_popup_bitmap(ppumn, ID_MENU_BITMAP1,
- resmgr_exe.loadBitmap(ID_BITMAP1)),
-
- psttxt(new IStaticText(ID_STTXT1,
- this, this,
- IRectangle(100,20,600,70)) ),
-
- pef(new IEntryField(ID_ENTRYFIELD,
- this, this,
- IRectangle(20,100,400,120)) ),
-
- efpuHandler(),
-
- mni_AltABM(ppumn, ID_ACTION_ALT, "Switch to Alternate Action Bar Menu"),
- mni_DefABM(ppumn, ID_ALT_ACTION_SET_DEF, "Switch to Default Action Bar Menu"),
- defaultABMActive_(true)
-
- {
- imprintf("TestWindow Init list complete\n");
-
- // have to explicitly cast the this pointer because TestWindow has more than
- // one IHandler base class.
- addHandler((ICommandHandler *)this);
-
- pef -> setText(PSZ_MENU_TEXT2);
- pef -> setAlignment(IEntryField::left);
-
- // add the PopUp Menu handler to the entry field
- pef -> addHandler(&efpuHandler);
- // WM_COMMAND msg's from entry field PopUp go to the big command handler
- pef -> addHandler((ICommandHandler *)this);
-
- // no PM #defines needed
- psttxt->setAlignment(IStaticText::topLeftWrapped);
-
-
- addHandler((IMenuHandler *)this);
-
- imprintf("About to show() TestWindow from Cstor \n");
- show();
-
- }
-
- /**************************************************************/
- /* Destructor */
- /**************************************************************/
- TestWindow :: ~TestWindow()
- {
- if (psttxt) delete psttxt;
- if (pef) delete pef;
- if (ppumn) delete ppumn;
- }
-
-
- IPopUpMenu* TestWindow :: makePopUpMenu(const IMenuEvent& mnEvt)
- {
- ppumn->show(mnEvt.mousePosition());
- return ppumn;
- }
-
- void TestWindow :: menuShowing(const IMenuEvent& mnEvt,
- ISubMenu* psmnAboutToShow)
- {
-
- switch (psmnAboutToShow->id()) {
-
- case ID_POPUP:
- psmnAboutToShow->addSeparator();
- if (defaultABMActive()) {
- psmnAboutToShow->addItem(mni_AltABM);
- psmnAboutToShow->addItem(mni_popup);
- psmnAboutToShow->disableItem(ID_TITLE_TEXT);
- } else {
- psmnAboutToShow->addItem(mni_DefABM);
- psmnAboutToShow->addItem(mni_popup_bitmap);
- psmnAboutToShow->checkItem(ID_TITLE_TEXT);
- } /* endif */
- break;
-
-
- } /* endswitch */
- }
-
- //----------------------------------------------------
- // Member Functions for the Entry Field PopUp
- //----------------------------------------------------
-
- EFPopUpHandler :: EFPopUpHandler ()
- {
- alignment = IEntryField::left;
- }
-
- IPopUpMenu* EFPopUpHandler :: makePopUpMenu(const IMenuEvent& mnEvt)
- {
- // This PopUpMenu is created on the heap.
- // The IMenuHandler will delete when we're done with it.
- // The true flag on IPopUpMenu constructor is stored in the object
- // and used by the IMenuHandler to determine whether to delete
- // the returned IPopUpMenu*.
-
- IPopUpMenu* ppumn = new IPopUpMenu(ID_EF_POPUP,
- (IWindow*)mnEvt.window(),
- true);
- ppumn->show(mnEvt.mousePosition());
- return ppumn;
- }
-
- void EFPopUpHandler :: menuShowing(const IMenuEvent& mnEvt,
- ISubMenu* psmnAboutToShow)
- {
- // Remove the alignment choice that matches the current state.
- // ie. if text currently centered, then remove "Center" from
- // the PopUp Menu.
-
- imprintf("addSeparator for EFPU\n");
- psmnAboutToShow->addSeparator();
-
- switch (alignment) {
-
- case IEntryField::left:
- psmnAboutToShow->checkItem(ID_LEFT_JUST);
- break;
-
- case IEntryField::center:
- psmnAboutToShow->checkItem(ID_CENTER);
- break;
-
- case IEntryField::right:
- psmnAboutToShow->checkItem(ID_RIGHT_JUST);
- break;
- } /* endswitch */
- }
-
- void EFPopUpHandler :: menuSelected(const IMenuEvent& mnEvt)
- {
-
- // The following could have been done in the Command Handler,
- // but doing it here just to test menuSelected()
-
- switch (mnEvt.menuItemId()) {
-
- case ID_LEFT_JUST:
- alignment = IEntryField::left;
- break;
-
- case ID_CENTER:
- alignment = IEntryField::center;
- break;
-
- case ID_RIGHT_JUST:
- alignment = IEntryField::right;
- break;
- }
- }
-
-
- //-----------------------------------------------------
- // End of IEntryField PopUp functions
- //-----------------------------------------------------
-
- /**************************************************************/
- /* Command Event handler */
- /**************************************************************/
- Boolean TestWindow :: command(ICommandEvent& cmdevt)
- {
-
-
- switch (cmdevt.commandId()) {
-
- // First 3 cases are for handling selections from the
- // IEntryField PopUp Menu.
- case ID_LEFT_JUST:
- efpuHandler.alignment = IEntryField::left;
- pef->setAlignment(IEntryField::left);
- break;
-
- case ID_CENTER:
- efpuHandler.alignment = IEntryField::center;
- pef->setAlignment(IEntryField::center);
- break;
-
- case ID_RIGHT_JUST:
- efpuHandler.alignment = IEntryField::right;
- pef->setAlignment(IEntryField::right);
- break;
-
- case ID_MENU_TEXT1:
- psttxt -> setText("add text item selected");
- break;
- case ID_MENU_TEXT2:
- psttxt -> setText("Text item added to pulldown");
- break;
- case ID_MENU_TEXT3:
- psttxt -> setText("Text item added to ActionBar");
- break;
- case ID_MENU_TEXT4:
- psttxt -> setText("Text item added to SystmeMenu");
- break;
- case ID_MENU_BITMAP1:
- psttxt->setText("bitmap TBDOC bitmap item is selected");
- break;
- case ID_MENU_BITMAP2:
- psttxt->setText("bitmap PAYNOTE bitmap item is selected");
- break;
- case ID_MENU_BITMAP3:
- psttxt->setText("bitmap TEMPLATE bitmap item is selected");
- break;
- case ID_MENU_BITMAP4:
- psttxt->setText("bitmap TINBAS bitmap item is selected");
- break;
- case ID_MENU_BITMAP5:
- psttxt->setText("bitmap TCSBFORM bitmap is selected");
- break;
- case ID_POPUP_TEXT:
- psttxt -> setText("Text item added to PopUpMenu");
- break;
-
- case ID_WIN_ICON_HR: // testing setIcon(usIconResId, resmgr)
- // wndico.setIcon(ID_ICON2); // matches IPointerHandle also!!!
- break;
- case ID_WIN_ICON_IN: // testing setIcon(HPOINTER)
- // wndico.setIcon(hp_ic_inbasket);
- break;
- case ID_WIN_ICON_DOCMT: // testing icon()
- // wndico.setIcon(ic_doc.icon());
- break;
- case ID_WIN_ICON_FOLDER: // testing IWindow(pappwndOwner, HPOINTER)
- // IWindowIcon(this, ic_folder.icon());
- break;
-
- case ID_TITLE_OBJ: // testing objectText()
- psttxt -> setText(tle.objectText());
- break;
- case ID_TITLE_VIEW: // testing viewText()
- psttxt -> setText(tle.viewText());
- break;
- case ID_TITLE_VIEW_NUM: // testing viewNum()
- {
- IString str("View Number is: ");
- psttxt -> setText(str += IString(tle.viewNum()));
- break;
- }
- case ID_TITLE_TEXT: // testing titleText()
- psttxt -> setText(tle.text());
- break;
- case ID_TITLE_SET_OBJ2: // testing setObjectText(ulObjNameResId, resmgr)
- tle.setObjectText(PSZ_TITLE_OBJ2);
- break;
- case ID_TITLE_SET_OBJ1: // testing setObjectText(pszObjName)
- tle.setObjectText("1234567890123456789012345678901234567890");
- break;
- case ID_TITLE_SET_VIEW2: // testing setViewText(ulViewNameResId, resmgr)
- tle.setViewText(PSZ_TITLE_VIEW2);
- break;
- case ID_TITLE_SET_VIEW1: // testing setViewText(pszViewName)
- tle.setViewText("1234567890123456789012345678901234567890");
- break;
- case ID_TITLE_SET_VIEW_NUM2: // testing setViewNum(ulViewNum)
- tle.setViewNum(2);
- break;
- case ID_TITLE_SET_VIEW_NUM1:
- tle.setViewNum(1);
- break;
- case ID_TITLE_SET_TITLE2: // testing setTitleText(ulObjNameResId,
- // ulViewNameResId,ulViewNum,resmgr)
- tle.setTitleText(PSZ_TITLE_OBJ2, PSZ_TITLE_VIEW2, 2);
- break;
- case ID_TITLE_SET_TITLE1: // testing setTitleText(pszObjName,
- // pszViewName, ulViewNum)
- tle.setTitleText("Test Program", "Icon, Title, Accelerator, Action Bar/PopUp/System Menu",1L);
- break;
- case ID_TITLE_CONSTRUCT: // testing ITitle(pappwndOwner, pszObjName,
- // pszViewName, ulViewNum)
- ITitle(this,"Menu Related Test Program","IBMCLASS 2.1", 32);
- break;
-
-
-
- case ID_ACCEL_SET_SYS1: // testing setSystemAccel(haccel)
- ac.unsetAccel();
- break;
- case ID_ACCEL_SET_SYS2: // testing setSystemAccel(ulAccelResId, resmgr)
- ac.setAccel(ID_ALT_SYS_ACCEL1);
- break;
- case ID_ACCEL_SET_SYS3: // testing IAccelerator(ulAccelResId, resmgr)
- ac.setAccel(ID_ALT_SYS_ACCEL2);
- break;
- case ID_ACCEL_UNSET_SYS: // testing unsetSystemAccel()
- ac.unsetAccel();
- break;
-
- case ID_ACCEL_SET1: // testing setAccel(haccel) and accel()
- ac_title.setAccel(ID_MENU_WITH_ACCEL_CTL);
- break;
- case ID_ACCEL_SET2:
- ac_title.setAccel(ID_MENU_WITH_ACCEL);
- break;
- case ID_ACCEL_SET3:
- ac_title.setAccel(ID_MENU_WITH_ACCEL_CTL_ALT);
- break;
- case ID_ACCEL_UNSET: // testing unsetAccel()
-
- ac_title.unsetAccel();
- break;
- case ID_ACCEL_REMOVE: // testing removeAccel()
- ac_title.removeAccel();
- break;
- case ID_ACCEL_IS_SET: // testing isAccelSet()
-
- if (ac_title.isAccelSet()) {
- DosBeep(1000,200);
- } else {
- DosBeep(200,200);
- } /* endif */
- break;
-
-
-
- case ID_ACTION_ADD_ITEM_STRING1: // testing addItem to pulldown menu
- abmn.addItem(mni_text1, ID_ACTION_MENU);
- break;
- case ID_ACTION_ADD_ITEM_STRING2:
- abmn.addItem(mni_text1, ID_WINDOW_ICON);
- break;
- case ID_ACTION_ADD_ITEM_STRING3:
- abmn.addItem(mni_text1, ID_TITLE);
- break;
- case ID_ACTION_ADD_ITEM_STRING4:
- abmn.addItem(mni_text1, ID_ACCELERATOR);
- break;
- case ID_ACTION_ADD_ITEM_STRING5: // testing addItem to ActionBarMenu
- abmn.addItem(mni_text1);
- break;
- case ID_ACTION_ADD_ITEM_BITMAP:
- abmn.addItem(mni_bitmap, ID_ACTION_MENU);
- break;
- case ID_ACTION_ADD_SEP: // testing addSeparator
- abmn.addSeparator(ID_SEPARATOR,ID_ACTION_MENU);
- break;
- case ID_ACTION_DELETE: // testing deleteItem(ulItemId)
- abmn.deleteItem(ID_MENU_TEXT1);
- break;
- case ID_ACTION_IS_CHECKED:
- if (abmn.isItemChecked(ID_MENU_TEXT1)) {
- DosBeep(1000,200);
- } else {
- DosBeep(200,200);
- } /* endif */
- break;
- case ID_ACTION_CHECK:
- abmn.checkItem(ID_MENU_TEXT1);
- break;
- case ID_ACTION_UNCHECK:
- abmn.uncheckItem(ID_MENU_TEXT1);
- break;
- case ID_ACTION_IS_DISABLED:
- if (abmn.isItemDisabled(ID_MENU_TEXT1)) {
- DosBeep(1000,200);
- } else {
- DosBeep(200,200);
- } /* endif */
- break;
- case ID_ACTION_ENABLE:
- abmn.enableItem(ID_MENU_TEXT1);
- break;
- case ID_ACTION_DISABLE:
- abmn.disableItem(ID_MENU_TEXT1);
- break;
-
-
- case ID_POPUP_SHOW2: // testing show(IPoint)
- ppumn->show(IPoint(400,400));
- break;
- case ID_POPUP_ID: // testing id()
- {
- IString temp("ID of the popup is: ");
- psttxt->setText(temp + IString(ppumn->id()) );
- break;
- }
- case ID_POPUP_ADD_ITEM_STRING:
- ppumn->addItem(mni_popup, ID_POPUP);
- break;
- case ID_POPUP_ADD_ITEM_BITMAP:
- ppumn->addItem(mni_bitmap, ID_POPUP);
- break;
- case ID_POPUP_ADD_SEP:
- ppumn->addSeparator(ID_SEPARATOR, ID_POPUP);
- break;
- case ID_POPUP_DELETE:
- ppumn->deleteItem(ID_MENU_BITMAP1);
- break;
- case ID_POPUP_IS_CHECKED:
- if (ppumn->isItemChecked(ID_POPUP_TEXT)) {
- DosBeep(1000,200);
- } else {
- DosBeep(200,200);
- } /* endif */
- break;
- case ID_POPUP_CHECK:
- ppumn->checkItem(ID_POPUP_TEXT);
- break;
- case ID_POPUP_UNCHECK:
- ppumn->uncheckItem(ID_POPUP_TEXT);
- break;
- case ID_POPUP_IS_DISABLED:
- if (ppumn->isItemDisabled(ID_POPUP_TEXT)) {
- DosBeep(1000,200);
- } else {
- DosBeep(200,200);
- } /* endif */
- break;
- case ID_POPUP_ENABLE:
- ppumn->enableItem(ID_POPUP_TEXT);
- break;
- case ID_POPUP_DISABLE:
- ppumn->disableItem(ID_POPUP_TEXT);
- break;
-
-
- case ID_SYSTEM_ADD_ITEM_STRING:
- sysmn.addItem(mni_system);
- break;
- case ID_SYSTEM_ADD_ITEM_BITMAP:
- {
- sysmn.addItem(mni_bitmap5);
- break;
- }
- case ID_SYSTEM_ADD_SEP:
- sysmn.addSeparator(ID_SEPARATOR);
- break;
- case ID_SYSTEM_DELETE:
- sysmn.deleteItem(ID_MENU_BITMAP5);
- break;
- case ID_SYSTEM_IS_CHECKED:
- if (sysmn.isItemChecked(ID_MENU_TEXT4)) {
- DosBeep(1000,200);
- } else {
- DosBeep(200,200);
- } /* endif */
- break;
- case ID_SYSTEM_CHECK:
- break;
- case ID_SYSTEM_UNCHECK:
- sysmn.uncheckItem(ID_MENU_TEXT4);
- break;
- case ID_SYSTEM_IS_DISABLED:
- if (sysmn.isItemDisabled(ID_MENU_TEXT4)) {
- DosBeep(1000,200);
- } else {
- DosBeep(200,200);
- } /* endif */
- break;
- case ID_SYSTEM_ENABLE:
- sysmn.enableItem(ID_MENU_TEXT4);
- break;
- case ID_SYSTEM_DISABLE:
- sysmn.disableItem(ID_MENU_TEXT4);
- break;
-
- case ID_ACTION_ALT:
- abmn.setMenu(ID_MENU2);
- defaultABMActive_ = false;
- break;
-
- case ID_ALT_STRING_PULL_ADD: // testing IMenuItem constructor
- abmn.addItem(mni_text2,ID_ALT_STRING);
- break;
- case ID_ALT_STRING_PULL_REMOVE:
- abmn.deleteItem(ID_MENU_TEXT2);
- break;
- case ID_ALT_STRING_PULL_TEXT:
- psttxt->setText(mni_text2.text());
- break;
- case ID_ALT_STRING_PULL_SET_TEXT1:
- mni_text2.setText("PullDown text is changed");
- break;
- case ID_ALT_STRING_PULL_SET_TEXT2:
- mni_text2.setText(PSZ_MENU_TEXT2);
- break;
- case ID_ALT_STRING_PULL_FRAME: // testing setAttribute()
- mni_text2.setFramed();
- break;
- case ID_ALT_STRING_PULL_UNFRAME:
- mni_text2.setFramed(false);
- break;
- case ID_ALT_STRING_PULL_STYLE1:
- mni_text2.setLayout(IMenuItem::breakSeparator);
- break;
- case ID_ALT_STRING_PULL_STYLE2:
- mni_text2.setLayout(IMenuItem::normalLayout);
- break;
-
- case ID_ALT_STRING_AB_ADD:
- abmn.addItem(mni_text3);
- break;
- case ID_ALT_STRING_AB_REMOVE:
- abmn.deleteItem(ID_MENU_TEXT3);
- break;
- case ID_ALT_STRING_AB_TEXT:
- psttxt->setText(mni_text3.text());
- break;
- case ID_ALT_STRING_AB_SET_TEXT1:
- mni_text3.setText("ActionBar text is changed");
- break;
- case ID_ALT_STRING_AB_SET_TEXT2:
- mni_text3.setText(PSZ_MENU_TEXT3);
- break;
-
- case ID_ALT_BITMAP_ADD_PULLDOWN:
- abmn.addItem(mni_bitmap2, ID_ALT_BITMAP);
- break;
- case ID_ALT_BITMAP_REMOVE_PULLDOWN:
- // had been a removeItem()
- abmn.deleteItem(ID_MENU_BITMAP2);
- break;
- case ID_ALT_BITMAP_PULL_SETBITMAP1:
- mni_bitmap2.setBitMap(ID_BITMAP4);
- break;
- case ID_ALT_BITMAP_PULL_SETBITMAP2:
- mni_bitmap2.setBitMap(mni_bitmap2.bitMap());
- break;
-
- case ID_ALT_BITMAP_SET_ATTRIB1:
- mni_bitmap2.setFramed();
- break;
- case ID_ALT_BITMAP_SET_ATTRIB2:
- mni_bitmap2.setFramed(false);
- break;
-
- case ID_ALT_BITMAP_SET_STYLE1:
- mni_bitmap2.setLayout(IMenuItem::breakSeparator);
- break;
- case ID_ALT_BITMAP_SET_STYLE2:
- mni_bitmap2.setLayout(IMenuItem::normalLayout);
- break;
-
- case ID_ALT_BITMAP_ADD_ACTION:
- {
- // This bitmap persists because it uses resmgr_exe
- IMenuItem mni_bitmap3=IMenuItem(&(abmn),
- ID_MENU_BITMAP3,
- resmgr_exe.loadBitmap(ID_BITMAP3) );
- abmn.addItem(mni_bitmap3);
- break;
- }
- case ID_ALT_BITMAP_REMOVE_ACTION:
- abmn.deleteItem(ID_MENU_BITMAP3);
- break;
-
- case ID_ALT_ACTION_SET_DEF:
- abmn.setMenu(ID_MENU);
- defaultABMActive_ = true;
- break;
- default:
- return false;
- break;
-
- } /* endswitch */
-
- return true;
- }
-
-