Ejemplo n.º 1
0
 private void dataGridNodesTable_CellContentClick(object sender, DataGridViewCellMouseEventArgs e)
 {
     if (e.RowIndex != -1 && e.ColumnIndex != -1)
     {
         DataGridViewCell cell = dataGridNodesTable.Rows[e.RowIndex].Cells[e.ColumnIndex];
         if (cell.Value != null && cell.Value.ToString() == "...")
         {
             ProgectSettingForm psForm = new ProgectSettingForm();
             PropertyGrid       propertyGridProjectSettings = (PropertyGrid)
                                                              psForm.Controls.Find("propertyGridProjectSettings", true).First();
             DataRowComponents source = (DataRowComponents)dataGridNodesTable.Rows[e.RowIndex].Cells["DataSource"].Value;
             propertyGridProjectSettings.SelectedObject = source;
             psForm.Show();
         }
     }
 }
Ejemplo n.º 2
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            dataGridNodesTable.Rows.Clear();
            dataGridNodesTable.Columns.Clear();

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.InitialDirectory = "c:\\";
            ofd.Filter           = "project files (*.csproj)|*.csproj|All files (*.*)|*.*";
            ofd.FilterIndex      = 1;
            ofd.RestoreDirectory = true;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    #region CheckBox list creator

                    progectSettings = new ProjectSettings();

                    dataGridNodesTable.UseWaitCursor = true;
                    XmlDocument doc = new XmlDocument();
                    docName = ofd.FileName.ToString();
                    doc.Load(docName);
                    XmlDocument docExport      = new XmlDocument();
                    string      exportFilePath = Path.Combine(Path.GetDirectoryName(docName), "ExportSetting.xml");
                    progectSettings.ExportFileName = exportFilePath;

                    XmlNode root = doc.DocumentElement;

                    XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
                    nsmgr.AddNamespace("ns", root.NamespaceURI);

                    Assembly assembly = typeof(IPageInstance).Module.Assembly;
                    progectSettings.IsRefJCMSAdded = AssemblyRefCreator.IsAssemblyRefAdded(assembly, docName);
                    progectSettings.AddBasePageToCollection("test");
                    progectSettings.AddBasePageToCollection("test2");


                    XmlNode nameSpace = root.SelectSingleNode("//ns:RootNamespace", nsmgr);
                    jazNamespace = nameSpace.InnerText;
                    progectSettings.RootNameSpace = jazNamespace;

                    XmlNodeList    nodeList       = root.SelectNodes("//ns:Compile", nsmgr);
                    List <XmlNode> nodeCollection = new List <XmlNode>();
                    foreach (XmlNode node in nodeList)
                    {
                        if (node.Attributes.GetNamedItem("Include").Value.Contains(OldFileExtension))
                        {
                            nodeCollection.Add(node);
                        }
                    }

                    List <DataRowComponents> dataRowCollection = new List <DataRowComponents>();

                    foreach (XmlNode selectedNodes in nodeCollection)
                    {
                        DataRowComponents dataRow = new DataRowComponents();
                        dataRow.IsSelected = false;

                        string location = selectedNodes.Attributes.GetNamedItem("Include").Value;

                        dataRow.Text = location;
                        string      xPath        = "//ns:Compile[@Include='" + location.Replace(OldFileExtension, NewFileExtension) + "']";
                        XmlNodeList jazNodesList = root.SelectNodes(xPath, nsmgr);
                        jazClassName = Path.GetFileName(location).Replace(OldFileExtension, "");
                        string directory        = Path.GetDirectoryName(location).Replace("\\", ".");
                        string jazNamespaceNode = jazNamespace;
                        if (!string.IsNullOrEmpty(directory))
                        {
                            jazNamespaceNode = jazNamespace + "." + directory;
                        }

                        dataRow.Namespace = jazNamespaceNode;
                        dataRow.ClassName = jazClassName;

                        string           exFilePath    = Path.Combine(Path.GetDirectoryName(docName), "ExportSetting.xml");
                        PageSettings     pageSet       = new PageSettings(exFilePath, location);
                        XmlStoreProvider storeProvider = new XmlStoreProvider(exFilePath);
                        progectSettings.SelectedPage = pageSet;
                        storeProvider.LoadSettings(progectSettings);

                        if (progectSettings.IsSetted)
                        {
                            dataRow.Namespace = progectSettings.SelectedPage.NameSpace;
                            dataRow.ClassName = progectSettings.SelectedPage.ClassName;
                        }

                        if (jazNodesList.Count > 0)
                        {
                            dataRow.IsSelected = true;
                        }

                        dataRow.Tag      = selectedNodes;
                        dataRow.BasePage = "test2";
                        dataRowCollection.Add(dataRow);
                    }


                    dataGridNodesTable.AutoGenerateColumns = false;

                    DataSet   dataSet           = new DataSet("JazCmsDataSet");
                    DataTable dataTable         = new DataTable("DataRowComponentsCollection");
                    DataTable basePageListTable = new DataTable("BasePageListTable");
                    basePageListTable.Columns.Add("BasePage", typeof(string));

                    foreach (string page in progectSettings.BasePageCollection)
                    {
                        basePageListTable.Rows.Add(page);
                    }

                    List <string> hiddenColumns = new List <string>();

                    foreach (PropertyInfo property in typeof(DataRowComponents).GetProperties())
                    {
                        Type type = property.PropertyType;
                        DisplayNameAttribute[] propertyArrey = (DisplayNameAttribute[])
                                                               (property.GetCustomAttributes(typeof(DisplayNameAttribute), true));

                        HidePropertyAttribute[] hidePropertyArrey = (HidePropertyAttribute[])
                                                                    (property.GetCustomAttributes(typeof(HidePropertyAttribute), true));

                        DataColumn col;
                        if (propertyArrey.Count() != 0)
                        {
                            col = new DataColumn(propertyArrey.First().DisplayName, type);
                        }
                        else
                        {
                            col = new DataColumn(property.Name, type);
                        }

                        dataTable.Columns.Add(col);

                        if (hidePropertyArrey.Count() != 0 && hidePropertyArrey.First().IsHidden)
                        {
                            hiddenColumns.Add(col.ColumnName);
                        }
                    }

                    DataColumn dataSource = new DataColumn("DataSource", typeof(DataRowComponents));
                    dataTable.Columns.Add(dataSource);

                    foreach (DataRowComponents row in dataRowCollection)
                    {
                        dataTable.Rows.Add(row.IsSelected, row.Text, row.ClassName, row.Namespace, row.BasePage, row.Tag, row);
                    }

                    dataSet.Tables.Add(dataTable);
                    dataSet.Tables.Add(basePageListTable);

                    DataColumn child  = dataSet.Tables["DataRowComponentsCollection"].Columns["Custom base page"];
                    DataColumn parent = dataSet.Tables["BasePageListTable"].Columns["BasePage"];
                    parent.Unique = true;
                    ForeignKeyConstraint fk = new ForeignKeyConstraint("FK_BasePage", parent, child);
                    dataSet.Tables["DataRowComponentsCollection"].Constraints.Add(fk);
                    dataSet.Relations.Add("BasePage",
                                          parent,
                                          child);

                    DataRelationCollection            relationCollection = dataSet.Relations;
                    SortedList <string, DataRelation> relCollection      = new SortedList <string, DataRelation>();

                    foreach (DataRelation rel in relationCollection)
                    {
                        if (rel.ChildTable.TableName == "DataRowComponentsCollection")
                        {
                            relCollection.Add(rel.ChildColumns.First().ColumnName, rel);
                        }
                    }

                    foreach (DataColumn col in
                             dataTable.Columns)
                    {
                        if (relCollection.Keys.Contains(col.ColumnName))
                        {
                            DataColumn parentColumn = relCollection.Where(p => p.Key == col.ColumnName)
                                                      .Select(p => p.Value).First().ParentColumns.First();

                            DataGridViewComboBoxColumn comboBoxColumn = new DataGridViewComboBoxColumn();
                            comboBoxColumn.Name = col.ColumnName;

                            List <string> sourceList = new List <string>();
                            foreach (DataRow dgvRow in parentColumn.Table.Rows)
                            {
                                sourceList.Add(dgvRow[parentColumn.ColumnName].ToString());
                            }

                            comboBoxColumn.DataSource = sourceList.ToArray();
                            dataGridNodesTable.Columns.Add(comboBoxColumn);

                            if (hiddenColumns.Contains(col.ColumnName))
                            {
                                comboBoxColumn.Visible = false;
                            }
                        }
                        else
                        if (col.DataType == typeof(bool))
                        {
                            DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
                            checkBoxColumn.Name = col.ColumnName;
                            dataGridNodesTable.Columns.Add(checkBoxColumn);

                            if (hiddenColumns.Contains(col.ColumnName))
                            {
                                checkBoxColumn.Visible = false;
                            }
                        }
                        else
                        if (col.DataType == typeof(string))
                        {
                            DataGridViewTextBoxColumn textBoxColumn = new DataGridViewTextBoxColumn();
                            textBoxColumn.Name = col.ColumnName;
                            dataGridNodesTable.Columns.Add(textBoxColumn);

                            if (hiddenColumns.Contains(col.ColumnName))
                            {
                                textBoxColumn.Visible = false;
                            }
                        }
                        else
                        {
                            DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
                            column.Name = col.ColumnName;
                            dataGridNodesTable.Columns.Add(column);
                            column.Visible = false;

                            if (hiddenColumns.Contains(col.ColumnName))
                            {
                                column.Visible = false;
                            }
                        }
                    }

                    foreach (DataRowComponents row in dataRowCollection)
                    {
                        dataGridNodesTable.Rows.Add(
                            row.IsSelected, row.Text, row.ClassName, row.Namespace
                            , row.BasePage,
                            row.Tag, row
                            );
                    }

                    dataGridNodesTable.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
                    dataGridNodesTable.Columns["Path to file"].ReadOnly = true;
                    dataGridNodesTable.Columns["Tag"].Visible           = false;

                    DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn();
                    buttonColumn.Name = "Details";
                    dataGridNodesTable.Columns.Add(buttonColumn);

                    foreach (DataGridViewRow row in dataGridNodesTable.Rows)
                    {
                        if ((bool)row.Cells["Existing jaz files"].Value)
                        {
                            row.Cells["Guessed class name"].ReadOnly = true;
                            row.Cells["Guessed namespace"].ReadOnly  = true;
                        }

                        row.Cells["Details"].Value = "...";
                    }

                    #endregion

                    buttonCreate.Top  = dataGridNodesTable.Height + 100;
                    buttonCreate.Left = dataGridNodesTable.Left + dataGridNodesTable.Width - buttonCreate.Width;
                    dataGridNodesTable.UseWaitCursor = false;

                    foreach (ToolStripMenuItem item in contextMenuStripDataGridView.Items)
                    {
                        item.CheckedChanged +=
                            new EventHandler(contextMenuStripDataGridView_CheckedChanged);
                        switch (item.Text)
                        {
                        case "Class name": item.Tag = "Guessed class name";
                            break;

                        case "Namespace": item.Tag = "Guessed namespace";
                            break;

                        case "Base page": item.Tag = "Custom base page";
                            break;
                        }
                    }
                    #region DataGrid menu

                    dataGridNodesTable.CellMouseClick -= new DataGridViewCellMouseEventHandler(dataGridNodesTable_CellContentClick);
                    dataGridNodesTable.CellMouseClick += new DataGridViewCellMouseEventHandler(dataGridNodesTable_CellContentClick);
                    dataGridNodesTable.Columns["Details"].HeaderCell.ContextMenuStrip
                        = contextMenuStripDataGridView;
                    dataGridNodesTable.EnableHeadersVisualStyles = false;
                    dataGridNodesTable.Columns["Details"].HeaderCell.Style.ForeColor = Color.Blue;

                    #endregion
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }
            }
        }
Ejemplo n.º 3
0
        private void buttonCreate_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(docName))
            {
                try
                {
                    Assembly assembly = typeof(IPageInstance).Module.Assembly;
                    AssemblyRefCreator.AssemblyRefCreateator(assembly, docName);

                    #region nodes cration

                    foreach (DataGridViewRow row in dataGridNodesTable.Rows)
                    {
                        DataRowComponents rowData      = (DataRowComponents)row.Cells["DataSource"].Value;
                        XmlNode           insertedNode = rowData.Tag as XmlNode;
                        Uri        uri     = new Uri(docName);
                        XmlElement newNode = insertedNode.OwnerDocument.CreateElement("Compile", insertedNode.NamespaceURI);

                        string insertedNodeName       = insertedNode.Attributes.GetNamedItem("Include").Value;
                        string parsedInsertedNodeName = insertedNodeName;

                        parsedInsertedNodeName = Path.GetFileName(insertedNodeName);

                        newNode.SetAttribute("Include", insertedNodeName.Replace("aspx.cs", "aspx.jaz.cs"));

                        XmlElement dependentUponNode =
                            insertedNode.OwnerDocument.CreateElement("DependentUpon", insertedNode.NamespaceURI);
                        dependentUponNode.InnerText = parsedInsertedNodeName.Replace(".aspx.cs", ".aspx");
                        newNode.AppendChild(dependentUponNode);

                        if ((bool)row.Cells["Existing jaz files"].Value)
                        {
                            if (insertedNode.ParentNode.SelectNodes("*[@Include='" +
                                                                    insertedNodeName.Replace(OldFileExtension, NewFileExtension) + "']").Count == 0)
                            {
                                insertedNode.ParentNode.InsertAfter(newNode, insertedNode);
                                insertedNode.OwnerDocument.Save(docName);
                                string fileFullPath = docName.Replace(uri.Segments[uri.Segments.Length - 1].ToString(), "") +
                                                      insertedNode.Attributes.GetNamedItem("Include").Value
                                                      .Replace(OldFileExtension, NewFileExtension);
                                progectSettings.AddNewJazFile(fileFullPath);
                                FileInfo   newFile = new FileInfo(fileFullPath);
                                FileStream fs      = newFile.Create();
                                fs.Dispose();
                                CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
                                string          ns       = row.Cells["Guessed namespace"].Value.ToString();
                                string          cn       = row.Cells["Guessed class name"].Value.ToString();
                                FileGenerator.GenerateCode
                                (
                                    provider,
                                    FileGenerator.BuildJAZContent(ns, cn, insertedNodeName),
                                    fileFullPath
                                );
                                string           exportFilePath = Path.Combine(Path.GetDirectoryName(docName), "ExportSetting.xml");
                                PageSettings     pageSet        = new PageSettings(exportFilePath, insertedNodeName, ns, cn);
                                XmlStoreProvider storeProvider  = new XmlStoreProvider(exportFilePath);
                                progectSettings.SelectedPage = pageSet;
                                storeProvider.SaveSettings(progectSettings);
                            }
                        }
                        else
                        {
                            XmlNode removedNode = insertedNode.ParentNode.SelectSingleNode("*[@Include='" +
                                                                                           insertedNodeName.Replace(OldFileExtension, NewFileExtension) + "']");
                            if (removedNode != null)
                            {
                                insertedNode.ParentNode.RemoveChild(removedNode);
                                insertedNode.OwnerDocument.Save(docName);
                                string unselectedFileName = docName.Replace(uri.Segments[uri.Segments.Length - 1].ToString(), "") +
                                                            insertedNode.Attributes.GetNamedItem("Include").Value
                                                            .Replace(OldFileExtension, NewFileExtension);
                                FileInfo newFile = new FileInfo(unselectedFileName);
                                newFile.Delete();

                                if (progectSettings.GetJazFileCollection().Contains(unselectedFileName))
                                {
                                    progectSettings.RemoveJazFileFromCollection(unselectedFileName);
                                }
                            }
                        }
                    }
                    MessageBox.Show("Modify proccess successed", "executed", MessageBoxButtons.OK);
                    #endregion
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    dataGridNodesTable.Rows.Clear();
                    dataGridNodesTable.Columns.Clear();
                }
            }
        }