public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row) { var item = owner.capturesDataSource.items[(int)row]; var lbl = NSLinkLabel.CreateLabel(item.Text); lbl.BackgroundColor = item.Color.ToNSColor(); return(lbl); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row) { var lnk = NSLinkLabel.CreateLabel(owner.patternsDataSource.Items[(int)row]); lnk.LinkClicked = (sender, e) => { if (e.NativeEvent.ClickCount == 2) { owner.eventsHandler.OnSelectedAvailablePatternDoubleClicked(); } }; return(lnk); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row) { var ret = NSLinkLabel.CreateLabel(); ret.StringValue = owner.dataSource.items[(int)row]; ret.LinkClicked = (sender, e) => { if (e.NativeEvent.ClickCount >= 2) { owner.eventsHandler.OnControlDblClicked(); } }; return(ret); }
public override NSView GetView(NSOutlineView outlineView, NSTableColumn tableColumn, NSObject item) { var presentationItem = (item as Item)?.PresentationObject; var view = NSLinkLabel.CreateLabel(); view.LinkClicked = (sender, e) => { if (e.NativeEvent.ClickCount == 2) { owner.eventsHandler.OnEditClicked(); } }; view.StringValue = presentationItem?.Caption ?? ""; return(view); }
NSView GetView(NSTableColumn tableColumn, IViewItem sourceItem) { if (tableColumn == sourceCheckedColumn) { if (sourceItem.Checked == null) { return(null); } var cellIdentifier = "checked_cell"; var view = (NSButton)outlineView.MakeView(cellIdentifier, this); if (view == null) { view = new NSButton(); view.Identifier = cellIdentifier; view.SetButtonType(NSButtonType.Switch); view.BezelStyle = 0; view.ImagePosition = NSCellImagePosition.ImageOnly; view.Action = new ObjCRuntime.Selector("ItemChecked:"); } view.Target = new CheckTarget { item = sourceItem, viewModel = viewModel }; view.State = sourceItem.Checked.GetValueOrDefault(false) ? NSCellStateValue.On : NSCellStateValue.Off; return(view); } else if (tableColumn == sourceDescriptionColumn) { var cellIdentifier = "description_cell"; var view = (NSLinkLabel)outlineView.MakeView(cellIdentifier, this); if (view == null) { view = NSLinkLabel.CreateLabel(); view.Identifier = cellIdentifier; view.LinkClicked = (sender, e) => { if (e.NativeEvent.ClickCount == 2) { viewModel.OnEnterKeyPressed(); } }; } view.BackgroundColor = sourceItem.Color.isFailureColor ? sourceItem.Color.value.ToNSColor() : NSColor.Clear; view.StringValue = sourceItem.ToString(); view.Menu = outlineView.Menu; return(view); } else if (tableColumn == currentSourceColumn) { var cellIdentifier = "current_source_mark_cell"; var view = (NSCustomizableView)outlineView.MakeView(cellIdentifier, this); if (view == null) { view = new NSCustomizableView(); view.Identifier = cellIdentifier; } view.OnPaint = (ditryRect) => { var focusedItem = viewModel.FocusedMessageItem; if (focusedItem == null) { return; } if (!(focusedItem == sourceItem || focusedItem.Parent == sourceItem)) { return; } using (var g = new LJD.Graphics()) { var s = currentSourceImage.GetSize(height: 9); var r = view.Bounds; r = new CoreGraphics.CGRect((r.Left + r.Right - s.Width) / 2, (r.Top + r.Bottom - s.Height) / 2, s.Width, s.Height); g.DrawImage(currentSourceImage, r.ToRectangleF()); } }; return(view); } return(null); }
public static IDialogView CreateDialog( NSWindow parentWindow, IChangeNotification changeNotification, IDialogViewModel viewModel, IEnumerable <string> tags, string initiallyFocusedTag ) { var dlg = new TagsSelectionSheetController(parentWindow, viewModel); dlg.Window.GetHashCode(); int focusedRow = -1; foreach (var t in tags) { var b = new NSButton() { Title = t, State = NSCellStateValue.Off }; b.SetButtonType(NSButtonType.Switch); if (initiallyFocusedTag == t) { focusedRow = dlg.views.Count; } b.Action = new ObjCRuntime.Selector("OnTagChecked:"); b.Target = dlg; dlg.views.Add(b); } dlg.table.Delegate = new Delegate() { owner = dlg }; dlg.table.DataSource = new DataSource() { owner = dlg }; if (focusedRow >= 0) { dlg.table.SelectRow(focusedRow, byExtendingSelection: false); dlg.table.ScrollRowToVisible(focusedRow); } dlg.linkLabel.StringValue = "select: all none"; dlg.linkLabel.Links = new [] { new NSLinkLabel.Link(8, 3, ""), new NSLinkLabel.Link(14, 4, null), }; dlg.formulaTextView.Delegate = new TextViewDelegate() { view = dlg.formulaTextView, viewModel = viewModel, changeNotification = changeNotification }; dlg.linkLabel.LinkClicked = (s, e) => { if (e.Link.Tag != null) { viewModel.OnUseAllClicked(); } else { viewModel.OnUnuseAllClicked(); } }; var updateCheckboxes = Updaters.Create( () => viewModel.SelectedTags, () => viewModel.IsEditingFormula, (selected, editing) => { dlg.views.ForEach(b => { b.State = selected.Contains(b.Title) ? NSCellStateValue.On : NSCellStateValue.Off; b.Enabled = !editing; }); } ); NSColor getLinkColor(MessageSeverity sev) => sev == MessageSeverity.Error ? NSColor.Red : sev == MessageSeverity.Warning ? NSColor.Orange : NSColor.Text; var updateFormula = Updaters.Create( () => viewModel.Formula, () => viewModel.IsEditingFormula, () => viewModel.FormulaStatus, (formula, editing, status) => { if (dlg.formulaTextView.Value != formula) { dlg.formulaTextView.Value = formula; } dlg.formulaTextView.Editable = editing; dlg.formulaTextView.BackgroundColor = editing ? NSColor.TextBackground : NSColor.ControlBackground; dlg.formulaTextView.TextColor = editing ? NSColor.Text : NSColor.PlaceholderTextColor; dlg.linkLabel.IsEnabled = !editing; dlg.okButton.Enabled = !editing; dlg.formulaEditLinkLabel.StringValue = editing ? "done" : "edit"; var(statusText, statusSeverity) = status; dlg.formulaLinkLabel.SetAttributedContents(statusText); dlg.formulaEditLinkLabel.IsEnabled = statusSeverity != MessageSeverity.Error; dlg.formulaLinkLabel.TextColor = getLinkColor(statusSeverity); } ); var formulaFocusSideEffect = Updaters.Create( () => viewModel.IsEditingFormula, editing => { if (editing) { dlg.Window.MakeFirstResponder(dlg.formulaTextView); } } ); var updateSuggestions = Updaters.Create( () => viewModel.FormulaSuggesions, value => { var(list, selectedItem) = value; dlg.suggestionsContainer.Hidden = list.IsEmpty; dlg.suggestionsLabel.Hidden = list.IsEmpty; dlg.suggestionsView.Subviews.ToList().ForEach(v => v.RemoveFromSuperview()); var itemHeight = 17; nfloat maxRight = 0; var views = list.Select((str, idx) => { var lbl = NSLinkLabel.CreateLabel(str); lbl.BackgroundColor = idx == selectedItem ? NSColor.SelectedTextBackground : NSColor.Clear; lbl.TextColor = idx == selectedItem ? NSColor.SelectedText : NSColor.Text; lbl.LinkClicked = (s, e) => viewModel.OnSuggestionClicked(idx); lbl.SetFrameOrigin(new CoreGraphics.CGPoint(5, idx * itemHeight)); lbl.SetFrameSize(lbl.IntrinsicContentSize); return(lbl); }).ToList(); foreach (var subView in views) { dlg.suggestionsView.AddSubview(subView); maxRight = (nfloat)Math.Max(maxRight, subView.Frame.Right); } dlg.suggestionsView.SetFrameSize(new CoreGraphics.CGSize(maxRight, list.Length * itemHeight)); if (selectedItem != null) { dlg.suggestionsView.ScrollRectToVisible(views[selectedItem.Value].Frame); } } ); var listStatusUpdater = Updaters.Create( () => viewModel.TagsListStatus, (status) => { var(statusText, statusSeverity) = status; dlg.tagsStatusLinkLabel.SetAttributedContents(statusText); dlg.tagsStatusLinkLabel.TextColor = getLinkColor(statusSeverity); } ); dlg.subscription = changeNotification.CreateSubscription(() => { updateCheckboxes(); updateFormula(); formulaFocusSideEffect(); updateSuggestions(); listStatusUpdater(); }, initiallyActive: false); dlg.formulaEditLinkLabel.LinkClicked = (sender, e) => { if (viewModel.IsEditingFormula) { viewModel.OnStopEditingFormulaClicked(); } else { viewModel.OnEditFormulaClicked(); } }; dlg.formulaLinkLabel.LinkClicked = (sender, e) => viewModel.OnFormulaLinkClicked(e.Link.Tag as string); dlg.tagsStatusLinkLabel.LinkClicked = (sender, e) => viewModel.OnTagsStatusLinkClicked(e.Link.Tag as string); return(dlg); }