示例#1
0
		public SquareRootToken ()
		{
			child = BuildProperty<Token> ("Child");
			child.DependencyPropertyValueChanged += HandleValueChanged;

			Child = new TextToken ();
		}
示例#2
0
		public override void Replace (Token oldToken, Token newToken)
		{
			if (oldToken == Base)
				Base = newToken;

			if (oldToken == Power)
				Power = newToken;
		}
示例#3
0
		public override void Replace (Token oldToken, Token newToken)
		{
			if (oldToken == Dividend)
				Dividend = newToken;

			if (oldToken == Divisor)
				Divisor = newToken;
		}
示例#4
0
		public ExponentiationToken ()
		{
			_base = BuildProperty<Token> ("Base");
			_base.DependencyPropertyValueChanged += HandleValueChanged;

			power = BuildProperty<Token> ("Power");
			power.DependencyPropertyValueChanged += HandleValueChanged;

			Base = new TextToken ();
			Power = new TextToken ();					
		}
示例#5
0
		public FractionToken ()
		{
			dividend = BuildProperty<Token> ("Dividend");
			dividend.DependencyPropertyValueChanged += HandleValueChanged;

			divisor = BuildProperty<Token> ("Divisor");
			divisor.DependencyPropertyValueChanged += HandleValueChanged;

			Dividend = new TextToken ();
			Divisor = new TextToken ();					
		}
示例#6
0
		private HBoxToken GetHBoxToken (Token token)
		{
			if (token.Parent is HBoxToken == false) {
				var parent = token.Parent;
				var container = new HBoxToken ();

				parent.Replace (token, container);
				container.Add (token);
			}

			return token.Parent as HBoxToken;
		}
示例#7
0
		public override void Replace (Token oldToken, Token newToken)
		{
			Child = newToken;
		}
示例#8
0
		private Area GetArea (Token token, UIElement uielement)
		{
			if (uielement == null)
				return null;

			if (uielement is FrameworkElement && (uielement as FrameworkElement).DataContext == token)
				return uielement as Area;

			
			for (int i = 0; i < uielement.VisualChildrenCount; i++) {
				var child = GetArea (token, uielement.GetVisualChild (i) as UIElement);

				if (child != null)
					return child;
			}

			return null;
		}
		public IEnumerable<SelectionToken> Build (Token token)
		{
			if (token is HBoxToken) {
				var hbox = token as HBoxToken;

				foreach (var child in hbox.Tokens.Where(c => !IsOperator(c))) {
					foreach (var node in Build(child))
						yield return node;
				}
			}

			if (token is FractionToken) {
				var fraction = token as FractionToken;

				yield return new SelectionToken (SelectionType.Left, fraction);

				foreach (var node in Build(fraction.Dividend))
					yield return node;
				foreach (var node in Build(fraction.Divisor))
					yield return node;

				yield return new SelectionToken (SelectionType.Right, fraction);
			}

			if (token is TextToken)
				yield return new SelectionToken (Type, token);

			if (token is ParenthesesToken) {
				var parentheses = token as ParenthesesToken;

				yield return new SelectionToken (SelectionType.Left, parentheses);

				foreach (var node in Build(parentheses.Child))
					yield return node;

				yield return new SelectionToken (SelectionType.Right, parentheses);
			}

			if (token is ExponentiationToken) {
				var exponentiation = token as ExponentiationToken;

				yield return new SelectionToken (SelectionType.Left, exponentiation);

				foreach (var node in Build(exponentiation.Base))
					yield return node;
				foreach (var node in Build(exponentiation.Power))
					yield return node;

				yield return new SelectionToken (SelectionType.Right, exponentiation);
			}

			if (token is SquareRootToken) {
				var squareRoot = token as SquareRootToken;

				yield return new SelectionToken (SelectionType.Left, squareRoot);

				foreach (var node in Build(squareRoot.Child))
					yield return node;

				yield return new SelectionToken (SelectionType.Right, squareRoot);
			}

			if (token is AbsoluteToken) {
				var absolute = token as AbsoluteToken;

				yield return new SelectionToken (SelectionType.Left, absolute);

				foreach (var node in Build(absolute.Child))
					yield return node;

				yield return new SelectionToken (SelectionType.Right, absolute);
			}
		}
示例#10
0
			public SelectionToken (SelectionType type, Token token)
			{
				Type = type;
				Token = token;
			}
示例#11
0
		private bool IsOperator (Token token)
		{
			return token is PlusToken || token is MinusToken || token is MultiplicationToken;
		}
示例#12
0
		public abstract void Replace (Token oldToken, Token newToken);
		public InsertHBinaryOperation (MathRegionViewModel region, Token operation)
		{
			Region = region;
			Operation = operation;
		}