Show Contents / Index / Search

The SmartUx Controls

Let’s take a look at how to set up some SmartUx controls.

The SmartUx Button Control

Use the SmartUx button control to place buttons on your session screen. You can handle the ButtonClicked event to perform a variety of actions.

This sample creates a button that closes the Reflection Scratch Pad.

This code creates a button and sets it position, size, and label

ISmartButton button = sessionView.CreateSmartButton();

button.ButtonText = "Hide Notes";

button.StartColumn = 30;

button.StartRow = 5;

button.EndColumn = 50;

button.EndRow = 5;

//Create an event handler for the ButtonClicked event

button.ButtonClicked += new EventHandler(button_ButtonClicked);

'Handle the ButtonClicked event to hide the scratch pad.

static void button_ButtonClicked(object sender, EventArgs e)

{

   Application app = MyReflection.ActiveApplication;

   IFrame frame = (IFrame)app.GetObject("Frame");

   IView sessionView = frame.SelectedView;

   IIbmTerminal terminal = (IIbmTerminal)sessionView.Control;

   terminal.Productivity.ScratchPadPanelVisible = false;

}

If you don't want to display the button on the next screen, you'll need to remove it before or after the screen changes:

sessionView.RemoveSmartControl(calendar);

The SmartDropdown Control

The SmartDropDown control allows you to replace old-style numbered list options with a drop down list.

...

//Create the dropDown control

ISmartDropDown dropDown = view.CreateSmartDropDown();

dropDown.StartColumn = 25;

dropDown.StartRow = 10;

dropDown.EndColumn = 45;

dropDown.EndRow = 10;

dropDown.AddText("ISPF Options");

dropDown.AddText("Sales Reports");

dropDown.AddText("Schedules");

//Create an event handler for the ValueChanged event

dropDown.ValueChanged += new ValueChangedEventHandler(dropDown_ValueChanged);

In the ValueChanged event, we enter the commands for the selected item in the command field.

static void dropDown_ValueChanged(object sender, string value)

   ISmartDropDown listItem = (ISmartDropDown)sender;

   Application app = MyReflection.ActiveApplication;

   IFrame frame = (IFrame)app.GetObject("Frame");

   IView sessionView = frame.SelectedView;

   IIbmTerminal terminal = (IIbmTerminal)sessionView.Control;

   int selection = listItem.CurrentItemIndex;

      switch (selection)

      {

         case 0:

            terminal.Screen.PutText("ISPF", 23, 1);

            break;

         case 1:

            terminal.Screen.PutText("KAYAK", 23, 1);

            break;

         case 2:

            terminal.Screen.PutText("PROFS", 23, 1);

            break;

         default:

            terminal.Screen.PutText("ISPF", 23, 1);

            break;

      }

   terminal.Screen.SendControlKey(ControlKeyCode.Transmit);

}

Before the Transmit control key is sent, the dropBox decoration is removed from the view so that it doesn’t appear on the next screen.

sessionView.RemoveSmartControl(dropDown);

Note: If you don’t want to display a SmartUx control on the next screen, you’ll need to remove it before the screen changes.

The RequiredField and Border Controls

The Reflection API provides both RequiredField and Border SmartUx controls. The only difference is the red outline on the required field.

This code draws the required field:

ISmartRequiredField reqField = sessionView.CreateSmartRequiredField();

reqField.StartColumn = 2;

reqField.StartRow = 20;

reqField.EndColumn = 34;

reqField.EndRow = 21;

//Create an event handler for the Deactivated event that occurs when the cursor is moved

//from under the required field.

reqField.Deactivated += new EventHandler(reqField_Deactivated);

The Deactivated event is used to perform a simple validation when the tab position is moved from under the required field.

static void reqField_Deactivated(object sender, EventArgs e)

{

   Application app = MyReflection.ActiveApplication;

   IFrame frame = (IFrame)app.GetObject("Frame");

   IView sessionView = frame.SelectedView;

   IIbmTerminal terminal = (IIbmTerminal)sessionView.Control;

   if (terminal.Screen.GetFieldText(20,16).Trim().Length < 5){

      terminal.Screen.MoveCursorTo(20,16);

   }

}

Like other controls, the required field must be removed before the screen changes.

sessionView.RemoveSmartControl(reqField)

Add a date picker

The date picker control allows users to select dates from a calendar. The format that is displayed on the date picker and in the values sent to the value changed event is set with the DateMask property. (This property uses Microsoft .NET date and time specifiers.)

//Create the calendar

ISmartDatePicker calendar = sessionView.CreateSmartDatePicker();

//Set the position of the calendar

calendar.StartColumn = 20;

calendar.StartRow = 15;

calendar.EndColumn = 40;

calendar.EndRow = 15;

//Set the displayed value to the international date format

calendar.DateMask = "yyyy/MM/dd";

//Create an event handler for the ValueChanged event

calendar.ValueChanged += new ValueChangedEventHandler(calendar_ValueChanged);

//Add the calendar to the view

sessionView.AddSmartControl(calendar);

The value of the selected date is sent to the ValueChanged event.

static void calendar_ValueChanged(object sender, string value)

{

   Console.WriteLine(value);

}

Remove the calendar when the screen changes.

sessionView.RemoveSmartControl(calendar);