public SelectEncodingPanel() : base() { var size = new SizeF(600, 400); float padding = 12; this.SetContentSize(size); var view = new NSView(new RectangleF(0, 0, size.Width, size.Height)); var okButton = new NSButton() { Title = GettextCatalog.GetString("OK"), Bordered = true, BezelStyle = NSBezelStyle.Rounded, }; okButton.SetButtonType(NSButtonType.MomentaryPushIn); okButton.Activated += delegate { Dismiss(1); }; this.DefaultButtonCell = okButton.Cell; var cancelButton = new NSButton() { Title = GettextCatalog.GetString("Cancel"), Bordered = true, BezelStyle = NSBezelStyle.Rounded, }; cancelButton.Activated += delegate { Dismiss(0); }; var buttonBox = new MDBox(LayoutDirection.Horizontal, padding, 0) { new MDAlignment(cancelButton, true) { MinWidth = 96, MinHeight = 32 }, new MDAlignment(okButton, true) { MinWidth = 96, MinHeight = 32 }, }; buttonBox.Layout(); var buttonView = buttonBox.View; var buttonRect = buttonView.Frame; buttonRect.Y = 12; buttonRect.X = size.Width - buttonRect.Width - padding; buttonView.Frame = buttonRect; view.AddSubview(buttonView); float buttonAreaTop = buttonRect.Height + padding * 2; var label = CreateLabel(GettextCatalog.GetString("Available encodings:")); var labelSize = label.Frame.Size; float labelBottom = size.Height - 12 - labelSize.Height; label.Frame = new RectangleF(12, labelBottom, labelSize.Width, labelSize.Height); view.AddSubview(label); var moveButtonWidth = 32; var tableHeight = labelBottom - buttonAreaTop - padding; var tableWidth = size.Width / 2 - padding * 3 - moveButtonWidth + padding / 2; allTable = new NSTableView(new RectangleF(padding, buttonAreaTop, tableWidth, tableHeight)); allTable.HeaderView = null; var allScroll = new NSScrollView(allTable.Frame) { BorderType = NSBorderType.BezelBorder, AutohidesScrollers = true, HasVerticalScroller = true, DocumentView = allTable, }; view.AddSubview(allScroll); float center = (size.Width + padding) / 2; var selectedLabel = CreateLabel(GettextCatalog.GetString("Encodings shown in menu:")); var selectedLabelSize = selectedLabel.Frame.Size; selectedLabel.Frame = new RectangleF(center, labelBottom, selectedLabelSize.Width, selectedLabelSize.Height); view.AddSubview(selectedLabel); selectedTable = new NSTableView(new RectangleF(center, buttonAreaTop, tableWidth, tableHeight)); selectedTable.HeaderView = null; var selectedScroll = new NSScrollView(selectedTable.Frame) { BorderType = NSBorderType.BezelBorder, AutohidesScrollers = true, HasVerticalScroller = true, DocumentView = selectedTable, }; view.AddSubview(selectedScroll); float buttonLevel = tableHeight / 2 + buttonAreaTop; var goRightImage = NSImage.ImageNamed("NSGoRightTemplate"); addButton = new NSButton( new RectangleF(tableWidth + padding * 2, buttonLevel + padding / 2, moveButtonWidth, moveButtonWidth)) { //Title = "\u2192", BezelStyle = NSBezelStyle.SmallSquare, Image = goRightImage }; addButton.Activated += Add; view.AddSubview(addButton); removeButton = new NSButton( new RectangleF(tableWidth + padding * 2, buttonLevel - padding / 2 - moveButtonWidth, moveButtonWidth, moveButtonWidth)) { //Title = "\u2190", BezelStyle = NSBezelStyle.SmallSquare, Image = NSImage.ImageNamed("NSGoLeftTemplate"), }; removeButton.Activated += Remove; view.AddSubview(removeButton); upButton = new NSButton( new RectangleF(center + tableWidth + padding, buttonLevel + padding / 2, moveButtonWidth, moveButtonWidth)) { //Title = "\u2191", BezelStyle = NSBezelStyle.SmallSquare, Image = MakeRotatedCopy(goRightImage, 90), }; upButton.Activated += MoveUp; view.AddSubview(upButton); downButton = new NSButton( new RectangleF(center + tableWidth + padding, buttonLevel - padding / 2 - moveButtonWidth, moveButtonWidth, moveButtonWidth)) { //Title = "\u2193", BezelStyle = NSBezelStyle.SmallSquare, Image = MakeRotatedCopy(goRightImage, -90), }; downButton.Activated += MoveDown; view.AddSubview(downButton); var allColumn = new NSTableColumn() { DataCell = new NSTextFieldCell() { Wraps = true }, Width = tableWidth }; allTable.AddColumn(allColumn); allTable.DataSource = allSource = new EncodingSource(TextEncoding.SupportedEncodings); allTable.Delegate = new EncodingAllDelegate(this); var selectedColumn = new NSTableColumn() { DataCell = new NSTextFieldCell() { Wraps = true }, Width = tableWidth }; selectedTable.AddColumn(selectedColumn); selectedTable.DataSource = selectedSource = new EncodingSource(TextEncoding.ConversionEncodings); selectedTable.Delegate = new EncodingSelectedDelegate(this); UpdateButtons(); this.ContentView = view; }
public SelectEncodingPanel () : base () { var size = new SizeF (600, 400); float padding = 12; this.SetContentSize (size); var view = new NSView (new RectangleF (0, 0, size.Width, size.Height)); var okButton = new NSButton () { Title = GettextCatalog.GetString ("OK"), Bordered = true, BezelStyle = NSBezelStyle.Rounded, }; okButton.SetButtonType (NSButtonType.MomentaryPushIn); okButton.Activated += delegate { Dismiss (1); }; this.DefaultButtonCell = okButton.Cell; var cancelButton = new NSButton () { Title = GettextCatalog.GetString ("Cancel"), Bordered = true, BezelStyle = NSBezelStyle.Rounded, }; cancelButton.Activated += delegate { Dismiss (0); }; var buttonBox = new MDBox (LayoutDirection.Horizontal, padding, 0) { new MDAlignment (cancelButton, true) { MinWidth = 96, MinHeight = 32 }, new MDAlignment (okButton, true) { MinWidth = 96, MinHeight = 32 }, }; buttonBox.Layout (); var buttonView = buttonBox.View; var buttonRect = buttonView.Frame; buttonRect.Y = 12; buttonRect.X = size.Width - buttonRect.Width - padding; buttonView.Frame = buttonRect; view.AddSubview (buttonView); float buttonAreaTop = buttonRect.Height + padding * 2; var label = CreateLabel (GettextCatalog.GetString ("Available encodings:")); var labelSize = label.Frame.Size; float labelBottom = size.Height - 12 - labelSize.Height; label.Frame = new RectangleF (12, labelBottom, labelSize.Width, labelSize.Height); view.AddSubview (label); var moveButtonWidth = 32; var tableHeight = labelBottom - buttonAreaTop - padding; var tableWidth = size.Width / 2 - padding * 3 - moveButtonWidth + padding / 2; allTable = new NSTableView (new RectangleF (padding, buttonAreaTop, tableWidth, tableHeight)); allTable.HeaderView = null; var allScroll = new NSScrollView (allTable.Frame) { BorderType = NSBorderType.BezelBorder, AutohidesScrollers = true, HasVerticalScroller = true, DocumentView = allTable, }; view.AddSubview (allScroll); float center = (size.Width + padding) / 2; var selectedLabel = CreateLabel (GettextCatalog.GetString ("Encodings shown in menu:")); var selectedLabelSize = selectedLabel.Frame.Size; selectedLabel.Frame = new RectangleF (center, labelBottom, selectedLabelSize.Width, selectedLabelSize.Height); view.AddSubview (selectedLabel); selectedTable = new NSTableView (new RectangleF (center, buttonAreaTop, tableWidth, tableHeight)); selectedTable.HeaderView = null; var selectedScroll = new NSScrollView (selectedTable.Frame) { BorderType = NSBorderType.BezelBorder, AutohidesScrollers = true, HasVerticalScroller = true, DocumentView = selectedTable, }; view.AddSubview (selectedScroll); float buttonLevel = tableHeight / 2 + buttonAreaTop; var goRightImage = NSImage.ImageNamed ("NSGoRightTemplate"); addButton = new NSButton ( new RectangleF (tableWidth + padding * 2, buttonLevel + padding / 2, moveButtonWidth, moveButtonWidth)) { //Title = "\u2192", BezelStyle = NSBezelStyle.SmallSquare, Image = goRightImage }; addButton.Activated += Add; view.AddSubview (addButton); removeButton = new NSButton ( new RectangleF (tableWidth + padding * 2, buttonLevel - padding / 2 - moveButtonWidth, moveButtonWidth, moveButtonWidth)) { //Title = "\u2190", BezelStyle = NSBezelStyle.SmallSquare, Image = NSImage.ImageNamed ("NSGoLeftTemplate"), }; removeButton.Activated += Remove; view.AddSubview (removeButton); upButton = new NSButton ( new RectangleF (center + tableWidth + padding, buttonLevel + padding / 2, moveButtonWidth, moveButtonWidth)) { //Title = "\u2191", BezelStyle = NSBezelStyle.SmallSquare, Image = MakeRotatedCopy (goRightImage, 90), }; upButton.Activated += MoveUp; view.AddSubview (upButton); downButton = new NSButton ( new RectangleF (center + tableWidth + padding, buttonLevel - padding / 2 - moveButtonWidth, moveButtonWidth, moveButtonWidth)) { //Title = "\u2193", BezelStyle = NSBezelStyle.SmallSquare, Image = MakeRotatedCopy (goRightImage, -90), }; downButton.Activated += MoveDown; view.AddSubview (downButton); var allColumn = new NSTableColumn () { DataCell = new NSTextFieldCell () { Wraps = true }, Width = tableWidth }; allTable.AddColumn (allColumn); allTable.DataSource = allSource = new EncodingSource (TextEncoding.SupportedEncodings); allTable.Delegate = new EncodingAllDelegate (this); var selectedColumn = new NSTableColumn () { DataCell = new NSTextFieldCell () { Wraps = true }, Width = tableWidth }; selectedTable.AddColumn (selectedColumn); selectedTable.DataSource = selectedSource = new EncodingSource (TextEncoding.ConversionEncodings); selectedTable.Delegate = new EncodingSelectedDelegate (this); UpdateButtons (); this.ContentView = view; }