source: trunk/Obi/Obi/ProjectView/ZoomWaveform.cs @ 7626

Revision 7626, 65.8 KB checked in by rohit_tandon, 4 months ago (diff)

-> Now comments can be added properly when Recorder is active.

Line 
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Drawing;
5using System.Data;
6using System.IO;
7using System.Reflection;
8using System.Text;
9using System.Windows.Forms;
10using urakawa.media.timing;
11using AudioLib;
12
13namespace Obi.ProjectView
14{
15    public partial class ZoomWaveform : UserControl, ISelectableInContentViewWithColors
16    {
17        private ContentView m_ContentView = null;
18        private Strip m_Strip;
19        private  EmptyNode m_Node;
20        private AudioBlock m_AudioBlock;
21        private Block m_Block;
22        private int initialWaveformWidth = 0;
23        private float m_ZoomFactor = 0;
24        private ProjectView m_ProjectView;
25        private Toolbar_EditAudio m_Edit;
26        private bool m_IsPanelSizeMax = false;
27        private int m_count = 0;
28
29        private Size m_toolStripSize;       
30        private Size m_EditSize;
31        private Size m_btntxtZoomSelectedSize;
32        private Size m_PanelSize;
33        private bool m_ResizeIsDone = false;
34        private bool m_buttonSizeinit = false;
35        private bool flag = false;
36        private AudioSelection m_audioSel;
37        private int m_PreviousHeight = 0;
38        private bool m_ZoomfactorFlag = false;
39        private int XVal = 0;
40        private bool m_NudgeAtRight=false;
41        private bool m_NudgeAtLeft = false;
42        private bool m_NudgeAtRightFromLeft = false;
43        private bool m_NudgeAtLeftFromLeft = false;
44        private int m_InitialPanelHeight = 0;
45        private double m_PhraseDuration = 0;
46        private double m_ZoomIncrementFactor = 0;
47        private string m_SelectedPhraseSection = " "; // @ImproveZoomPanel
48        private Image m_PreserveZoomCheckedImage;
49        private Image m_PreserveZoomUnCheckedImage;
50        private EditableLabel m_EditableLabel;
51        private EmptyNode m_SelectedNodeToAddComment;
52        private double m_TimeOfCursor;
53           
54
55        private KeyboardShortcuts_Settings keyboardShortcuts;
56
57       
58       
59        private ZoomWaveform()
60        {           
61            InitializeComponent();
62            this.Controls.Add(panelZooomWaveform);       
63            this.Controls.Add(btntxtZoomSelected);
64            Assembly myAssembly = Assembly.GetExecutingAssembly();
65            Stream preserveZoomChecked = null;
66            preserveZoomChecked = myAssembly.GetManifestResourceStream("Obi.images.icons.Preserve_Zoom_Checked.png");
67            if(preserveZoomChecked != null)
68            m_PreserveZoomCheckedImage = Image.FromStream(preserveZoomChecked);
69            preserveZoomChecked = myAssembly.GetManifestResourceStream("Obi.images.icons.Preserve_Zoom_Unchecked.png");
70            if (preserveZoomChecked != null)
71            m_PreserveZoomUnCheckedImage = Image.FromStream(preserveZoomChecked);
72            helpProvider1.HelpNamespace = Localizer.Message("CHMhelp_file_name");
73            helpProvider1.SetHelpNavigator(this, HelpNavigator.Topic);
74            helpProvider1.SetHelpKeyword(this, "HTML Files/Exploring the GUI/Obi Views and Transport Bar/Zoomed Waveform view.htm");           
75        }
76
77        public void SetSelectionFromContentView(NodeSelection selection) 
78        {
79            if (m_AudioBlock == null 
80                || (selection != null && selection.Node is EmptyNode &&  m_AudioBlock.Node != selection.Node))
81            {
82                PhraseLoad((EmptyNode) selection.Node, true);
83            }
84            if (m_AudioBlock != null) m_AudioBlock.SetSelectionFromContentView(selection);
85            //btntxtZoomSelected.Focus();
86        }
87        private bool m_Highlighted;
88        public bool Highlighted { get { return m_Highlighted; } set { m_Highlighted =  value; } }
89        public ObiNode ObiNode { get { return m_Node; } }
90        ColorSettings m_ColorSettings ;
91        public ColorSettings ColorSettings { get { return m_ColorSettings; } set { m_ColorSettings = value; } }
92        public ContentView ContentView { get { return m_ContentView; } }
93        public Strip Strip { get { return m_Strip; } }
94        public bool IsCommentEditLabelActive
95        {
96            get
97            {
98                return this.Controls.Contains(m_EditableLabel);
99            }
100        }
101        public string ToMatch() { return null; }
102
103        public void UpdateCursorTime (double time ) 
104        {
105            if (m_AudioBlock != null)
106            {
107                if (m_audioSel!=null && m_audioSel.AudioRange.SelectionBeginTime != m_audioSel.AudioRange.SelectionEndTime)
108                {
109                    if (time < m_audioSel.AudioRange.SelectionBeginTime)
110                    {
111                        m_AudioBlock.UpdateCursorTime(m_audioSel.Node.Duration);
112                        return;
113                    }               
114                }
115                XVal = m_AudioBlock.UpdateCursorTime(time); 
116
117                if (m_ProjectView.TransportBar.CurrentPlaylist.CurrentPhrase != m_ProjectView.Selection.Node)
118                {
119                    m_ProjectView.TransportBar.Stop();
120                }
121                if ((XVal >= m_ContentView.Width-50 + Math.Abs(m_AudioBlock.Location.X)) || (XVal < Math.Abs(m_AudioBlock.Location.X)))
122                {
123                    panelZooomWaveform.AutoScrollPosition = new Point(XVal, panelZooomWaveform.AutoScrollPosition.Y);
124
125                }
126            }
127           
128        }
129
130
131
132
133        public ZoomWaveform ZoomWaveformObj
134        {
135            get { return this; }
136        }
137 
138
139        public EmptyNode ZoomPanelNode
140        {
141            get
142            {
143                return m_Node;
144            }
145        }
146
147        private void ProjectViewSelectionChanged ( object sender, EventArgs e )
148        {
149            if (m_ProjectView != null && m_ProjectView.Selection != null)
150            {
151                btntxtZoomSelected.Text = " " + m_ProjectView.Selection.ToString() + " " + m_SelectedPhraseSection;  // @ImproveZoomPanel
152                //btntxtZoomSelected.Text = " ";
153                //btntxtZoomSelected.Text += " " + m_ProjectView.Selection.ToString();
154                //btntxtZoomSelected.Text += " " + (m_ProjectView.GetSelectedPhraseSection != null ? m_ProjectView.GetSelectedPhraseSection.ToString() : "");
155               
156                if(this.Controls.Contains(m_EditableLabel))
157                {
158                    this.RemoveEditLabelControlForAddingComment();
159                }
160                if (m_ProjectView.Selection.Phrase != null)
161                {
162
163                    string temp = m_ProjectView.Selection.Node.ToString();
164
165                    if (m_AudioBlock.Node.ToString() != temp && m_ProjectView.Selection.EmptyNodeForSelection != null)
166                    {
167                        PhraseLoad(m_ProjectView.Selection.EmptyNodeForSelection, true);
168                    }
169                    else
170                    {
171                        if (m_ProjectView != null && m_ProjectView.Selection != null && m_ProjectView.Selection is AudioSelection && m_NudgeAtRight)
172                        {
173                            double endTime = ((AudioSelection)m_ProjectView.Selection).AudioRange.SelectionEndTime != 0 ? ((AudioSelection)m_ProjectView.Selection).AudioRange.SelectionEndTime : ((AudioSelection)m_ProjectView.Selection).AudioRange.CursorTime;
174                            int Val = m_AudioBlock.UpdateSelectionTime(endTime);
175                            if ((Val >= m_ContentView.Width + Math.Abs(m_AudioBlock.Location.X)) || (Val < Math.Abs(m_AudioBlock.Location.X)))
176                            {
177                                panelZooomWaveform.AutoScrollPosition = new Point(Val, panelZooomWaveform.AutoScrollPosition.Y);
178                            }
179                        }
180                        if (m_ProjectView != null && m_ProjectView.Selection != null && m_ProjectView.Selection is AudioSelection && m_NudgeAtLeft)
181                        {
182                            double endTime = ((AudioSelection)m_ProjectView.Selection).AudioRange.SelectionEndTime != 0 ? ((AudioSelection)m_ProjectView.Selection).AudioRange.SelectionEndTime : ((AudioSelection)m_ProjectView.Selection).AudioRange.CursorTime;
183                            int Val = m_AudioBlock.UpdateSelectionTime(endTime);
184                            int tempVar = m_ContentView.Width - Val + Math.Abs(m_AudioBlock.Location.X);
185                            if ((tempVar < 0) || (Val < Math.Abs(m_AudioBlock.Location.X)))
186                            {
187                                panelZooomWaveform.AutoScrollPosition = new Point(Val - m_ContentView.Width, panelZooomWaveform.AutoScrollPosition.Y);
188                            }
189                        }
190                        if (m_ProjectView != null && m_ProjectView.Selection != null && m_ProjectView.Selection is AudioSelection && m_NudgeAtRightFromLeft)
191                        {
192                            double endTime = ((AudioSelection)m_ProjectView.Selection).AudioRange.SelectionBeginTime;
193                            int Val = m_AudioBlock.UpdateSelectionTime(endTime);
194                            if ((Val >= m_ContentView.Width + Math.Abs(m_AudioBlock.Location.X)) || (Val < Math.Abs(m_AudioBlock.Location.X)))
195                            {
196                                panelZooomWaveform.AutoScrollPosition = new Point(Val, panelZooomWaveform.AutoScrollPosition.Y);
197                            }
198                        }
199                        if (m_ProjectView != null && m_ProjectView.Selection != null && m_ProjectView.Selection is AudioSelection && m_NudgeAtLeftFromLeft)
200                        {
201
202                            double endTime = ((AudioSelection)m_ProjectView.Selection).AudioRange.SelectionBeginTime;
203                            int Val = m_AudioBlock.UpdateSelectionTime(endTime);
204                            if ((Val >= m_ContentView.Width + Math.Abs(m_AudioBlock.Location.X)) || (Val < Math.Abs(m_AudioBlock.Location.X)))
205                            {
206                                panelZooomWaveform.AutoScrollPosition = new Point(Val, panelZooomWaveform.AutoScrollPosition.Y);
207                            }
208
209                        }
210                    }
211
212                }
213
214                if (m_Node.CommentText != null && !(m_Node is PhraseNode) && m_Node is EmptyNode)
215                {
216                    m_Block.AlignLabelToShowCommentIcon();
217                }
218
219            }
220            if( m_ProjectView==null || m_ProjectView.Selection==null ||!(m_ProjectView.Selection.Node is EmptyNode))
221            {
222                IsNewProjectOpened();
223            }
224        }
225
226        private void ProjectviewUpdated(object sender, EventArgs e)
227        {
228            if (m_ProjectView != null && m_ProjectView.Selection != null)
229            {
230                btntxtZoomSelected.Text = " " + m_ProjectView.Selection.ToString() + " " + m_SelectedPhraseSection;  // @ImproveZoomPanel
231                //btntxtZoomSelected.Text = " ";
232                //btntxtZoomSelected.Text += " " + m_ProjectView.Selection.ToString();
233                //btntxtZoomSelected.Text += " " + (m_ProjectView.GetSelectedPhraseSection != null ? m_ProjectView.GetSelectedPhraseSection.ToString() : "");
234                if (m_ProjectView.Selection.Node.Duration != m_PhraseDuration)
235                {
236                    Point tempScrollPosition = panelZooomWaveform.AutoScrollPosition;
237                    PhraseLoad((EmptyNode)m_ProjectView.Selection.Node, false);
238                }
239                if (m_AudioBlock != null && m_AudioBlock.Waveform != null && m_AudioBlock.Waveform.Selection != null)
240                {
241                    if (m_AudioBlock.Waveform.Selection.HasCursor)
242                    {
243                        UpdateCursorTime(m_AudioBlock.Waveform.Selection.CursorTime);
244                    }
245                    else
246                    {
247                        UpdateCursorTime(m_AudioBlock.Waveform.Selection.SelectionBeginTime);
248                    }
249                }
250
251             }
252        }
253         private void ZoomPanelLostFocus(object sender,EventArgs e)
254         {
255             if(this.ActiveControl==btntxtZoomSelected)
256             {
257                 this.ActiveControl = btntxtZoomSelected;
258             }
259         }
260        private void ZoomPanelResize(object sender,EventArgs e)
261        {
262            this.BringToFront();
263            if (m_ContentView.ZoomFactor > 1)
264            {
265           
266                this.Height = m_ContentView.Height;
267            }
268            else if(m_ContentView.ZoomFactor<=1)
269            {
270                this.Height = m_ContentView.Height;
271
272            }
273            if (m_ZoomfactorFlag == false || m_ContentView.ZoomFactor > 1.1)
274            {
275                this.AutoScroll = true;
276         
277               
278            }
279            else if (m_ContentView.ZoomFactor <= 1.1 && m_ZoomfactorFlag == true && (m_ProjectView.Height >= m_PreviousHeight))
280            {
281                this.AutoScroll = false;
282                m_ZoomfactorFlag = false;
283               
284            }
285       
286           
287            m_ResizeIsDone = true;
288            this.Width = m_ContentView.Width;
289            if (m_AudioBlock != null && m_AudioBlock.Waveform != null)
290            {
291                // Below commented code can be used if we want to increase the hight of the Zoom panel in case of resizing.
292
293                //panelZooomWaveform.Height = this.Height - (toolStripZoomPanel.Height + btntxtZoomSelected.Height + m_Edit.Height);
294                //m_AudioBlock.SetZoomFactorAndHeight(m_ZoomFactor, panelZooomWaveform.Height);
295                //btntxtZoomSelected.Location = new Point(0, panelZooomWaveform.Height + btntxtZoomSelected.Height + m_Edit.Height);
296                //int tempVerticalPosition = btntxtZoomSelected.Location.Y;
297                //toolStripZoomPanel.Location = new Point(0, btntxtZoomSelected.Location.Y - (btntxtZoomSelected.Height)); //new Point(0, this.Height - btntxtZoomSelected.Height - 100);
298                //m_Edit.Location = new Point(0, toolStripZoomPanel.Location.Y - m_Edit.Height);
299               // m_AudioBlock.SetZoomFactorAndHeight(m_ZoomFactor, panelZooomWaveform.Height);
300
301                // Below code increases width of the Audio Block.               
302                panelZooomWaveform.Width = this.Width-30;               
303             }
304            btntxtZoomSelected.Width = this.Width - 40;
305            if (m_InitialPanelHeight > this.Height)
306            {
307                this.AutoScroll = true;
308            }
309            else
310            {
311                this.AutoScroll = false;
312            }
313            EnsureCursorVisibility();
314         
315        }
316         public void ZoomAudioFocus()
317         {
318         
319             if (this.ActiveControl == btntxtZoomSelected)
320             {
321                m_AudioBlock.TabStop = false;
322             }
323             if(m_AudioBlock.FlagMouseDown)
324             {
325                 m_AudioBlock.FlagMouseDown = false;
326                 this.ActiveControl = btntxtZoomSelected;
327             }
328         
329         }
330        public void AfterSelection()
331        {
332
333        }
334        public void PhraseLoad(EmptyNode phrase,bool CreateNew)
335        {
336         
337            m_Node = phrase;
338            if (m_Node is PhraseNode)
339            {
340                float zoomFactor = 0.0f;
341                if (CreateNew || m_AudioBlock.Waveform == null)
342                {
343                    if (panelZooomWaveform.Controls.Contains(m_Block))
344                    {
345                        panelZooomWaveform.Controls.Remove(m_Block);
346                        m_Block.Dispose();
347                        m_Block = null;
348                    }
349                    m_Block = new AudioBlock((PhraseNode)m_Node, m_Strip, true, true);
350                    m_AudioBlock = (AudioBlock)m_Block;
351
352                    panelZooomWaveform.Controls.Add(m_Block);
353
354                    m_AudioBlock.Location = new Point(5, 5);
355                    zoomFactor = panelZooomWaveform.Height / m_AudioBlock.Height;
356                    m_AudioBlock.IsFineNavigationMode = true;
357                    m_AudioBlock.UpdateColors();
358                    btntxtZoomSelected.BringToFront();
359                    m_AudioBlock.SetZoomFactorAndHeight(zoomFactor, Height);
360                    initialWaveformWidth = m_AudioBlock.Waveform.Width;
361                    zoomFactor = m_ZoomFactor;
362                }
363                else
364                {
365                    zoomFactor = m_ZoomFactor;
366                   
367                }
368                m_AudioBlock.SetZoomFactorAndHeight(zoomFactor, Height);
369                initialWaveformWidth = m_AudioBlock.Waveform.Width;
370                m_AudioBlock.Waveform.Width = m_AudioBlock.Waveform.Width + (int)(initialWaveformWidth * m_ZoomIncrementFactor);
371                m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
372                m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
373
374
375                if (m_AudioBlock != null)
376                {
377                   
378                    m_AudioBlock.GotFocus += new EventHandler(m_AudioBlock_MouseDown);
379                }
380                m_AudioBlock.TabStop = false;
381
382                m_AudioBlock.InitCursor(0);
383                if (m_ProjectView.TransportBar.IsPlayerActive) UpdateCursorTime(m_ProjectView.TransportBar.CurrentPlaylist.CurrentTimeInAsset);
384                m_Block = m_AudioBlock;
385                m_PhraseDuration = m_AudioBlock.Node.Duration;
386               
387            }
388            else if (m_Node is EmptyNode)
389            {
390                if (panelZooomWaveform.Controls.Contains(m_Block))
391                {
392                    panelZooomWaveform.Controls.Remove(m_Block);
393                }             
394                m_Block = new Block(m_Node, m_Strip) ;               
395                panelZooomWaveform.Controls.Add(m_Block);
396                m_AudioBlock = null;
397                m_PhraseDuration = 0;
398
399            }
400
401        }
402
403       public ZoomWaveform(ContentView contentView, Strip strip,EmptyNode node,ProjectView mProjectView):this    ()
404       {
405           
406           if (mProjectView.SaveZoomWaveformZoomLevel)
407           {
408               btnPreserveZoomtoolStrip.Image = m_PreserveZoomCheckedImage;
409               btnPreserveZoomtoolStrip.AccessibleName = Localizer.Message("ZoomWaveform_PreserveZoomChecked");
410           }
411           else
412           {
413               btnPreserveZoomtoolStrip.Image = m_PreserveZoomUnCheckedImage;
414               btnPreserveZoomtoolStrip.AccessibleName = Localizer.Message("ZoomWaveform_PreserveZoomUnchecked");
415           }
416           
417            m_ContentView = contentView;
418            m_ProjectView = mProjectView;
419            m_ProjectView.SelectionChanged += new EventHandler(ProjectViewSelectionChanged);         
420            mProjectView.Presentation.UndoRedoManager.CommandDone += new EventHandler<urakawa.events.undo.DoneEventArgs>(ProjectviewUpdated);
421            mProjectView.Presentation.UndoRedoManager.CommandUnDone+= new EventHandler<urakawa.events.undo.UnDoneEventArgs>(ProjectviewUpdated);
422            mProjectView.Presentation.UndoRedoManager.CommandReDone += new EventHandler<urakawa.events.undo.ReDoneEventArgs>(ProjectviewUpdated);
423            this.LostFocus += new EventHandler(ZoomPanelLostFocus);         
424
425            //keyboardShortcuts = m_ProjectView.ObiForm.KeyboardShortcuts;
426 
427            m_ContentView.Resize += new EventHandler(ZoomPanelResize);
428            m_Strip = strip;
429            m_Node = node;
430            ZoomPanelToolTipInit();
431            if (m_ProjectView.SaveZoomWaveformZoomLevel)
432            {
433                m_ZoomIncrementFactor = m_ProjectView.ZoomWaveformIncrementFactor;
434            }
435            m_ZoomFactor = 0;
436            if (m_ProjectView.ObiForm.Settings.ObiFont != this.Font.Name) //@fontconfig
437            {
438                SetFont(); //@fontconfig
439            }
440
441            //this.btnClosetoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_Close") + "(" +keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Close.Value.ToString()) + ")";
442            //this.btnNextPhrasetoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ShowNextPhrase")+"(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_NextPhrase.Value.ToString()) + ")";
443            //this.btnPreviousPhrasetoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ShowPreviousPhrase") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_PreviousPhrase.Value.ToString()) + ")";
444            //this.btnResettoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_Reset") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Reset.Value.ToString()) + ")";
445            //this.btnZoomIntoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ZoomIn") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomIn.Value.ToString()) + ")";
446            //this.btnZoomOuttoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ZoomOut") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomOut.Value.ToString()) + ")";
447            //this.btnZoomSelectiontoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ZoomSelection") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomSelection.Value.ToString()) + ")";
448
449            //this.toolStripZoomPanel.AccessibleName = Localizer.Message("ZoomAudioTT_Close") +  keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Close.Value.ToString());
450            //this.btnNextPhrasetoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ShowNextPhrase") +  keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_NextPhrase.Value.ToString());
451            //this.btnPreviousPhrasetoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ShowPreviousPhrase") +  keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_PreviousPhrase.Value.ToString());
452            //this.btnResettoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_Reset") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Reset.Value.ToString());
453            //this.btnZoomIntoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ZoomIn") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomIn.Value.ToString());
454            //this.btnZoomOuttoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ZoomOut") +  keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomOut.Value.ToString());
455            //this.btnZoomSelectiontoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ZoomSelection") +  keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomSelection.Value.ToString());
456
457
458            if (m_ProjectView.Selection.Phrase != null || m_Node is EmptyNode)
459            {
460                if (m_ContentView != null)
461                {                   
462                    this.Height = m_ContentView.Height;
463                    this.Width = m_ContentView.Width;
464
465                    m_Edit = new Toolbar_EditAudio(m_ContentView, m_Strip, m_Node, m_ProjectView);
466                    m_Edit.TabIndex = 0;
467                    m_Edit.TabStop = true;
468               
469                    this.Controls.Add(m_Edit);
470                    m_Edit.Show();
471                    m_Edit.EnableDisableCut();
472                    toolStripZoomPanel.TabIndex = 1;
473                    toolStripZoomPanel.TabStop = true;
474                    btntxtZoomSelected.TabIndex = 2;
475                    btntxtZoomSelected.TabStop = true;
476                   
477
478                    this.MouseWheel += new MouseEventHandler(ZoomWaveform_MouseWheel);
479                    if (m_buttonSizeinit == false)
480                    {
481
482                        m_toolStripSize = toolStripZoomPanel.Size;
483                        m_EditSize = m_Edit.Size;
484                        m_btntxtZoomSelectedSize = btntxtZoomSelected.Size;
485                        m_PanelSize = this.Size;
486
487                        m_buttonSizeinit = true;
488                    }
489                    if (m_ContentView.ZoomFactor > 1.1 && m_ContentView.ZoomFactor < 4)
490                    {
491                        float tempZoomfactor;
492                        if (m_ContentView.ZoomFactor > 1.5)
493                        {
494                            tempZoomfactor = 1.46f;
495                        }
496                        else
497                        {
498                            tempZoomfactor = m_ContentView.ZoomFactor;
499                        }
500                        this.BringToFront();
501
502
503                        panelZooomWaveform.Height = this.Height - (toolStripZoomPanel.Height + btntxtZoomSelected.Height + m_Edit.Height + 15);
504                        btntxtZoomSelected.Size = new Size((int)(btntxtZoomSelected.Size.Width + (btntxtZoomSelected.Size.Width * (tempZoomfactor - 1))), (int)(btntxtZoomSelected.Size.Height + (btntxtZoomSelected.Size.Height * (tempZoomfactor - 1))));
505                        toolStripZoomPanel.Size = new Size((int)(toolStripZoomPanel.Size.Width + (toolStripZoomPanel.Size.Width * (tempZoomfactor - 1))), (int)(toolStripZoomPanel.Size.Height + (toolStripZoomPanel.Size.Height * (tempZoomfactor - 1))));
506                   
507                        m_Edit.Size = new Size((int)(m_Edit.Size.Width + (m_Edit.Size.Width * (tempZoomfactor - 1.4))), (int)(m_Edit.Size.Height));
508               
509
510                       
511                        btntxtZoomSelected.Font = new Font(btntxtZoomSelected.Font.Name, (btntxtZoomSelected.Font.Size + (float)3.0), FontStyle.Bold);
512                        toolStripZoomPanel.Font = new Font(toolStripZoomPanel.Font.Name, (toolStripZoomPanel.Font.Size + (float)3.0), FontStyle.Bold);
513                        m_Edit.SetEditPanelFontSize(m_Edit.Size);
514                        m_Edit.Font = new Font(m_Edit.Font.Name, (m_Edit.Font.Size + (float)3.0), FontStyle.Bold);                       
515
516                        flag = true;
517                        btntxtZoomSelected.Location = new Point(0, this.Height);
518                        toolStripZoomPanel.Location = new Point(0, this.Height - btntxtZoomSelected.Height - 4);
519                        m_Edit.Location = new Point(0, this.Height - m_Edit.Height - btntxtZoomSelected.Height);
520
521                        this.AutoScrollMinSize = new Size(this.Width, this.Height + 35);
522                    }
523                    else
524                    {
525
526                        btntxtZoomSelected.Location = new Point(0, this.Height - btntxtZoomSelected.Height - 2);
527                        toolStripZoomPanel.Location = new Point(0, this.Height - btntxtZoomSelected.Height - toolStripZoomPanel.Height - 4);
528                        m_Edit.Location = new Point(0, this.Height - m_Edit.Height - toolStripZoomPanel.Height - btntxtZoomSelected.Height - 8);
529                        panelZooomWaveform.Height = this.Height - (toolStripZoomPanel.Height + btntxtZoomSelected.Height + m_Edit.Height + 15);
530                        this.AutoScrollMinSize = new Size(this.Width, this.Height + 15);
531                    }
532
533                    m_InitialPanelHeight = this.Height;         
534                    panelZooomWaveform.Width = this.Width - 30;
535                    panelZooomWaveform.Location = new Point(0, 0);
536                   
537                m_Edit.BringToFront();
538
539
540                    btntxtZoomSelected.Width = this.Width - 40;
541             
542                }
543            }
544
545            if (m_Node is PhraseNode)
546            {
547               
548                m_Block = new AudioBlock((PhraseNode)m_Node, m_Strip, true,true);
549                m_AudioBlock = (AudioBlock)m_Block;
550                panelZooomWaveform.Controls.Add(m_Block);
551                m_AudioBlock.Location = new Point(5,5);
552                float zoomFactor = panelZooomWaveform.Height / m_AudioBlock.Height;
553                m_AudioBlock.IsFineNavigationMode = true;
554                m_AudioBlock.UpdateColors();
555                btntxtZoomSelected.BringToFront();
556                m_ZoomFactor = zoomFactor;
557             
558                m_AudioBlock.SetZoomFactorAndHeight(zoomFactor, Height);
559
560                initialWaveformWidth = m_AudioBlock.Waveform.Width;
561                if (mProjectView.SaveZoomWaveformZoomLevel)
562                {
563                    m_AudioBlock.Waveform.Width = m_AudioBlock.Waveform.Width + (int)(initialWaveformWidth * m_ZoomIncrementFactor);
564                }
565                if (m_ProjectView != null && m_ProjectView.Selection != null && m_ProjectView.Selection is AudioSelection)
566                {
567                    m_audioSel = (AudioSelection)m_ProjectView.Selection;
568                    if (m_audioSel.AudioRange.SelectionBeginTime != m_audioSel.AudioRange.SelectionEndTime)
569                    {
570                        m_AudioBlock.SetTimeBoundsForWaveformDisplay(m_audioSel.AudioRange.SelectionBeginTime, m_audioSel.AudioRange.SelectionEndTime);
571                    }
572                }
573                m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
574                m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
575                //int audioCursorPosition;
576                //int selectionStartPosition;
577                //int selectionEndPosition;
578                //m_AudioBlock.GetLocationXForAudioCursorAndSelection(out audioCursorPosition, out selectionStartPosition, out selectionEndPosition);
579                //Console.WriteLine("Audio Cursor Position is ------------------------------------------ {0}", audioCursorPosition);
580                //Console.WriteLine("Selection Start  {0} and Selection End  {1}", selectionStartPosition, selectionEndPosition);
581                //string strTemp = m_audioSel.AudioRange.ToString();
582                //int tempLength = strTemp.Length;
583                //string strTEmpInt = strTemp.TrimEnd('s');
584                //Console.WriteLine("Time of Selection --------------------{0}", strTEmpInt);
585                //int numVal = Int32.Parse("strTEmpInt");
586                if (m_audioSel != null && m_audioSel.AudioRange.HasCursor)
587                {
588                    m_AudioBlock.InitCursor(m_audioSel.AudioRange.CursorTime);
589
590                   // UpdateCursorTime(m_audioSel.AudioRange.CursorTime);
591                }
592                else
593                {
594                    m_AudioBlock.InitCursor(0);
595                }
596                if (m_ProjectView.TransportBar.IsPlayerActive) UpdateCursorTime(m_ProjectView.TransportBar.CurrentPlaylist.CurrentTimeInAsset);
597                btntxtZoomSelected.Focus();
598                //m_AudioBlock.Focus();
599                //this.ActiveControl = btnClosetoolStrip;
600                m_Block = m_AudioBlock;
601                m_PhraseDuration = m_AudioBlock.Node.Duration;
602            }
603            else if (m_Node is EmptyNode)
604            {
605               
606                m_Block = new Block(m_Node, m_Strip);
607                panelZooomWaveform.Controls.Add(m_Block);
608                m_AudioBlock = null;
609                m_PhraseDuration = 0;
610                if(m_Node.CommentText != null)
611                m_Block.AlignLabelToShowCommentIcon();
612
613            }
614
615            m_count = 0;
616
617
618
619            //btntxtZoomSelected.Text = " ";
620
621            if (m_ProjectView != null && m_ProjectView.Selection != null)
622            {
623
624                m_SelectedPhraseSection = (m_ProjectView.GetSelectedPhraseSection != null ? m_ProjectView.GetSelectedPhraseSection.ToString() : ""); // @ImproveZoomPanel
625                btntxtZoomSelected.Text = " " + m_ProjectView.Selection.ToString() + " " + m_SelectedPhraseSection;
626                //btntxtZoomSelected.Text += " " + m_ProjectView.Selection.ToString();
627                //btntxtZoomSelected.Text += " " + (m_ProjectView.GetSelectedPhraseSection != null ? m_ProjectView.GetSelectedPhraseSection.ToString() : "");
628            }
629            m_PreviousHeight = this.Height;
630            if (toolStripZoomPanel.Width < m_ContentView.Width && (m_Edit.Width + 5) < m_ContentView.Width && m_ProjectView.Height > m_PreviousHeight )
631            {
632                this.AutoScroll = false;
633            }
634            else
635            {
636                this.AutoScroll = true;
637            }
638         
639            this.Load += new EventHandler(ZoomWaveform_Load);
640            //btntxtZoomSelected.Focus ();
641            //Console.WriteLine("constructor " + (m_ProjectView.Selection is AudioSelection? "audio selection": "") +  m_ProjectView.Selection);
642
643        }
644
645
646        void ZoomWaveform_Load(object sender, EventArgs e)
647        {
648            btntxtZoomSelected.Focus();
649            EnsureCursorVisibility();
650        }
651
652
653
654       void ZoomWaveform_MouseWheel(object sender, MouseEventArgs e)
655       {
656           if (toolStripZoomPanel.Width < m_ContentView.Width && (m_Edit.Width + 5) < m_ContentView.Width && m_ProjectView.Height > m_PreviousHeight && m_ResizeIsDone == false)
657           {
658               this.AutoScroll = false;
659           }
660           else
661           {
662               this.AutoScroll = true;
663           }
664           if(e.Delta<0 && m_Node is PhraseNode)
665           {
666               int tempWidth = m_AudioBlock.Waveform.Width - (int)(initialWaveformWidth * 0.5);
667               if (tempWidth > (initialWaveformWidth / 10))
668               {
669                   m_ZoomIncrementFactor -= 0.5;
670                   m_AudioBlock.Waveform.Width = tempWidth;
671                   m_AudioBlock.SetZoomFactorAndHeightForZoom(m_ZoomFactor, Height);
672                   m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
673                   m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
674               }
675               
676           }
677           if (e.Delta > 0 && m_Node is PhraseNode)
678           {
679               int tempWidth = m_AudioBlock.Waveform.Width + (int)(initialWaveformWidth * 0.5);
680               if (tempWidth < (initialWaveformWidth * 60))
681               {
682                   m_ZoomIncrementFactor += 0.5;
683                   m_AudioBlock.Waveform.Width = tempWidth;
684                   m_AudioBlock.SetZoomFactorAndHeightForZoom(m_ZoomFactor, Height);
685                   m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
686                   m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
687               }
688           }
689           //  throw new NotImplementedException();
690       }
691
692       private void m_AudioBlock_MouseDown(object sender, EventArgs e)
693       {
694
695          // throw new NotImplementedException();
696       }
697
698
699
700       
701     
702
703
704        public void panelRender()
705        {
706            panelZooomWaveform.Controls.Add(m_AudioBlock);
707            m_AudioBlock.Location = new Point(5, 5);
708            initialWaveformWidth = m_AudioBlock.Waveform.Width;
709            m_AudioBlock.SetZoomFactorAndHeight(m_ZoomFactor, panelZooomWaveform.Height);
710            m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
711            m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height-10);
712            m_AudioBlock.InitCursor(0);
713        }
714
715
716
717        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
718        {
719            if (m_ProjectView.ObiForm.KeyboardShortcuts == null) return false;
720
721            string g = keyboardShortcuts.ZoomPanel_Close.Value.ToString();
722            string p = g;
723            //this.Focus();
724            if (this.Controls.Contains(m_EditableLabel))
725            {
726                return false;
727            }
728            if (keyData == keyboardShortcuts.ContentView_TransportBarRecordSingleKey.Value)
729            {
730                return true;
731            }
732            if (keyData == keyboardShortcuts.ContentView_ZoomWaveformPanel.Value)
733            {
734                return true;
735            }
736            if (keyData == keyboardShortcuts.ZoomPanel_Close.Value)
737            {
738                Close();
739                return true;
740            }
741            else if (keyData == keyboardShortcuts.ZoomPanel_NextPhrase.Value)
742            {
743                NextPhrase();
744                return true;
745            }
746            else if (keyData == keyboardShortcuts.ZoomPanel_PreviousPhrase.Value)
747            {
748                PreviousPhrase();
749                return true;
750            }
751            else if (keyData == keyboardShortcuts.ZoomPanel_Reset.Value)
752            {
753                Reset();
754                return true;
755            }
756            else if (keyData == keyboardShortcuts.ZoomPanel_ZoomIn.Value)
757            {
758                ZoomIn();
759                return true;
760            }
761            else if (keyData == keyboardShortcuts.ZoomPanel_ZoomOut.Value)
762            {
763                ZoomOut();
764                return true;
765            }
766            else if (keyData == keyboardShortcuts.ZoomPanel_ZoomSelection.Value)
767            {
768                ZoomSelection();
769                return true;
770            }
771            else if (keyData == keyboardShortcuts.ContentView_SelectPrecedingPhrase.Value && this.ActiveControl != toolStripZoomPanel && this.ActiveControl != m_Edit)
772            {
773                m_NudgeAtLeft = true;
774                m_ContentView.NudgeInFineNavigation(false);
775                m_NudgeAtLeft = false;
776                return true;
777            }
778            else if (keyData == keyboardShortcuts.ContentView_SelectFollowingPhrase.Value && this.ActiveControl != toolStripZoomPanel && this.ActiveControl != m_Edit)
779            {
780                m_NudgeAtRight = true;
781                m_ContentView.NudgeInFineNavigation(true);
782                m_NudgeAtRight = false;
783                return true;
784            }
785            else if (keyData == keyboardShortcuts.ContentView_TransportBarNudgeBackward.Value && this.ActiveControl != toolStripZoomPanel && this.ActiveControl != m_Edit)
786            {
787                m_NudgeAtLeft = true;
788                m_ContentView.NudgeInFineNavigation(false);
789                m_NudgeAtLeft = false;
790                return true;
791            }
792            else if (keyData == keyboardShortcuts.ContentView_TransportBarNudgeForward.Value && this.ActiveControl != toolStripZoomPanel && this.ActiveControl != m_Edit)
793            {
794                m_NudgeAtRight = true;
795                m_ContentView.NudgeInFineNavigation(true);
796                m_NudgeAtRight = false;
797                return true;
798            }
799            else if (keyData == keyboardShortcuts.ContentView_ExpandAudioSelectionAtLeft.Value && this.ActiveControl != toolStripZoomPanel && this.ActiveControl != m_Edit)
800            {
801                m_NudgeAtRightFromLeft = true;
802                m_ProjectView.TransportBar.NudgeSelectedAudio(TransportBar.NudgeSelection.ExpandAtLeft);
803                m_NudgeAtRightFromLeft = false;
804                return true;
805            }
806            else if (keyData == keyboardShortcuts.ContentView_ContractAudioSelectionAtLeft.Value && this.ActiveControl != toolStripZoomPanel && this.ActiveControl != m_Edit)
807            {
808                m_NudgeAtLeftFromLeft = true;
809                m_ProjectView.TransportBar.NudgeSelectedAudio(TransportBar.NudgeSelection.ContractAtLeft);
810                m_NudgeAtLeftFromLeft = false;
811                return true;
812            }
813            else if (keyData == keyboardShortcuts.ContentView_ScrollDown_SmallIncrementWithSelection.Value)
814            {
815                m_ContentView.NudgeIntervalIncrement(false);
816                return true;
817            }
818            else if (keyData == keyboardShortcuts.ContentView_ScrollUp_SmallIncrementWithSelection.Value)
819            {
820                m_ContentView.NudgeIntervalIncrement(true);
821                return true;
822            }
823            else if (keyData == Keys.Tab
824        && this.ActiveControl != null)
825            {
826                Control c = this.ActiveControl;
827                this.SelectNextControl(c, true, true, false, true);
828                //Console.WriteLine(c.ToString());
829                //Console.WriteLine(m_ProjectView.Selection);
830                if (this.ActiveControl != null && c.TabIndex > this.ActiveControl.TabIndex)
831                    System.Media.SystemSounds.Beep.Play();
832
833                return true;
834            }
835            else if (keyData == (Keys)(Keys.Shift | Keys.Tab)
836                 && this.ActiveControl != null)
837            {
838                Control c = this.ActiveControl;
839                this.SelectNextControl(c, false, true, false, true);
840                if (this.ActiveControl != null && c.TabIndex < this.ActiveControl.TabIndex)
841                    System.Media.SystemSounds.Beep.Play();
842
843                return true;
844            }
845            else if (keyData == keyboardShortcuts.ContentView_SelectUp.Value)
846            {
847                if (m_ProjectView != null && m_ProjectView.Selection != null && m_ProjectView.Selection.Control != null && m_ProjectView.Selection is Obi.AudioSelection)
848                {
849                    IControlWithSelection tempControl;
850                    tempControl = m_ProjectView.Selection.Control;
851                    m_ProjectView.Selection = new NodeSelection((ObiNode)m_Node, tempControl);
852                }
853            }
854            else if (keyData == Keys.Right || keyData == Keys.Left)
855            {
856                return false;
857            }
858            if (keyData == keyboardShortcuts.ContentView_ScrollDown_LargeIncrementWithSelection.Value || keyData == keyboardShortcuts.ContentView_ScrollUp_LargeIncrementWithSelection.Value
859                || keyData == keyboardShortcuts.ContentView_SelectFollowingStripCursor.Value || keyData == keyboardShortcuts.ContentView_SelectPrecedingStripCursor.Value
860                || keyData == keyboardShortcuts.ContentView_SelectFollowingStrip.Value || keyData == keyboardShortcuts.ContentView_SelectPrecedingStrip.Value
861                || keyData == keyboardShortcuts.ContentView_SelectFirstStrip.Value || keyData == keyboardShortcuts.ContentView_SelectLastStrip.Value)
862            // to do: handle global shortcuts after merging with trunck
863            // || keyData == (Keys.Control | Keys.H)
864            //|| keyData == (Keys.Control | Keys.Alt | Keys.H) || keyData == (Keys.Control | Keys.Shift | Keys.Q) || keyData == (Keys.Control | Keys.B)
865            //|| keyData == (Keys.Control | Keys.Shift | Keys.B) || keyData == (Keys.Control | Keys.Shift | Keys.Space))
866            {
867                return false;
868            }
869
870            return base.ProcessCmdKey(ref msg, keyData);
871            // return true;
872
873        }
874        protected override void OnPaint(PaintEventArgs e)
875        {
876            this.BringToFront();
877            base.OnPaint(e);
878        }
879 
880        public float ZoomFactor
881        {
882           set
883            {
884               
885   
886                if (value > 1.1 && value < 1.5)
887                {
888                    if (flag == false)
889                    {
890
891                                             
892                        toolStripZoomPanel.Size = new Size((int)(toolStripZoomPanel.Size.Width + (toolStripZoomPanel.Size.Width * (value - 1))), (int)(toolStripZoomPanel.Size.Height + (toolStripZoomPanel.Size.Height * (value - 1))));
893                     
894                        m_Edit.Size = new Size((int)(m_Edit.Size.Width + (m_Edit.Size.Width * (value - 1))), (int)(m_Edit.Size.Height));
895                        btntxtZoomSelected.Size = new Size((int)(btntxtZoomSelected.Size.Width + (btntxtZoomSelected.Size.Width * (value - 1))), (int)(btntxtZoomSelected.Size.Height + (btntxtZoomSelected.Size.Height * (value - 1))));
896         
897                        toolStripZoomPanel.Font = new Font(toolStripZoomPanel.Font.Name, (toolStripZoomPanel.Font.Size + (float)3.0), FontStyle.Bold);
898                        m_Edit.SetEditPanelFontSize(m_Edit.Size);
899                        m_Edit.Font = new Font(m_Edit.Font.Name, (m_Edit.Font.Size + (float)3.0), FontStyle.Bold);
900                        btntxtZoomSelected.Font = new Font(btntxtZoomSelected.Font.Name, (btntxtZoomSelected.Font.Size + (float)3.0), FontStyle.Bold);
901                 
902
903
904
905                        btntxtZoomSelected.Location = new Point(0, this.Height-this.btntxtZoomSelected.Height);
906                       
907                        toolStripZoomPanel.Location = new Point(0, this.Height - btntxtZoomSelected.Height-toolStripZoomPanel.Height - 15);
908                        m_Edit.Location = new Point(0, this.Height - m_Edit.Height - btntxtZoomSelected.Height-toolStripZoomPanel.Height-15);
909
910
911                        m_ZoomfactorFlag = true;
912                        flag = true;
913                    }
914                }
915                if (value <= 1.1)
916                {
917
918
919
920                    toolStripZoomPanel.Size = m_toolStripSize;
921                    m_Edit.Size = m_EditSize;
922                    btntxtZoomSelected.Size = m_btntxtZoomSelectedSize;
923                   
924
925                   
926
927                    if (flag)
928                    {
929                        toolStripZoomPanel.Font = new Font(toolStripZoomPanel.Font.Name, (toolStripZoomPanel.Font.Size - (float)3.0), FontStyle.Regular);
930                        m_Edit.MinimumSize = m_EditSize;
931                        m_Edit.Size = m_EditSize;
932                        m_Edit.SetEditPanelFontSize(m_Edit.Size);
933                        m_Edit.Font = new Font(m_Edit.Font.Name, (m_Edit.Font.Size - (float)3.0), FontStyle.Regular);
934                        btntxtZoomSelected.Font = new Font(btntxtZoomSelected.Font.Name, (btntxtZoomSelected.Font.Size - (float)3.0), FontStyle.Regular);
935
936
937                        btntxtZoomSelected.Location = new Point(0, this.Height - btntxtZoomSelected.Height);
938                        toolStripZoomPanel.Location = new Point(0, this.Height - btntxtZoomSelected.Height - toolStripZoomPanel.Height - 15);
939                        m_Edit.Location = new Point(0, this.Height - m_Edit.Height - toolStripZoomPanel.Height - btntxtZoomSelected.Height - 15);
940                       
941
942                        flag = false;
943
944                    }
945                   
946                   
947                   
948                }
949            }
950        }
951
952       
953          public void IsNewProjectOpened()
954        {
955            Close();   
956        }
957
958          private void btnClosetoolStrip_Click(object sender, EventArgs e)
959          {
960              Close();
961          }
962          private void Close()
963          {
964                m_buttonSizeinit = false;
965               
966               if (m_ProjectView.SaveZoomWaveformZoomLevel)
967                {
968                    m_ProjectView.ZoomWaveformIncrementFactor = m_ZoomIncrementFactor;
969                }
970                else
971                {
972                    m_ProjectView.ZoomWaveformIncrementFactor = 0;
973                }
974                m_ContentView.RemovePanel();
975                m_ProjectView.SelectionChanged -= new EventHandler(ProjectViewSelectionChanged);
976                m_ProjectView.Presentation.UndoRedoManager.CommandDone -= new EventHandler<urakawa.events.undo.DoneEventArgs>(ProjectviewUpdated);
977                m_ProjectView.Presentation.UndoRedoManager.CommandUnDone -= new EventHandler<urakawa.events.undo.UnDoneEventArgs>(ProjectviewUpdated);
978                m_ProjectView.Presentation.UndoRedoManager.CommandReDone -= new EventHandler<urakawa.events.undo.ReDoneEventArgs>(ProjectviewUpdated);
979               
980           }
981       
982
983          private void btnNextPhrasetoolStrip_Click(object sender, EventArgs e)
984          {
985              NextPhrase();
986          }
987        private void NextPhrase()
988        {
989            if (toolStripZoomPanel.Width < m_ContentView.Width && (m_Edit.Width + 5) < m_ContentView.Width && m_ProjectView.Height > m_PreviousHeight && m_ResizeIsDone == false)
990            {
991                this.AutoScroll = false;
992            }
993            else
994            {
995                this.AutoScroll = true;
996            }
997            if (m_Node != null && m_Node.IsRooted==true && m_Node.Parent != null && m_Node.FollowingNode != null)
998            {
999                ObiNode nextNode = m_Node.FollowingNode;
1000                if (nextNode != null && nextNode.Parent != null && m_Block != null && m_Block.Node != null && m_Block.Node.Parent != null)
1001                {
1002                    if (m_Block.Node.Parent == nextNode.Parent)
1003                    {
1004                        if (m_Node.FollowingNode is PhraseNode)
1005                        {
1006                            m_Node = nextNode as PhraseNode;
1007                            m_ProjectView.Selection = new NodeSelection(m_Node, m_ContentView);
1008
1009                        }
1010
1011                        else if (m_Node.FollowingNode is EmptyNode)
1012                        {
1013                            m_Node = nextNode as EmptyNode;
1014                            m_ProjectView.Selection = new NodeSelection(m_Node, m_ContentView);
1015                        }
1016                    }
1017                }
1018                else if (m_Node.FollowingNode is EmptyNode)
1019                {
1020                    if (m_AudioBlock != null)
1021                    {
1022                        m_Node = nextNode as EmptyNode;
1023                        m_ProjectView.Selection = new NodeSelection(m_Node, m_ContentView);
1024                    }
1025                }
1026            }
1027            this.UpdateCursorTime(0);
1028            if (m_audioSel != null && m_audioSel.AudioRange != null)
1029            {
1030                m_audioSel.AudioRange.SelectionBeginTime = 0;
1031                m_audioSel.AudioRange.SelectionEndTime = 0;
1032            }
1033        }
1034
1035          private void btnPreviousPhrasetoolStrip_Click(object sender, EventArgs e)
1036          {
1037              PreviousPhrase();
1038          }
1039        private void PreviousPhrase()
1040        {
1041            if (toolStripZoomPanel.Width < m_ContentView.Width && (m_Edit.Width + 5) < m_ContentView.Width && m_ProjectView.Height > m_PreviousHeight && m_ResizeIsDone == false)
1042            {
1043                this.AutoScroll = false;
1044            }
1045            else
1046            {
1047                this.AutoScroll = true;
1048            }
1049            if (m_Node != null && m_Node.IsRooted == true && m_Node.Parent!=null && m_Node.PrecedingNode != null)
1050            {
1051                ObiNode previousNode = m_Node.PrecedingNode;
1052                if (previousNode != null && previousNode.Parent != null && m_Block != null && m_Block.Node != null && m_Block.Node.Parent != null)
1053                {
1054                    if (m_Block.Node.Parent == previousNode.Parent)
1055                    {
1056                        if (m_Node.PrecedingNode is PhraseNode)
1057                        {
1058                            m_Node = previousNode as PhraseNode;
1059                            m_ProjectView.Selection = new NodeSelection(m_Node, m_ContentView);
1060
1061                        }
1062
1063                        else if (m_Node.PrecedingNode is EmptyNode)
1064                        {
1065
1066                            {
1067                                m_Node = previousNode as EmptyNode;
1068                                m_ProjectView.Selection = new NodeSelection(m_Node, m_ContentView);
1069                            }
1070                        }
1071
1072                    }
1073
1074                }
1075                else if (m_Node.PrecedingNode is EmptyNode)
1076                {
1077                    if (m_AudioBlock != null)
1078                    {
1079                        m_Node = previousNode as EmptyNode;
1080                        m_ProjectView.Selection = new NodeSelection(m_Node, m_ContentView);
1081                    }
1082                }
1083            }
1084            this.UpdateCursorTime(0);
1085            if (m_audioSel != null && m_audioSel.AudioRange != null)
1086            {
1087                m_audioSel.AudioRange.SelectionBeginTime = 0;
1088                m_audioSel.AudioRange.SelectionEndTime = 0;
1089            }
1090        }
1091
1092        private void EnsureCursorVisibility()
1093        {
1094            if (m_ProjectView.Selection is AudioSelection)
1095            {
1096                AudioSelection ZoomAudioSelect = (AudioSelection)m_ProjectView.Selection;
1097
1098                if (ZoomAudioSelect != null && ZoomAudioSelect.AudioRange != null && m_AudioBlock != null)
1099                {
1100                    this.AutoScroll = true;
1101                    if (ZoomAudioSelect.AudioRange.HasCursor)
1102                    {
1103                      //  XVal = m_AudioBlock.UpdateCursorTime(ZoomAudioSelect.AudioRange.CursorTime);
1104                        XVal = m_AudioBlock.UpdateSelectionTime(ZoomAudioSelect.AudioRange.CursorTime);
1105                    }
1106                    else
1107                    {
1108                        XVal = m_AudioBlock.UpdateSelectionTime(ZoomAudioSelect.AudioRange.SelectionBeginTime);
1109                    }
1110                    if ((XVal >= m_ContentView.Width - 50 + Math.Abs(m_AudioBlock.Location.X)) || (XVal < Math.Abs(m_AudioBlock.Location.X)))
1111                    {
1112                        m_ContentView.Selection = m_ProjectView.Selection;
1113                        panelZooomWaveform.AutoScrollPosition = new Point(XVal - 100, panelZooomWaveform.AutoScrollPosition.Y);
1114
1115                    }
1116                }               
1117            }
1118        }
1119        private void btnZoomIntoolStrip_Click(object sender, EventArgs e)
1120        {
1121            ZoomIn();
1122        }
1123        public void ZoomIn()
1124        {
1125           
1126            //Console.WriteLine("Zoom In");
1127            if (toolStripZoomPanel.Width < m_ContentView.Width && (m_Edit.Width + 5) < m_ContentView.Width && m_ProjectView.Height > m_PreviousHeight && m_ResizeIsDone == false)
1128            {
1129                this.AutoScroll = false;
1130            }
1131            else
1132            {
1133                this.AutoScroll = true;
1134            }
1135            if (m_Node is PhraseNode)
1136            {
1137                int tempWidth = m_AudioBlock.Waveform.Width + (int)(initialWaveformWidth * 0.5);
1138                if (tempWidth < (initialWaveformWidth * 60))
1139                {
1140                    m_ZoomIncrementFactor += 0.5;
1141                    m_AudioBlock.Waveform.Width = m_AudioBlock.Waveform.Width + (int)(initialWaveformWidth * 0.5);
1142                    m_AudioBlock.SetZoomFactorAndHeightForZoom(m_ZoomFactor, Height);
1143                    m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
1144                    m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
1145                }
1146            }
1147
1148            EnsureCursorVisibility();
1149        }
1150
1151          private void btnZoomOuttoolStrip_Click(object sender, EventArgs e)
1152          {
1153              ZoomOut();       
1154          }
1155        public void ZoomOut()
1156        {
1157           
1158            //Console.WriteLine("zoom out");
1159            if (toolStripZoomPanel.Width < m_ContentView.Width && (m_Edit.Width + 5) < m_ContentView.Width && m_ProjectView.Height > m_PreviousHeight && m_ResizeIsDone == false)
1160            {
1161                this.AutoScroll = false;
1162            }
1163            else
1164            {
1165                this.AutoScroll = true;
1166            }
1167            if (m_Node is PhraseNode)
1168            {
1169                int tempWidth = m_AudioBlock.Waveform.Width - (int)(initialWaveformWidth * 0.5);
1170                if (tempWidth > (initialWaveformWidth / 10))
1171                {
1172                    m_ZoomIncrementFactor -= 0.5;
1173                    m_AudioBlock.Waveform.Width = m_AudioBlock.Waveform.Width - (int)(initialWaveformWidth * 0.5);
1174                    m_AudioBlock.SetZoomFactorAndHeightForZoom(m_ZoomFactor, Height);
1175                    m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
1176                    m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
1177                }
1178            }
1179            EnsureCursorVisibility();
1180        }
1181
1182          private void btnResettoolStrip_Click(object sender, EventArgs e)
1183          {
1184              Reset();
1185          }
1186
1187        public void Reset()
1188        {
1189           
1190            //Console.WriteLine("zoom reset");
1191            if (toolStripZoomPanel.Width < m_ContentView.Width && (m_Edit.Width + 5) < m_ContentView.Width && m_ProjectView.Height > m_PreviousHeight && m_ResizeIsDone == false)
1192            {
1193                this.AutoScroll = false;
1194            }
1195            else
1196            {
1197                this.AutoScroll = true;
1198            }
1199            if (m_Node is PhraseNode)
1200            {
1201                m_ZoomIncrementFactor = 0;
1202                m_audioSel = null;
1203                m_AudioBlock.Waveform.Width = initialWaveformWidth;
1204                m_AudioBlock.SetZoomFactorAndHeightForZoom(m_ZoomFactor, Height);
1205                m_AudioBlock.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
1206                m_AudioBlock.Waveform.Size = new Size(m_AudioBlock.Waveform.Width, panelZooomWaveform.Height - 10);
1207                m_AudioBlock.ResetTimeBoundsForWaveformDisplay();
1208            }
1209            EnsureCursorVisibility();
1210        }
1211
1212        private void mbtnZoomSelectiontoolStrip_Click(object sender, EventArgs e)
1213        {
1214            ZoomSelection();
1215        }
1216        private void ZoomSelection()
1217        {
1218            if (m_ProjectView != null && m_ProjectView.Selection != null && m_ProjectView.Selection.Control != null && m_ProjectView.Selection is Obi.AudioSelection)
1219            {
1220                m_audioSel = (AudioSelection)m_ProjectView.Selection;
1221                if (m_audioSel.AudioRange.SelectionBeginTime != m_audioSel.AudioRange.SelectionEndTime)
1222                {
1223                    m_AudioBlock.SetTimeBoundsForWaveformDisplay(m_audioSel.AudioRange.SelectionBeginTime, m_audioSel.AudioRange.SelectionEndTime);
1224                 
1225                }
1226            }
1227        }
1228        public void ZoomPanelToolTipInit()
1229        {
1230            keyboardShortcuts = m_ProjectView.ObiForm.KeyboardShortcuts;
1231            this.btnClosetoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_Close") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Close.Value.ToString()) + ")";
1232            this.btnNextPhrasetoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ShowNextPhrase") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_NextPhrase.Value.ToString()) + ")";
1233            this.btnPreviousPhrasetoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ShowPreviousPhrase") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_PreviousPhrase.Value.ToString()) + ")";
1234            this.btnResettoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_Reset") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Reset.Value.ToString()) + ")";
1235            this.btnZoomIntoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ZoomIn") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomIn.Value.ToString()) + ")";
1236            this.btnZoomOuttoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ZoomOut") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomOut.Value.ToString()) + ")";
1237            this.btnZoomSelectiontoolStrip.ToolTipText = Localizer.Message("ZoomAudioTT_ZoomSelection") + "(" + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomSelection.Value.ToString()) + ")";
1238
1239            this.toolStripZoomPanel.AccessibleName = Localizer.Message("ZoomAudioTT_Close") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Close.Value.ToString());
1240            this.btnNextPhrasetoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ShowNextPhrase") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_NextPhrase.Value.ToString());
1241            this.btnPreviousPhrasetoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ShowPreviousPhrase") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_PreviousPhrase.Value.ToString());
1242            this.btnResettoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_Reset") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_Reset.Value.ToString());
1243            this.btnZoomIntoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ZoomIn") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomIn.Value.ToString());
1244            this.btnZoomOuttoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ZoomOut") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomOut.Value.ToString());
1245            this.btnZoomSelectiontoolStrip.AccessibleName = Localizer.Message("ZoomAudioTT_ZoomSelection") + keyboardShortcuts.FormatKeyboardShorcut(keyboardShortcuts.ZoomPanel_ZoomSelection.Value.ToString());
1246            if (m_Edit != null)
1247            {
1248                m_Edit.EditAudioPanelToolTipInit();
1249            }
1250        }
1251        private void SetFont() //@fontconfig
1252        {
1253            mtoolTipZoomWaveform.OwnerDraw = true;
1254            this.Font = new Font(m_ProjectView.ObiForm.Settings.ObiFont, this.Font.Size, FontStyle.Regular);
1255            toolStripZoomPanel.Font = new Font(m_ProjectView.ObiForm.Settings.ObiFont, this.Font.Size, FontStyle.Regular);
1256        }
1257
1258        private void mtoolTipZoomWaveform_Draw(object sender, DrawToolTipEventArgs e)
1259        {
1260             Font tooltipFont = new Font(m_ProjectView.ObiForm.Settings.ObiFont, this.Font.Size);
1261           // Font tooltipFont = new Font((m_ProjectView.ObiForm.Settings.ObiFont, this.Font.Size));
1262            e.Graphics.Clear(Color.White);
1263            e.Graphics.DrawString(e.ToolTipText, tooltipFont, Brushes.Black, new PointF(0, 0));
1264        }
1265
1266        private void mtoolTipZoomWaveform_Popup(object sender, PopupEventArgs e)
1267        {
1268            e.ToolTipSize = TextRenderer.MeasureText(mtoolTipZoomWaveform.GetToolTip(e.AssociatedControl), new Font(m_ProjectView.ObiForm.Settings.ObiFont, this.Font.Size));
1269        }
1270
1271        private void btnPreserveZoomtoolStrip_Click(object sender, EventArgs e)
1272        {
1273            m_ProjectView.SaveZoomWaveformZoomLevel = !m_ProjectView.SaveZoomWaveformZoomLevel;
1274            if (m_ProjectView.SaveZoomWaveformZoomLevel)
1275            {
1276                m_ProjectView.ZoomWaveformIncrementFactor = m_ZoomIncrementFactor;
1277                btnPreserveZoomtoolStrip.Image = m_PreserveZoomCheckedImage;
1278                btnPreserveZoomtoolStrip.AccessibleName = Localizer.Message("ZoomWaveform_PreserveZoomChecked");
1279                //m_ZoomFactor = m_ZoomIncrementFactor
1280            }
1281            else
1282            {
1283                btnPreserveZoomtoolStrip.Image = m_PreserveZoomUnCheckedImage;
1284                btnPreserveZoomtoolStrip.AccessibleName = Localizer.Message("ZoomWaveform_PreserveZoomUnchecked");
1285            }
1286        }
1287
1288        public void ShowEditLabelToAddComment()
1289        {
1290            if (m_ContentView.Selection is AudioSelection)
1291            {
1292                m_TimeOfCursor = ((AudioSelection)m_ContentView.Selection).AudioRange.CursorTime;
1293            }
1294            EditableLabel editLabel = new EditableLabel(m_ContentView.Selection.Node as EmptyNode);
1295            this.Controls.Add(editLabel);
1296            m_EditableLabel = editLabel;
1297            m_SelectedNodeToAddComment = m_ContentView.Selection.Node as EmptyNode;
1298            editLabel.Show();
1299            editLabel.Editable = true;
1300            AlignCommentEditLabel();
1301            editLabel.BringToFront();
1302            editLabel.AddComment += new EventHandler(EditableLabel_AddComment);
1303            editLabel.CloseComment += new EventHandler(EditLabel_CloseAddComment);
1304        }
1305        private void EditLabel_CloseAddComment(object sender, EventArgs e)
1306        {
1307            RemoveEditLabelControlForAddingComment();
1308        }
1309
1310        private void EditableLabel_AddComment(object sender, EventArgs e)
1311        {
1312            Block tempBlock = m_Block;
1313            if (tempBlock != null)
1314            {
1315                m_ContentView.ToggleTODOForPhrase(m_EditableLabel.CommentText);
1316                m_Block.UpdateLabelsText();
1317                m_Block.AlignLabelToShowCommentIcon();
1318                m_ContentView.ActiveStrip.AlignLabelToShowCommentIcon();
1319                RemoveEditLabelControlForAddingComment();
1320
1321            }
1322        }
1323
1324        public void RemoveEditLabelControlForAddingComment()
1325        {
1326            m_EditableLabel.AddComment -= new EventHandler(EditableLabel_AddComment);
1327            m_EditableLabel.CloseComment -= new EventHandler(EditLabel_CloseAddComment);
1328
1329            if (m_TimeOfCursor != 0 && m_SelectedNodeToAddComment is PhraseNode)
1330            {
1331                m_ContentView.Selection = new AudioSelection((PhraseNode)m_SelectedNodeToAddComment, m_ContentView,
1332                    new AudioRange(m_TimeOfCursor));
1333            }
1334            else
1335            {
1336                m_ContentView.Selection = new NodeSelection(m_SelectedNodeToAddComment, m_ContentView);
1337            }
1338            m_TimeOfCursor = 0;
1339
1340            this.Controls.Remove(m_EditableLabel);
1341        }
1342        public void AlignCommentEditLabel()
1343        {
1344                m_EditableLabel.Location = new Point(0,0); 
1345        }
1346        public void ClearComment()
1347        {
1348            if (m_ProjectView.Selection.Node is EmptyNode)
1349            {
1350                EmptyNode tempNode = (EmptyNode)m_ProjectView.Selection.Node;
1351                tempNode.CommentText = null;
1352            }
1353            m_Block.UpdateLabelsText();
1354        }
1355        public void ShowCommentIconInZoomWaveform()
1356        {
1357            m_Block.UpdateLabelsText();
1358            m_Block.AlignLabelToShowCommentIcon();
1359        }
1360     
1361    }
1362}
Note: See TracBrowser for help on using the repository browser.