#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

920 lines
33 KiB

// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
namespace ICSharpCode.AddInManager
{
public class ManagerForm : System.Windows.Forms.Form
{
#region Form Initialization
static ManagerForm instance;
public static ManagerForm Instance {
get {
return instance;
}
}
public static void ShowForm()
{
if (instance == null) {
instance = new ManagerForm();
#if !STANDALONE
instance.Owner = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm;
#endif
instance.Show();
} else {
instance.Activate();
}
}
public ManagerForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
#if !STANDALONE
ICSharpCode.SharpDevelop.Gui.FormLocationHelper.Apply(this, "AddInManager.WindowBounds", true);
#endif
#if STANDALONE
actionFlowLayoutPanel.BackgroundImage = new Bitmap(typeof(ManagerForm).Assembly.GetManifestResourceStream("ICSharpCode.AddInManager.WizardBackground.png"));
#else
actionFlowLayoutPanel.BackgroundImage = ResourceService.GetBitmap("GeneralWizardBackground");
#endif
installButton.Text = ResourceService.GetString("AddInManager.InstallButton");
uninstallButton.Text = ResourceService.GetString("AddInManager.ActionUninstall");
closeButton.Text = ResourceService.GetString("Global.CloseButtonText");
showPreinstalledAddInsCheckBox.Text = ResourceService.GetString("AddInManager.ShowPreinstalledAddIns");
this.Text = ResourceService.GetString("AddInManager.Title");
CreateAddInList();
}
void OnSplitContainerPanel1Paint(object sender, PaintEventArgs e)
{
if (visibleAddInCount == 0) {
Rectangle rect = splitContainer.Panel1.ClientRectangle;
rect.Offset(16, 16);
rect.Inflate(-32, -32);
e.Graphics.DrawString(ResourceService.GetString("AddInManager.NoAddInsInstalled"),
Font, SystemBrushes.WindowText, rect);
}
}
void CreateAddInList()
{
Stack<AddInControl> stack = new Stack<AddInControl>();
int index = 0;
AddInControl addInControl;
List<AddIn> addInList = new List<AddIn>(AddInTree.AddIns);
addInList.Sort(delegate(AddIn a, AddIn b) {
return a.Name.CompareTo(b.Name);
});
foreach (AddIn addIn in addInList) {
string identity = addIn.Manifest.PrimaryIdentity;
if (identity == null || addIn.Properties["addInManagerHidden"] == "true")
continue;
addInControl = new AddInControl(addIn);
addInControl.Dock = DockStyle.Top;
addInControl.TabIndex = index++;
stack.Push(addInControl);
addInControl.Enter += OnControlEnter;
addInControl.Click += OnControlClick;
}
while (stack.Count > 0) {
splitContainer.Panel1.Controls.Add(stack.Pop());
}
ShowPreinstalledAddInsCheckBoxCheckedChanged(null, null);
#if SHOWALLADDINS
showPreinstalledAddInsCheckBox.Visible = false;
showPreinstalledAddInsCheckBox.Checked = true;
#endif
splitContainer.Panel2Collapsed = true;
}
void RefreshAddInList()
{
List<AddIn> oldSelected = selected;
foreach (Control ctl in splitContainer.Panel1.Controls) {
ctl.Dispose();
}
splitContainer.Panel1.Controls.Clear();
CreateAddInList();
if (oldSelected != null) {
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
if (oldSelected.Contains(ctl.AddIn))
ctl.Selected = true;
}
}
UpdateActionBox();
}
#endregion
#region AddInList-Management
int visibleAddInCount = 0;
void ShowPreinstalledAddInsCheckBoxCheckedChanged(object sender, EventArgs e)
{
visibleAddInCount = 0;
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
ctl.Selected = false;
bool visible;
if (showPreinstalledAddInsCheckBox.Checked) {
visible = true;
} else {
if (ctl == oldFocus)
oldFocus = null;
visible = !FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, ctl.AddIn.FileName);
}
if (visible)
visibleAddInCount += 1;
ctl.Visible = visible;
}
UpdateActionBox();
}
void OnControlClick(object sender, EventArgs e)
{
// clicking again on already focused item:
// remove selection of other items / or with Ctrl: toggle selection
if (((Control)sender).Focused)
OnControlEnter(sender, e);
}
AddInControl oldFocus;
bool ignoreFocusChange;
void OnControlEnter(object sender, EventArgs e)
{
if (ignoreFocusChange)
return;
bool ctrl = (ModifierKeys & Keys.Control) == Keys.Control;
if ((ModifierKeys & Keys.Shift) == Keys.Shift && sender != oldFocus) {
bool sel = false;
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
if (!ctl.Visible) continue;
if (ctl == sender || ctl == oldFocus) {
sel = !sel;
ctl.Selected = true;
} else {
if (sel || !ctrl) {
ctl.Selected = sel;
}
}
}
} else if (ctrl) {
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
if (ctl == sender)
ctl.Selected = !ctl.Selected;
}
oldFocus = (AddInControl)sender;
} else {
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
ctl.Selected = ctl == sender;
}
oldFocus = (AddInControl)sender;
}
UpdateActionBox();
}
#endregion
#region UpdateActionBox
List<AddIn> selected;
AddInAction selectedAction;
void UpdateActionBox()
{
ignoreFocusChange = true;
selected = new List<AddIn>();
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
if (ctl.Selected)
selected.Add(ctl.AddIn);
}
splitContainer.Panel2Collapsed = selected.Count == 0;
if (selected.Count > 0) {
dependencyTable.Visible = false;
runActionButton.Visible = true;
uninstallButton.Visible = true;
bool allEnabled = true;
bool allDisabled = true;
bool allInstalling = true;
bool allUninstalling = true;
bool allUpdating = true;
bool allUninstallable = true;
bool hasErrors = false;
foreach (AddIn addIn in selected) {
allEnabled &= addIn.Action == AddInAction.Enable;
if (addIn.Action == AddInAction.DependencyError || addIn.Action == AddInAction.InstalledTwice)
hasErrors = true;
else
allDisabled &= addIn.Action == AddInAction.Disable;
allUpdating &= addIn.Action == AddInAction.Update;
allInstalling &= addIn.Action == AddInAction.Install;
allUninstalling &= addIn.Action == AddInAction.Uninstall;
if (allUninstallable) {
if (FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, addIn.FileName)) {
allUninstallable = false;
}
}
}
if (allEnabled) {
selectedAction = AddInAction.Disable;
actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionDisable");
actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionDisable");
runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Disable);
uninstallButton.Enabled = allUninstallable && runActionButton.Enabled;
} else if (allDisabled) {
selectedAction = AddInAction.Enable;
actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionEnable");
actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionEnable");
runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Enable);
if (hasErrors)
runActionButton.Enabled = false;
uninstallButton.Enabled = allUninstallable;
} else if (allInstalling) {
selectedAction = AddInAction.Uninstall;
actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionCancelInstallation");
actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionCancelInstall");
runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Disable);
uninstallButton.Visible = false;
} else if (allUninstalling) {
selectedAction = AddInAction.Enable;
actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionCancelDeinstallation");
actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionCancelDeinstallation");
runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.Enable);
uninstallButton.Visible = false;
} else if (allUpdating) {
selectedAction = AddInAction.InstalledTwice;
actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionCancelUpdate");
actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionCancelUpdate");
runActionButton.Enabled = ShowDependencies(selected, ShowDependencyMode.CancelUpdate);
uninstallButton.Visible = false;
} else {
actionGroupBox.Text = "";
actionDescription.Text = ResourceService.GetString("AddInManager.DescriptionInconsistentSelection");
runActionButton.Visible = false;
uninstallButton.Visible = false;
}
}
ignoreFocusChange = false;
}
enum ShowDependencyMode {
Disable,
Enable,
CancelUpdate
}
bool ShowDependencies(IList<AddIn> addIns, ShowDependencyMode mode)
{
List<AddInReference> dependencies = new List<AddInReference>(); // only used with enable=true
List<KeyValuePair<AddIn, AddInReference>> dependenciesToSel = new List<KeyValuePair<AddIn, AddInReference>>();
Dictionary<string, Version> addInDict = new Dictionary<string, Version>();
Dictionary<string, Version> modifiedAddIns = new Dictionary<string, Version>();
// add available addins
foreach (AddIn addIn in AddInTree.AddIns) {
if (addIn.Action != AddInAction.Enable && addIn.Action != AddInAction.Install)
continue;
if (addIns.Contains(addIn))
continue;
foreach (KeyValuePair<string, Version> pair in addIn.Manifest.Identities) {
addInDict[pair.Key] = pair.Value;
}
}
// create list of modified addin names
foreach (AddIn addIn in addIns) {
foreach (KeyValuePair<string, Version> pair in addIn.Manifest.Identities) {
modifiedAddIns[pair.Key] = pair.Value;
}
}
// add new addins
if (mode != ShowDependencyMode.Disable) {
foreach (AddIn addIn in addIns) {
if (mode == ShowDependencyMode.CancelUpdate && !addIn.Enabled) {
continue;
}
foreach (KeyValuePair<string, Version> pair in addIn.Manifest.Identities) {
addInDict[pair.Key] = pair.Value;
}
foreach (AddInReference dep in addIn.Manifest.Dependencies) {
if (!dependencies.Contains(dep))
dependencies.Add(dep);
}
}
}
// add dependencies to the to-be-changed addins
foreach (AddIn addIn in AddInTree.AddIns) {
if (addIn.Action != AddInAction.Enable && addIn.Action != AddInAction.Install)
continue;
if (addIns.Contains(addIn))
continue;
foreach (AddInReference dep in addIn.Manifest.Dependencies) {
if (modifiedAddIns.ContainsKey(dep.Name)) {
dependenciesToSel.Add(new KeyValuePair<AddIn, AddInReference>(addIn, dep));
}
}
}
foreach (Control ctl in dependencyTable.Controls) {
ctl.Dispose();
}
dependencyTable.Controls.Clear();
bool allDepenciesOK = true;
if (dependencies.Count > 0 || dependenciesToSel.Count > 0) {
if (dependencies.Count == 0) {
dependencyTable.RowCount = 1 + dependenciesToSel.Count;
} else if (dependenciesToSel.Count == 0) {
dependencyTable.RowCount = 1 + dependencies.Count;
} else {
dependencyTable.RowCount = 2 + dependencies.Count + dependenciesToSel.Count;
}
while (dependencyTable.RowStyles.Count < dependencyTable.RowCount) {
dependencyTable.RowStyles.Add(new RowStyle(SizeType.AutoSize));
}
int rowIndex = 0;
if (dependencies.Count > 0) {
AddLabelRow(rowIndex++, ResourceService.GetString("AddInManager.RequiredDependencies"));
foreach (AddInReference dep in dependencies) {
if (!AddDependencyRow(addInDict, dep, rowIndex++, null))
allDepenciesOK = false;
}
}
if (dependenciesToSel.Count > 0) {
AddLabelRow(rowIndex++, ResourceService.GetString("AddInManager.RequiredBy"));
foreach (KeyValuePair<AddIn, AddInReference> pair in dependenciesToSel) {
if (!AddDependencyRow(addInDict, pair.Value, rowIndex++, pair.Key.Name))
allDepenciesOK = false;
}
}
dependencyTable.Visible = true;
}
return allDepenciesOK;
}
bool AddDependencyRow(Dictionary<string, Version> addInDict, AddInReference dep, int rowIndex, string requiredByName)
{
string text = requiredByName ?? GetDisplayName(dep.Name);
Version versionFound;
Label label = new Label();
label.AutoSize = true;
label.Text = text;
PictureBox box = new PictureBox();
box.BorderStyle = BorderStyle.None;
box.Size = new Size(16, 16);
bool isOK = dep.Check(addInDict, out versionFound);
box.SizeMode = PictureBoxSizeMode.CenterImage;
box.Image = WinFormsResourceService.GetBitmap(isOK ? "Icons.16x16.OK" : "Icons.16x16.DeleteIcon");
dependencyTable.Controls.Add(label, 1, rowIndex);
dependencyTable.Controls.Add(box, 0, rowIndex);
return isOK;
}
void AddLabelRow(int rowIndex, string text)
{
Label label = new Label();
label.AutoSize = true;
label.Text = text;
dependencyTable.Controls.Add(label, 0, rowIndex);
dependencyTable.SetColumnSpan(label, 2);
}
string GetDisplayName(string identity)
{
foreach (AddIn addIn in AddInTree.AddIns) {
if (addIn.Manifest.Identities.ContainsKey(identity))
return addIn.Name;
}
return identity;
}
#endregion
#region Install new AddIns
void InstallButtonClick(object sender, EventArgs e)
{
using (OpenFileDialog dlg = new OpenFileDialog()) {
dlg.Filter = ResourceService.GetString("AddInManager.FileFilter");
dlg.Multiselect = true;
if (dlg.ShowDialog() == DialogResult.OK) {
if (ShowInstallableAddIns(dlg.FileNames)) {
if (runActionButton.Visible && runActionButton.Enabled)
runActionButton.PerformClick();
}
}
}
}
public bool ShowInstallableAddIns(IEnumerable<string> fileNames)
{
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
ctl.Selected = false;
}
UpdateActionBox();
List<InstallableAddIn> list = new List<InstallableAddIn>();
foreach (string file in fileNames) {
try {
// Same file-extension check is in Panel1DragEnter
switch (Path.GetExtension(file).ToLowerInvariant()) {
case ".addin":
if (FileUtility.IsBaseDirectory(FileUtility.ApplicationRootPath, file)) {
MessageService.ShowMessage("You cannot install AddIns inside the SharpDevelop directory, " +
"they will be picked up as pre-installed AddIns automatically.");
return false;
}
list.Add(new InstallableAddIn(file, false));
break;
case ".sdaddin":
case ".zip":
list.Add(new InstallableAddIn(file, true));
break;
default:
MessageService.ShowMessage("Unknown file format: " + Path.GetExtension(file));
return false;
}
} catch (AddInLoadException ex) {
MessageService.ShowMessage("Error loading " + file + ":\n" + ex.Message);
return false;
}
}
ShowInstallableAddIns(list);
return true;
}
IList<InstallableAddIn> shownAddInPackages;
void ShowInstallableAddIns(IList<InstallableAddIn> addInPackages)
{
shownAddInPackages = addInPackages;
ignoreFocusChange = true;
splitContainer.Panel2Collapsed = false;
dependencyTable.Visible = false;
runActionButton.Visible = true;
uninstallButton.Visible = false;
selectedAction = AddInAction.Install;
List<string> installAddIns = new List<string>();
List<string> updateAddIns = new List<string>();
foreach (InstallableAddIn addInPackage in addInPackages) {
string identity = addInPackage.AddIn.Manifest.PrimaryIdentity;
AddIn foundAddIn = null;
foreach (AddIn addIn in AddInTree.AddIns) {
if (addIn.Action != AddInAction.Install
&& addIn.Manifest.Identities.ContainsKey(identity))
{
foundAddIn = addIn;
break;
}
}
if (foundAddIn != null) {
updateAddIns.Add(addInPackage.AddIn.Name);
} else {
installAddIns.Add(addInPackage.AddIn.Name);
}
}
if (updateAddIns.Count == 0) {
actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionInstall");
} else if (installAddIns.Count == 0) {
actionGroupBox.Text = runActionButton.Text = ResourceService.GetString("AddInManager.ActionUpdate");
} else {
actionGroupBox.Text = runActionButton.Text =
ResourceService.GetString("AddInManager.ActionInstall")
+ " + " +
ResourceService.GetString("AddInManager.ActionUpdate");
}
List<AddIn> addInList = new List<AddIn>();
StringBuilder b = new StringBuilder();
if (installAddIns.Count == 1) {
b.Append("Installs the AddIn " + installAddIns[0]);
} else if (installAddIns.Count > 1) {
b.Append("Installs the AddIns " + string.Join(",", installAddIns.ToArray()));
}
if (updateAddIns.Count > 0 && installAddIns.Count > 0)
b.Append("; ");
if (updateAddIns.Count == 1) {
b.Append("Updates the AddIn " + updateAddIns[0]);
} else if (updateAddIns.Count > 1) {
b.Append("Updates the AddIns " + string.Join(",", updateAddIns.ToArray()));
}
actionDescription.Text = b.ToString();
runActionButton.Enabled = ShowDependencies(addInList, ShowDependencyMode.Enable);
}
void RunInstallation()
{
// install new AddIns
foreach (InstallableAddIn addInPackage in shownAddInPackages) {
string identity = addInPackage.AddIn.Manifest.PrimaryIdentity;
AddIn foundAddIn = null;
foreach (AddIn addIn in AddInTree.AddIns) {
if (addIn.Manifest.Identities.ContainsKey(identity)) {
foundAddIn = addIn;
break;
}
}
if (foundAddIn != null) {
addInPackage.Install(true);
if (foundAddIn.Action != AddInAction.Enable) {
ICSharpCode.Core.AddInManager.Enable(new AddIn[] { foundAddIn });
}
if (foundAddIn.Action != AddInAction.Install) {
foundAddIn.Action = AddInAction.Update;
}
} else {
addInPackage.Install(false);
}
}
RefreshAddInList();
}
#endregion
#region Uninstall AddIns
void UninstallButtonClick(object sender, EventArgs e)
{
ICSharpCode.Core.AddInManager.RemoveExternalAddIns(selected);
InstallableAddIn.Uninstall(selected);
RefreshAddInList();
}
#endregion
#region Drag'N'Drop
void Panel1DragEnter(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent(DataFormats.FileDrop)) {
e.Effect = DragDropEffects.None;
return;
}
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
int addInCount = 0;
int packageCount = 0;
foreach (string file in files) {
switch (Path.GetExtension(file).ToLowerInvariant()) {
case ".addin":
addInCount += 1;
break;
case ".sdaddin":
case ".zip":
packageCount += 1;
break;
default:
e.Effect = DragDropEffects.None;
return;
}
}
if (addInCount == 0 && packageCount == 0) {
e.Effect = DragDropEffects.None;
} else if (addInCount == 0) {
e.Effect = DragDropEffects.Copy;
} else {
e.Effect = DragDropEffects.Link;
}
}
void Panel1DragDrop(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent(DataFormats.FileDrop))
return;
ShowInstallableAddIns((string[])e.Data.GetData(DataFormats.FileDrop));
}
#endregion
void CloseButtonClick(object sender, EventArgs e)
{
Close();
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
instance = null;
}
public void TryRunAction(AddIn addIn, AddInAction action)
{
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
ctl.Selected = ctl.AddIn == addIn;
}
UpdateActionBox();
if (selectedAction == action && runActionButton.Visible && runActionButton.Enabled)
runActionButton.PerformClick();
}
public void TryUninstall(AddIn addIn)
{
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
ctl.Selected = ctl.AddIn == addIn;
}
UpdateActionBox();
if (uninstallButton.Visible && uninstallButton.Enabled)
uninstallButton.PerformClick();
}
void RunActionButtonClick(object sender, EventArgs e)
{
switch (selectedAction) {
case AddInAction.Disable:
for (int i = 0; i < selected.Count; i++) {
if (selected[i].Manifest.PrimaryIdentity == "ICSharpCode.AddInManager") {
MessageService.ShowMessage("You cannot disable the AddInManager because you need it to re-enable AddIns!");
selected.RemoveAt(i--);
}
}
ICSharpCode.Core.AddInManager.Disable(selected);
break;
case AddInAction.Enable:
ICSharpCode.Core.AddInManager.Enable(selected);
break;
case AddInAction.Install:
RunInstallation();
return;
case AddInAction.Uninstall:
UninstallButtonClick(sender, e);
return;
case AddInAction.InstalledTwice: // used to cancel installation of update
InstallableAddIn.CancelUpdate(selected);
foreach (AddIn addIn in selected) {
addIn.Action = addIn.Enabled ? AddInAction.Enable : AddInAction.Disable;
}
break;
default:
throw new NotImplementedException();
}
foreach (AddInControl ctl in splitContainer.Panel1.Controls) {
ctl.Invalidate();
}
UpdateActionBox();
}
#region Windows Forms Designer generated code
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.topPanel = new System.Windows.Forms.Panel();
this.bottomPanel = new System.Windows.Forms.Panel();
this.installButton = new System.Windows.Forms.Button();
this.closeButton = new System.Windows.Forms.Button();
this.showPreinstalledAddInsCheckBox = new System.Windows.Forms.CheckBox();
this.splitContainer = new System.Windows.Forms.SplitContainer();
this.actionGroupBox = new System.Windows.Forms.GroupBox();
this.actionFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
this.actionDescription = new System.Windows.Forms.Label();
this.dependencyTable = new System.Windows.Forms.TableLayoutPanel();
this.dummyLabel1 = new System.Windows.Forms.Label();
this.dummyLabel2 = new System.Windows.Forms.Label();
this.runActionButton = new System.Windows.Forms.Button();
this.uninstallButton = new System.Windows.Forms.Button();
this.bottomPanel.SuspendLayout();
this.splitContainer.Panel2.SuspendLayout();
this.splitContainer.SuspendLayout();
this.actionGroupBox.SuspendLayout();
this.actionFlowLayoutPanel.SuspendLayout();
this.dependencyTable.SuspendLayout();
this.SuspendLayout();
//
// topPanel
//
this.topPanel.Dock = System.Windows.Forms.DockStyle.Top;
this.topPanel.Location = new System.Drawing.Point(0, 0);
this.topPanel.Name = "topPanel";
this.topPanel.Size = new System.Drawing.Size(460, 33);
this.topPanel.TabIndex = 1;
this.topPanel.Visible = false;
//
// bottomPanel
//
this.bottomPanel.Controls.Add(this.installButton);
this.bottomPanel.Controls.Add(this.closeButton);
this.bottomPanel.Controls.Add(this.showPreinstalledAddInsCheckBox);
this.bottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
this.bottomPanel.Location = new System.Drawing.Point(0, 355);
this.bottomPanel.Name = "bottomPanel";
this.bottomPanel.Size = new System.Drawing.Size(460, 35);
this.bottomPanel.TabIndex = 0;
//
// installButton
//
this.installButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.installButton.Location = new System.Drawing.Point(274, 6);
this.installButton.Name = "installButton";
this.installButton.Size = new System.Drawing.Size(93, 23);
this.installButton.TabIndex = 1;
this.installButton.Text = "Install AddIn";
this.installButton.UseCompatibleTextRendering = true;
this.installButton.UseVisualStyleBackColor = true;
this.installButton.Click += new System.EventHandler(this.InstallButtonClick);
//
// closeButton
//
this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.closeButton.Location = new System.Drawing.Point(373, 6);
this.closeButton.Name = "closeButton";
this.closeButton.Size = new System.Drawing.Size(75, 23);
this.closeButton.TabIndex = 2;
this.closeButton.Text = "Close";
this.closeButton.UseCompatibleTextRendering = true;
this.closeButton.UseVisualStyleBackColor = true;
this.closeButton.Click += new System.EventHandler(this.CloseButtonClick);
//
// showPreinstalledAddInsCheckBox
//
this.showPreinstalledAddInsCheckBox.Location = new System.Drawing.Point(3, 6);
this.showPreinstalledAddInsCheckBox.Name = "showPreinstalledAddInsCheckBox";
this.showPreinstalledAddInsCheckBox.Size = new System.Drawing.Size(169, 24);
this.showPreinstalledAddInsCheckBox.TabIndex = 0;
this.showPreinstalledAddInsCheckBox.Text = "Show preinstalled AddIns";
this.showPreinstalledAddInsCheckBox.UseCompatibleTextRendering = true;
this.showPreinstalledAddInsCheckBox.UseVisualStyleBackColor = true;
this.showPreinstalledAddInsCheckBox.CheckedChanged += new System.EventHandler(this.ShowPreinstalledAddInsCheckBoxCheckedChanged);
//
// splitContainer
//
this.splitContainer.BackColor = System.Drawing.SystemColors.Window;
this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer.Location = new System.Drawing.Point(0, 33);
this.splitContainer.Name = "splitContainer";
//
// splitContainer.Panel1
//
this.splitContainer.Panel1.AllowDrop = true;
this.splitContainer.Panel1.AutoScroll = true;
this.splitContainer.Panel1.DragDrop += new System.Windows.Forms.DragEventHandler(this.Panel1DragDrop);
this.splitContainer.Panel1.DragEnter += new System.Windows.Forms.DragEventHandler(this.Panel1DragEnter);
this.splitContainer.Panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.OnSplitContainerPanel1Paint);
this.splitContainer.Panel1MinSize = 100;
//
// splitContainer.Panel2
//
this.splitContainer.Panel2.Controls.Add(this.actionGroupBox);
this.splitContainer.Panel2MinSize = 100;
this.splitContainer.Size = new System.Drawing.Size(460, 322);
this.splitContainer.SplitterDistance = 248;
this.splitContainer.TabIndex = 2;
//
// actionGroupBox
//
this.actionGroupBox.Controls.Add(this.actionFlowLayoutPanel);
this.actionGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.actionGroupBox.Location = new System.Drawing.Point(0, 0);
this.actionGroupBox.Name = "actionGroupBox";
this.actionGroupBox.Size = new System.Drawing.Size(208, 322);
this.actionGroupBox.TabIndex = 0;
this.actionGroupBox.TabStop = false;
this.actionGroupBox.Text = "actionGroupBox";
this.actionGroupBox.UseCompatibleTextRendering = true;
//
// actionFlowLayoutPanel
//
this.actionFlowLayoutPanel.AutoScroll = true;
this.actionFlowLayoutPanel.Controls.Add(this.actionDescription);
this.actionFlowLayoutPanel.Controls.Add(this.dependencyTable);
this.actionFlowLayoutPanel.Controls.Add(this.runActionButton);
this.actionFlowLayoutPanel.Controls.Add(this.uninstallButton);
this.actionFlowLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.actionFlowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
this.actionFlowLayoutPanel.ForeColor = System.Drawing.SystemColors.WindowText;
this.actionFlowLayoutPanel.Location = new System.Drawing.Point(3, 17);
this.actionFlowLayoutPanel.Name = "actionFlowLayoutPanel";
this.actionFlowLayoutPanel.Size = new System.Drawing.Size(202, 302);
this.actionFlowLayoutPanel.TabIndex = 0;
this.actionFlowLayoutPanel.WrapContents = false;
//
// actionDescription
//
this.actionDescription.AutoSize = true;
this.actionDescription.Location = new System.Drawing.Point(3, 0);
this.actionDescription.Name = "actionDescription";
this.actionDescription.Size = new System.Drawing.Size(90, 18);
this.actionDescription.TabIndex = 0;
this.actionDescription.Text = "actionDescription";
this.actionDescription.UseCompatibleTextRendering = true;
//
// dependencyTable
//
this.dependencyTable.AutoSize = true;
this.dependencyTable.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.dependencyTable.ColumnCount = 2;
this.dependencyTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.dependencyTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.dependencyTable.Controls.Add(this.dummyLabel1, 1, 0);
this.dependencyTable.Controls.Add(this.dummyLabel2, 1, 1);
this.dependencyTable.Location = new System.Drawing.Point(3, 21);
this.dependencyTable.Name = "dependencyTable";
this.dependencyTable.RowCount = 2;
this.dependencyTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.dependencyTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.dependencyTable.Size = new System.Drawing.Size(55, 36);
this.dependencyTable.TabIndex = 1;
//
// dummyLabel1
//
this.dummyLabel1.AutoSize = true;
this.dummyLabel1.Location = new System.Drawing.Point(23, 0);
this.dummyLabel1.Name = "dummyLabel1";
this.dummyLabel1.Size = new System.Drawing.Size(29, 18);
this.dummyLabel1.TabIndex = 0;
this.dummyLabel1.Text = "dep1";
this.dummyLabel1.UseCompatibleTextRendering = true;
//
// dummyLabel2
//
this.dummyLabel2.AutoSize = true;
this.dummyLabel2.Location = new System.Drawing.Point(23, 18);
this.dummyLabel2.Name = "dummyLabel2";
this.dummyLabel2.Size = new System.Drawing.Size(29, 18);
this.dummyLabel2.TabIndex = 1;
this.dummyLabel2.Text = "dep2";
this.dummyLabel2.UseCompatibleTextRendering = true;
//
// runActionButton
//
this.runActionButton.AutoSize = true;
this.runActionButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.runActionButton.Location = new System.Drawing.Point(3, 63);
this.runActionButton.MinimumSize = new System.Drawing.Size(91, 25);
this.runActionButton.Name = "runActionButton";
this.runActionButton.Size = new System.Drawing.Size(91, 25);
this.runActionButton.TabIndex = 2;
this.runActionButton.Text = "runAction";
this.runActionButton.UseCompatibleTextRendering = true;
this.runActionButton.UseVisualStyleBackColor = true;
this.runActionButton.Click += new System.EventHandler(this.RunActionButtonClick);
//
// uninstallButton
//
this.uninstallButton.AutoSize = true;
this.uninstallButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.uninstallButton.Location = new System.Drawing.Point(3, 94);
this.uninstallButton.MinimumSize = new System.Drawing.Size(91, 25);
this.uninstallButton.Name = "uninstallButton";
this.uninstallButton.Size = new System.Drawing.Size(91, 25);
this.uninstallButton.TabIndex = 3;
this.uninstallButton.Text = "Uninstall";
this.uninstallButton.UseCompatibleTextRendering = true;
this.uninstallButton.UseVisualStyleBackColor = true;
this.uninstallButton.Click += new System.EventHandler(this.UninstallButtonClick);
//
// ManagerForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(460, 390);
this.Controls.Add(this.splitContainer);
this.Controls.Add(this.bottomPanel);
this.Controls.Add(this.topPanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.MinimumSize = new System.Drawing.Size(250, 200);
this.Name = "ManagerForm";
this.Text = "AddIn Manager";
this.bottomPanel.ResumeLayout(false);
this.splitContainer.Panel2.ResumeLayout(false);
this.splitContainer.ResumeLayout(false);
this.actionGroupBox.ResumeLayout(false);
this.actionFlowLayoutPanel.ResumeLayout(false);
this.actionFlowLayoutPanel.PerformLayout();
this.dependencyTable.ResumeLayout(false);
this.dependencyTable.PerformLayout();
this.ResumeLayout(false);
}
private System.Windows.Forms.Label dummyLabel2;
private System.Windows.Forms.Label dummyLabel1;
private System.Windows.Forms.CheckBox showPreinstalledAddInsCheckBox;
private System.Windows.Forms.Button installButton;
private System.Windows.Forms.Button uninstallButton;
private System.Windows.Forms.Button runActionButton;
private System.Windows.Forms.TableLayoutPanel dependencyTable;
private System.Windows.Forms.Label actionDescription;
private System.Windows.Forms.FlowLayoutPanel actionFlowLayoutPanel;
private System.Windows.Forms.GroupBox actionGroupBox;
private System.Windows.Forms.Button closeButton;
private System.Windows.Forms.SplitContainer splitContainer;
private System.Windows.Forms.Panel bottomPanel;
private System.Windows.Forms.Panel topPanel;
#endregion
}
}