Renamed LibraryProviderPlugin

Moved more common functionality to LibraryProvider
This commit is contained in:
Lars Brubaker 2015-06-26 10:53:10 -07:00
parent 9b90242caa
commit 70a8460af7
6 changed files with 51 additions and 65 deletions

View file

@ -39,6 +39,9 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
{
public abstract class LibraryProvider
{
private string parentProviderKey = null;
public string ParentProviderKey { get { return parentProviderKey; } }
public static RootedObjectEventHandler CollectionChanged = new RootedObjectEventHandler();
public static RootedObjectEventHandler DataReloaded = new RootedObjectEventHandler();
public static RootedObjectEventHandler ItemAdded = new RootedObjectEventHandler();
@ -52,19 +55,42 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
{
if (instance == null)
{
instance = new LibraryProviderSelector();
instance = new LibraryProviderSelector(null);
}
return instance;
}
set
{
instance = value;
}
}
public LibraryProvider(string parentProviderKey)
{
this.parentProviderKey = parentProviderKey;
}
#region Member Methods
public bool HasParent
{
get
{
if (this.parentProviderKey != null)
{
return true;
}
return false;
}
}
#endregion
#region Abstract Methods
public abstract int CollectionCount { get; }
public abstract bool HasParent { get; }
public abstract int ItemCount { get; }
public abstract string KeywordFilter { get; set; }

View file

@ -50,12 +50,11 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
private string description;
private FileSystemWatcher directoryWatcher = new FileSystemWatcher();
private string keywordFilter = string.Empty;
private string parentProviderKey = null;
private string rootPath;
public LibraryProviderFileSystem(string rootPath, string description, string parentProviderKey)
: base(parentProviderKey)
{
this.parentProviderKey = parentProviderKey;
this.description = description;
this.rootPath = rootPath;
@ -82,19 +81,6 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
}
}
public override bool HasParent
{
get
{
if (parentProviderKey != null)
{
return true;
}
return false;
}
}
public override int ItemCount
{
get
@ -176,9 +162,9 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
{
if (currentDirectory == ".")
{
if (parentProviderKey != null)
if (ParentProviderKey != null)
{
return new PrintItemCollection("..", parentProviderKey);
return new PrintItemCollection("..", ParentProviderKey);
}
else
{

View file

@ -36,9 +36,9 @@ using System.ComponentModel;
namespace MatterHackers.MatterControl.PrintLibrary.Provider
{
public class LibraryProviderFactory
public class LibraryProviderPlugin
{
virtual public LibraryProvider CreateProvider(string parentKey)
virtual public LibraryProvider CreateLibraryProvider(string parentProviderKey)
{
throw new NotImplementedException();
}

View file

@ -43,11 +43,11 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
private List<LibraryProvider> libraryProviders = new List<LibraryProvider>();
private int selectedLibraryProvider = -1;
public LibraryProviderSelector()
public LibraryProviderSelector(string parentProviderKey)
: base(parentProviderKey)
{
// put in the sqlite provider
libraryProviders.Add(LibraryProviderSQLite.Instance);
LibraryProviderSQLite.Instance.SetParentKey(this.ProviderKey);
// and any directory providers (sd card provider, etc...)
libraryProviders.Add(new LibraryProviderFileSystem(Path.Combine("C:\\", "Users", "LarsBrubaker", "Downloads"), "Downloads", this.ProviderKey));
@ -58,10 +58,10 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
//libraryProviders.Add(new LibraryProviderFileSystem(libraryCollection, "Library Folder2", this.ProviderKey));
// Check for LibraryProvider factories and put them in the list too.
PluginFinder<LibraryProviderFactory> libraryFactories = new PluginFinder<LibraryProviderFactory>();
foreach (LibraryProviderFactory factory in libraryFactories.Plugins)
PluginFinder<LibraryProviderPlugin> libraryProviderPlugins = new PluginFinder<LibraryProviderPlugin>();
foreach (LibraryProviderPlugin libraryProviderPlugin in libraryProviderPlugins.Plugins)
{
libraryProviders.Add(factory.CreateProvider(this.ProviderKey));
libraryProviders.Add(libraryProviderPlugin.CreateLibraryProvider(this.ProviderKey));
}
providerLocationStack.Add(new PrintItemCollection("..", ProviderKey));
@ -86,21 +86,6 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
}
}
public override bool HasParent
{
get
{
if (selectedLibraryProvider == -1)
{
return false;
}
else
{
return libraryProviders[selectedLibraryProvider].HasParent;
}
}
}
public override int ItemCount
{
get
@ -151,6 +136,14 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
}
public override string ProviderKey
{
get
{
return LibraryProviderSelectorKey;
}
}
public static string LibraryProviderSelectorKey
{
get
{

View file

@ -50,11 +50,11 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
private List<PrintItemCollection> childCollections = new List<PrintItemCollection>();
private PrintItemCollection collectionBase = GetRootLibraryCollection();
private string keywordFilter = string.Empty;
private string parentProviderKey = null;
private List<PrintItemWrapper> printItems = new List<PrintItemWrapper>();
public LibraryProviderSQLite()
: base(LibraryProviderSelector.LibraryProviderSelectorKey)
{
LoadLibraryItems();
}
@ -88,19 +88,6 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
}
}
public override bool HasParent
{
get
{
if (parentProviderKey != null)
{
return true;
}
return false;
}
}
public override int ItemCount
{
get
@ -282,9 +269,9 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
public override PrintItemCollection GetParentCollectionItem()
{
if (parentProviderKey != null)
if (ParentProviderKey != null)
{
return new PrintItemCollection("..", parentProviderKey);
return new PrintItemCollection("..", ParentProviderKey);
}
else
{
@ -357,12 +344,6 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
LoadLibraryItems();
}
public void SetParentKey(string parentKey)
{
this.parentProviderKey = parentKey;
UiThread.RunOnIdle(() => LibraryProvider.OnDataReloaded(null));
}
private static void AddStlOrGcode(string loadedFileName, string extension)
{
PrintItem printItem = new PrintItem();