diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia/Palette/PaletteEditor.uexml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia/Palette/PaletteEditor.uexml new file mode 100644 index 00000000..ba51bbf3 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia/Palette/PaletteEditor.uexml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj index 06cfc6c6..c7843cc4 100644 --- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj @@ -661,6 +661,7 @@ + @@ -688,6 +689,7 @@ + diff --git a/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.Designer.cs b/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.Designer.cs index dafb92a0..4458d288 100644 --- a/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.Designer.cs +++ b/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.Designer.cs @@ -45,6 +45,10 @@ namespace UniversalEditor.Plugins.Multimedia.UserInterface.Editors.Multimedia.Pa cInfo.Layout = new BoxLayout(Orientation.Vertical); this.Controls.Add(cInfo, new BoxLayout.Constraints(false, false)); + Context.AttachCommandEventHandler("PaletteEditor_ContextMenu_Add", PaletteEditor_ContextMenu_Add_Click); + Context.AttachCommandEventHandler("PaletteEditor_ContextMenu_Change", PaletteEditor_ContextMenu_Change_Click); + Context.AttachCommandEventHandler("PaletteEditor_ContextMenu_Delete", PaletteEditor_ContextMenu_Delete_Click); + txtColorName = new TextBox(); txtColorName.KeyDown += txtColorName_KeyDown; cInfo.Controls.Add(txtColorName, new BoxLayout.Constraints(false, true)); diff --git a/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.cs b/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.cs index a5f98b2a..9cadd872 100644 --- a/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.cs +++ b/CSharp/Plugins.UserInterface/UniversalEditor.Plugins.Multimedia.UserInterface/Editors/Multimedia/Palette/PaletteEditor.cs @@ -57,6 +57,53 @@ namespace UniversalEditor.Plugins.Multimedia.UserInterface.Editors.Multimedia.Pa InitializeComponent(); } + private void PaletteEditor_ContextMenu_Add_Click(object sender, EventArgs e) + { + PaletteObjectModel palette = (ObjectModel as PaletteObjectModel); + if (palette == null) return; + + ColorDialog dlg = new ColorDialog(); + if (dlg.ShowDialog() == DialogResult.OK) + { + BeginEdit(); + palette.Entries.Add(new PaletteEntry(dlg.SelectedColor)); + EndEdit(); + } + } + private void PaletteEditor_ContextMenu_Change_Click(object sender, EventArgs e) + { + PaletteObjectModel palette = (ObjectModel as PaletteObjectModel); + if (palette == null || SelectedEntry == null) return; + + ColorDialog dlg = new ColorDialog(); + dlg.SelectedColor = SelectedEntry.Color; + + if (dlg.ShowDialog() == DialogResult.OK) + { + BeginEdit(); + SelectedEntry.Color = dlg.SelectedColor; + EndEdit(); + + Refresh(); + } + } + private void PaletteEditor_ContextMenu_Delete_Click(object sender, EventArgs e) + { + PaletteObjectModel palette = (ObjectModel as PaletteObjectModel); + if (palette == null || SelectedEntry == null) return; + + if (MessageDialog.ShowDialog("Do you wish to delete the selected color?", "Delete Selected Color", MessageDialogButtons.YesNo, MessageDialogIcon.Warning) == DialogResult.Yes) + { + BeginEdit(); + palette.Entries.Remove(SelectedEntry); + EndEdit(); + + SelectedEntry = null; + + Refresh(); + } + } + public PaletteEntry HitTest(Vector2D location) { PaletteObjectModel palette = (ObjectModel as PaletteObjectModel); @@ -104,19 +151,30 @@ namespace UniversalEditor.Plugins.Multimedia.UserInterface.Editors.Multimedia.Pa { SelectedEntry = HitTest(e.Location); Refresh(); + + if (SelectedEntry != null) + { + ContextMenuCommandID = "PaletteEditor_ContextMenu_Selected"; + } + else + { + ContextMenuCommandID = "PaletteEditor_ContextMenu_Unselected"; + } } private void cc_MouseDoubleClick(object sender, MBS.Framework.UserInterface.Input.Mouse.MouseEventArgs e) { SelectedEntry = HitTest(e.Location); - - ColorDialog dlg = new ColorDialog(); - dlg.SelectedColor = SelectedEntry.Color; - if (dlg.ShowDialog() == DialogResult.OK) + if (SelectedEntry != null) { - BeginEdit(); - SelectedEntry.Color = dlg.SelectedColor; - EndEdit(); + ColorDialog dlg = new ColorDialog(); + dlg.SelectedColor = SelectedEntry.Color; + if (dlg.ShowDialog() == DialogResult.OK) + { + BeginEdit(); + SelectedEntry.Color = dlg.SelectedColor; + EndEdit(); + } } } diff --git a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/Palette/PaletteEntry.cs b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/Palette/PaletteEntry.cs index 9bcd702c..c514f0b4 100644 --- a/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/Palette/PaletteEntry.cs +++ b/CSharp/Plugins/UniversalEditor.Plugins.Multimedia/ObjectModels/Multimedia/Palette/PaletteEntry.cs @@ -22,7 +22,13 @@ namespace UniversalEditor.ObjectModels.Multimedia.Palette } } - private string mvarName = String.Empty; + public PaletteEntry(Color color = default(Color), string name = "") + { + Name = name; + Color = color; + } + + private string mvarName = String.Empty; public string Name { get { return mvarName; } set { mvarName = value; } } public Color Color { get; set; } = Color.Empty;