Changeset 1138


Ignore:
Timestamp:
6/16/2009 10:19:49 AM (6 years ago)
Author:
lowjoel
Message:

Allow the user to filter log messages by severity.

Location:
trunk/eraser6/Eraser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/eraser6/Eraser/LogForm.Designer.cs

    r983 r1138  
    5858            this.close = new System.Windows.Forms.Button(); 
    5959            this.copy = new System.Windows.Forms.Button(); 
     60            this.filterLabel = new System.Windows.Forms.Label(); 
     61            this.filterSeverity = new System.Windows.Forms.ComboBox(); 
     62            this.filterFilterType = new System.Windows.Forms.ComboBox(); 
    6063            this.SuspendLayout(); 
    6164            //  
     
    107110            this.copy.Click += new System.EventHandler(this.copy_Click); 
    108111            //  
     112            // filterLabel 
     113            //  
     114            resources.ApplyResources(this.filterLabel, "filterLabel"); 
     115            this.filterLabel.Name = "filterLabel"; 
     116            //  
     117            // filterSeverity 
     118            //  
     119            this.filterSeverity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     120            this.filterSeverity.FormattingEnabled = true; 
     121            this.filterSeverity.Items.AddRange(new object[] { 
     122            resources.GetString("filterSeverity.Items"), 
     123            resources.GetString("filterSeverity.Items1"), 
     124            resources.GetString("filterSeverity.Items2"), 
     125            resources.GetString("filterSeverity.Items3"), 
     126            resources.GetString("filterSeverity.Items4")}); 
     127            resources.ApplyResources(this.filterSeverity, "filterSeverity"); 
     128            this.filterSeverity.Name = "filterSeverity"; 
     129            this.filterSeverity.SelectedIndexChanged += new System.EventHandler(this.filter_Changed); 
     130            //  
     131            // filterFilterType 
     132            //  
     133            this.filterFilterType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
     134            this.filterFilterType.FormattingEnabled = true; 
     135            this.filterFilterType.Items.AddRange(new object[] { 
     136            resources.GetString("filterFilterType.Items"), 
     137            resources.GetString("filterFilterType.Items1"), 
     138            resources.GetString("filterFilterType.Items2")}); 
     139            resources.ApplyResources(this.filterFilterType, "filterFilterType"); 
     140            this.filterFilterType.Name = "filterFilterType"; 
     141            this.filterFilterType.SelectedIndexChanged += new System.EventHandler(this.filter_Changed); 
     142            //  
    109143            // LogForm 
    110144            //  
    111145            resources.ApplyResources(this, "$this"); 
    112146            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 
     147            this.Controls.Add(this.filterFilterType); 
     148            this.Controls.Add(this.filterSeverity); 
     149            this.Controls.Add(this.filterLabel); 
    113150            this.Controls.Add(this.copy); 
    114151            this.Controls.Add(this.close); 
     
    122159            this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.LogForm_FormClosed); 
    123160            this.ResumeLayout(false); 
     161            this.PerformLayout(); 
    124162 
    125163        } 
     
    134172        private System.Windows.Forms.ColumnHeader logMessageColumn; 
    135173        private System.Windows.Forms.Button copy; 
     174        private System.Windows.Forms.Label filterLabel; 
     175        private System.Windows.Forms.ComboBox filterSeverity; 
     176        private System.Windows.Forms.ComboBox filterFilterType; 
    136177    } 
    137178} 
  • trunk/eraser6/Eraser/LogForm.cs

    r1073 r1138  
    4646            Text = string.Format(CultureInfo.InvariantCulture, "{0} - {1}", Text, task.UIText); 
    4747 
     48            //Set the filter settings 
     49            filterFilterType.SelectedIndex = 0; 
     50            filterSeverity.SelectedIndex = 0; 
     51 
    4852            //Add all the existing log messages 
    49             this.log.BeginUpdate(); 
    50             LogSessionDictionary log = task.Log.Entries; 
    51             foreach (DateTime sessionTime in log.Keys) 
    52             { 
    53                 ListViewGroup sessionGroup = new ListViewGroup(S._("Session: {0:F}", sessionTime)); 
    54                 this.log.Groups.Add(sessionGroup); 
    55  
    56                 if (log[sessionTime].Count == 0) 
    57                 { 
    58                     ListViewItem item = this.log.Items.Add(string.Empty); 
    59                     item.Group = sessionGroup; 
    60                 } 
    61                 else 
    62                     foreach (LogEntry entry in log[sessionTime]) 
    63                         task_Logged(this, new LogEventArgs(entry)); 
    64             } 
     53            RefreshMessages(); 
     54            EnableButtons(); 
    6555 
    6656            //Register our event handler to get live log messages 
    6757            task.Log.Logged += task_Logged; 
    68             this.log.EndUpdate(); 
    69             EnableButtons(); 
    7058        } 
    7159 
     
    8270                return; 
    8371            } 
     72 
     73            //Check whether the current entry meets the criteria for display. 
     74            if (!MeetsCriteria(e.LogEntry)) 
     75                return; 
    8476 
    8577            ListViewItem item = log.Items.Add(e.LogEntry.Timestamp.ToString("F", CultureInfo.CurrentCulture)); 
     
    10698        } 
    10799 
     100        private void filter_Changed(object sender, EventArgs e) 
     101        { 
     102            RefreshMessages(); 
     103        } 
     104 
    108105        private void clear_Click(object sender, EventArgs e) 
    109106        { 
     
    125122                foreach (LogEntry entry in logEntries[sessionTime]) 
    126123                { 
     124                    //Only copy entries which meet the display criteria. 
     125                    if (!MeetsCriteria(entry)) 
     126                        continue; 
     127 
    127128                    string timeStamp = entry.Timestamp.ToString("F", CultureInfo.CurrentCulture); 
    128129                    string message = entry.Message; 
     
    157158 
    158159        /// <summary> 
     160        /// Checks whether the given log entry meets the current display criteria. 
     161        /// </summary> 
     162        /// <param name="entry">The entry to check.</param> 
     163        /// <returns>True if the entry meets the display criteria.</returns> 
     164        private bool MeetsCriteria(LogEntry entry) 
     165        { 
     166            //Check if the current message meets criteria 
     167            switch (filterFilterType.SelectedIndex) 
     168            { 
     169                case 0: //and above 
     170                    if (entry.Level < (LogLevel)filterSeverity.SelectedIndex) 
     171                        return false; 
     172                    break; 
     173 
     174                case 1: //equal to 
     175                    if (entry.Level != (LogLevel)filterSeverity.SelectedIndex) 
     176                        return false; 
     177                    break; 
     178 
     179                case 2: //and below 
     180                    if (entry.Level > (LogLevel)filterSeverity.SelectedIndex) 
     181                        return false; 
     182                    break; 
     183            } 
     184 
     185            return true; 
     186        } 
     187 
     188        /// <summary> 
     189        /// Updates all messages in the list view to show only those meeting the 
     190        /// selection criteria. 
     191        /// </summary> 
     192        private void RefreshMessages() 
     193        { 
     194            Application.UseWaitCursor = true; 
     195 
     196            this.log.BeginUpdate(); 
     197            this.log.Items.Clear(); 
     198            this.log.Groups.Clear(); 
     199            LogSessionDictionary log = task.Log.Entries; 
     200 
     201            //Iterate over every key 
     202            foreach (DateTime sessionTime in log.Keys) 
     203            { 
     204                ListViewGroup sessionGroup = new ListViewGroup(S._("Session: {0:F}", sessionTime)); 
     205                this.log.Groups.Add(sessionGroup); 
     206 
     207                foreach (LogEntry entry in log[sessionTime]) 
     208                    task_Logged(this, new LogEventArgs(entry)); 
     209 
     210                if (sessionGroup.Items.Count == 0) 
     211                { 
     212                    ListViewItem item = this.log.Items.Add(string.Empty); 
     213                    item.Group = sessionGroup; 
     214                }    
     215            } 
     216 
     217            this.log.EndUpdate(); 
     218            Application.UseWaitCursor = false; 
     219        } 
     220 
     221        /// <summary> 
    159222        /// Enables/disables buttons based on the current system state. 
    160223        /// </summary> 
  • trunk/eraser6/Eraser/LogForm.resx

    r1048 r1138  
    136136  </data> 
    137137  <data name="logMessageColumn.Width" type="System.Int32, mscorlib"> 
    138     <value>375</value> 
     138    <value>415</value> 
    139139  </data> 
    140140  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     
    143143  </data> 
    144144  <data name="log.Size" type="System.Drawing.Size, System.Drawing"> 
    145     <value>600, 391</value> 
     145    <value>640, 421</value> 
    146146  </data> 
    147147  <data name="log.TabIndex" type="System.Int32, mscorlib"> 
    148     <value>0</value> 
     148    <value>1</value> 
    149149  </data> 
    150150  <data name="&gt;&gt;log.Name" xml:space="preserve"> 
     
    158158  </data> 
    159159  <data name="&gt;&gt;log.ZOrder" xml:space="preserve"> 
    160     <value>3</value> 
     160    <value>6</value> 
    161161  </data> 
    162162  <data name="clear.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     
    164164  </data> 
    165165  <data name="clear.Location" type="System.Drawing.Point, System.Drawing"> 
    166     <value>12, 409</value> 
     166    <value>412, 439</value> 
    167167  </data> 
    168168  <data name="clear.Size" type="System.Drawing.Size, System.Drawing"> 
     
    170170  </data> 
    171171  <data name="clear.TabIndex" type="System.Int32, mscorlib"> 
    172     <value>1</value> 
     172    <value>6</value> 
    173173  </data> 
    174174  <data name="clear.Text" xml:space="preserve"> 
     
    185185  </data> 
    186186  <data name="&gt;&gt;clear.ZOrder" xml:space="preserve"> 
    187     <value>2</value> 
     187    <value>5</value> 
    188188  </data> 
    189189  <data name="close.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     
    191191  </data> 
    192192  <data name="close.Location" type="System.Drawing.Point, System.Drawing"> 
    193     <value>537, 409</value> 
     193    <value>577, 439</value> 
    194194  </data> 
    195195  <data name="close.Size" type="System.Drawing.Size, System.Drawing"> 
     
    197197  </data> 
    198198  <data name="close.TabIndex" type="System.Int32, mscorlib"> 
    199     <value>2</value> 
     199    <value>0</value> 
    200200  </data> 
    201201  <data name="close.Text" xml:space="preserve"> 
     
    212212  </data> 
    213213  <data name="&gt;&gt;close.ZOrder" xml:space="preserve"> 
    214     <value>1</value> 
     214    <value>4</value> 
    215215  </data> 
    216216  <data name="copy.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> 
     
    218218  </data> 
    219219  <data name="copy.Location" type="System.Drawing.Point, System.Drawing"> 
    220     <value>96, 409</value> 
     220    <value>496, 439</value> 
    221221  </data> 
    222222  <data name="copy.Size" type="System.Drawing.Size, System.Drawing"> 
     
    224224  </data> 
    225225  <data name="copy.TabIndex" type="System.Int32, mscorlib"> 
    226     <value>3</value> 
     226    <value>5</value> 
    227227  </data> 
    228228  <data name="copy.Text" xml:space="preserve"> 
     
    239239  </data> 
    240240  <data name="&gt;&gt;copy.ZOrder" xml:space="preserve"> 
     241    <value>3</value> 
     242  </data> 
     243  <data name="filterLabel.AutoSize" type="System.Boolean, mscorlib"> 
     244    <value>True</value> 
     245  </data> 
     246  <data name="filterLabel.Location" type="System.Drawing.Point, System.Drawing"> 
     247    <value>12, 443</value> 
     248  </data> 
     249  <data name="filterLabel.Size" type="System.Drawing.Size, System.Drawing"> 
     250    <value>186, 15</value> 
     251  </data> 
     252  <data name="filterLabel.TabIndex" type="System.Int32, mscorlib"> 
     253    <value>2</value> 
     254  </data> 
     255  <data name="filterLabel.Text" xml:space="preserve"> 
     256    <value>Only show messages with severity</value> 
     257  </data> 
     258  <data name="&gt;&gt;filterLabel.Name" xml:space="preserve"> 
     259    <value>filterLabel</value> 
     260  </data> 
     261  <data name="&gt;&gt;filterLabel.Type" xml:space="preserve"> 
     262    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
     263  </data> 
     264  <data name="&gt;&gt;filterLabel.Parent" xml:space="preserve"> 
     265    <value>$this</value> 
     266  </data> 
     267  <data name="&gt;&gt;filterLabel.ZOrder" xml:space="preserve"> 
     268    <value>2</value> 
     269  </data> 
     270  <data name="filterSeverity.Items" xml:space="preserve"> 
     271    <value>Information</value> 
     272  </data> 
     273  <data name="filterSeverity.Items1" xml:space="preserve"> 
     274    <value>Notice</value> 
     275  </data> 
     276  <data name="filterSeverity.Items2" xml:space="preserve"> 
     277    <value>Warning</value> 
     278  </data> 
     279  <data name="filterSeverity.Items3" xml:space="preserve"> 
     280    <value>Error</value> 
     281  </data> 
     282  <data name="filterSeverity.Items4" xml:space="preserve"> 
     283    <value>Fatal</value> 
     284  </data> 
     285  <data name="filterSeverity.Location" type="System.Drawing.Point, System.Drawing"> 
     286    <value>204, 439</value> 
     287  </data> 
     288  <data name="filterSeverity.Size" type="System.Drawing.Size, System.Drawing"> 
     289    <value>90, 23</value> 
     290  </data> 
     291  <data name="filterSeverity.TabIndex" type="System.Int32, mscorlib"> 
     292    <value>3</value> 
     293  </data> 
     294  <data name="&gt;&gt;filterSeverity.Name" xml:space="preserve"> 
     295    <value>filterSeverity</value> 
     296  </data> 
     297  <data name="&gt;&gt;filterSeverity.Type" xml:space="preserve"> 
     298    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
     299  </data> 
     300  <data name="&gt;&gt;filterSeverity.Parent" xml:space="preserve"> 
     301    <value>$this</value> 
     302  </data> 
     303  <data name="&gt;&gt;filterSeverity.ZOrder" xml:space="preserve"> 
     304    <value>1</value> 
     305  </data> 
     306  <data name="filterFilterType.Items" xml:space="preserve"> 
     307    <value>and higher</value> 
     308  </data> 
     309  <data name="filterFilterType.Items1" xml:space="preserve"> 
     310    <value>only</value> 
     311  </data> 
     312  <data name="filterFilterType.Items2" xml:space="preserve"> 
     313    <value>and lower</value> 
     314  </data> 
     315  <data name="filterFilterType.Location" type="System.Drawing.Point, System.Drawing"> 
     316    <value>300, 439</value> 
     317  </data> 
     318  <data name="filterFilterType.Size" type="System.Drawing.Size, System.Drawing"> 
     319    <value>85, 23</value> 
     320  </data> 
     321  <data name="filterFilterType.TabIndex" type="System.Int32, mscorlib"> 
     322    <value>4</value> 
     323  </data> 
     324  <data name="&gt;&gt;filterFilterType.Name" xml:space="preserve"> 
     325    <value>filterFilterType</value> 
     326  </data> 
     327  <data name="&gt;&gt;filterFilterType.Type" xml:space="preserve"> 
     328    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
     329  </data> 
     330  <data name="&gt;&gt;filterFilterType.Parent" xml:space="preserve"> 
     331    <value>$this</value> 
     332  </data> 
     333  <data name="&gt;&gt;filterFilterType.ZOrder" xml:space="preserve"> 
    241334    <value>0</value> 
    242335  </data> 
     
    248341  </data> 
    249342  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> 
    250     <value>624, 444</value> 
     343    <value>664, 474</value> 
    251344  </data> 
    252345  <data name="$this.Font" type="System.Drawing.Font, System.Drawing"> 
Note: See TracChangeset for help on using the changeset viewer.