Beispiel #1
0
        // TODO: Find a *much* nicer way of dealing with this. :X
        public ReferenceListItem(Reference reference, Display display, Resource context)
        {
            this.Reference = reference;

            string displayStr;

            switch (display)
            {
                case Display.NoMod:
                    displayStr = reference.ToString(false, context);
                    break;
                case Display.WithMod:
                    displayStr = reference.ToString(true, context);
                    break;
                case Display.SourcedNoMod:
                    displayStr = reference.ToStringSourced(false, context);
                    break;
                case Display.SourcedIncoming:
                    displayStr = "[INCOMING] " + reference.ToStringSourced(false, context);
                    break;
                default:
                    throw new ArgumentException("display");
            }

            this.AddText(displayStr);

            SetBackground(reference.Valid ? ItemStatus.Okay : ItemStatus.Error);

            this.CommandBindings.Add(new System.Windows.Input.CommandBinding(
                System.Windows.Input.ApplicationCommands.Copy,
                (o, e) => System.Windows.Clipboard.SetText(string.Concat(reference.Origin.Location, " : ", reference.Target.Location))
                ));

            this.ContextMenu = new ContextMenu();

            var items = this.ContextMenu.Items;

            items.Add(new MenuItem { Header = "_Copy...", Command = System.Windows.Input.ApplicationCommands.Copy, CommandTarget = this });

            items.Add(CreateItem(Reference.Definition, "_Definition: "));
            // Add the origin unless it's the same
            if (Reference.Definition != reference.Origin)
                items.Add(CreateItem(Reference.Origin, "_Origin: "));
            // Add the definition *unless* it's either.
            if (Reference.Definition != Reference.Target && Reference.Origin != Reference.Target)
                items.Add(CreateItem(Reference.Target, "_Target: "));
        }