home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-09-12 | 2.8 KB | 135 lines | [TEXT/CWIE] |
- /*
- CLookupWindow.cp
-
- Copyright © 1995 Alastair Rankine.
- All Rights Reserved.
- */
-
- #include "CLookupWindow.h"
- #include "ResourceIDs.h"
- #include "MessageIDs.h"
- #include "CAddEntryAction.h"
- #include "CChangeEntryAction.h"
- #include "CEntryList.h"
- #include "CEntry.h"
-
- void CLookupWindow::Register()
- {
- URegistrar::RegisterClass(kClassID, (ClassCreatorFunc)CreateFromStream);
- }
-
- CLookupWindow::CLookupWindow(LStream *inStream)
- : LWindow(inStream)
- , mDocument(nil)
- , mField1(nil)
- , mField2(nil)
- , mField3(nil)
- , mField4(nil)
- , mList(nil)
- {
- }
- void CLookupWindow::FinishCreateSelf()// Override
- {
- LPane::FinishCreateSelf();
-
- mDocument = (CLookupDocument *)mSuperCommander;
- Assert_(mDocument);
-
- mField1 = (LEditField *)FindPaneByID(kField1ID);
- Assert_(mField1);
-
- mField2 = (LEditField *)FindPaneByID(kField2ID);
- Assert_(mField2);
-
- mField3 = (LEditField *)FindPaneByID(kField3ID);
- Assert_(mField3);
-
- mField4 = (LEditField *)FindPaneByID(kField4ID);
- Assert_(mField4);
-
- LControl * addButton = (LControl *)FindPaneByID(kNewButtonID);
- Assert_(addButton);
- addButton->AddListener(this);
-
- mChangeButton = (LControl *)FindPaneByID(kChangeButtonID);
- Assert_(mChangeButton);
- mChangeButton->AddListener(this);
-
- mList = (CEntryList *)FindPaneByID(kListID);
- Assert_(mList);
- mList->AddListener(this);
- mList->SetLookupDocument(mDocument);
-
- SetLatentSub(mList);
- }
-
- void CLookupWindow::ListenToMessage(MessageT inMessage, void * inParam)
- {
- switch(inMessage)
- {
- case msg_AddButton:
- {
- CEntry data;
-
- GetFieldData(data);
- Assert_(mDocument);
- PostAction(new CAddEntryAction(*mDocument, data));
- break;
- }
- case msg_ChangeButton:
- {
- CEntry data;
-
- GetFieldData(data);
- Assert_(mDocument);
- Assert_(mList);
- PostAction(new CChangeEntryAction(*mDocument, mList->GetSelection(), data));
- break;
- }
- case msg_CellSelected:
- {
- Assert_(mDocument);
- const CEntry ** theEntry = (const CEntry **)inParam;
- Assert_(theEntry);
- SetFieldData(*theEntry? **theEntry : sEmptyEntry);
-
- mChangeButton->Enable();
- break;
- }
- case msg_CellDeselected:
- {
- SetFieldData(sEmptyEntry);
-
- mChangeButton->Disable();
- break;
- }
- default:
- break;
- }
- }
- void CLookupWindow::SetFieldData(const CEntry & record)
- {
- mField1->SetDescriptor(record.GetField(0).ToPString());
- mField2->SetDescriptor(record.GetField(1).ToPString());
- mField3->SetDescriptor(record.GetField(2).ToPString());
- mField4->SetDescriptor(record.GetField(3).ToPString());
- }
-
- void CLookupWindow::GetFieldData(CEntry & rec)
- {
- Str255 buf;
-
- rec.SetField(0, mField1->GetDescriptor(buf));
- rec.SetField(1, mField2->GetDescriptor(buf));
- rec.SetField(2, mField3->GetDescriptor(buf));
- rec.SetField(3, mField4->GetDescriptor(buf));
- }
-
-
- CLookupWindow * CLookupWindow::CreateFromStream(LStream *inStream)
- {
- return new CLookupWindow(inStream);
- }
-
-
-