diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.uexml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.uexml
index 16ea1f17..bdf91ab4 100644
--- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.uexml
+++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.uexml
@@ -99,12 +99,12 @@
-
+
-
+
@@ -285,7 +285,7 @@
-
+
diff --git a/CSharp/Engines/WindowsForms/Engines/UniversalEditor.Engines.WindowsForms/MainWindow.cs b/CSharp/Engines/WindowsForms/Engines/UniversalEditor.Engines.WindowsForms/MainWindow.cs
index 6b1c1db8..1f0feb67 100644
--- a/CSharp/Engines/WindowsForms/Engines/UniversalEditor.Engines.WindowsForms/MainWindow.cs
+++ b/CSharp/Engines/WindowsForms/Engines/UniversalEditor.Engines.WindowsForms/MainWindow.cs
@@ -273,6 +273,10 @@ namespace UniversalEditor.Engines.WindowsForms
}
tsi = tsmi;
}
+ else if (item is CommandPlaceholderCommandItem)
+ {
+ throw new NotImplementedException();
+ }
else if (item is SeparatorCommandItem)
{
tsi = new ToolStripSeparator();
@@ -588,6 +592,14 @@ namespace UniversalEditor.Engines.WindowsForms
smi.NativeControls.Add(tsmi);
}
+ else if (item is PlaceholderMenuItem)
+ {
+ ActionMenuItem[] amis = Engine.CurrentEngine.CreateMenuItemsFromPlaceholder(item as PlaceholderMenuItem);
+ foreach (ActionMenuItem ami in amis)
+ {
+ RecursiveLoadCustomMenuItems(ami, tsiParent);
+ }
+ }
}
private ToolStripMenuItem GetToolStripMenuItemFromUniversalMenuItem(ActionMenuItem ami)
diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/CommandItem.cs b/CSharp/Libraries/UniversalEditor.UserInterface/CommandItem.cs
index e0775aa5..8dd98df5 100644
--- a/CSharp/Libraries/UniversalEditor.UserInterface/CommandItem.cs
+++ b/CSharp/Libraries/UniversalEditor.UserInterface/CommandItem.cs
@@ -18,6 +18,16 @@ namespace UniversalEditor.UserInterface
mvarCommandID = commandID;
}
}
+ public class CommandPlaceholderCommandItem : CommandItem
+ {
+ private string mvarPlaceholderID = String.Empty;
+ public string PlaceholderID { get { return mvarPlaceholderID; } set { mvarPlaceholderID = value; } }
+
+ public CommandPlaceholderCommandItem(string placeholderID)
+ {
+ mvarPlaceholderID = placeholderID;
+ }
+ }
public class SeparatorCommandItem : CommandItem
{
}
diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs
index b78cf9c2..560179c5 100644
--- a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs
+++ b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs
@@ -640,7 +640,7 @@ namespace UniversalEditor.UserInterface
MarkupTagElement tag = (el as MarkupTagElement);
if (tag == null) continue;
- InitializeMainMenuItem(tag, cmd);
+ InitializeCommandBarItem(tag, cmd, null);
}
}
@@ -658,7 +658,7 @@ namespace UniversalEditor.UserInterface
{
MarkupTagElement tagItem = (elItem as MarkupTagElement);
if (tagItem == null) continue;
- InitializeMainMenuItem(tagItem, null);
+ InitializeCommandBarItem(tagItem, null, null);
}
}
@@ -923,30 +923,15 @@ namespace UniversalEditor.UserInterface
{
MarkupTagElement tagItem = (elItem as MarkupTagElement);
if (tagItem == null) continue;
- switch (tagItem.FullName)
- {
- case "CommandReference":
- {
- MarkupAttribute attCommandID = tagItem.Attributes["CommandID"];
- if (attCommandID != null)
- {
- cb.Items.Add(new CommandReferenceCommandItem(attCommandID.Value));
- }
- break;
- }
- case "Separator":
- {
- cb.Items.Add(new SeparatorCommandItem());
- break;
- }
- }
+
+ InitializeCommandBarItem(tagItem, null, cb);
}
}
mvarCommandBars.Add(cb);
}
- private void InitializeCommandBarItem(MarkupTagElement tag, CommandBar parent)
+ private void InitializeCommandBarItem(MarkupTagElement tag, Command parent, CommandBar parentCommandBar)
{
CommandItem item = null;
switch (tag.FullName)
@@ -960,29 +945,12 @@ namespace UniversalEditor.UserInterface
}
break;
}
- case "Separator":
+ case "CommandPlaceholder":
{
- item = new SeparatorCommandItem();
- break;
- }
- }
-
- if (item != null)
- {
- parent.Items.Add(item);
- }
- }
- private void InitializeMainMenuItem(MarkupTagElement tag, Command parent)
- {
- CommandItem item = null;
- switch (tag.FullName)
- {
- case "CommandReference":
- {
- MarkupAttribute attCommandID = tag.Attributes["CommandID"];
- if (attCommandID != null)
+ MarkupAttribute attPlaceholderID = tag.Attributes["PlaceholderID"];
+ if (attPlaceholderID != null)
{
- item = new CommandReferenceCommandItem(attCommandID.Value);
+ item = new CommandPlaceholderCommandItem(attPlaceholderID.Value);
}
break;
}
@@ -997,7 +965,14 @@ namespace UniversalEditor.UserInterface
{
if (parent == null)
{
- mvarMainMenu.Items.Add(item);
+ if (parentCommandBar != null)
+ {
+ parentCommandBar.Items.Add(item);
+ }
+ else
+ {
+ mvarMainMenu.Items.Add(item);
+ }
}
else
{
@@ -1321,5 +1296,18 @@ namespace UniversalEditor.UserInterface
return false;
}
public abstract bool ShowCustomOptionDialog(ref CustomOption.CustomOptionCollection customOptions, string title = null, EventHandler aboutButtonClicked = null);
+
+ public virtual ActionMenuItem[] CreateMenuItemsFromPlaceholder(PlaceholderMenuItem pmi)
+ {
+ List list = new List();
+ switch (pmi.PlaceholderID)
+ {
+ case "RecentFiles":
+ {
+ break;
+ }
+ }
+ return list.ToArray();
+ }
}
}
diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs b/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs
index 1817b521..1aec5c21 100644
--- a/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs
+++ b/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs
@@ -143,6 +143,7 @@ namespace UniversalEditor.UserInterface
}
}
}
+
public class ActionMenuItem : MenuItem
{
private string mvarTitle = String.Empty;
@@ -180,4 +181,14 @@ namespace UniversalEditor.UserInterface
{
}
+ public class PlaceholderMenuItem : MenuItem
+ {
+ private string mvarPlaceholderID = String.Empty;
+ public string PlaceholderID { get { return mvarPlaceholderID; } set { mvarPlaceholderID = value; } }
+
+ public PlaceholderMenuItem(string placeholderID)
+ {
+ mvarPlaceholderID = placeholderID;
+ }
+ }
}