⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdstatusbar.cs

📁 C#实现DHTML编辑器功能!
💻 CS
字号:
// DINAMIC XML Editor
//
// Copyright (c) 2002-2003 Dusan Hlavaty
// mailto: duddo@atlas.cz
//
// This software is licensed under the terms of
// GNU General Public license
//
using System;
using System.Drawing;
using System.Windows.Forms;

namespace XML_editor.MyComponents
{
	/// <summary>
	/// Moj 'instantny' status bar (s ohranicenymi poliami a progress barom), ktory
	/// uz priamo 'fuknem' do aplikacie. (Aby som ho nemusel cely vytvarat v hlavnom
	/// formulari.)
	/// </summary>
	public class SdStatusBar : AxStatusBar
	{
		/// <summary>
		/// text v status bare 
		/// </summary>
		private AxStatusBarPanel txtStatusBarPanel    = new AxStatusBarPanel();

		/// <summary>
		/// progress v status bare
		/// </summary>
		private AxProgressStatusBarPanel progressStatusBarPanel    = new AxProgressStatusBarPanel();

		/// <summary>
		/// poloha kurzora v status bare
		/// </summary>
		private AxStatusBarPanel cursorStatusBarPanel = new AxStatusBarPanel();

		/// <summary>
		/// Insert-mod v status bare 
		/// </summary>
		private AxStatusBarPanel modeStatusBarPanel   = new AxStatusBarPanel();
		
		private bool cancelEnabled;

		// -------------------------------------------------------------------------
		/// <summary>
		/// Panel ukazujuci polohu kurzora
		/// </summary>
		private AxStatusBarPanel CursorStatusBarPanel 
		{
			get 
			{
				return this.cursorStatusBarPanel;
			}
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Panel ukazujuci typ kurzora (INSERT/OVERWRITE)
		/// </summary>
		private AxStatusBarPanel ModeStatusBarPanel 
		{
			get 
			{
				return this.modeStatusBarPanel;
			}
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// 
		/// </summary>
		public bool CancelEnabled 
		{
			get 
			{
				return this.cancelEnabled;
			}
			set 
			{
				this.cancelEnabled = value;
			}
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Inicializuje instanciu <see cref="SdStatusBar"/>
		/// </summary>
		public SdStatusBar()
		{
			txtStatusBarPanel.Width = 500;
			txtStatusBarPanel.AutoSize = StatusBarPanelAutoSize.Spring;
			Panels.Add(txtStatusBarPanel);
	
			/*
			statusProgressBar.Width  = 200;
			statusProgressBar.Height = 12;
			statusProgressBar.Location = new Point(160, 4);
			statusProgressBar.Minimum = 0;
			statusProgressBar.Visible = false;

			this.Controls.Add(statusProgressBar);
			*/
			progressStatusBarPanel.Width = 100;
			progressStatusBarPanel.AutoSize = StatusBarPanelAutoSize.None;
			progressStatusBarPanel.Alignment = HorizontalAlignment.Left;
			Panels.Add(progressStatusBarPanel);
			
			cursorStatusBarPanel.Width = 150;
			cursorStatusBarPanel.AutoSize = StatusBarPanelAutoSize.None;
			cursorStatusBarPanel.Alignment = HorizontalAlignment.Left;
			Panels.Add(cursorStatusBarPanel);
				
			modeStatusBarPanel.Width = 35;
			modeStatusBarPanel.AutoSize = StatusBarPanelAutoSize.None;
			modeStatusBarPanel.Alignment = HorizontalAlignment.Right;
			Panels.Add(modeStatusBarPanel);
			
			ShowPanels = true;

		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Zobrazi chybovu hlasku v lavom status-bar paneli. Pred text automaticky vpise slovo "Chyba : "
		/// </summary>
		/// <param name="message">Text chyby, ktory sa ma zobrazit</param>
		public void ShowErrorMessage(string message)
		{
			txtStatusBarPanel.Text = "Chyba : " + message;
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Zobrazi chybovu hlasku v lavom status-bar paneli. Pred text automaticky vpise slovo "Chyba : "
		/// </summary>
		/// <param name="image">not used</param>
		/// <param name="message">Text chyby, ktory sa ma zobrazit</param>
		public void ShowErrorMessage(Image image, string message)
		{
			txtStatusBarPanel.Text = "Chyba : " + message;
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Zobrazi hlasku v lavom status-bar paneli.
		/// </summary>
		/// <param name="message">Hlaska, ktora sa ma zobrazit</param>
		public void SetMessage(string message)
		{
			txtStatusBarPanel.Text = message;
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Zobrazi hlasku v lavom status-bar paneli.
		/// </summary>
		/// <param name="image">not used</param>
		/// <param name="message">Hlaska, ktora sa ma zobrazit</param>
		public void SetMessage(Image image, string message)
		{
			txtStatusBarPanel.Text = message;
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// Zozbrazi polohu kurzora v status bare
		/// </summary>
		/// <param name="column">stlpec na ktorom sa nachadza kurzor</param>
		/// <param name="line">riadok v ktorom sa nachadza kurzor</param>
		/// <param name="charOffset">znak na ktorom sa nachadza kurzor (TAB sa pocita ako jeen znak)</param>
		public void SetCursorPosition(int column, int line, int charOffset)
		{
			CursorStatusBarPanel.Text = String.Format("Ln {0,-10} Col {1,-5} Ch {2,-5}", line, column, charOffset);
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Zobrazi, ci sme v "insert mode" alebo v "prepisovacom mode"
		/// </summary>
		/// <param name="insertMode"></param>
		public void SetInsertMode(bool insertMode)
		{
			ModeStatusBarPanel.Text = insertMode ? "INS" : "OVR";
		}


		// Progress Monitor implementation
		private string oldMessage = null;

		// -------------------------------------------------------------------------
		/// <summary>
		/// Zaciatok prace - zobrazi progressbar a nastavi jeho maximalnu hodnotu.
		/// </summary>
		/// <param name="name">text, ktory sa ma zobrazit</param>
		/// <param name="totalWork">maximalna hodnota progress baru</param>
		public void BeginTask(string name, int totalWork)
		{
			oldMessage = txtStatusBarPanel.Text;
			SetMessage(name);
			progressStatusBarPanel.Maximum = totalWork;
			progressStatusBarPanel.ProgressVisible = true;
//			statusProgressBar.Maximum = totalWork;
//			statusProgressBar.Visible = true;
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Nastavi progress bar v status bare na zadanu hodnotu
		/// </summary>
		/// <param name="work"></param>
		public void TaskWorked(int work)
		{
			progressStatusBarPanel.Value = work;
//			statusProgressBar.Value = work;
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Koniec prace - schova progress bar
		/// </summary>
		public void EndTask()
		{
			SetMessage(oldMessage);
			oldMessage = null;
			progressStatusBarPanel.ProgressVisible = false;
//			statusProgressBar.Visible = false;
		}
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Toto neviem na co by mohlo byt :)
		/// </summary>
		public bool Canceled
		{
			get 
			{
				return oldMessage == null;
			}
			set 
			{
				this.EndTask();
			}
		}
		
	} // class SdStatusBar
} // namespace XML_editor.MyComponents

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -