示例#1
0
        public RefactoringPreviewDialog(ProjectDom ctx, List <Change> changes)
        {
            this.Build();
            this.changes          = changes;
            treeviewPreview.Model = store;

            TreeViewColumn column = new TreeViewColumn();

            // pixbuf column
            var pixbufCellRenderer = new CellRendererPixbuf();

            column.PackStart(pixbufCellRenderer, false);
            column.SetAttributes(pixbufCellRenderer, "pixbuf", pixbufColumn);
            column.AddAttribute(pixbufCellRenderer, "visible", statusVisibleColumn);

            // text column
            CellRendererText cellRendererText = new CellRendererText();

            column.PackStart(cellRendererText, false);
            column.SetAttributes(cellRendererText, "text", textColumn);
            column.AddAttribute(cellRendererText, "visible", statusVisibleColumn);

            // location column
            CellRendererText cellRendererText2 = new CellRendererText();

            column.PackStart(cellRendererText2, false);
            column.SetCellDataFunc(cellRendererText2, new TreeCellDataFunc(SetLocationTextData));

            CellRendererDiff cellRendererDiff = new CellRendererDiff();

            column.PackStart(cellRendererDiff, true);
            column.SetCellDataFunc(cellRendererDiff, new TreeCellDataFunc(SetDiffCellData));

            treeviewPreview.AppendColumn(column);
            treeviewPreview.HeadersVisible = false;

            buttonCancel.Clicked += delegate {
                Destroy();
            };

            buttonOk.Clicked += delegate {
                IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBackgroundProgressMonitor(this.Title, null);
                RefactoringService.AcceptChanges(monitor, ctx, changes);

                Destroy();
            };

            FillChanges();
            Resize(IdeApp.Workbench.ActiveDocument.ActiveView.Control.Allocation.Width,
                   IdeApp.Workbench.ActiveDocument.ActiveView.Control.Allocation.Height);
        }
示例#2
0
        public RefactoringPreviewDialog(IList <Change> changes)
        {
            this.Build();
            this.changes                 = changes;
            treeviewPreview.Model        = store;
            treeviewPreview.SearchColumn = -1;             // disable the interactive search

            TreeViewColumn column = new TreeViewColumn();

            // pixbuf column
            var pixbufCellRenderer = new CellRendererImage();

            column.PackStart(pixbufCellRenderer, false);
            column.SetAttributes(pixbufCellRenderer, "image", pixbufColumn);
            column.AddAttribute(pixbufCellRenderer, "visible", statusVisibleColumn);

            // text column
            CellRendererText cellRendererText = new CellRendererText();

            column.PackStart(cellRendererText, false);
            column.SetAttributes(cellRendererText, "text", textColumn);
            column.AddAttribute(cellRendererText, "visible", statusVisibleColumn);

            // location column
            CellRendererText cellRendererText2 = new CellRendererText();

            column.PackStart(cellRendererText2, false);
            column.SetCellDataFunc(cellRendererText2, new TreeCellDataFunc(SetLocationTextData));

            CellRendererDiff cellRendererDiff = new CellRendererDiff();

            column.PackStart(cellRendererDiff, true);
            column.SetCellDataFunc(cellRendererDiff, new TreeCellDataFunc(SetDiffCellData));

            treeviewPreview.AppendColumn(column);
            treeviewPreview.HeadersVisible = false;

            buttonCancel.Clicked += delegate {
                Destroy();
            };

            buttonOk.Clicked += delegate {
                ProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBackgroundProgressMonitor(this.Title, null);
                RefactoringService.AcceptChanges(monitor, changes);

                Destroy();
            };

            FillChanges();
        }
		public RefactoringPreviewDialog (ProjectDom ctx, List<Change> changes)
		{
			this.Build ();
			this.changes = changes;
			treeviewPreview.Model = store;

			TreeViewColumn column = new TreeViewColumn ();

			// pixbuf column
			var pixbufCellRenderer = new CellRendererPixbuf ();
			column.PackStart (pixbufCellRenderer, false);
			column.SetAttributes (pixbufCellRenderer, "pixbuf", pixbufColumn);
			column.AddAttribute (pixbufCellRenderer, "visible", statusVisibleColumn);
			
			// text column
			CellRendererText cellRendererText = new CellRendererText ();
			column.PackStart (cellRendererText, false);
			column.SetAttributes (cellRendererText, "text", textColumn);
			column.AddAttribute (cellRendererText, "visible", statusVisibleColumn);
			
			// location column
			CellRendererText cellRendererText2 = new CellRendererText ();
			column.PackStart (cellRendererText2, false);
			column.SetCellDataFunc (cellRendererText2, new TreeCellDataFunc (SetLocationTextData));
			
			CellRendererDiff cellRendererDiff = new CellRendererDiff ();
			column.PackStart (cellRendererDiff, true);
			column.SetCellDataFunc (cellRendererDiff, new TreeCellDataFunc (SetDiffCellData));

			treeviewPreview.AppendColumn (column);
			treeviewPreview.HeadersVisible = false;
			
			buttonCancel.Clicked += delegate {
				Destroy ();
			};
			
			buttonOk.Clicked += delegate {
				IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBackgroundProgressMonitor (this.Title, null);
				RefactoringService.AcceptChanges (monitor, ctx, changes);
				
				Destroy ();
			};
			
			FillChanges ();
			Resize (IdeApp.Workbench.ActiveDocument.ActiveView.Control.Allocation.Width,
			        IdeApp.Workbench.ActiveDocument.ActiveView.Control.Allocation.Height);
		}
		public RefactoringPreviewDialog (IList<Change> changes)
		{
			this.Build ();
			this.changes = changes;
			treeviewPreview.Model = store;
			treeviewPreview.SearchColumn = -1; // disable the interactive search

			TreeViewColumn column = new TreeViewColumn ();

			// pixbuf column
			var pixbufCellRenderer = new CellRendererImage ();
			column.PackStart (pixbufCellRenderer, false);
			column.SetAttributes (pixbufCellRenderer, "image", pixbufColumn);
			column.AddAttribute (pixbufCellRenderer, "visible", statusVisibleColumn);
			
			// text column
			CellRendererText cellRendererText = new CellRendererText ();
			column.PackStart (cellRendererText, false);
			column.SetAttributes (cellRendererText, "text", textColumn);
			column.AddAttribute (cellRendererText, "visible", statusVisibleColumn);
			
			// location column
			CellRendererText cellRendererText2 = new CellRendererText ();
			column.PackStart (cellRendererText2, false);
			column.SetCellDataFunc (cellRendererText2, new TreeCellDataFunc (SetLocationTextData));
			
			CellRendererDiff cellRendererDiff = new CellRendererDiff ();
			column.PackStart (cellRendererDiff, true);
			column.SetCellDataFunc (cellRendererDiff, new TreeCellDataFunc (SetDiffCellData));

			treeviewPreview.AppendColumn (column);
			treeviewPreview.HeadersVisible = false;
			
			buttonCancel.Clicked += delegate {
				Destroy ();
			};
			
			buttonOk.Clicked += delegate {
				ProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBackgroundProgressMonitor (this.Title, null);
				RefactoringService.AcceptChanges (monitor, changes);
				
				Destroy ();
			};
			
			FillChanges ();
		}
    void SetDiffCellData (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
    {
        try
        {
            CellRendererDiff cellRendererDiff = (CellRendererDiff)cell;
            Change change = store.GetValue (iter, objColumn) as Change;
            cellRendererDiff.Visible = !(bool)store.GetValue (iter, statusVisibleColumn);
            if (change == null || !cellRendererDiff.Visible)
            {
                cellRendererDiff.InitCell (treeviewPreview, false, "", "");
                return;
            }
            TextReplaceChange replaceChange = change as TextReplaceChange;
            if (replaceChange == null)
                return;

            var openDocument = IdeApp.Workbench.GetDocument (replaceChange.FileName);
            Mono.TextEditor.TextDocument originalDocument = new Mono.TextEditor.TextDocument ();
            originalDocument.FileName = replaceChange.FileName;
            if (openDocument == null)
            {
                originalDocument.Text = Mono.TextEditor.Utils.TextFileUtility.ReadAllText (replaceChange.FileName);
            }
            else
            {
                originalDocument.Text = openDocument.Editor.Document.Text;
            }

            Mono.TextEditor.TextDocument changedDocument = new Mono.TextEditor.TextDocument ();
            changedDocument.FileName = replaceChange.FileName;
            changedDocument.Text = originalDocument.Text;

            changedDocument.Replace (replaceChange.Offset, replaceChange.RemovedChars, replaceChange.InsertedText);

            string diffString = Mono.TextEditor.Utils.Diff.GetDiffString (originalDocument, changedDocument);

            cellRendererDiff.InitCell (treeviewPreview, true, diffString, replaceChange.FileName);
        }
        catch (Exception e)
        {
            Console.WriteLine (e);
        }
    }
        void SetDiffCellData(Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
        {
            try {
                CellRendererDiff cellRendererDiff = (CellRendererDiff)cell;
                Change           change           = store.GetValue(iter, objColumn) as Change;
                cellRendererDiff.Visible = !(bool)store.GetValue(iter, statusVisibleColumn);
                if (change == null || !cellRendererDiff.Visible)
                {
                    cellRendererDiff.InitCell(treeviewPreview, false, "", "");
                    return;
                }
                TextReplaceChange replaceChange = change as TextReplaceChange;
                if (replaceChange == null)
                {
                    return;
                }

                Mono.TextEditor.Document doc = new Mono.TextEditor.Document();
                doc.Text = System.IO.File.ReadAllText(replaceChange.FileName);
                List <string> before = new List <string> ();
                foreach (var line in doc.Lines)
                {
                    before.Add(doc.GetTextAt(line.Offset, line.EditableLength));
                }

                ((Mono.TextEditor.IBuffer)doc).Replace(replaceChange.Offset, replaceChange.RemovedChars, replaceChange.InsertedText);

                List <string> after = new List <string> ();
                foreach (var line in doc.Lines)
                {
                    after.Add(doc.GetTextAt(line.Offset, line.EditableLength));
                }

                Diff diff = new Diff(before.ToArray(), after.ToArray(), true, true);

                System.IO.StringWriter w = new System.IO.StringWriter();
                UnifiedDiff.WriteUnifiedDiff(diff, w, replaceChange.FileName, replaceChange.FileName, 2);
                cellRendererDiff.InitCell(treeviewPreview, true, w.ToString().Trim(), replaceChange.FileName);
            } catch (Exception e) {
                Console.WriteLine(e);
            }
        }