blob: 4833f6b4b7c7ebe9c418615c6f447edae8b372c3 [file] [log] [blame]
#region Apache License, Version 2.0
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
using EnvDTE;
using NPanday.Artifact;
using NPanday.Model.Pom;
namespace NPanday.VisualStudio.Addin
{
public partial class RemoveArtifactsForm : Form
{
private List<NPanday.Artifact.Artifact> localArtifacts = new List<NPanday.Artifact.Artifact>();
private ArtifactContext artifactContext;
private Project project;
private List<Dependency> dependenciesFromPom;
public RemoveArtifactsForm()
{
InitializeComponent();
}
public RemoveArtifactsForm(Project project, ArtifactContext container)
{
this.project = project;
InitializeForm();
InitializeComponent();
artifactsListView.View = View.Details;
artifactContext = container;
}
private void InitializeForm()
{
this.SuspendLayout();
//
// RemoveArtifactsForm
//
this.ClientSize = new System.Drawing.Size(292, 260);
this.Name = "RemoveArtifactsForm";
this.Load += new System.EventHandler(this.RemoveArtifactsForm_Load);
this.ResumeLayout(false);
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void RemoveArtifactsForm_Load(object sender, EventArgs e)
{
String pomFileName = (new FileInfo(project.FileName).Directory).FullName + @"\..\..\..\pom.xml";
if (!new FileInfo(pomFileName).Exists)
{
MessageBox.Show("Could not remove reference. Missing pom file: File = " + pomFileName);
return;
}
XmlReader reader = XmlReader.Create(pomFileName);
XmlSerializer serializer = new XmlSerializer(typeof(NPanday.Model.Pom.Model));
if (!serializer.CanDeserialize(reader))
{
MessageBox.Show("Could not remove reference. Corrupted pom file: File = " + pomFileName);
return;
}
NPanday.Model.Pom.Model model = (NPanday.Model.Pom.Model)serializer.Deserialize(reader);
//List<Dependency> dependencies = new List<Dependency>();
dependenciesFromPom = new List<Dependency>();
if (model.dependencies != null)
{
dependenciesFromPom.AddRange( model.dependencies );
}
foreach (Dependency item in dependenciesFromPom)
{
System.Windows.Forms.ListViewItem viewitem = new System.Windows.Forms.ListViewItem(new string[] {
item.artifactId, item.version}, -1);
viewitem.Tag = item;
artifactsListView.Items.Add(viewitem);
}
//artifactsListBox.ClearSelected();
reader.Close();
}
private void removeBtn_Click(object sender, EventArgs e)
{
String pomFileName = (new FileInfo(project.FileName).Directory).FullName + @"\..\..\..\pom.xml";
if (!new FileInfo(pomFileName).Exists)
{
MessageBox.Show("Could not remove reference. Missing pom file: File = " + pomFileName);
return;
}
XmlReader reader = XmlReader.Create(pomFileName);
XmlSerializer serializer = new XmlSerializer(typeof(NPanday.Model.Pom.Model));
if (!serializer.CanDeserialize(reader))
{
MessageBox.Show("Could not remove reference. Corrupted pom file: File = " + pomFileName);
return;
}
NPanday.Model.Pom.Model model = (NPanday.Model.Pom.Model)serializer.Deserialize(reader);
List<Dependency> dependencies = new List<Dependency>();
ListView.SelectedIndexCollection indices = artifactsListView.SelectedIndices;
//remove dependencies at the pom
foreach (int indexItem in artifactsListView.SelectedIndices)
{
//MessageBox.Show(dependenciesFromPom[indexItem]);
dependenciesFromPom.RemoveAt (indexItem);
//VSProject vsProject1 = (VSProject)project.Object;
//File must exist
//VSProject vsProject = (VSProject)project.Object;
//vsProject.Imports.Re
}
reader.Close();
model.dependencies = dependenciesFromPom.ToArray();
TextWriter writer = new StreamWriter(pomFileName);
serializer.Serialize(writer, model);
writer.Close();
this.Close();
}
}
}