using System.Windows.Forms;
using System;
using DevComponents.DotNetBar.Rendering;
using DevComponents.DotNetBar.Metro.Rendering;
using DevComponents.DotNetBar.Controls;
namespace DevComponents.DotNetBar
{
///
/// Summary description for PainterFactory.
///
internal class PainterFactory
{
private static Office2003ButtonItemPainter m_Office2003Painter=new Office2003ButtonItemPainter();
private static Office2007ButtonItemPainter m_Office2007Painter = new Office2007ButtonItemPainter();
private static MetroButtonItemPainter m_MetroButtonPainter = new MetroButtonItemPainter();
private static Office2003RibbonTabItemPainter m_RibbonTabItemOffice2003Painter=new Office2003RibbonTabItemPainter();
private static Office2007ItemContainerPainter m_Office2007ItemContainerPainter = new Office2007ItemContainerPainter();
private static Office2007BarBackgroundPainter m_Office2007BarBackgroundPainter = new Office2007BarBackgroundPainter();
private static Office2007KeyTipsPainter m_Office2007KeyTipsPainter = new Office2007KeyTipsPainter();
private static Office2007DialogLauncherPainter m_Office2007RibbonBarPainter = new Office2007DialogLauncherPainter();
private static Office2007RibbonControlPainter m_Office2007RibbonControlPainter = new Office2007RibbonControlPainter();
private static Office2007RibbonTabItemPainter m_Office2007RibbonTabItemPainter = new Office2007RibbonTabItemPainter();
//private static Office2007RibbonTabGroupPainter m_Office2007RibbonTabGroupPainter = new Office2007RibbonTabGroupPainter();
private static Rendering.Office2007ColorItemPainter m_Office2007ColorItemPainter = new Rendering.Office2007ColorItemPainter();
private static Office2007SystemCaptionItemPainter m_Office2007SystemCaptionItemPainter = null;
private static Office2007MdiSystemItemPainter m_Office2007MdiSystemItemPainter = new Office2007MdiSystemItemPainter();
private static Office2007FormCaptionPainter m_Office2007FormCaptionPainter = new Office2007FormCaptionPainter();
private static Rendering.Office2007RibbonOverflowPainter m_Office2007RibbonOverflowPainter = new DevComponents.DotNetBar.Rendering.Office2007RibbonOverflowPainter();
private static Rendering.Office2007QatOverflowPainter m_Office2007QatOverflowPainter = new DevComponents.DotNetBar.Rendering.Office2007QatOverflowPainter();
private static Rendering.Office2007QatCustomizeItemPainter m_Office2007QatCustomizePainter = new DevComponents.DotNetBar.Rendering.Office2007QatCustomizeItemPainter();
private static Rendering.Office2007CheckBoxItemPainter m_Office2007CheckBoxItemPainter = new Rendering.Office2007CheckBoxItemPainter();
private static Rendering.Office2007ProgressBarItemPainter m_Office2007ProgressBarPainter = new DevComponents.DotNetBar.Rendering.Office2007ProgressBarItemPainter();
private static Rendering.Office2007NavigationPanePainter m_Office2007NavPanePainter = new DevComponents.DotNetBar.Rendering.Office2007NavigationPanePainter();
private static Rendering.SliderPainter m_SliderPainter = new DevComponents.DotNetBar.Rendering.Office2007SliderPainter();
private static Rendering.SideBarPainter m_SideBarPainter = new DevComponents.DotNetBar.Rendering.Office2007SideBarPainter();
private static CrumbBarItemViewPainter m_CrumbBarItemViewPainter = null;
private static SwitchButtonPainter m_SwitchButtonPainter = null;
private static Office2010NavPaneButtonPainter _Office2010NavPaneButtonPainter = new Office2010NavPaneButtonPainter();
private static Rendering.RangeSliderPainter _RangeSliderPainter = new DevComponents.DotNetBar.Rendering.Office2010RangeSliderPainter();
public static ButtonItemPainter CreateButtonPainter(ButtonItem button)
{
if (button is RibbonTabItem)
{
return CreateRibbonTabItemPainter((RibbonTabItem)button);
}
if (button is TabFormItem)
{
return CreateTabFormItemPainter((TabFormItem)button);
}
else if (button is NewTabFormItem)
{
return CreateNewTabFormItemPainter((NewTabFormItem)button);
}
if (button is RibbonOverflowButtonItem)
{
ButtonItemPainter p = CreateRibbonOverflowButtonPainter((RibbonOverflowButtonItem)button);
if (p != null)
return p;
}
eDotNetBarStyle buttonEffectiveStyle = button.EffectiveStyle;
if (buttonEffectiveStyle == eDotNetBarStyle.Office2010 && button.ContainerState == eContainerState.NavigationPane)
{
return _Office2010NavPaneButtonPainter;
}
if (buttonEffectiveStyle == eDotNetBarStyle.Office2010 && button is ApplicationButton)
return Office2010ApplicationButtonPainter;
else if (button is DevComponents.DotNetBar.Metro.MetroAppButton || button is ApplicationButton && StyleManager.IsMetro(buttonEffectiveStyle))
return MetroAppButtonPainter;
if (BarFunctions.IsOffice2007Style(buttonEffectiveStyle))
{
if (StyleManager.IsMetro(buttonEffectiveStyle))
return m_MetroButtonPainter;
if (button.ContainerControl is RibbonBar)
return m_Office2007Painter;
return m_Office2007Painter;
}
return m_Office2003Painter;
}
private static ButtonItemPainter _Office2010ApplicationButtonPainter;
public static ButtonItemPainter Office2010ApplicationButtonPainter
{
get
{
if (_Office2010ApplicationButtonPainter == null) _Office2010ApplicationButtonPainter = new Office2010AppButtonPainter();
return _Office2010ApplicationButtonPainter;
}
}
private static ButtonItemPainter _MetroAppButtonPainter;
public static ButtonItemPainter MetroAppButtonPainter
{
get
{
if (_MetroAppButtonPainter == null) _MetroAppButtonPainter = new DevComponents.DotNetBar.Metro.Rendering.MetroAppButtonPainter();
return _MetroAppButtonPainter;
}
}
public static CrumbBarItemViewPainter GetCrumbBarItemViewPainter(ButtonItem button)
{
if (m_CrumbBarItemViewPainter == null)
m_CrumbBarItemViewPainter = new CrumbBarItemViewPainter();
return m_CrumbBarItemViewPainter;
}
public static ButtonItemPainter CreateRibbonOverflowButtonPainter(RibbonOverflowButtonItem button)
{
if (BarFunctions.IsOffice2007Style(button.EffectiveStyle))
return m_Office2007RibbonOverflowPainter;
return null;
}
public static ButtonItemPainter CreateRibbonTabItemPainter(RibbonTabItem tab)
{
if (BarFunctions.IsOffice2007Style(tab.EffectiveStyle) && !tab.IsOnMenu)
{
return m_Office2007RibbonTabItemPainter;
}
if ((tab.EffectiveStyle == eDotNetBarStyle.Office2003 || tab.EffectiveStyle == eDotNetBarStyle.VS2005) && !tab.IsOnMenu)
{
return m_RibbonTabItemOffice2003Painter;
}
return m_Office2003Painter;
}
private static OfficeTabFormItemPainter _TabFormItemPainter=new OfficeTabFormItemPainter();
public static ButtonItemPainter CreateTabFormItemPainter(TabFormItem tab)
{
return _TabFormItemPainter;
}
private static OfficeNewTabFormItemPainter _NewTabFormItemPainter = new OfficeNewTabFormItemPainter();
public static ButtonItemPainter CreateNewTabFormItemPainter(NewTabFormItem tab)
{
return _NewTabFormItemPainter;
}
public static ItemContainerPainter CreateItemContainerPainter(ItemContainer container)
{
if (BarFunctions.IsOffice2007Style(container.EffectiveStyle))
return m_Office2007ItemContainerPainter;
return null;
}
public static BarBackgroundPainter CreateBarBackgroundPainter(Bar bar)
{
return m_Office2007BarBackgroundPainter;
}
public static KeyTipsPainter CreateKeyTipsPainter()
{
if (StyleManager.IsMetro(StyleManager.Style))
return MetroKeyTipsPainter;
else
return m_Office2007KeyTipsPainter;
}
private static MetroKeyTipsPainter _MetroKeyTipsPainter = null;
private static MetroKeyTipsPainter MetroKeyTipsPainter
{
get
{
if (_MetroKeyTipsPainter == null) _MetroKeyTipsPainter = new MetroKeyTipsPainter();
return _MetroKeyTipsPainter;
}
}
public static DialogLauncherPainter CreateRibbonBarPainter(RibbonBar ribbon)
{
if (BarFunctions.IsOffice2007Style(ribbon.EffectiveStyle))
return m_Office2007RibbonBarPainter;
return null;
}
private static RibbonTabGroupPainter _Office2010RibbonTabGroupPainter = null;
private static RibbonTabGroupPainter Office2010RibbonTabGroupPainter
{
get
{
if (_Office2010RibbonTabGroupPainter == null) _Office2010RibbonTabGroupPainter = new Office2010RibbonTabGroupPainter();
return _Office2010RibbonTabGroupPainter;
}
}
private static RibbonTabGroupPainter _Office2007RibbonTabGroupPainter = null;
private static RibbonTabGroupPainter Office2007RibbonTabGroupPainter
{
get
{
if (_Office2007RibbonTabGroupPainter == null) _Office2007RibbonTabGroupPainter = new Office2007RibbonTabGroupPainter();
return _Office2007RibbonTabGroupPainter;
}
}
private static RibbonTabGroupPainter _MetroRibbonTabGroupPainter = null;
private static RibbonTabGroupPainter MetroRibbonTabGroupPainter
{
get
{
if (_MetroRibbonTabGroupPainter == null) _MetroRibbonTabGroupPainter = new MetroRibbonTabGroupPainter();
return _MetroRibbonTabGroupPainter;
}
}
public static RibbonTabGroupPainter CreateRibbonTabGroupPainter(eDotNetBarStyle style)
{
if (style == eDotNetBarStyle.Office2010)
return Office2010RibbonTabGroupPainter;
else if (StyleManager.IsMetro(style))
return MetroRibbonTabGroupPainter;
else
return Office2007RibbonTabGroupPainter;
}
public static Rendering.ColorItemPainter CreateColorItemPainter(ColorItem item)
{
return m_Office2007ColorItemPainter;
}
public static RibbonControlPainter CreateRibbonControlPainter(RibbonControl r)
{
if (BarFunctions.IsOffice2007Style(r.EffectiveStyle))
return m_Office2007RibbonControlPainter;
return null;
}
private static SystemCaptionItemPainter _MetroCaptionItemPainter = null;
private static SystemCaptionItemPainter MetroCaptionItemPainter
{
get
{
if (_MetroCaptionItemPainter == null) _MetroCaptionItemPainter = new DevComponents.DotNetBar.Metro.Rendering.MetroCaptionItemPainter();
return _MetroCaptionItemPainter;
}
}
private static Office2010SystemCaptionItemPainter _Office2010SystemCaptionItemPainter=null;
private static SystemCaptionItemPainter Office2010SystemCaptionItemPainter
{
get
{
if (_Office2010SystemCaptionItemPainter == null) _Office2010SystemCaptionItemPainter = new Office2010SystemCaptionItemPainter();
return _Office2010SystemCaptionItemPainter;
}
}
private static Office2007SystemCaptionItemPainter _Office2007SystemCaptionItemPainter = null;
private static SystemCaptionItemPainter Office2007SystemCaptionItemPainter
{
get
{
if (_Office2007SystemCaptionItemPainter == null) _Office2007SystemCaptionItemPainter = new Office2007SystemCaptionItemPainter();
return _Office2007SystemCaptionItemPainter;
}
}
public static SystemCaptionItemPainter CreateSystemCaptionItemPainter(SystemCaptionItem item)
{
eDotNetBarStyle effectiveStyle = item.EffectiveStyle;
if (effectiveStyle == eDotNetBarStyle.Office2010)
return Office2010SystemCaptionItemPainter;
if (StyleManager.IsMetro(effectiveStyle))
return MetroCaptionItemPainter;
if (BarFunctions.IsOffice2007Style(effectiveStyle))
return Office2007SystemCaptionItemPainter;
return null;
}
public static MdiSystemItemPainter CreateMdiSystemItemPainter(MDISystemItem mdiSystemItem)
{
if (BarFunctions.IsOffice2007Style(mdiSystemItem.EffectiveStyle))
return m_Office2007MdiSystemItemPainter;
return null;
}
public static FormCaptionPainter CreateFormCaptionPainter(Form form)
{
return m_Office2007FormCaptionPainter;
}
public static DevComponents.DotNetBar.Rendering.QatOverflowPainter CreateQatOverflowItemPainter(QatOverflowItem ribbonQatOverflowItem)
{
return m_Office2007QatOverflowPainter;
}
public static DevComponents.DotNetBar.Rendering.QatCustomizeItemPainter CreateQatCustomizeItemPainter(QatCustomizeItem qatCustomizeItem)
{
return m_Office2007QatCustomizePainter;
}
public static Rendering.Office2007CheckBoxItemPainter CreateCheckBoxItemPainter(CheckBoxItem item)
{
return m_Office2007CheckBoxItemPainter;
}
///
/// Forces the creation of the objects inside of factory.
///
public static void InitFactory() { }
public static DevComponents.DotNetBar.Rendering.ProgressBarItemPainter CreateProgressBarItemPainter(ProgressBarItem progressBarItem)
{
return m_Office2007ProgressBarPainter;
}
internal static DevComponents.DotNetBar.Rendering.NavigationPanePainter CreateNavigationPanePainter()
{
return m_Office2007NavPanePainter;
}
internal static DevComponents.DotNetBar.Rendering.SliderPainter CreateSliderPainter(SliderItem slider)
{
return m_SliderPainter;
}
internal static DevComponents.DotNetBar.Rendering.RangeSliderPainter CreateRangeSliderPainter(RangeSliderItem slider)
{
return _RangeSliderPainter;
}
internal static DevComponents.DotNetBar.Rendering.SideBarPainter CreateSideBarPainter()
{
return m_SideBarPainter;
}
private static MetroSwitchButtonPainter _MetroSwitchPainter = null;
internal static SwitchButtonPainter CreateSwitchButtonPainter(SwitchButtonItem item)
{
if (StyleManager.IsMetro(item.EffectiveStyle))
{
if (_MetroSwitchPainter == null) _MetroSwitchPainter = new MetroSwitchButtonPainter();
return _MetroSwitchPainter;
}
else
{
if (m_SwitchButtonPainter == null)
m_SwitchButtonPainter = new Office2010SwitchButtonPainter();
}
return m_SwitchButtonPainter;
}
//private static MetroStepItemPainter _MetroStepItemPainter = null;
private static OfficeStepItemPainter _OfficeStepItemPainter = null;
internal static StepItemPainter CreateStepItemPainter(StepItem item)
{
//if (StyleManager.IsMetro(item.EffectiveStyle))
//{
// if (_MetroStepItemPainter == null) _MetroStepItemPainter = new MetroStepItemPainter();
// return _MetroStepItemPainter;
//}
//else
//{
if (_OfficeStepItemPainter == null)
_OfficeStepItemPainter = new OfficeStepItemPainter();
//}
return _OfficeStepItemPainter;
}
private static OfficeListBoxItemPainter _OfficeListBoxPainter = null;
internal static OfficeListBoxItemPainter CreateListBoxItemPainter(ListBoxItem item)
{
//if (StyleManager.IsMetro(item.EffectiveStyle))
//{
// if (_MetroStepItemPainter == null) _MetroStepItemPainter = new MetroStepItemPainter();
// return _MetroStepItemPainter;
//}
//else
//{
if (_OfficeListBoxPainter == null)
{
_OfficeListBoxPainter = new OfficeListBoxItemPainter();
_OfficeListBoxPainter.CheckBoxPainter = m_Office2007CheckBoxItemPainter;
}
//}
return _OfficeListBoxPainter;
}
private static OfficeSideNavItemPainter _OfficeSideNavItemPainter = null;
internal static OfficeSideNavItemPainter CreateSideNavItemPainter(SideNavItem item)
{
//if (StyleManager.IsMetro(item.EffectiveStyle))
//{
// if (_MetroStepItemPainter == null) _MetroStepItemPainter = new MetroStepItemPainter();
// return _MetroStepItemPainter;
//}
//else
//{
if (_OfficeSideNavItemPainter == null)
{
_OfficeSideNavItemPainter = new OfficeSideNavItemPainter();
}
//}
return _OfficeSideNavItemPainter;
}
private static TabFormStripPainter _TabFormStripPainter = null;
internal static TabFormStripPainter CreateTabFormStripPainter(TabFormStripControl c)
{
if(_TabFormStripPainter==null)
_TabFormStripPainter=new OfficeTabFormStripPainter();
return _TabFormStripPainter;
}
private static TabFormPainter _TabFormPainter=new OfficeTabFormPainter();
internal static TabFormPainter CreateTabFormPainter(TabParentForm form)
{
return _TabFormPainter;
}
}
}