JXTextEditor::JXTextEditor ( JXMenuBar* menuBar, JXScrollbarSet* scrollbarSet, JXContainer* enclosure, const HSizingOption hSizing, const VSizingOption vSizing, const JCoordinate x, const JCoordinate y, const JCoordinate w, const JCoordinate h ) : JXTEBase(kFullEditor, kJFalse, kJTrue, scrollbarSet, enclosure, hSizing, vSizing, x,y, w,h) { WantInput(kJTrue, kJTrue); ShouldAllowDragAndDrop(kJTrue); UseMultipleUndo(); SetLastSaveLocation(); (scrollbarSet->GetVScrollbar())->SetScrollDelay(0); // add the menus itsMenuBar = menuBar; AppendEditMenu(menuBar, kJTrue, kJTrue, kJTrue, kJTrue); AppendSearchReplaceMenu(menuBar); itsFontMenu = new JXFontNameMenu(kFontMenuTitleStr, menuBar, kFixedLeft, kFixedTop, 0,0, 10,10); assert( itsFontMenu != NULL ); menuBar->AppendMenu(itsFontMenu); ListenTo(itsFontMenu); itsSizeMenu = new JXFontSizeMenu(itsFontMenu, kSizeMenuTitleStr, menuBar, kFixedLeft, kFixedTop, 0,0, 10,10); assert( itsSizeMenu != NULL ); menuBar->AppendMenu(itsSizeMenu); ListenTo(itsSizeMenu); itsStyleMenu = new JXTEStyleMenu(this, menuBar, kFixedLeft, kFixedTop, 0,0, 10,10); assert( itsStyleMenu != NULL ); menuBar->AppendMenu(itsStyleMenu); // listen for TypeChanged ListenTo(this); }
CBTextEditor::CBTextEditor ( CBTextDocument* document, const JCharacter* fileName, JXMenuBar* menuBar, CBTELineIndexInput* lineInput, CBTEColIndexInput* colInput, JXScrollbarSet* scrollbarSet, JXContainer* enclosure, const HSizingOption hSizing, const VSizingOption vSizing, const JCoordinate x, const JCoordinate y, const JCoordinate w, const JCoordinate h ) : JXTEBase(kFullEditor, kJTrue, kJFalse, scrollbarSet, enclosure, hSizing, vSizing, x,y, w,h), itsLastModifiers(GetDisplay()) { itsDoc = document; ListenTo(itsDoc); UpdateWritable(fileName); itsLineInput = lineInput; itsLineInput->SetTE(this, colInput); itsColInput = colInput; itsColInput->SetTE(this); itsTokenStartList = JTEStyler::NewTokenStartList(); itsBalanceWhileTypingFlag = kJTrue; itsScrollToBalanceFlag = kJTrue; itsBeepWhenTypeUnbalancedFlag = kJTrue; itsSmartTabFlag = kJTrue; // create edit menu JXTextMenu* editMenu = AppendEditMenu(menuBar, kJTrue, kJTrue, kJTrue, kJTrue, kJTrue, kJTrue, kJFalse, kJFalse); const JSize editCount = editMenu->GetItemCount(); editMenu->ShowSeparatorAfter(editCount); itsExecScriptCmdIndex = editCount + 1; editMenu->AppendItem(kExecScriptStr, JXMenu::kPlainType, NULL, kExecScriptNMShortcutStr, kExecScriptAction); editMenu->SetItemImage(itsExecScriptCmdIndex, jx_run_script); editMenu->AppendItem(kExecScriptSubmenuStr); CreateScriptMenu(editMenu, editCount + 2); // create search menu JXTextMenu* searchMenu = AppendSearchReplaceMenu(menuBar); itsFirstSearchMenuItem = searchMenu->GetItemCount() + 1; searchMenu->ShowSeparatorAfter(itsFirstSearchMenuItem-1); searchMenu->AppendMenuItems(kSearchMenuStr, "CBTextEditor"); ListenTo(searchMenu); searchMenu->SetItemImage(itsFirstSearchMenuItem + kBalanceCmd, jcc_balance_braces); searchMenu->SetItemImage(itsFirstSearchMenuItem + kViewManPageCmd, jcc_view_man_page); // create menus when needed itsFnMenu = NULL; itsCompletionMenu = NULL; itsContextMenu = NULL; // font CBPrefsManager* prefsMgr = CBGetPrefsManager(); JString fontName; JSize fontSize; prefsMgr->GetDefaultFont(&fontName, &fontSize); SetFont(fontName, fontSize, kDefTabCharCount); // colors SetDefaultFontStyle(prefsMgr->GetColor(CBPrefsManager::kTextColorIndex)); SetBackColor(prefsMgr->GetColor(CBPrefsManager::kBackColorIndex)); SetFocusColor(GetBackColor()); SetCaretColor(prefsMgr->GetColor(CBPrefsManager::kCaretColorIndex)); SetSelectionColor(prefsMgr->GetColor(CBPrefsManager::kSelColorIndex)); SetSelectionOutlineColor(prefsMgr->GetColor(CBPrefsManager::kSelLineColorIndex)); // right margin itsDrawRightMarginFlag = kJFalse; itsRightMarginWidth = 80; itsRightMarginColor = prefsMgr->GetColor(CBPrefsManager::kRightMarginColorIndex); SetWhitespaceColor(itsRightMarginColor); // misc setup ShouldBroadcastCaretLocationChanged(kJTrue); UpdateTabHandling(); ListenTo(this); (scrollbarSet->GetVScrollbar())->SetScrollDelay(0); UseMultipleUndo(); SetLastSaveLocation(); ShouldAutoIndent(kJTrue); CBShouldAllowDragAndDrop(kJTrue); // new users expect it ShouldMoveToFrontOfText(kJTrue); itsLineInput->ShareEditMenu(this); itsColInput->ShareEditMenu(this); SetCharacterInWordFunction(CBMIsCharacterInWord); JTEKeyHandler* handler; CBInstallEmulator((CBGetPrefsManager())->GetEmulator(), this, &handler); }