Browse Source

Set MixedMode by adding Tuple to RuleState

pull/30/head
PeterForstmeier 14 years ago
parent
commit
e009596f6e
  1. 48
      src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml
  2. 35
      src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs
  3. 86
      src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs

48
src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml

@ -9,13 +9,18 @@
xmlns:local="clr-namespace:ICSharpCode.CodeAnalysis" xmlns:local="clr-namespace:ICSharpCode.CodeAnalysis"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"> xmlns:core="http://icsharpcode.net/sharpdevelop/core">
<optionpanels:ProjectOptionPanel.Resources> <optionpanels:ProjectOptionPanel.Resources>
<local:ImageConverter x:Key="imageConverter"></local:ImageConverter> <local:ImageConverter x:Key="imageConverter"></local:ImageConverter>
<DataTemplate x:Key="comboTemplate"> <DataTemplate x:Key="comboTemplate">
<ComboBox Background="Transparent" Width="100" <ComboBox Background="Transparent" Width="100"
HorizontalAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"
ItemsSource="{Binding Path=RuleState}" ItemsSource="{Binding Path=RuleState}"
SelectedItem="{Binding SelectedNode}"
IsReadOnly="False" IsReadOnly="False"
SelectionChanged="ComboBox_SelectionChanged"
SelectedIndex="{Binding Index}"> SelectedIndex="{Binding Index}">
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
@ -32,8 +37,14 @@
</ComboBox> </ComboBox>
</DataTemplate> </DataTemplate>
<!--<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True">
<Setter TargetName="MyGrid" Property="Background" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>-->
<DataTemplate x:Key="txtTemplate"> <!-- <DataTemplate x:Key="txtTemplate">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Image VerticalAlignment="Center" Height="15" Margin="3,0,5,0" <Image VerticalAlignment="Center" Height="15" Margin="3,0,5,0"
Source="{Binding MixedModeIcon}"></Image> Source="{Binding MixedModeIcon}"></Image>
@ -41,12 +52,17 @@
<TextBlock Text="{Binding MixedModeText}"></TextBlock> <TextBlock Text="{Binding MixedModeText}"></TextBlock>
</StackPanel> </StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True">
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate> </DataTemplate>
-->
<!-- <local:TypeSelector x:Key="TypeSelector" ComboTemplate="{StaticResource comboTemplate}"
<local:TypeSelector x:Key="TypeSelector" ComboTemplate="{StaticResource comboTemplate}" TxtTemplate="{StaticResource txtTemplate}"></local:TypeSelector>-->
TxtTemplate="{StaticResource txtTemplate}"></local:TypeSelector>
</optionpanels:ProjectOptionPanel.Resources> </optionpanels:ProjectOptionPanel.Resources>
@ -92,16 +108,17 @@
<!-- http://finercode.net/2012/06/05/using-a-different-datatemplate-when-a-wpf-combobox-is-expanded/ --> <!-- http://finercode.net/2012/06/05/using-a-different-datatemplate-when-a-wpf-combobox-is-expanded/ -->
<GridViewColumn Header="Action" <!-- <GridViewColumn Header="Action"
CellTemplateSelector="{StaticResource TypeSelector}"> CellTemplateSelector="{StaticResource TypeSelector}">
</GridViewColumn> </GridViewColumn>-->
</tv:SharpGridView.Columns> <!-- </tv:SharpGridView.Columns>-->
<!--<GridViewColumn Header="Action" x:Name="xxx"> <GridViewColumn Header="Action" x:Name="xxx">
<GridViewColumn.CellTemplate> <GridViewColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox Background="Transparent" Width="100" <ComboBox Background="Transparent" Width="100"
HorizontalAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"
ItemsSource="{Binding Path=RuleState}" ItemsSource="{Binding Path=RuleState}"
@ -121,13 +138,22 @@
</DataTemplate> </DataTemplate>
</ComboBox.ItemTemplate> </ComboBox.ItemTemplate>
</ComboBox> </ComboBox>
<TextBlock Text="{Binding Index}" ></TextBlock>
</StackPanel>
</DataTemplate> </DataTemplate>
</GridViewColumn.CellTemplate> </GridViewColumn.CellTemplate>
</GridViewColumn> </GridViewColumn>
<GridViewColumn Header="test">
</tv:SharpGridView.Columns>--> <GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Index}"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</tv:SharpGridView.Columns>
</tv:SharpGridView> </tv:SharpGridView>

35
src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs

@ -44,15 +44,10 @@ namespace ICSharpCode.CodeAnalysis
private bool userCheck; private bool userCheck;
private Dictionary<string, RuleTreeNode> rules = new Dictionary<string, RuleTreeNode>(); private Dictionary<string, RuleTreeNode> rules = new Dictionary<string, RuleTreeNode>();
private List<Tuple<Icon,string,int>> bla = new List<Tuple<Icon,string,int>>();
public AnalysisProjectOptionsPanelXaml() public AnalysisProjectOptionsPanelXaml()
{ {
InitializeComponent(); InitializeComponent();
DataContext = this; DataContext = this;
bla.Add(Tuple.Create<Icon,string,int>(SystemIcons.Warning,ResourceService.GetString("Global.WarningText"),0));
bla.Add(Tuple.Create<Icon,string,int>(SystemIcons.Error,ResourceService.GetString("Global.ErrorText"),1));
// bla.Add(Tuple.Create<Icon,string>(null,"None"));
} }
@ -169,19 +164,23 @@ namespace ICSharpCode.CodeAnalysis
void SetCategoryIcon() { void SetCategoryIcon() {
foreach (CategoryTreeNode element in ruleTreeView.Root.Children) {
foreach (CategoryTreeNode categoryNode in ruleTreeView.Root.Children) {
// Console.WriteLine(" {0} ",element.Text); // Console.WriteLine(" {0} ",element.Text);
if (!element.NewErrorState.HasValue) { if (!categoryNode.NewErrorState.HasValue) {
Console.WriteLine (" {0} is Mixed Mode",element.Text); Console.WriteLine (" {0} is Mixed Mode",categoryNode.Text);
categoryNode.AddMixedMode();
} else{ } else{
if (element.NewErrorState == true) { if (categoryNode.NewErrorState == true) {
Console.WriteLine (" {0} is Error",element.Text); Console.WriteLine (" {0} is Error",categoryNode.Text);
element.Index = 1; categoryNode.Index = 1;
} else { } else {
Console.WriteLine (" {0} is Warning",element.Text); Console.WriteLine (" {0} is Warning",categoryNode.Text);
} }
} }
} }
Console.WriteLine("--------------");
} }
string ruleString = ""; string ruleString = "";
@ -247,7 +246,7 @@ namespace ICSharpCode.CodeAnalysis
ruleTreeView.Root.Children.Add(new MessageNode(StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.SpecifyFxCopPath}"))); ruleTreeView.Root.Children.Add(new MessageNode(StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.SpecifyFxCopPath}")));
} else { } else {
foreach (FxCopCategory cat in ruleList) { foreach (FxCopCategory cat in ruleList) {
CategoryTreeNode catNode = new CategoryTreeNode(cat,bla); CategoryTreeNode catNode = new CategoryTreeNode(cat);
catNode.PropertyChanged += OnPropertyChanged; catNode.PropertyChanged += OnPropertyChanged;
ruleTreeView.Root.Children.Add(catNode); ruleTreeView.Root.Children.Add(catNode);
foreach (RuleTreeNode ruleNode in catNode.Children) { foreach (RuleTreeNode ruleNode in catNode.Children) {
@ -322,7 +321,14 @@ namespace ICSharpCode.CodeAnalysis
} }
} }
void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// throw new NotImplementedException();
}
#endregion #endregion
} }
@ -334,6 +340,7 @@ namespace ICSharpCode.CodeAnalysis
public override DataTemplate SelectTemplate(object item, DependencyObject container) public override DataTemplate SelectTemplate(object item, DependencyObject container)
{ {
Console.WriteLine ("------- TypeSelector ---------");
var rule = item as RuleTreeNode; var rule = item as RuleTreeNode;
if (rule != null) { if (rule != null) {
@ -359,7 +366,7 @@ namespace ICSharpCode.CodeAnalysis
[ValueConversion(typeof(System.Drawing.Icon), typeof(System.Windows.Media.ImageSource))] [ValueConversion(typeof(System.Drawing.Icon), typeof(System.Windows.Media.ImageSource))]
public class ImageConverter : IValueConverter public class ImageConverter : IValueConverter
{ {
public object Convert(object value, Type targetType, public object Convert(object value, Type targetType,
object parameter, CultureInfo culture) object parameter, CultureInfo culture)
{ {
// empty images are empty... // empty images are empty...

86
src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsTreeNodes.cs

@ -7,8 +7,12 @@
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing; using System.Drawing;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Imaging;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
@ -23,12 +27,22 @@ namespace ICSharpCode.CodeAnalysis
{ {
private int index; private int index;
public BaseTree(IEnumerable<Tuple<Icon,string,int>> ruleState) public BaseTree()
{ {
this.RuleState = ruleState; RuleState = new ObservableCollection<Tuple<Icon,string>>();
this.RuleState.Add(Tuple.Create<Icon,string>(SystemIcons.Warning,ResourceService.GetString("Global.WarningText")));
this.RuleState.Add(Tuple.Create<Icon,string>(SystemIcons.Error,ResourceService.GetString("Global.ErrorText")));
// bla.Add(Tuple.Create<Icon,string>(null,"None"));
} }
public IEnumerable<Tuple<Icon,string,int>> RuleState {get;set;} public ObservableCollection<Tuple<Icon,string>> RuleState {get;set;}
private Tuple<Icon,string> selectedItem;
public Tuple<Icon, string> SelectedNode {
get { return selectedItem; }
set { selectedItem = value; }
}
public virtual int Index { public virtual int Index {
@ -36,37 +50,27 @@ namespace ICSharpCode.CodeAnalysis
set { set {
if (index != value) { if (index != value) {
index = value; index = value;
switch (index) {
case 0:
break;
case 1:
break;
case 2:
break;
default:
break;
}
base.RaisePropertyChanged("Index");
} }
base.RaisePropertyChanged("Index");
} }
} }
} }
public class CategoryTreeNode : BaseTree public class CategoryTreeNode : BaseTree
{ {
internal FxCopCategory category; internal FxCopCategory category;
private string mixedModeText; private Tuple<Icon,string> mixedTuple;
private ImageSource mixedModeIcon;
public CategoryTreeNode(FxCopCategory category,IEnumerable<Tuple<Icon,string,int>> bla):base(bla) public CategoryTreeNode(FxCopCategory category):base()
{ {
mixedModeText = StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.WarningErrorMixed}");
mixedModeIcon = PresentationResourceService.GetBitmapSource("Icons.16x16.ClosedFolderBitmap");
this.category = category; this.category = category;
foreach (FxCopRule rule in category.Rules) { foreach (FxCopRule rule in category.Rules) {
this.Children.Add(new RuleTreeNode(rule,bla)); this.Children.Add(new RuleTreeNode(rule));
} }
} }
@ -83,22 +87,27 @@ namespace ICSharpCode.CodeAnalysis
set { set {
if (value != base.Index) { if (value != base.Index) {
base.Index = value; base.Index = value;
foreach (RuleTreeNode rule in this.Children) { if (mixedTuple == null) {
rule.Index = Index; foreach (RuleTreeNode rule in this.Children) {
rule.Index = Index;
}
} }
} }
} }
} }
public ImageSource MixedModeIcon {
get { return mixedModeIcon; }
}
public string MixedModeText public void AddMixedMode()
{ {
get {return mixedModeText;} Bitmap b = (Bitmap)ResourceService.GetImageResource("Icons.16x16.ClosedFolderBitmap");
} System.Drawing.Icon ico = (Icon)System.Drawing.Icon.FromHandle(b.GetHicon());
mixedTuple = Tuple.Create<Icon,string>(ico,
StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.WarningErrorMixed}"));
RuleState.Add(mixedTuple);
Index = RuleState.Count -1;
}
public Nullable<bool> NewErrorState { public Nullable<bool> NewErrorState {
get { get {
@ -153,15 +162,16 @@ namespace ICSharpCode.CodeAnalysis
set { set {
if (error != value) { if (error != value) {
error = value; error = value;
if (error) { if (error) {
base.Index = 1; base.Index = 1;
} }
} }
} }
} }
public RuleTreeNode(FxCopRule rule,IEnumerable<Tuple<Icon,string,int>> ruleState):base(ruleState)
public RuleTreeNode(FxCopRule rule):base()
{ {
this.rule = rule; this.rule = rule;
} }
@ -184,13 +194,16 @@ namespace ICSharpCode.CodeAnalysis
public override int Index { public override int Index {
get { return base.Index; } get { return base.Index; }
set { set {
if (value != Index) { if (base.Index != value) {
if (Index == 1) { isError = value == 1;
error = true;
} else {
error = false;
}
base.Index = value; base.Index = value;
// if (base.Index == 1) {
// error = true;
// } else {
// error = false;
// }
Console.WriteLine ("RuleNode {0} - index {1} - error {2}",rule.DisplayName,Index, isError);
} }
} }
} }
@ -210,5 +223,4 @@ namespace ICSharpCode.CodeAnalysis
get { return message; } get { return message; }
} }
} }
} }

Loading…
Cancel
Save