DialogWindowTransitPtr loadCreditsWindow(const BoostPath& WindowDefinitionFile) { FCFileType::FCPtrStore NewContainers; NewContainers = FCFileHandler::the()->read(WindowDefinitionFile); for(FCFileType::FCPtrStore::iterator Itor(NewContainers.begin()) ; Itor!= NewContainers.end() ; ++Itor) { if((*Itor)->getType() == DialogWindow::getClassType()) { return DialogWindowTransitPtr(dynamic_pointer_cast<DialogWindow>(*Itor)); } } SFATAL << "Failed to load Builder Credits Window definition from file: " << WindowDefinitionFile.string() << std::endl; return DialogWindowTransitPtr(NULL); }
OSG_BEGIN_NAMESPACE DialogWindowTransitPtr createFCEditorDialog(FieldContainer* fc, CommandManagerPtr CmdManager, const std::string& editorName) { DialogWindowRefPtr TheDialog = DialogWindow::create(); //Create the FieldEditorComponent FieldContainerEditorComponentRefPtr TheEditor = FieldContainerEditorFactory::the()->createDefaultEditor(fc, CmdManager); ScrollPanelRefPtr EditorScrollPanel = ScrollPanel::create(); EditorScrollPanel->setPreferredSize(Vec2f(300,400)); EditorScrollPanel->setViewComponent(TheEditor); //Ok button ButtonRefPtr ConfirmButton = Button::create(); ConfirmButton->setText("Ok"); ConfirmButton->connectActionPerformed(boost::bind(&DialogWindow::handleConfirmButtonAction, TheDialog.get(), _1)); SpringLayoutRefPtr DialogLayout = OSG::SpringLayout::create(); //EditorScrollPanel DialogLayout->putConstraint(SpringLayoutConstraints::NORTH_EDGE, EditorScrollPanel, 2, SpringLayoutConstraints::NORTH_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::SOUTH_EDGE, EditorScrollPanel, -15, SpringLayoutConstraints::NORTH_EDGE, ConfirmButton); DialogLayout->putConstraint(SpringLayoutConstraints::EAST_EDGE, EditorScrollPanel, 1, SpringLayoutConstraints::EAST_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::WEST_EDGE, EditorScrollPanel, 2, SpringLayoutConstraints::WEST_EDGE, TheDialog); //ConfirmButton DialogLayout->putConstraint(SpringLayoutConstraints::SOUTH_EDGE, ConfirmButton, -15, SpringLayoutConstraints::SOUTH_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::HORIZONTAL_CENTER_EDGE, ConfirmButton, 0, SpringLayoutConstraints::HORIZONTAL_CENTER_EDGE, TheDialog); TheDialog->setLayout(DialogLayout); TheDialog->setPreferredSize(Vec2f(330.0f, 475.0f)); TheDialog->pushToChildren(EditorScrollPanel); TheDialog->pushToChildren(ConfirmButton); return DialogWindowTransitPtr(TheDialog); }
DialogWindowUnrecPtr DialogWindow::createColorChooserDialog(const std::string& Title, const std::string& Message, bool showAlpha, ColorSelectionModelPtr colorModel, bool showCancel, const std::string& ConfirmBtnText, const std::string& CancelBtnText) { ButtonRefPtr ConfirmationButton = OSG::Button::create(); ButtonRefPtr CancelButton; //Confirm Button ConfirmationButton->setText(ConfirmBtnText); ConfirmationButton->setMinSize(ConfirmationButton->getPreferredSize()); ConfirmationButton->setPreferredSize(ConfirmationButton->getRequestedSize()); if(showCancel) { //Cancel Button CancelButton = OSG::Button::create(); CancelButton->setText(CancelBtnText); CancelButton->setMinSize(CancelButton->getPreferredSize()); CancelButton->setPreferredSize(CancelButton->getRequestedSize()); } // Create Panel for top half of SplitPanel TextAreaRefPtr MessagePanelText = OSG::TextArea::create(); MessagePanelText->setBorders(NULL); MessagePanelText->setPreferredSize(Vec2f(100.0f, 100.0f)); MessagePanelText->setBackgrounds(NULL); MessagePanelText->setWrapStyleWord(true); MessagePanelText->setText(Message); MessagePanelText->setEditable(false); // Create Panel for bottom half of SplitPanel PanelRefPtr MessageButtonPanel = OSG::Panel::createEmpty(); FlowLayoutRefPtr MessagePanelBottomLayout = OSG::FlowLayout::create(); MessageButtonPanel->pushToChildren(ConfirmationButton); if(showCancel) MessageButtonPanel->pushToChildren(CancelButton); MessageButtonPanel->setLayout(MessagePanelBottomLayout); MessageButtonPanel->setPreferredSize(Vec2f(450,75)); PanelRefPtr MessagePanel = OSG::Panel::createEmpty(); SpringLayoutRefPtr MessagePanelLayout = SpringLayout::create(); MessagePanel->pushToChildren(MessagePanelText); MessagePanel->pushToChildren(MessageButtonPanel); MessagePanel->setLayout(MessagePanelLayout); ColorChooserRefPtr TheColorChooser = ColorChooser::create(); TheColorChooser->setSelectionModel(colorModel); //Internals Layout and constraints DialogWindowUnrecPtr TheDialog = DialogWindow::create(); SpringLayoutRefPtr DialogLayout = SpringLayout::create(); //Message Text DialogLayout->putConstraint(SpringLayoutConstraints::NORTH_EDGE, MessagePanelText, 5, SpringLayoutConstraints::NORTH_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::EAST_EDGE, MessagePanelText, -5, SpringLayoutConstraints::EAST_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::WEST_EDGE, MessagePanelText, 5, SpringLayoutConstraints::WEST_EDGE, TheDialog); //Color Chooser DialogLayout->putConstraint(SpringLayoutConstraints::NORTH_EDGE, TheColorChooser, 5, SpringLayoutConstraints::SOUTH_EDGE, MessagePanelText); DialogLayout->putConstraint(SpringLayoutConstraints::EAST_EDGE, TheColorChooser, -5, SpringLayoutConstraints::EAST_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::WEST_EDGE, TheColorChooser, 5, SpringLayoutConstraints::WEST_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::SOUTH_EDGE, TheColorChooser, -5, SpringLayoutConstraints::NORTH_EDGE, MessageButtonPanel); //Button Panel DialogLayout->putConstraint(SpringLayoutConstraints::WEST_EDGE, MessageButtonPanel, 0, SpringLayoutConstraints::WEST_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::EAST_EDGE, MessageButtonPanel, 0, SpringLayoutConstraints::EAST_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::SOUTH_EDGE, MessageButtonPanel, 20, SpringLayoutConstraints::SOUTH_EDGE, TheDialog); //Create the Dialog box TheDialog->setLayout(DialogLayout); TheDialog->setPreferredSize(Vec2f(350,400)); TheDialog->pushToChildren(MessagePanelText); TheDialog->pushToChildren(TheColorChooser); TheDialog->pushToChildren(MessageButtonPanel); TheDialog->setTitle(Title); //Attach listener to the Confirm button ConfirmationButton->addActionListener(&TheDialog->_ConfirmButtonListener); if(showCancel) { //Attach listener to the Cancel button CancelButton->addActionListener(&TheDialog->_CancelButtonListener); } return DialogWindowTransitPtr(TheDialog); }
DialogWindowTransitPtr createFCTreeEditorDialog (FieldContainer* fc, CommandManagerPtr CmdManager, const std::string& editorName) { DialogWindowRefPtr TheDialog = DialogWindow::create(); //Create the FieldEditorComponent FieldContainerEditorComponentRefPtr TheEditor = FieldContainerEditorFactory::the()->createDefaultEditor(fc, CmdManager); ScrollPanelRefPtr EditorScrollPanel = ScrollPanel::create(); EditorScrollPanel->setViewComponent(TheEditor); //Field Container Tree Model FieldContainerTreeModelRefPtr TheTreeModel = FieldContainerTreeModel::create(); TheTreeModel->setRoot(fc); TheTreeModel->setShowInternalFields(true); TheTreeModel->setShowPtrFields(true); TheTreeModel->setShowDataFields(false); TheTreeModel->setShowParentPtrFields(false); TheTreeModel->setShowChildPtrFields(true); TheTreeModel->setShowAttachments(true); TheTreeModel->setShowCallbackFunctors(false); //Field Container Tree Component Generator FieldContainerFieldPathComponentGeneratorRefPtr TheTreeComponentGenerator = FieldContainerFieldPathComponentGenerator::create(); //Create the PopupMenu for the tree MenuItemRecPtr ExportMenuItem = MenuItem::create(); ExportMenuItem->setText("Export ..."); MenuItemRecPtr ImportMenuItem = MenuItem::create(); ImportMenuItem->setText("Import ..."); PopupMenuRecPtr TreePopupMenu = PopupMenu::create(); TreePopupMenu->addItem(ExportMenuItem); TreePopupMenu->addItem(ImportMenuItem); //Create the Field Container Tree TreeRefPtr TheTree = Tree::create(); TheTree->setPreferredSize(Vec2f(100, 500)); TheTree->setRootVisible(true); TheTree->setModel(TheTreeModel); TheTree->setCellGenerator(TheTreeComponentGenerator); TheTree->setPopupMenu(TreePopupMenu); TheTree->getSelectionModel()->connectSelectionAdded(boost::bind(&handleFCSelectionAdded, _1, TheTree.get(), EditorScrollPanel.get())); ExportMenuItem->connectActionPerformed(boost::bind(&handleTreeNodeExport, _1, TheTree.get())); ImportMenuItem->connectActionPerformed(boost::bind(&handleTreeNodeImport, _1, TheTree.get())); //TheDialog->addTransientObject(boost::any(TheTreeEditorSelectionListener)); ScrollPanelRefPtr TreeScrollPanel = ScrollPanel::create(); TreeScrollPanel->setViewComponent(TheTree); //Ok button ButtonRefPtr ConfirmButton = Button::create(); ConfirmButton->setText("Ok"); ConfirmButton->connectActionPerformed(boost::bind(&DialogWindow::handleConfirmButtonAction, TheDialog.get(), _1)); SpringLayoutRefPtr DialogLayout = OSG::SpringLayout::create(); //SplitPanel SplitPanelRefPtr TheSplitPanel = SplitPanel::create(); TheSplitPanel->setOrientation(SplitPanel::HORIZONTAL_ORIENTATION); TheSplitPanel->setDividerPosition(0.4f); TheSplitPanel->setDividerSize(5.0f); TheSplitPanel->setMaxDividerPosition(0.8f); TheSplitPanel->setMinDividerPosition(0.2f); TheSplitPanel->setMinComponent(TreeScrollPanel); TheSplitPanel->setMaxComponent(EditorScrollPanel); //TreeScrollPanel DialogLayout->putConstraint(SpringLayoutConstraints::NORTH_EDGE, TheSplitPanel, 2, SpringLayoutConstraints::NORTH_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::SOUTH_EDGE, TheSplitPanel, -15, SpringLayoutConstraints::NORTH_EDGE, ConfirmButton); DialogLayout->putConstraint(SpringLayoutConstraints::EAST_EDGE, TheSplitPanel, -2, SpringLayoutConstraints::EAST_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::WEST_EDGE, TheSplitPanel, 2, SpringLayoutConstraints::WEST_EDGE, TheDialog); //ConfirmButton DialogLayout->putConstraint(SpringLayoutConstraints::SOUTH_EDGE, ConfirmButton, -15, SpringLayoutConstraints::SOUTH_EDGE, TheDialog); DialogLayout->putConstraint(SpringLayoutConstraints::HORIZONTAL_CENTER_EDGE, ConfirmButton, 0, SpringLayoutConstraints::HORIZONTAL_CENTER_EDGE, TheDialog); TheDialog->setLayout(DialogLayout); TheDialog->setPreferredSize(Vec2f(750.0f, 600.0f)); TheDialog->pushToChildren(TheSplitPanel); TheDialog->pushToChildren(ConfirmButton); return DialogWindowTransitPtr(TheDialog); }