-#region
-/* -----------------------------------------------------------------------
- * <copyright file="AppBootstrapper.cs" company="GRNet">
- *
- * Copyright 2011-2012 GRNET S.A. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * 1. Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- *
- * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and
- * documentation are those of the authors and should not be
- * interpreted as representing official policies, either expressed
- * or implied, of GRNET S.A.
- * </copyright>
- * -----------------------------------------------------------------------
- */
-#endregion
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Caliburn.Micro;
-using Caliburn.Micro.Logging;
-using Microsoft.Windows.Controls;
-using Pithos.Client.WPF.Properties;
-using Pithos.Core;
-using Pithos.Network;
-using log4net.Appender;
-using log4net.Config;
-using log4net.Filter;
-using log4net.Layout;
-
-namespace Pithos.Client.WPF
-{
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.Composition;
- using System.ComponentModel.Composition.Hosting;
- using System.ComponentModel.Composition.Primitives;
- using System.Linq;
- using Caliburn.Micro;
-
- public class AppBootstrapper : Bootstrapper<IShell>
- {
- CompositionContainer container;
-
- public AppBootstrapper()
- {
- LogManager.GetLog = type => new log4netLogger(type);
- UpgradeSettings();
-
- }
-
- private void UpgradeSettings()
- {
- if (Settings.Default.MustUpgrade)
- {
- Settings.Default.Upgrade();
- Settings.Default.MustUpgrade = false;
- Settings.Default.Save();
- }
- }
-
- /// <summary>
- /// By default, we are configured to use MEF
- /// </summary>
- protected override void Configure() {
- var catalog = new AggregateCatalog(
- AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()
- );
-
- Type[] types = { typeof(PithosMonitor), typeof(CloudFilesClient) };
- foreach (var type in types)
- {
- catalog.Catalogs.Add(new AssemblyCatalog(type.Assembly));
- }
-
- container = new CompositionContainer(catalog,true);
-
- var batch = new CompositionBatch();
-
- batch.AddExportedValue<IWindowManager>(new WindowManager());
- batch.AddExportedValue<IEventAggregator>(new EventAggregator());
- batch.AddExportedValue(container);
- batch.AddExportedValue(catalog);
-
-
- container.Compose(batch);
-
- ConventionManager.AddElementConvention<MenuItem>(ItemsControl.ItemsSourceProperty, "DataContext", "Click");
- ConventionManager.AddElementConvention<IntegerUpDown>(IntegerUpDown.ValueProperty, "Value", "ValueChanged");
- ConventionManager.AddElementConvention<BusyIndicator>(BusyIndicator.IsBusyProperty, "IsBusy", "DataContextChanged");
- }
-
- protected override object GetInstance(Type serviceType, string key)
- {
- string contract = string.IsNullOrEmpty(key) ? AttributedModelServices.GetContractName(serviceType) : key;
- var exports = container.GetExportedValues<object>(contract);
-
- if (exports.Any())
- return exports.First();
-
- throw new Exception(string.Format("Could not locate any instances of contract {0}.", contract));
- }
-
- protected override IEnumerable<object> GetAllInstances(Type serviceType)
- {
- return container.GetExportedValues<object>(AttributedModelServices.GetContractName(serviceType));
- }
-
- protected override void BuildUp(object instance)
- {
- container.SatisfyImportsOnce(instance);
- }
- }
-}
+#region\r
+/* -----------------------------------------------------------------------\r
+ * <copyright file="AppBootstrapper.cs" company="GRNet">\r
+ * \r
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer in the documentation and/or other materials\r
+ * provided with the distribution.\r
+ *\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF\r
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * The views and conclusions contained in the software and\r
+ * documentation are those of the authors and should not be\r
+ * interpreted as representing official policies, either expressed\r
+ * or implied, of GRNET S.A.\r
+ * </copyright>\r
+ * -----------------------------------------------------------------------\r
+ */\r
+#endregion\r
+using System.Windows;\r
+using System.Windows.Controls;\r
+using System.Windows.Navigation;\r
+using Caliburn.Micro;\r
+using Caliburn.Micro.Logging;\r
+using Pithos.Client.WPF.Properties;\r
+using Pithos.Core;\r
+using Pithos.Network;\r
+using Xceed.Wpf.Toolkit;\r
+using log4net.Appender;\r
+using log4net.Config;\r
+using log4net.Filter;\r
+using log4net.Layout;\r
+\r
+namespace Pithos.Client.WPF\r
+{\r
+ using System;\r
+ using System.Collections.Generic;\r
+ using System.ComponentModel.Composition;\r
+ using System.ComponentModel.Composition.Hosting;\r
+ using System.ComponentModel.Composition.Primitives;\r
+ using System.Linq;\r
+ using Caliburn.Micro;\r
+\r
+ public class AppBootstrapper : Bootstrapper<IShell>\r
+ {\r
+\r
+ CompositionContainer container;\r
+\r
+ public AppBootstrapper()\r
+ {\r
+ LogManager.GetLog = type => new log4netLogger(type);\r
+ UpgradeSettings();\r
+ }\r
+\r
+ private void UpgradeSettings()\r
+ {\r
+ if (Settings.Default.MustUpgrade)\r
+ {\r
+ Settings.Default.HashingParallelism = (byte) (Environment.ProcessorCount/2);\r
+ Settings.Default.Upgrade();\r
+ Settings.Default.MustUpgrade = false;\r
+ Settings.Default.Save();\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// By default, we are configured to use MEF\r
+ /// </summary>\r
+ protected override void Configure() {\r
+ var catalog = new AggregateCatalog(\r
+ AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()\r
+ );\r
+\r
+ Type[] types = { typeof(PithosMonitor), typeof(CloudFilesClient) };\r
+ foreach (var type in types)\r
+ {\r
+ catalog.Catalogs.Add(new AssemblyCatalog(type.Assembly));\r
+ }\r
+\r
+ container = new CompositionContainer(catalog,true);\r
+\r
+ var batch = new CompositionBatch();\r
+\r
+ batch.AddExportedValue<IWindowManager>(new WindowManager());\r
+ batch.AddExportedValue<IEventAggregator>(new EventAggregator());\r
+ batch.AddExportedValue(container);\r
+ batch.AddExportedValue(catalog);\r
+\r
+\r
+ container.Compose(batch);\r
+ \r
+ ConventionManager.AddElementConvention<MenuItem>(ItemsControl.ItemsSourceProperty, "DataContext", "Click");\r
+ ConventionManager.AddElementConvention<IntegerUpDown>(IntegerUpDown.ValueProperty, "Value", "ValueChanged");\r
+ ConventionManager.AddElementConvention<BusyIndicator>(BusyIndicator.IsBusyProperty, "IsBusy", "DataContextChanged");\r
+ }\r
+\r
+ protected override object GetInstance(Type serviceType, string key)\r
+ {\r
+ string contract = string.IsNullOrEmpty(key) ? AttributedModelServices.GetContractName(serviceType) : key;\r
+ var exports = container.GetExportedValues<object>(contract); \r
+\r
+ if (exports.Any())\r
+ return exports.First();\r
+\r
+ throw new Exception(string.Format("Could not locate any instances of contract {0}.", contract));\r
+ }\r
+\r
+ protected override IEnumerable<object> GetAllInstances(Type serviceType)\r
+ {\r
+ return container.GetExportedValues<object>(AttributedModelServices.GetContractName(serviceType));\r
+ }\r
+\r
+ protected override void BuildUp(object instance)\r
+ {\r
+ container.SatisfyImportsOnce(instance);\r
+ }\r
+ }\r
+}
\ No newline at end of file