diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.Designer.cs b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.Designer.cs
new file mode 100644
index 00000000..d27f18ea
--- /dev/null
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.Designer.cs
@@ -0,0 +1,114 @@
+namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
+{
+ partial class DataFormatBrowserPopup
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.txtSearch = new System.Windows.Forms.TextBox();
+ this.lv = new System.Windows.Forms.ListView();
+ this.chTitle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.chFilters = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.cmdClear = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // txtSearch
+ //
+ this.txtSearch.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtSearch.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtSearch.Location = new System.Drawing.Point(6, 7);
+ this.txtSearch.Name = "txtSearch";
+ this.txtSearch.Size = new System.Drawing.Size(277, 13);
+ this.txtSearch.TabIndex = 0;
+ this.txtSearch.TextChanged += new System.EventHandler(this.txtSearch_TextChanged);
+ this.txtSearch.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtSearch_KeyDown);
+ //
+ // lv
+ //
+ this.lv.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.lv.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+ this.chTitle,
+ this.chFilters});
+ this.lv.FullRowSelect = true;
+ this.lv.GridLines = true;
+ this.lv.HideSelection = false;
+ this.lv.Location = new System.Drawing.Point(0, 26);
+ this.lv.MultiSelect = false;
+ this.lv.Name = "lv";
+ this.lv.Size = new System.Drawing.Size(364, 183);
+ this.lv.TabIndex = 1;
+ this.lv.UseCompatibleStateImageBehavior = false;
+ this.lv.View = System.Windows.Forms.View.Details;
+ this.lv.ItemActivate += new System.EventHandler(this.lv_ItemActivate);
+ this.lv.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtSearch_KeyDown);
+ //
+ // chTitle
+ //
+ this.chTitle.Text = "Title";
+ //
+ // chFilters
+ //
+ this.chFilters.Text = "Filters";
+ //
+ // cmdClear
+ //
+ this.cmdClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.cmdClear.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.cmdClear.Location = new System.Drawing.Point(289, 2);
+ this.cmdClear.Name = "cmdClear";
+ this.cmdClear.Size = new System.Drawing.Size(75, 23);
+ this.cmdClear.TabIndex = 5;
+ this.cmdClear.Text = "&Clear";
+ this.cmdClear.UseVisualStyleBackColor = false;
+ this.cmdClear.Click += new System.EventHandler(this.cmdClear_Click);
+ //
+ // DataFormatBrowserPopup
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.SystemColors.Window;
+ this.ClientSize = new System.Drawing.Size(364, 213);
+ this.ControlBox = false;
+ this.Controls.Add(this.cmdClear);
+ this.Controls.Add(this.lv);
+ this.Controls.Add(this.txtSearch);
+ this.Name = "DataFormatBrowserPopup";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox txtSearch;
+ private System.Windows.Forms.ListView lv;
+ private System.Windows.Forms.ColumnHeader chTitle;
+ private System.Windows.Forms.ColumnHeader chFilters;
+ private System.Windows.Forms.Button cmdClear;
+ }
+}
\ No newline at end of file
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.cs b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.cs
new file mode 100644
index 00000000..ee0aeaec
--- /dev/null
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.cs
@@ -0,0 +1,159 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
+{
+ public partial class DataFormatBrowserPopup : Form
+ {
+ public event EventHandler SelectionChanged;
+
+ public DataFormatBrowserPopup()
+ {
+ InitializeComponent();
+ Font = SystemFonts.MenuFont;
+ }
+
+ protected override void OnDeactivate(EventArgs e)
+ {
+ base.OnDeactivate(e);
+ this.Close();
+ }
+
+ private System.Collections.ObjectModel.Collection mvarDataFormats = new System.Collections.ObjectModel.Collection();
+ public System.Collections.ObjectModel.Collection DataFormats { get { return mvarDataFormats; } }
+
+ private DataFormat mvarDataFormat = null;
+ public DataFormat DataFormat { get { return mvarDataFormat; } set { mvarDataFormat = value; } }
+
+ private string DataFormatFilterCollectionToString(DataFormatFilter.DataFormatFilterCollection collection)
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (DataFormatFilter filter in collection)
+ {
+ sb.Append(StringArrayToString(filter.FileNameFilters));
+ if (collection.IndexOf(filter) < collection.Count - 1)
+ {
+ sb.Append("; ");
+ }
+ }
+ return sb.ToString();
+ }
+
+ private string StringArrayToString(System.Collections.Specialized.StringCollection collection)
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (string s in collection)
+ {
+ sb.Append(s);
+ if (collection.IndexOf(s) < collection.Count - 1)
+ {
+ sb.Append(", ");
+ }
+ }
+ return sb.ToString();
+ }
+
+
+ protected override void OnShown(EventArgs e)
+ {
+ base.OnShown(e);
+ UpdateSearch();
+ }
+
+ private void UpdateSearch()
+ {
+ lv.Items.Clear();
+ foreach (DataFormat df in mvarDataFormats)
+ {
+ DataFormatReference dfr = df.MakeReference();
+ if (txtSearch.Text == String.Empty)
+ {
+ AddDataFormatToList(dfr);
+ }
+ else
+ {
+ if (dfr.Title.ToLower().Contains(txtSearch.Text.ToLower()))
+ {
+ AddDataFormatToList(dfr);
+ }
+ else
+ {
+ bool nextDFR = false;
+ foreach (DataFormatFilter filter in dfr.Filters)
+ {
+ foreach (string s in filter.FileNameFilters)
+ {
+ if (s.ToLower().Contains(txtSearch.Text.ToLower()))
+ {
+ AddDataFormatToList(dfr);
+ nextDFR = true;
+ break;
+ }
+ }
+ if (nextDFR) break;
+ }
+ if (nextDFR) continue;
+ }
+ }
+ }
+
+ if (lv.Items.Count == 1)
+ {
+ lv.Items[0].Selected = true;
+ }
+ lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
+ }
+
+ private void AddDataFormatToList(DataFormatReference dfr)
+ {
+ ListViewItem lvi = new ListViewItem();
+ lvi.Text = dfr.Title;
+ lvi.Tag = dfr;
+ lvi.SubItems.Add(DataFormatFilterCollectionToString(dfr.Filters));
+ lv.Items.Add(lvi);
+ }
+
+ private void txtSearch_TextChanged(object sender, EventArgs e)
+ {
+ UpdateSearch();
+ }
+
+ private void lv_ItemActivate(object sender, EventArgs e)
+ {
+ if (lv.SelectedItems.Count != 1) return;
+
+ mvarDataFormat = (lv.SelectedItems[0].Tag as DataFormatReference).Create();
+ if (SelectionChanged != null) SelectionChanged(this, e);
+
+ Close();
+ }
+
+ private void txtSearch_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter)
+ {
+ if (lv.SelectedItems.Count != 1) return;
+
+ mvarDataFormat = (lv.SelectedItems[0].Tag as DataFormatReference).Create();
+ if (SelectionChanged != null) SelectionChanged(this, e);
+
+ Close();
+ }
+ else if (e.KeyCode == Keys.Escape)
+ {
+ Close();
+ }
+ }
+
+ private void cmdClear_Click(object sender, EventArgs e)
+ {
+ mvarDataFormat = null;
+ if (SelectionChanged != null) SelectionChanged(this, e);
+ Close();
+ }
+ }
+}
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.resx b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.resx
new file mode 100644
index 00000000..7080a7d1
--- /dev/null
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DataFormatBrowserPopup.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.Designer.cs b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.Designer.cs
index de7d788c..1ac6c1fb 100644
--- a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.Designer.cs
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.Designer.cs
@@ -43,17 +43,7 @@
this.fTPServerToolStripMenuItem = new System.Windows.Forms.ToolStripSeparator();
this.hTTPServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.fTPServerToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
- this.mnuObjectModel = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.mnuObjectModelSep1 = new System.Windows.Forms.ToolStripSeparator();
- this.mnuObjectModelSelect = new System.Windows.Forms.ToolStripMenuItem();
- this.mnuObjectModelClear = new System.Windows.Forms.ToolStripMenuItem();
- this.mnuDataFormat = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.mnuDataFormatSep1 = new System.Windows.Forms.ToolStripSeparator();
- this.mnuDataFormatSelect = new System.Windows.Forms.ToolStripMenuItem();
- this.mnuDataFormatClear = new System.Windows.Forms.ToolStripMenuItem();
this.mnuAccessor.SuspendLayout();
- this.mnuObjectModel.SuspendLayout();
- this.mnuDataFormat.SuspendLayout();
this.SuspendLayout();
//
// txtObjectModel
@@ -166,86 +156,32 @@
this.hTTPServerToolStripMenuItem,
this.fTPServerToolStripMenuItem1});
this.mnuAccessor.Name = "mnuAccessor";
- this.mnuAccessor.Size = new System.Drawing.Size(153, 98);
+ this.mnuAccessor.Size = new System.Drawing.Size(135, 76);
//
// mnuAccessorLocalFile
//
this.mnuAccessorLocalFile.Name = "mnuAccessorLocalFile";
- this.mnuAccessorLocalFile.Size = new System.Drawing.Size(152, 22);
+ this.mnuAccessorLocalFile.Size = new System.Drawing.Size(134, 22);
this.mnuAccessorLocalFile.Text = "&Local File";
this.mnuAccessorLocalFile.Click += new System.EventHandler(this.mnuAccessorLocalFile_Click);
//
// fTPServerToolStripMenuItem
//
this.fTPServerToolStripMenuItem.Name = "fTPServerToolStripMenuItem";
- this.fTPServerToolStripMenuItem.Size = new System.Drawing.Size(149, 6);
+ this.fTPServerToolStripMenuItem.Size = new System.Drawing.Size(131, 6);
//
// hTTPServerToolStripMenuItem
//
this.hTTPServerToolStripMenuItem.Name = "hTTPServerToolStripMenuItem";
- this.hTTPServerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.hTTPServerToolStripMenuItem.Size = new System.Drawing.Size(134, 22);
this.hTTPServerToolStripMenuItem.Text = "&HTTP Server";
//
// fTPServerToolStripMenuItem1
//
this.fTPServerToolStripMenuItem1.Name = "fTPServerToolStripMenuItem1";
- this.fTPServerToolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
+ this.fTPServerToolStripMenuItem1.Size = new System.Drawing.Size(134, 22);
this.fTPServerToolStripMenuItem1.Text = "&FTP Server";
//
- // mnuObjectModel
- //
- this.mnuObjectModel.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.mnuObjectModelSep1,
- this.mnuObjectModelSelect,
- this.mnuObjectModelClear});
- this.mnuObjectModel.Name = "mnuObjectModel";
- this.mnuObjectModel.Size = new System.Drawing.Size(148, 54);
- //
- // mnuObjectModelSep1
- //
- this.mnuObjectModelSep1.Name = "mnuObjectModelSep1";
- this.mnuObjectModelSep1.Size = new System.Drawing.Size(144, 6);
- //
- // mnuObjectModelSelect
- //
- this.mnuObjectModelSelect.Name = "mnuObjectModelSelect";
- this.mnuObjectModelSelect.Size = new System.Drawing.Size(147, 22);
- this.mnuObjectModelSelect.Text = "&Select from List";
- this.mnuObjectModelSelect.Click += new System.EventHandler(this.mnuObjectModelSelect_Click);
- //
- // mnuObjectModelClear
- //
- this.mnuObjectModelClear.Name = "mnuObjectModelClear";
- this.mnuObjectModelClear.Size = new System.Drawing.Size(147, 22);
- this.mnuObjectModelClear.Text = "&Clear Selection";
- this.mnuObjectModelClear.Click += new System.EventHandler(this.mnuObjectModelClear_Click);
- //
- // mnuDataFormat
- //
- this.mnuDataFormat.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.mnuDataFormatSep1,
- this.mnuDataFormatSelect,
- this.mnuDataFormatClear});
- this.mnuDataFormat.Name = "mnuDataFormat";
- this.mnuDataFormat.Size = new System.Drawing.Size(148, 54);
- //
- // mnuDataFormatSep1
- //
- this.mnuDataFormatSep1.Name = "mnuDataFormatSep1";
- this.mnuDataFormatSep1.Size = new System.Drawing.Size(144, 6);
- //
- // mnuDataFormatSelect
- //
- this.mnuDataFormatSelect.Name = "mnuDataFormatSelect";
- this.mnuDataFormatSelect.Size = new System.Drawing.Size(147, 22);
- this.mnuDataFormatSelect.Text = "&Select from List";
- //
- // mnuDataFormatClear
- //
- this.mnuDataFormatClear.Name = "mnuDataFormatClear";
- this.mnuDataFormatClear.Size = new System.Drawing.Size(147, 22);
- this.mnuDataFormatClear.Text = "&Clear Selection";
- //
// DocumentPropertiesDialogBase
//
this.AcceptButton = this.cmdOK;
@@ -266,8 +202,6 @@
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Document Properties";
this.mnuAccessor.ResumeLayout(false);
- this.mnuObjectModel.ResumeLayout(false);
- this.mnuDataFormat.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
@@ -289,14 +223,6 @@
private System.Windows.Forms.ToolStripSeparator fTPServerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem hTTPServerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem fTPServerToolStripMenuItem1;
- private System.Windows.Forms.ContextMenuStrip mnuObjectModel;
- private System.Windows.Forms.ToolStripSeparator mnuObjectModelSep1;
- private System.Windows.Forms.ToolStripMenuItem mnuObjectModelSelect;
- private System.Windows.Forms.ToolStripMenuItem mnuObjectModelClear;
- private System.Windows.Forms.ContextMenuStrip mnuDataFormat;
- private System.Windows.Forms.ToolStripSeparator mnuDataFormatSep1;
- private System.Windows.Forms.ToolStripMenuItem mnuDataFormatSelect;
- private System.Windows.Forms.ToolStripMenuItem mnuDataFormatClear;
}
}
\ No newline at end of file
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.cs b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.cs
index c2d3480e..ab23a092 100644
--- a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.cs
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.cs
@@ -19,14 +19,26 @@ namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
private DocumentPropertiesDialogMode mvarMode = DocumentPropertiesDialogMode.Open;
public DocumentPropertiesDialogMode Mode { get { return mvarMode; } set { mvarMode = value; } }
+ private ObjectModel mvarInitialObjectModel = null;
+
private ObjectModel mvarObjectModel = null;
- public ObjectModel ObjectModel { get { return mvarObjectModel; } set { mvarObjectModel = value; } }
+ public ObjectModel ObjectModel { get { return mvarObjectModel; } set { mvarObjectModel = value; mvarInitialObjectModel = value; } }
+
+ private DataFormat mvarInitialDataFormat = null;
private DataFormat mvarDataFormat = null;
- public DataFormat DataFormat { get { return mvarDataFormat; } set { mvarDataFormat = value; } }
+ public DataFormat DataFormat { get { return mvarDataFormat; } set { mvarDataFormat = value; mvarInitialDataFormat = value; } }
+
+ private Accessor mvarInitialAccesor = null;
private Accessor mvarAccessor = null;
- public Accessor Accessor { get { return mvarAccessor; } set { mvarAccessor = value; } }
+ public Accessor Accessor { get { return mvarAccessor; } set { mvarAccessor = value; mvarInitialAccesor = value; } }
+
+ protected override void OnShown(EventArgs e)
+ {
+ base.OnShown(e);
+ RefreshButtons();
+ }
private void cmdOK_Click(object sender, EventArgs e)
{
@@ -58,12 +70,86 @@ namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
private void cmdObjectModel_Click(object sender, EventArgs e)
{
- ShowContextMenuBelow(mnuObjectModel, cmdObjectModel);
+ ObjectModelBrowserPopup dlg = new ObjectModelBrowserPopup();
+ dlg.ObjectModel = mvarObjectModel;
+
+ Point loc = PointToScreen(cmdObjectModel.Location);
+ dlg.Location = new Point(loc.X, loc.Y + cmdObjectModel.Height);
+ dlg.Size = new Size(Width, 200);
+
+ ObjectModelReference[] omrs = new ObjectModelReference[0];
+
+ if (mvarMode == DocumentPropertiesDialogMode.Save)
+ {
+ // show all dataformats for the current object model
+ omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels(mvarDataFormat.MakeReference());
+ }
+ else if (mvarMode == DocumentPropertiesDialogMode.Open)
+ {
+ if (mvarAccessor != null)
+ {
+ // show all dataformats for the current accessor
+ omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels((mvarAccessor as FileAccessor).FileName);
+ }
+ else
+ {
+ omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels();
+ }
+ }
+ foreach (ObjectModelReference dfr in omrs)
+ {
+ dlg.ObjectModels.Add(dfr.Create());
+ }
+ dlg.SelectionChanged += dlgObjectModel_SelectionChanged;
+ dlg.Show();
}
private void cmdDataFormat_Click(object sender, EventArgs e)
{
- ShowContextMenuBelow(mnuDataFormat, cmdDataFormat);
+ DataFormatBrowserPopup dlg = new DataFormatBrowserPopup();
+ dlg.DataFormat = mvarDataFormat;
+
+ Point loc = PointToScreen(cmdDataFormat.Location);
+ dlg.Location = new Point(loc.X, loc.Y + cmdDataFormat.Height);
+ dlg.Size = new Size(Width, 200);
+
+ DataFormatReference[] dfrs = new DataFormatReference[0];
+ if (mvarMode == DocumentPropertiesDialogMode.Save)
+ {
+ // show all dataformats for the current object model
+ dfrs = UniversalEditor.Common.Reflection.GetAvailableDataFormats(mvarObjectModel.MakeReference());
+ }
+ else if (mvarMode == DocumentPropertiesDialogMode.Open)
+ {
+ if (mvarAccessor != null)
+ {
+ // show all dataformats for the current accessor
+ dfrs = UniversalEditor.Common.Reflection.GetAvailableDataFormats((mvarAccessor as FileAccessor).FileName);
+ }
+ else
+ {
+ dfrs = UniversalEditor.Common.Reflection.GetAvailableDataFormats();
+ }
+ }
+ foreach (DataFormatReference dfr in dfrs)
+ {
+ dlg.DataFormats.Add(dfr.Create());
+ }
+ dlg.SelectionChanged += dlgDataFormat_SelectionChanged;
+ dlg.Show();
+ }
+
+ private void dlgObjectModel_SelectionChanged(object sender, EventArgs e)
+ {
+ ObjectModelBrowserPopup dlg = (sender as ObjectModelBrowserPopup);
+ mvarObjectModel = dlg.ObjectModel;
+ RefreshButtons();
+ }
+ private void dlgDataFormat_SelectionChanged(object sender, EventArgs e)
+ {
+ DataFormatBrowserPopup dlg = (sender as DataFormatBrowserPopup);
+ mvarDataFormat = dlg.DataFormat;
+ RefreshButtons();
}
private void cmdAccessor_Click(object sender, EventArgs e)
@@ -91,57 +177,50 @@ namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
private void RefreshButtons()
{
- if (mvarAccessor is FileAccessor)
+ if (mvarMode == DocumentPropertiesDialogMode.Save)
{
string filename = (mvarAccessor as FileAccessor).FileName;
- DataFormatReference[] dfrs = UniversalEditor.Common.Reflection.GetAvailableDataFormats(filename);
-
- if (mvarDataFormat == null)
+ if (!System.IO.File.Exists(filename))
{
- if (dfrs.Length > 0)
- {
- mvarDataFormat = dfrs[0].Create();
- }
+ filename = (mvarInitialAccesor as FileAccessor).FileName;
}
-
- mnuDataFormat.Items.Clear();
- foreach (DataFormatReference dfr in dfrs)
- {
- ToolStripMenuItem tsmi = new ToolStripMenuItem();
- tsmi.Text = DataFormatReferenceToString(dfr);
- tsmi.Tag = dfr;
- tsmi.Click += tsmi_Click;
- if (mvarDataFormat != null)
- {
- if (mvarDataFormat.GetType() == dfr.DataFormatType)
- {
- tsmi.Checked = true;
- }
- }
- mnuDataFormat.Items.Add(tsmi);
- }
-
- mnuDataFormat.Items.Add(mnuDataFormatSep1);
- mnuDataFormat.Items.Add(mnuDataFormatSelect);
- mnuDataFormat.Items.Add(mnuDataFormatClear);
}
- if (mvarObjectModel == null)
+ else if (mvarMode == DocumentPropertiesDialogMode.Open)
{
- if (mvarDataFormat != null)
- {
- ObjectModelReference[] omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels(mvarDataFormat.MakeReference());
- if (omrs.Length > 0)
- {
- mvarObjectModel = omrs[0].Create();
- }
- }
- else if (mvarAccessor is FileAccessor)
+ if (mvarAccessor is FileAccessor)
{
string filename = (mvarAccessor as FileAccessor).FileName;
- ObjectModelReference[] omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels(filename);
- if (omrs.Length == 1)
+ DataFormatReference[] dfrs = UniversalEditor.Common.Reflection.GetAvailableDataFormats(filename);
+
+ if (mvarDataFormat == null)
{
- mvarObjectModel = omrs[0].Create();
+ if (dfrs.Length > 0)
+ {
+ mvarDataFormat = dfrs[0].Create();
+ }
+ }
+ else
+ {
+ }
+ }
+ if (mvarObjectModel == null)
+ {
+ if (mvarDataFormat != null)
+ {
+ ObjectModelReference[] omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels(mvarDataFormat.MakeReference());
+ if (omrs.Length > 0)
+ {
+ mvarObjectModel = omrs[0].Create();
+ }
+ }
+ else if (mvarAccessor is FileAccessor)
+ {
+ string filename = (mvarAccessor as FileAccessor).FileName;
+ ObjectModelReference[] omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels(filename);
+ if (omrs.Length == 1)
+ {
+ mvarObjectModel = omrs[0].Create();
+ }
}
}
}
@@ -167,6 +246,13 @@ namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
cmdOK.Enabled = (mvarObjectModel != null && mvarDataFormat != null && mvarAccessor != null);
}
+ void tsmiObjectModel_Click(object sender, EventArgs e)
+ {
+ ToolStripMenuItem tsmi = (sender as ToolStripMenuItem);
+ mvarObjectModel = (tsmi.Tag as ObjectModelReference).Create();
+ RefreshButtons();
+ }
+
private void tsmi_Click(object sender, EventArgs e)
{
ToolStripMenuItem tsmi = (sender as ToolStripMenuItem);
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.resx b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.resx
index 1a30ba6d..273d71bd 100644
--- a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.resx
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/DocumentPropertiesDialog.resx
@@ -120,10 +120,4 @@
17, 17
-
- 134, 17
-
-
- 269, 17
-
\ No newline at end of file
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.Designer.cs b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.Designer.cs
new file mode 100644
index 00000000..3e82d0e3
--- /dev/null
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.Designer.cs
@@ -0,0 +1,115 @@
+namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
+{
+ partial class ObjectModelBrowserPopup
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.lv = new System.Windows.Forms.ListView();
+ this.chTitle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.chDescription = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.txtSearch = new System.Windows.Forms.TextBox();
+ this.cmdClear = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // lv
+ //
+ this.lv.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.lv.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+ this.chTitle,
+ this.chDescription});
+ this.lv.FullRowSelect = true;
+ this.lv.GridLines = true;
+ this.lv.HideSelection = false;
+ this.lv.Location = new System.Drawing.Point(0, 26);
+ this.lv.MultiSelect = false;
+ this.lv.Name = "lv";
+ this.lv.Size = new System.Drawing.Size(364, 183);
+ this.lv.TabIndex = 3;
+ this.lv.UseCompatibleStateImageBehavior = false;
+ this.lv.View = System.Windows.Forms.View.Details;
+ this.lv.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtSearch_KeyDown);
+ //
+ // chTitle
+ //
+ this.chTitle.Text = "Title";
+ //
+ // chDescription
+ //
+ this.chDescription.Text = "Description";
+ //
+ // txtSearch
+ //
+ this.txtSearch.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtSearch.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.txtSearch.Location = new System.Drawing.Point(6, 7);
+ this.txtSearch.Name = "txtSearch";
+ this.txtSearch.Size = new System.Drawing.Size(277, 13);
+ this.txtSearch.TabIndex = 2;
+ this.txtSearch.TextChanged += new System.EventHandler(this.txtSearch_TextChanged);
+ this.txtSearch.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtSearch_KeyDown);
+ //
+ // cmdClear
+ //
+ this.cmdClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.cmdClear.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.cmdClear.Location = new System.Drawing.Point(289, 2);
+ this.cmdClear.Name = "cmdClear";
+ this.cmdClear.Size = new System.Drawing.Size(75, 23);
+ this.cmdClear.TabIndex = 4;
+ this.cmdClear.Text = "&Clear";
+ this.cmdClear.UseVisualStyleBackColor = false;
+ this.cmdClear.Click += new System.EventHandler(this.cmdClear_Click);
+ //
+ // ObjectModelBrowserPopup
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.SystemColors.Window;
+ this.ClientSize = new System.Drawing.Size(364, 213);
+ this.ControlBox = false;
+ this.Controls.Add(this.cmdClear);
+ this.Controls.Add(this.lv);
+ this.Controls.Add(this.txtSearch);
+ this.Name = "ObjectModelBrowserPopup";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ListView lv;
+ private System.Windows.Forms.ColumnHeader chTitle;
+ private System.Windows.Forms.ColumnHeader chDescription;
+ private System.Windows.Forms.TextBox txtSearch;
+ private System.Windows.Forms.Button cmdClear;
+
+
+ }
+}
\ No newline at end of file
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.cs b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.cs
new file mode 100644
index 00000000..f7068561
--- /dev/null
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.cs
@@ -0,0 +1,169 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
+{
+ public partial class ObjectModelBrowserPopup : Form
+ {
+ public event EventHandler SelectionChanged;
+
+ public ObjectModelBrowserPopup()
+ {
+ InitializeComponent();
+ Font = SystemFonts.MenuFont;
+ }
+
+ protected override void OnDeactivate(EventArgs e)
+ {
+ base.OnDeactivate(e);
+ this.Close();
+ }
+
+ private System.Collections.ObjectModel.Collection mvarObjectModels = new System.Collections.ObjectModel.Collection();
+ public System.Collections.ObjectModel.Collection ObjectModels { get { return mvarObjectModels; } }
+
+ private ObjectModel mvarObjectModel = null;
+ public ObjectModel ObjectModel { get { return mvarObjectModel; } set { mvarObjectModel = value; } }
+
+ /*
+ private void documentTypeSelector1_SelectionFinalized(object sender, EventArgs e)
+ {
+ if (documentTypeSelector1.SelectedObject == null) return;
+
+ mvarObjectModel = (documentTypeSelector1.SelectedObject as ObjectModelReference).Create();
+ Close();
+
+ if (SelectionChanged != null) SelectionChanged(this, e);
+ }
+
+ private void documentTypeSelector1_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter)
+ {
+ mvarObjectModel = (documentTypeSelector1.SelectedObject as ObjectModel);
+ Close();
+
+ if (SelectionChanged != null) SelectionChanged(this, e);
+ }
+ else if (e.KeyCode == Keys.Escape)
+ {
+ Close();
+ }
+ }
+ */
+
+ private string DataFormatFilterCollectionToString(DataFormatFilter.DataFormatFilterCollection collection)
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (DataFormatFilter filter in collection)
+ {
+ sb.Append(StringArrayToString(filter.FileNameFilters));
+ if (collection.IndexOf(filter) < collection.Count - 1)
+ {
+ sb.Append("; ");
+ }
+ }
+ return sb.ToString();
+ }
+
+ private string StringArrayToString(System.Collections.Specialized.StringCollection collection)
+ {
+ StringBuilder sb = new StringBuilder();
+ foreach (string s in collection)
+ {
+ sb.Append(s);
+ if (collection.IndexOf(s) < collection.Count - 1)
+ {
+ sb.Append(", ");
+ }
+ }
+ return sb.ToString();
+ }
+
+
+ protected override void OnShown(EventArgs e)
+ {
+ base.OnShown(e);
+ UpdateSearch();
+ }
+
+ private void UpdateSearch()
+ {
+ lv.Items.Clear();
+ foreach (ObjectModel df in mvarObjectModels)
+ {
+ ObjectModelReference dfr = df.MakeReference();
+ if (txtSearch.Text == String.Empty)
+ {
+ AddObjectModelToList(dfr);
+ }
+ else
+ {
+ if ((dfr.Title.ToLower().Contains(txtSearch.Text.ToLower()))
+ || (dfr.Description.ToLower().Contains(txtSearch.Text.ToLower())))
+ {
+ AddObjectModelToList(dfr);
+ }
+ }
+ }
+
+ if (lv.Items.Count == 1)
+ {
+ lv.Items[0].Selected = true;
+ }
+ lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
+ }
+
+ private void AddObjectModelToList(ObjectModelReference dfr)
+ {
+ ListViewItem lvi = new ListViewItem();
+ lvi.Text = dfr.Title;
+ lvi.SubItems.Add(dfr.Description);
+ lvi.Tag = dfr;
+ lv.Items.Add(lvi);
+ }
+
+ private void txtSearch_TextChanged(object sender, EventArgs e)
+ {
+ UpdateSearch();
+ }
+
+ private void lv_ItemActivate(object sender, EventArgs e)
+ {
+ if (lv.SelectedItems.Count != 1) return;
+
+ mvarObjectModel = (lv.SelectedItems[0].Tag as ObjectModelReference).Create();
+ if (SelectionChanged != null) SelectionChanged(this, e);
+
+ Close();
+ }
+
+ private void txtSearch_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter)
+ {
+ if (lv.SelectedItems.Count != 1) return;
+
+ mvarObjectModel = (lv.SelectedItems[0].Tag as ObjectModelReference).Create();
+ if (SelectionChanged != null) SelectionChanged(this, e);
+
+ Close();
+ }
+ else if (e.KeyCode == Keys.Escape)
+ {
+ Close();
+ }
+ }
+
+ private void cmdClear_Click(object sender, EventArgs e)
+ {
+ mvarObjectModel = null;
+ if (SelectionChanged != null) SelectionChanged(this, e);
+ Close();
+ }
+ }
+}
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.resx b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.resx
new file mode 100644
index 00000000..7080a7d1
--- /dev/null
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/Dialogs/ObjectModelBrowserPopup.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs
index 83ea5584..6cbddd78 100644
--- a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs
@@ -1012,9 +1012,21 @@ namespace UniversalEditor.UserInterface.WindowsForms
if (FileName == null)
{
DocumentPropertiesDialog dlg = new DocumentPropertiesDialog();
+ dlg.ObjectModel = doc.ObjectModel;
+ dlg.DataFormat = doc.DataFormat;
+ dlg.Accessor = doc.Accessor;
+ dlg.Mode = DocumentPropertiesDialogMode.Save;
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
dfr = dlg.DataFormat.MakeReference();
+
+ // TODO: Rewrite Save code to make everything use Accessor instead
+ // of FileName to support multiple types of accessors
+ FileName = (dlg.Accessor as FileAccessor).FileName;
+ }
+ else
+ {
+ return false;
}
/*
diff --git a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/UniversalEditor.UserInterface.WindowsForms.DesktopApplication.csproj b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/UniversalEditor.UserInterface.WindowsForms.DesktopApplication.csproj
index 77ef6748..24e6a86e 100644
--- a/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/UniversalEditor.UserInterface.WindowsForms.DesktopApplication.csproj
+++ b/CSharp/Environments/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/UniversalEditor.UserInterface.WindowsForms.DesktopApplication.csproj
@@ -53,6 +53,18 @@
OutputWindow.cs
+
+ Form
+
+
+ ObjectModelBrowserPopup.cs
+
+
+ Form
+
+
+ DataFormatBrowserPopup.cs
+
Form
@@ -210,9 +222,15 @@
AboutDialog.cs
+
+ ObjectModelBrowserPopup.cs
+
DataFormatAboutDialog.cs
+
+ DataFormatBrowserPopup.cs
+
DataFormatOptionsDialog.cs
diff --git a/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.Designer.cs b/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.Designer.cs
index 43a67ec3..18be31da 100644
--- a/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.Designer.cs
+++ b/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.Designer.cs
@@ -103,6 +103,7 @@
this.tvObjectModels.AfterCollapse += new System.Windows.Forms.TreeViewEventHandler(this.tvObjectModels_AfterCollapse);
this.tvObjectModels.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.tvObjectModels_AfterExpand);
this.tvObjectModels.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvObjectModels_AfterSelect);
+ this.tvObjectModels.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.tvObjectModels_MouseDoubleClick);
//
// DocumentTypeSelector
//
diff --git a/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.cs b/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.cs
index 935cf08a..05863b6b 100644
--- a/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.cs
+++ b/CSharp/Libraries/UniversalEditor.UserInterface.WindowsForms/Controls/DocumentTypeSelector.cs
@@ -10,6 +10,7 @@ namespace UniversalEditor.UserInterface.WindowsForms.Controls
[DefaultEvent("SelectionChanged")]
public partial class DocumentTypeSelector : UserControl
{
+ public event EventHandler SelectionFinalized;
public event EventHandler SelectionChanged;
public DocumentTypeSelector()
@@ -223,6 +224,12 @@ namespace UniversalEditor.UserInterface.WindowsForms.Controls
}
+ protected void OnSelectionFinalized(EventArgs e)
+ {
+ OnSelectionChanged(e);
+ if (SelectionFinalized != null) SelectionFinalized(this, e);
+ }
+
private void txtSearch_TextChanged(object sender, EventArgs e)
{
RefreshList();
@@ -263,6 +270,14 @@ namespace UniversalEditor.UserInterface.WindowsForms.Controls
e.Node.SelectedImageKey = "generic-folder-open";
}
}
+
+ private void tvObjectModels_MouseDoubleClick(object sender, MouseEventArgs e)
+ {
+ if (tvObjectModels.SelectedNode != null)
+ {
+ OnSelectionFinalized(e);
+ }
+ }
}
[Flags()]