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;