示例#1
0
        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;
		}