Beispiel #1
0
        void CreateMenuToolBar()
        {
            var about = new Commands.About();
            var quit  = new Commands.Quit();

            if (Platform.Supports <MenuBar>())
            {
                var saveSettingsItem = new CheckMenuItem {
                    Text = "Save Selected Section"
                };
                saveSettingsItem.Bind(c => c.Checked, TestApplication.Settings, s => s.SaveInitialSection);

                var fileCommand = new Command {
                    MenuText = "File Command", Shortcut = Application.Instance.CommonModifier | Keys.F
                };
                fileCommand.Executed += (sender, e) => Log.Write(sender, "Executed");
                var editCommand = new Command {
                    MenuText = "Edit Command", Shortcut = Keys.Shift | Keys.E
                };
                editCommand.Executed += (sender, e) => Log.Write(sender, "Executed");
                var viewCommand = new Command {
                    MenuText = "View Command", Shortcut = Keys.Control | Keys.Shift | Keys.V
                };
                viewCommand.Executed += (sender, e) => Log.Write(sender, "Executed");
                var windowCommand = new Command {
                    MenuText = "Window Command"
                };
                windowCommand.Executed += (sender, e) => Log.Write(sender, "Executed");

                var crashCommand = new Command {
                    MenuText = "Test Exception"
                };
                crashCommand.Executed += (sender, e) =>
                {
                    throw new InvalidOperationException("This is the exception message");
                };

                var subMenu = new SubMenuItem {
                    Text = "Sub Menu"
                };
                subMenu.Items.Add(new ButtonMenuItem {
                    Text = "Item 1"
                });
                subMenu.Items.Add(new ButtonMenuItem {
                    Text = "Item 2"
                });
                subMenu.Items.Add(new ButtonMenuItem {
                    Text = "Item 3"
                });

                var file = new SubMenuItem {
                    Text = "&File", Items = { saveSettingsItem, fileCommand, crashCommand }
                };
                var edit = new SubMenuItem {
                    Text = "&Edit", Items = { editCommand, subMenu }
                };
                var view = new SubMenuItem {
                    Text = "&View", Items = { viewCommand }
                };
                var window = new SubMenuItem {
                    Text = "&Window", Order = 1000, Items = { windowCommand }
                };

                if (Platform.Supports <CheckMenuItem>())
                {
                    edit.Items.AddSeparator();

                    var checkMenuItem1 = new CheckMenuItem {
                        Text = "Check Menu Item", Shortcut = Keys.Shift | Keys.K
                    };
                    checkMenuItem1.Click          += (sender, e) => Log.Write(sender, "Click, {0}, Checked: {1}", checkMenuItem1.Text, checkMenuItem1.Checked);
                    checkMenuItem1.CheckedChanged += (sender, e) => Log.Write(sender, "CheckedChanged, {0}: {1}", checkMenuItem1.Text, checkMenuItem1.Checked);
                    edit.Items.Add(checkMenuItem1);

                    var checkMenuItem2 = new CheckMenuItem {
                        Text = "Initially Checked Menu Item", Checked = true
                    };
                    checkMenuItem2.Click          += (sender, e) => Log.Write(sender, "Click, {0}, Checked: {1}", checkMenuItem2.Text, checkMenuItem2.Checked);
                    checkMenuItem2.CheckedChanged += (sender, e) => Log.Write(sender, "CheckedChanged, {0}: {1}", checkMenuItem2.Text, checkMenuItem2.Checked);
                    edit.Items.Add(checkMenuItem2);

                    var checkMenuItem3 = new CheckCommand {
                        MenuText = "Check Command", Shortcut = Keys.Shift | Keys.K
                    };
                    checkMenuItem3.Executed       += (sender, e) => Log.Write(sender, "Executed, {0}, Checked: {1}", checkMenuItem3.MenuText, checkMenuItem3.Checked);
                    checkMenuItem3.CheckedChanged += (sender, e) => Log.Write(sender, "CheckedChanged, {0}: {1}", checkMenuItem3.MenuText, checkMenuItem3.Checked);
                    edit.Items.Add(checkMenuItem3);

                    checkMenuItem1.Click += (sender, e) => checkMenuItem3.Checked = !checkMenuItem3.Checked;
                }

                if (Platform.Supports <RadioMenuItem>())
                {
                    edit.Items.AddSeparator();

                    RadioMenuItem controller = null;
                    for (int i = 0; i < 5; i++)
                    {
                        var radio = new RadioMenuItem(controller)
                        {
                            Text = "Radio Menu Item " + (i + 1)
                        };
                        if (controller == null)
                        {
                            radio.Checked = true;                             // check the first item initially
                            controller    = radio;
                        }
                        radio.Click          += (sender, e) => Log.Write(radio, "Click, {0}, Checked: {1}", radio.Text, radio.Checked);
                        radio.CheckedChanged += (sender, e) => Log.Write(radio, "CheckedChanged, {0}: {1}", radio.Text, radio.Checked);
                        edit.Items.Add(radio);
                    }

                    edit.Items.AddSeparator();

                    RadioCommand commandController = null;
                    for (int i = 0; i < 2; i++)
                    {
                        var radio = new RadioCommand {
                            MenuText = "Radio Command " + (i + 1), Controller = commandController
                        };
                        if (commandController == null)
                        {
                            radio.Checked     = true;                         // check the first item initially
                            commandController = radio;
                        }
                        radio.Executed       += (sender, e) => Log.Write(radio, "Executed, {0}, Checked: {1}", radio.MenuText, radio.Checked);
                        radio.CheckedChanged += (sender, e) => Log.Write(radio, "CheckedChanged, {0}: {1}", radio.MenuText, radio.Checked);
                        edit.Items.Add(radio);
                    }
                }

                edit.Items.AddSeparator();
                var hiddenItem = new ButtonMenuItem {
                    Text = "This button should not be visible!", Visible = false
                };
                var toggleHiddenItem = new ButtonMenuItem {
                    Text = "Toggle Hidden Item"
                };
                toggleHiddenItem.Click += (sender, e) => hiddenItem.Visible = !hiddenItem.Visible;
                edit.Items.Add(hiddenItem);
                edit.Items.Add(toggleHiddenItem);


                Menu = new MenuBar
                {
                    Items =
                    {
                        // custom top-level menu items
                        file, edit, view, window
                    },
                    ApplicationItems =
                    {
                        // custom menu items for the application menu (Application on OS X, File on others)
                        new Command        {
                            MenuText = "Application command"
                        },
                        new ButtonMenuItem {
                            Text = "Application menu item"
                        }
                    },
                    HelpItems =
                    {
                        new Command {
                            MenuText = "Help Command"
                        }
                    },
                    QuitItem  = quit,
                    AboutItem = about
                };
            }

            if (Platform.Supports <ToolBar>())
            {
                // create and set the toolbar
                ToolBar = new ToolBar();

                ToolBar.Items.Add(about);
                if (Platform.Supports <CheckToolItem>())
                {
                    ToolBar.Items.Add(new SeparatorToolItem {
                        Type = SeparatorToolItemType.Divider
                    });
                    ToolBar.Items.Add(LogEvents(new CheckToolItem {
                        Text = "Check", Image = TestIcons.TestImage
                    }));
                }
                ToolBar.Items.Add(new SeparatorToolItem {
                    Type = SeparatorToolItemType.Space
                });
                ButtonToolItem clickButton = LogEvents(new ButtonToolItem {
                    Text = "Click Me", Image = TestIcons.Logo
                });
                ToolBar.Items.Add(clickButton);
                if (Platform.Supports <RadioToolItem>())
                {
                    ToolBar.Items.Add(new SeparatorToolItem {
                        Type = SeparatorToolItemType.FlexibleSpace
                    });
                    ToolBar.Items.Add(LogEvents(new RadioToolItem {
                        Text = "Radio1", Image = TestIcons.Logo, Checked = true
                    }));
                    ToolBar.Items.Add(LogEvents(new RadioToolItem {
                        Text = "Radio2", Image = TestIcons.TestImage
                    }));
                    ToolBar.Items.Add(LogEvents(new RadioToolItem {
                        Text = "Radio3 (Disabled)", Image = TestIcons.TestImage, Enabled = false
                    }));
                }

                // add an invisible button and separator and allow them to be toggled.
                var invisibleButton = LogEvents(new ButtonToolItem {
                    Text = "Invisible", Visible = false
                });
                var sep = new SeparatorToolItem {
                    Type = SeparatorToolItemType.Divider, Visible = false
                };
                ToolBar.Items.Add(sep);
                ToolBar.Items.Add(invisibleButton);
                clickButton.Click += (sender, e) =>
                {
                    invisibleButton.Visible = !invisibleButton.Visible;
                    sep.Visible             = invisibleButton.Visible;
                };
            }
        }