Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Ewing <lewing@microsoft.com>2018-07-14 05:48:36 +0300
committerLarry Ewing <lewing@microsoft.com>2018-07-16 22:05:49 +0300
commitdccfe8d8808a21f5af393f5c165ff31bdbc502d1 (patch)
tree5d10748c229e8ef67ac5bd26ae01ee0fe16035f3 /Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs
parent4fae4441c00171a4ddecf9045d383e8732a83790 (diff)
Draw icons if the image is set
Diffstat (limited to 'Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs')
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs109
1 files changed, 90 insertions, 19 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs
index 8225319..3526287 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs
@@ -3,40 +3,111 @@ using AppKit;
namespace Xamarin.PropertyEditing.Mac
{
+ internal class SegmentStack : NSView
+ {
+ class SegmentItem
+ {
+ public NSImage Image { get; set; }
+ public string Label { get; set; }
+ public NSView View { get; set; }
+ }
+
+
+ private SegmentItem[] segments = new SegmentItem[0];
+ private NSStackView stackView = new NSStackView () {
+ Spacing = 3
+ };
+
+ public void SetImage (NSImage image, int segment)
+ {
+ var item = this.segments[segment];
+
+ item.Image = image;
+ if (item.Image != null)
+ return;
+
+ item.View = new UnderlinedImageView (image.Name) {
+ // Image = image
+ };
+ this.stackView.AddView (item.View, NSStackViewGravity.Leading);
+ }
+
+ public NSImage GetImage (int segment)
+ {
+ return this.segments[segment].Image;
+ }
+
+ public void SetLabel (string label, int segment)
+ {
+ var item = this.segments[segment];
+ item.Label = label;
+ if (item.Image != null)
+ return;
+
+ item.View = new UnderlinedTextField () {
+ BackgroundColor = NSColor.Clear,
+ Editable = false,
+ Bezeled = false,
+ StringValue = label
+ };
+ this.stackView.AddView (item.View, NSStackViewGravity.Leading);
+ }
+
+ public string GetLabel (int segment)
+ {
+ return this.segments[segment].Label;
+ }
+
+ public int SegmentCount
+ {
+ get => this.segments.Length;
+ set
+ {
+ this.segments = new SegmentItem[value];
+ }
+ }
+ }
+
internal class UnderlinedTabViewController<TViewModel> : NotifyingTabViewController<TViewModel> where TViewModel : NotifyingObject
{
- private NSStackView labelStack = new NSStackView () {
+ private NSStackView tabStack = new NSStackView () {
Spacing = 4f,
};
public override void NumberOfItemsChanged (NSTabView tabView)
{
base.NumberOfItemsChanged (tabView);
- var items = this.labelStack.Views.ToList ();
+ var items = this.tabStack.Views.ToList ();
foreach (var view in items) {
- this.labelStack.RemoveView (view);
+ this.tabStack.RemoveView (view);
}
var i = 0;
foreach (var item in TabViewItems) {
- this.labelStack.AddView (new UnderlinedTextField () {
- BackgroundColor = NSColor.Clear,
- Editable = false,
- Bezeled = false,
- StringValue = item.Label,
- Selected = i == SelectedTabViewItemIndex,
- }, NSStackViewGravity.Leading);
+ if (item.Image != null) {
+ this.tabStack.AddView (new UnderlinedImageView (item.Image.Name) {
+ Selected = i == SelectedTabViewItemIndex
+ }, NSStackViewGravity.Leading);
+ } else {
+ this.tabStack.AddView (new UnderlinedTextField () {
+ BackgroundColor = NSColor.Clear,
+ Editable = false,
+ Bezeled = false,
+ StringValue = item.Label,
+ Selected = i == SelectedTabViewItemIndex,
+ }, NSStackViewGravity.Leading);
+ }
i++;
}
}
public override void MouseDown (NSEvent theEvent)
{
- var hit = View.HitTest (View.Superview.ConvertPointFromView (theEvent.LocationInWindow, null));
- if (!(hit is UnderlinedTextField))
+ NSView hit = View.HitTest (View.Superview.ConvertPointFromView (theEvent.LocationInWindow, null));
+ if (!(hit is ISelectable))
return;
int i = 0;
- foreach (var label in labelStack.Views) {
+ foreach (var label in tabStack.Views) {
if (hit == label) {
SelectedTabViewItemIndex = i;
break;
@@ -48,10 +119,10 @@ namespace Xamarin.PropertyEditing.Mac
public override void DidSelect (NSTabView tabView, NSTabViewItem item)
{
base.DidSelect (tabView, item);
- for (int i = 0; i < this.labelStack.Views.Length; i++) {
- var underlined = this.labelStack.Views[i] as UnderlinedTextField;
- if (underlined != null)
- underlined.Selected = SelectedTabViewItemIndex == i;
+ for (int i = 0; i < this.tabStack.Views.Length; i++) {
+ var tabItem = this.tabStack.Views[i] as ISelectable;
+ if (tabItem != null)
+ tabItem.Selected = SelectedTabViewItemIndex == i;
}
}
@@ -59,11 +130,11 @@ namespace Xamarin.PropertyEditing.Mac
{
var stack = new NSStackView () {
Spacing = 0,
- Alignment = NSLayoutAttribute.Width,
+ Alignment = NSLayoutAttribute.Left,
Orientation = NSUserInterfaceLayoutOrientation.Vertical
};
- stack.AddView (this.labelStack, NSStackViewGravity.Leading);
+ stack.AddView (this.tabStack, NSStackViewGravity.Top);
stack.AddView (TabView, NSStackViewGravity.Bottom);
View = stack;
}