JBoolean JXFontCharSetMenu::SetCharSet ( const JCharacter* charSet ) { JIndex newIndex = 0; const JIndex count = GetItemCount(); for (JIndex i=1; i<=count; i++) { if (GetItemText(i) == charSet) { newIndex = i; break; } } if (newIndex > 0) { itsCurrIndex = newIndex; itsCharSet = charSet; SetPopupChoice(itsCurrIndex); if (itsBroadcastChangeFlag) { Broadcast(CharSetChanged(itsCharSet)); } return kJTrue; } else { return kJFalse; } }
void SCNodeMenu::SetNodeIndex ( const JIndex node ) { itsNodeIndex = node; SetPopupChoice(itsNodeIndex); if (itsBroadcastNodeChangeFlag) { Broadcast(NodeChanged(itsNodeIndex)); } }
void JXDisplayMenu::Receive ( JBroadcaster* sender, const Message& message ) { const JPtrArray<JXDisplay>* displayList = (JXGetApplication())->GetDisplayList(); if (sender == this && message.Is(JXMenu::kNeedsUpdate)) { Broadcast(DisplayNeedsUpdate()); CheckItem(itsDisplayIndex); } else if (sender == this && message.Is(JXMenu::kItemSelected)) { const JXMenu::ItemSelected* selection = dynamic_cast<const JXMenu::ItemSelected*>(&message); assert( selection != NULL ); ChooseDisplay(selection->GetIndex()); } else if (sender == const_cast<JPtrArray<JXDisplay>*>(displayList)) { // we do this no matter what change occurs BuildMenu(); } else if (sender == itsNewDisplayDialog && message.Is(JXDialogDirector::kDeactivated)) { const JXDialogDirector::Deactivated* info = dynamic_cast<const JXDialogDirector::Deactivated*>(&message); assert( info != NULL ); if (info->Successful()) { itsDisplayIndex = itsNewDisplayDialog->GetDisplayIndex(); Broadcast(DisplayChanged(itsDisplayIndex)); } SetPopupChoice(itsDisplayIndex); itsNewDisplayDialog = NULL; } else { JXTextMenu::Receive(sender, message); } }
JBoolean SCComponentMenu::SetCompIndex ( const JIndex compIndex ) { JIndex menuIndex; if (CompIndexToMenuIndex(compIndex, &menuIndex)) { itsMenuIndex = menuIndex; SetPopupChoice(itsMenuIndex); if (itsBroadcastCompChangeFlag) { Broadcast(ComponentChanged(compIndex)); } return kJTrue; } else { return kJFalse; } }
void SCComponentMenu::Receive ( JBroadcaster* sender, const Message& message ) { JBroadcaster* compList = itsCircuit->GetComponentList(); // insure that it isn't const if (sender == this && message.Is(JXMenu::kNeedsUpdate)) { itsBroadcastCompChangeFlag = kJFalse; Broadcast(ComponentNeedsUpdate()); CheckItem(itsMenuIndex); itsBroadcastCompChangeFlag = kJTrue; } else if (sender == this && message.Is(JXMenu::kItemSelected)) { const JXMenu::ItemSelected* selection = dynamic_cast<const JXMenu::ItemSelected*>(&message); assert( selection != NULL ); itsMenuIndex = selection->GetIndex(); JIndex compIndex; const JBoolean ok = MenuIndexToCompIndex(itsMenuIndex, &compIndex); assert( ok ); Broadcast(ComponentChanged(compIndex)); } else if (sender == compList) { JIndex compIndex; const JBoolean ok = MenuIndexToCompIndex(itsMenuIndex, &compIndex); BuildCompList(); if (!ok) { itsMenuIndex = 1; } else if (message.Is(JOrderedSetT::kElementsInserted)) { const JOrderedSetT::ElementsInserted* info = dynamic_cast<const JOrderedSetT::ElementsInserted*>(&message); assert( info != NULL && info->GetCount() == 1 ); info->AdjustIndex(&compIndex); const JBoolean ok = CompIndexToMenuIndex(compIndex, &itsMenuIndex); assert( ok ); } else if (message.Is(JOrderedSetT::kElementsRemoved)) { const JOrderedSetT::ElementsRemoved* info = dynamic_cast<const JOrderedSetT::ElementsRemoved*>(&message); assert( info != NULL && info->GetCount() == 1 ); if (info->AdjustIndex(&compIndex)) { const JBoolean ok = CompIndexToMenuIndex(compIndex, &itsMenuIndex); assert( ok ); } else { itsMenuIndex = 1; } } else if (message.Is(JOrderedSetT::kElementMoved)) { const JOrderedSetT::ElementMoved* info = dynamic_cast<const JOrderedSetT::ElementMoved*>(&message); assert( info != NULL ); info->AdjustIndex(&compIndex); const JBoolean ok = CompIndexToMenuIndex(compIndex, &itsMenuIndex); assert( ok ); } else if (message.Is(JOrderedSetT::kElementsSwapped)) { const JOrderedSetT::ElementsSwapped* info = dynamic_cast<const JOrderedSetT::ElementsSwapped*>(&message); assert( info != NULL ); info->AdjustIndex(&compIndex); const JBoolean ok = CompIndexToMenuIndex(compIndex, &itsMenuIndex); assert( ok ); } else if (message.Is(JOrderedSetT::kSorted)) { assert( 0 ); } // nothing extra required for JOrderedSetT::kElementChanged const JIndex savedIndex = itsMenuIndex; BuildMenu(); itsMenuIndex = savedIndex; if (itsCompList->IndexValid(itsMenuIndex)) { SetPopupChoice(itsMenuIndex); } } else { JXTextMenu::Receive(sender, message); } }
void SCNodeMenu::Receive ( JBroadcaster* sender, const Message& message ) { JBroadcaster* nodeList = itsCircuit->GetNodeList(); // insure that it isn't const if (sender == this && message.Is(JXMenu::kNeedsUpdate)) { itsBroadcastNodeChangeFlag = kJFalse; Broadcast(NodeNeedsUpdate()); CheckItem(itsNodeIndex); itsBroadcastNodeChangeFlag = kJTrue; } else if (sender == this && message.Is(JXMenu::kItemSelected)) { const JXMenu::ItemSelected* selection = dynamic_cast<const JXMenu::ItemSelected*>(&message); assert( selection != NULL ); itsNodeIndex = selection->GetIndex(); Broadcast(NodeChanged(itsNodeIndex)); } else if (sender == nodeList) { if (message.Is(JOrderedSetT::kElementsInserted)) { const JOrderedSetT::ElementsInserted* info = dynamic_cast<const JOrderedSetT::ElementsInserted*>(&message); assert( info != NULL && info->GetCount() == 1 ); info->AdjustIndex(&itsNodeIndex); } else if (message.Is(JOrderedSetT::kElementsRemoved)) { const JOrderedSetT::ElementsRemoved* info = dynamic_cast<const JOrderedSetT::ElementsRemoved*>(&message); assert( info != NULL && info->GetCount() == 1 ); if (!info->AdjustIndex(&itsNodeIndex)) { itsNodeIndex = 1; } } else if (message.Is(JOrderedSetT::kElementMoved)) { const JOrderedSetT::ElementMoved* info = dynamic_cast<const JOrderedSetT::ElementMoved*>(&message); assert( info != NULL ); info->AdjustIndex(&itsNodeIndex); } else if (message.Is(JOrderedSetT::kElementsSwapped)) { const JOrderedSetT::ElementsSwapped* info = dynamic_cast<const JOrderedSetT::ElementsSwapped*>(&message); assert( info != NULL ); info->AdjustIndex(&itsNodeIndex); } else if (message.Is(JOrderedSetT::kSorted)) { assert( 0 ); } // nothing extra required for JOrderedSetT::kElementChanged const JIndex savedNode = itsNodeIndex; BuildMenu(); itsNodeIndex = savedNode; SetPopupChoice(itsNodeIndex); } else { JXTextMenu::Receive(sender, message); } }