Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sender"></param>
        /// <param name="evtArgs"></param>
        internal override void handleEvent(EventType type, Object sender, EventArgs evtArgs)
        {
            MapData mapData = ControlsMap.getInstance().getMapData(sender);

            if (mapData == null)
            {
                return;
            }

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(mapData.getControl()));

            try
            {
                switch (type)
                {
                case EventType.RESIZE:
                    GuiUtils.setBackgroundImage((Control)sender);
                    break;

                case EventType.MOUSE_WHEEL:
                case EventType.MOUSE_DOWN:
                case EventType.MOUSE_UP:
                case EventType.MOUSE_DBLCLICK:
                    //case EventType.KeyDown:
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }

            DefaultHandler.getInstance().handleEvent(type, sender, evtArgs);
        }
Exemple #2
0
        /// <summary>
        /// Methods for various commands are called synchronously here
        /// </summary>
        internal void Run()
        {
            GuiCommandQueue.getInstance().Run();

            var contextIDGuard = new Manager.ContextIDGuard(_contextID);

            try
            {
                switch (_commandType)
                {
                case CommandType.PRINTPREVIEW_SET_CURSOR:
                    onSetCursor();
                    break;

                case CommandType.PRINTPREVIEW_START:
                    onStart();
                    break;

                case CommandType.PRINTPREVIEW_UPDATE:
                    onUpdate();
                    break;

                case CommandType.CREATE_RICH_WINDOW:
                    onCreateRichWindow();
                    break;

                case CommandType.PRINTPREVIEW_CLOSE:
                    onClose();
                    break;

                case CommandType.PRINTPREVIEW_GETACTIVEFORM:
                    onGetActiveForm();
                    break;

                case CommandType.CREATE_WINDOW:
                    onCreateWindow();
                    break;

                case CommandType.DESTROY_WINDOW:
                    onDestroyWindow();
                    break;

                case CommandType.PRINTPREVIEW_SHOW:
                    onShow();
                    break;

                case CommandType.SHOW_PRINT_DIALOG:
                    onShowPrintDialog();
                    break;

                case CommandType.ACTIVATE_PRINT_PREVIEW:
                    OnActivatePrintPreview();
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose(); // Reset the current contextID.
            }
        }
Exemple #3
0
        /// <summary>this is an entry point for all objects handlers</summary>
        /// <param name="objectHashCode"> hash code of the object</param>
        /// <param name="eventName"> event name</param>
        /// <param name="parameters">event parameters</param>
        /// <returns></returns>
        public static void handleDotNetEvent(int objectHashCode, String eventName, Object[] parameters)
        {
            Object       invokedObject     = DNManager.getInstance().DNObjectEventsCollection.getObject(objectHashCode);
            GuiMgControl mgControl         = null;
            bool         raiseRuntimeEvent = true;

            Manager.ContextIDGuard contextIDGuard = null;

            // If Object is a control and it is 'our' control (not created dynamically, decided by .Tag)
            if (invokedObject is Control && ((Control)invokedObject).Tag != null)
            {
                ControlsMap controlsMap = ControlsMap.getInstance();
                MapData     mapData     = controlsMap.getControlMapData((Control)invokedObject);
                if (mapData == null)
                {
                    return;
                }

                mgControl = mapData.getControl();

                contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(mgControl));
                //first execute default magic handling of event
                EventType type = DNControlEvents.getStandardEvent(eventName);
                if (type != EventType.NONE && parameters.Length == 2)
                {
                    DefaultHandler.getInstance().handleEvent(type, invokedObject, (EventArgs)parameters[1]);
                }

                if (eventName == "KeyDown") //QCR #736734 KeyDown is handled from Filter.cs on WM_KEYDOWN - do not duplicate the event
                {
                    raiseRuntimeEvent = false;
                }
                else if (eventName == "Disposed")
                {
                    // a Disposed event for a control can't be handled as a runtime-event after the task/form are closed
                    raiseRuntimeEvent = false;
                }
                else
                {
                    // raise .NET runtime event only if hooked from the application (i.e. have a handler in the task)
                    List <String> applicationHookedDNeventsNames = ((TagData)((Control)invokedObject).Tag).ApplicationHookedDNeventsNames;
                    if (applicationHookedDNeventsNames == null || !applicationHookedDNeventsNames.Contains(eventName))
                    {
                        raiseRuntimeEvent = false;
                    }
                }
            }

            // raise .NET event
            if (raiseRuntimeEvent)
            {
                Events.OnDotNetEvent(invokedObject, mgControl, eventName, parameters);
            }

            if (contextIDGuard != null)
            {
                contextIDGuard.Dispose();
            }
        }
Exemple #4
0
        /// <summary>handle dotnet event of .NET control</summary>
        /// <param name="eventName"></param>
        /// <param name="sender"></param>
        /// <param name="eventArgs"></param>
        /// <param name="mapData"></param>
        internal void handleEvent(String eventName, object sender, EventArgs eventArgs, MapData mapData)
        {
            GuiMgControl mgControl = null;

            if (mapData != null)
            {
                mgControl = mapData.getControl();
            }

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(mgControl));

            Events.OnDotNetEvent(sender, mgControl, eventName, new Object[] { sender, eventArgs });
            contextIDGuard.Dispose();
        }
Exemple #5
0
        /// <summary>
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            ControlsMap  controlsMap = ControlsMap.getInstance();
            MgWebBrowser webBroswer  = (MgWebBrowser)sender;

            MapData mapData = controlsMap.getMapData(webBroswer);

            if (mapData == null)
            {
                return;
            }

            GuiMgControl guiMgCtrl      = mapData.getControl();
            var          contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(guiMgCtrl));

            try
            {
                switch (type)
                {
                case EventType.GOT_FOCUS:
                    Events.OnFocus(guiMgCtrl, 0, false, false);
                    return;

                case EventType.DISPOSED:
                    break;

#if !PocketPC
                case EventType.STATUS_TEXT_CHANGED:
                    String statusText         = webBroswer.StatusText.Trim();
                    String previousStatusText = ((TagData)webBroswer.Tag).BrowserControlStatusText;
                    if (statusText.Length > 0 && !statusText.Equals(previousStatusText))
                    {
                        ((TagData)webBroswer.Tag).BrowserControlStatusText = statusText;
                        Events.OnBrowserStatusTxtChange(guiMgCtrl, statusText);
                    }
                    break;
#endif

                case EventType.EXTERNAL_EVENT:
                    ExternalEventArgs args = (ExternalEventArgs)e;
                    Events.OnBrowserExternalEvent(guiMgCtrl, args.Param);
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }
            DefaultHandler.getInstance().handleEvent(type, sender, e);
        }
Exemple #6
0
        /// <summary> </summary>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            ControlsMap controlsMap = ControlsMap.getInstance();
            Control     ctrl        = (Control)sender;
            MapData     mapData     = controlsMap.getMapData(ctrl);

            if (mapData == null)
            {
                return;
            }

            GuiMgControl guiMgControl  = mapData.getControl();
            bool         isButton      = (ctrl is MgButtonBase);
            bool         isImageButton = (ctrl is MgImageButton);
            bool         isCheckBox    = (ctrl is MgCheckBox);

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(guiMgControl));

            try
            {
                switch (type)
                {
                case EventType.MOUSE_LEAVE:
                    if (isImageButton && ((MgImageButton)ctrl).Supports6Images())
                    {
                        ((TagData)(ctrl).Tag).OnHovering = false;
                        GuiUtils.RefreshButtonImage(ctrl);
                    }
                    break;

                case EventType.MOUSE_ENTER:
                    if (isImageButton && ((MgImageButton)ctrl).Supports6Images())
                    {
                        ((TagData)(ctrl).Tag).OnHovering = true;
                        GuiUtils.RefreshButtonImage(ctrl);
                    }
                    break;

                case EventType.CLICK:
                    if (isButton)
                    {
                        bool isClick = false;

                        // if it is not click (onMouseDown) and lastparked ctrl is not equal to button, then
                        // it has come through accelerators and accelerators should be considered as click
                        if (((TagData)ctrl.Tag).OnMouseDown)
                        {
                            isClick = true;
                        }

                        String controlName = guiMgControl == null ? "" : guiMgControl.Name;
                        Events.SaveLastClickedCtrlName(guiMgControl, controlName);

                        Events.OnSelection(GuiUtils.getValue(ctrl), guiMgControl, mapData.getIdx(), isClick);
                        GuiUtils.SetOnClickOnTagData(ctrl, false);
                        GuiUtils.RefreshButtonImage(ctrl);
                    }
                    return;

                case EventType.MOUSE_DOWN:
                    bool mouseDown = (isButton ? ((MouseEventArgs)e).Button == MouseButtons.Left : true);
                    GuiUtils.SetOnClickOnTagData(ctrl, mouseDown);
                    if (isImageButton)
                    {
                        GuiUtils.RefreshButtonImage(ctrl);
                    }
                    if (isButton || isCheckBox)
                    {
                        MouseEventArgs mouseEvtArgs = (MouseEventArgs)e;
                        GuiUtils.SaveLastClickInfo(mapData, (Control)sender, new Point(mouseEvtArgs.X, mouseEvtArgs.Y));
#if !PocketPC
                        // In mouse down event, we initiate drag and since we are returning from here,
                        // we need to handle it here itself as it won't call defaulthandler.handleEvent.
                        if (((MouseEventArgs)e).Button == MouseButtons.Left)
                        {
                            GuiUtils.AssessDrag(ctrl, (MouseEventArgs)e, mapData);
                        }
#endif
                        return;
                    }
                    break;

                case EventType.KEY_PRESS:
                    /*For CheckBox and Button, Space bar key should be ignored as it is handled thr' selection event.*/
                    if (Char.IsWhiteSpace(((KeyPressEventArgs)e).KeyChar))
                    {
                        return;
                    }
                    break;

                case EventType.LOST_FOCUS:
                    if (isButton)
                    {
                        GuiUtils.SetOnClickOnTagData(ctrl, false);
                        GuiUtils.RefreshButtonImage(ctrl);

                        //fixed bug #:252654, .NET display the control and hot Track in spite of it's not,
                        //            when focus is lost update the UIIState by set UISF_HIDEFOCUS
                        //            the same fixed was done in online for check box in
                        UpdateUIstate(ctrl, true);
                    }
                    return;

                case EventType.GOT_FOCUS:
                    GuiUtils.SetOnClickOnTagData(ctrl, false);
                    if (isButton)
                    {
                        GuiUtils.RefreshButtonImage(ctrl);

                        //fixed bug #:252654, .NET display the control and hot Track in spite of it's not,
                        //            when focus is got update the UIIState by clear the UISF_HIDEFOCUS
                        //            the same fixed was done in online for check box in
                        UpdateUIstate(ctrl, false);
                    }
                    if (isButton || isCheckBox)
                    {
                        return;
                    }
                    else
                    {
                        break;
                    }

                case EventType.MOUSE_UP:
                    GuiUtils.SetOnClickOnTagData(ctrl, false);
                    if (isImageButton)
                    {
                        GuiUtils.RefreshButtonImage(ctrl);
                    }

#if !PocketPC
                    // Reset drag information, since we are returning from here.
                    GuiUtils.ResetDragInfo(ctrl);
#endif
                    return;

                case EventType.RESIZE:
                    if (isImageButton)
                    {
                        GuiUtils.RefreshButtonImage(ctrl);
                    }
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }

            DefaultHandler.getInstance().handleEvent(type, sender, e);
        }
Exemple #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            MapData mapData = ControlsMap.getInstance().getMapData(sender);

            if (mapData == null)
            {
                return;
            }

            Object guiMgObject = mapData.getControl();

            if (guiMgObject == null)
            {
                guiMgObject = mapData.getForm();
            }
            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(guiMgObject));

            try
            {
                switch (type)
                {
#if !PocketPC
                case EventType.SCROLL:
                {
                    if (sender is ScrollableControl)
                    {
                        ScrollableControl scrollableControl = sender as ScrollableControl;
                        TagData           tg = (TagData)scrollableControl.Tag;
                        if (scrollableControl.BackgroundImage != null)
                        {
                            scrollableControl.Invalidate();
                        }
                        else
                        {
                            //This is a.Net bug. When scrollbar gets hidden during the process of thumb drag, framework still keeps
                            //a rectangular bar visible to keep dragging on. Now, this rectangle is not removed even when the scrolling is stopped.
                            //The workaround is to repaint the form if scrollbar is not present on the form when scroll dragging is stopped.

                            ScrollEventArgs se = (ScrollEventArgs)e;
                            if (se.Type == ScrollEventType.ThumbPosition)
                            {
                                bool hasVerticalScrollBar = scrollableControl.AutoScrollMinSize.Height > scrollableControl.ClientSize.Height;

                                if (!hasVerticalScrollBar)
                                {
                                    scrollableControl.Invalidate();
                                }
                            }
                        }
                    }
                }
                break;
#endif
                case EventType.RESIZE:
                    onResize((Control)sender);
                    break;
                }
                DefaultContainerHandler.getInstance().handleEvent(type, sender, e);

#if PocketPC
                // paint the subform's border. Do it after the controls are painted, so we can paint over them.
                if (type == EventType.PAINT && ((MgPanel)sender).BorderStyle != BorderStyle.None)
                {
                    BorderRenderer.PaintBorder(((PaintEventArgs)e).Graphics, ((Control)sender).ClientRectangle,
                                               Color.Black, ControlStyle.Windows, false);
                }
#endif
            }
            finally
            {
                contextIDGuard.Dispose();
            }
        }
Exemple #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            ControlsMap controlsMap = ControlsMap.getInstance();
            MgComboBox  comboBox    = (MgComboBox)sender;
            MapData     mapData     = controlsMap.getMapData(comboBox);

            if (mapData == null)
            {
                return;
            }

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(mapData.getControl()));

            try
            {
                switch (type)
                {
                case EventType.RESIZE:
                    GuiMgControl mgControl = mapData.getControl();
                    if (mgControl.IsTableHeaderChild)
                    {
                        comboBox.Invalidate();
                    }
                    break;

                case EventType.MOUSE_DOWN:
                    ((TagData)comboBox.Tag).HandleOnDropDownClosed = false;

                    GuiUtils.saveFocusingControl(GuiUtils.FindForm(comboBox), mapData);
                    DefaultHandler.getInstance().handleEvent(type, sender, e);

                    // QCR #713073 Process drop down only for left mouse click. right click opens the context menu.
                    if (((MouseEventArgs)e).Button == MouseButtons.Left)
                    {
#if !PocketPC
                        // In mouse down event, we initiate drag and since we are returning from here,
                        // we need to handle it here itself as it won't call defaulthandler.handleEvent.
                        GuiUtils.AssessDrag((Control)sender, (MouseEventArgs)e, mapData);
#endif

                        // QCR #927727, this will prevent openning combo for non parkable conrols
                        Events.OnComboDroppingDown(mapData.getControl(), mapData.getIdx());
                    }
                    return;

                case EventType.DROP_DOWN:
                    // when the drop down is open reset the member
                    ((TagData)comboBox.Tag).ClickOnComboDropDownList = false;
                    break;

                case EventType.DROP_DOWN_CLOSED:
                    OnDropDownClosed(comboBox, e);
                    break;

                case EventType.KEY_DOWN:
                    if (OnkeyDown(sender, e))
                    {
                        return;
                    }
                    break;

                case EventType.SELECTED_INDEX_CHANGED:
                    ((TagData)comboBox.Tag).HandleOnDropDownClosed = false;
                    TagData tg = ((TagData)comboBox.Tag);
                    tg.IgnoreTwiceClickWhenToValueIs = GuiUtils.getValue(comboBox);
                    //fixed bug #:782615, when type char, we get click_index_change in spite of the index isn't changed.
                    //                    ignore when the value isn't real changed
                    //While creating combo control, if you try to select the option from combo using key,
                    //ListControlOriginalValue is not initialized yet. So, return.
                    if (tg.ListControlOriginalValue == null || tg.ListControlOriginalValue.Equals(tg.IgnoreTwiceClickWhenToValueIs))
                    {
                        return;
                    }

                    //we must this fixed for bug #:768284, we get twice before the GuiCommandQueue.setselection(comboBox) was called.
                    //                                     so the value on tg.ComboBoxOriginalValue isn't updated yet.
                    if (tg.IgnoreTwiceClick)
                    {
                        if (tg.IgnoreTwiceClickWhenToValueIs == tg.IgnoreTwiceClickWhenFromValueIs)
                        {
                            tg.IgnoreTwiceClickWhenFromValueIs = tg.IgnoreTwiceClickWhenToValueIs;
                            tg.IgnoreTwiceClick = false;
                            return;
                        }
                        else
                        {
                            tg.IgnoreTwiceClickWhenFromValueIs = tg.IgnoreTwiceClickWhenToValueIs;
                        }
                    }
                    break;

                case EventType.PRESS:
                    // save current control as last focused control
                    if (!comboBox.Focused)
                    {
                        GuiUtils.saveFocusingControl(GuiUtils.FindForm(comboBox), mapData);
                    }
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }

            DefaultHandler.getInstance().handleEvent(type, sender, e);
        }
Exemple #9
0
        /// <summary> </summary>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            TableColumn column        = (TableColumn)sender;
            TagData     td            = (TagData)column.Tag;
            LgColumn    columnManager = td.ColumnManager;
            int         direction     = -1;
            String      columnHeaderString;

            if (columnManager == null)
            {
                return;
            }

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(columnManager.GuiMgControl));

            try
            {
                switch (type)
                {
                case EventType.AFTER_COLUMN_TRACK:
                    columnManager.updateWidth();
                    break;

                case EventType.COLUMN_CLICK:
                    direction = columnManager.getSortDirection();

                    //As event is raise by click action, then the argument for the event will be
                    //column title if its not null else it will be in form of Column:XXX
                    //XXX - column number
                    columnHeaderString = (!String.IsNullOrEmpty(column.Text)
                                          ? column.Text
                                          : "Column: " + (columnManager.MgColumnIdx + 1));

                    Events.OnColumnClick(columnManager.GuiMgControl, direction, columnHeaderString);
                    break;

                case EventType.COLUMN_FILTER_CLICK:
                    columnHeaderString = (!String.IsNullOrEmpty(column.Text)
                        ? column.Text
                        : "Column: " + (columnManager.MgColumnIdx + 1));
                    int index = column.Index;

                    //Calculate column top left point
                    Header columnHeader = ((HeaderSectionEventArgs)e).Item.Header;
                    Panel  panel        = GuiUtils.getParentPanel(columnHeader.Parent);
                    Point  panelStart   = panel.PointToScreen(new Point());
                    panelStart.Offset(panel.AutoScrollPosition);
                    Point columnStart = columnHeader.PointToScreen(new Point(columnHeader.GetHeaderSectionStartPos(((HeaderSectionEventArgs)e).Item.Index), 0));

                    int x      = columnStart.X - panelStart.X;
                    int y      = columnStart.Y - panelStart.Y;
                    int width  = ((HeaderSectionEventArgs)e).Item.Width;
                    int height = ((HeaderSectionEventArgs)e).Item.Header.Height;

                    Events.OnColumnFilter(columnManager.GuiMgControl, columnHeaderString, x, y, width, height);
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }
        }
Exemple #10
0
        /// <summary> </summary>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            ControlsMap  controlsMap  = ControlsMap.getInstance();
            Control      control      = (Control)sender;
            RadioButton  radioButton  = (RadioButton)sender;
            MgRadioPanel mgRadioPanel = (MgRadioPanel)radioButton.Parent;
            MapData      mapData      = controlsMap.getMapData(mgRadioPanel);

            if (mapData == null)
            {
                return;
            }

            GuiMgControl guiMgControl        = mapData.getControl();
            Type         senderType          = sender.GetType();
            bool         leftClickWasPressed = false;

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(guiMgControl));

            try
            {
                switch (type)
                {
                case EventType.MOUSE_DOWN:
                    //fixed bug #435168 , saveing the widget that we made MouseDown on the comosite control
                    ((TagData)mgRadioPanel.Tag).MouseDownOnControl = radioButton;
                    GuiUtils.checkAndCloseTreeEditorOnClick(control);
                    MouseEventArgs mouseEvtArgs = (MouseEventArgs)e;
                    GuiUtils.SaveLastClickInfo(mapData, (Control)sender, new Point(mouseEvtArgs.X, mouseEvtArgs.Y));
#if !PocketPC //tmp
                    GuiUtils.setTooltip(control, "");
#endif
                    String Value = GuiUtils.GetRadioButtonIndex(radioButton);
                    GuiUtils.setSuggestedValueOfChoiceControlOnTagData(mgRadioPanel, Value);
                    Events.OnSelection(Value, guiMgControl, mapData.getIdx(), true);
                    //the right click isn't move the focus to the control, only on left click.
                    leftClickWasPressed = (((MouseEventArgs)e).Button == MouseButtons.Left);

                    if (leftClickWasPressed)
                    {
                        Events.OnMouseDown(null, guiMgControl, null, leftClickWasPressed, mapData.getIdx(), false, true);
#if !PocketPC
                        GuiUtils.AssessDrag(control, (MouseEventArgs)e, mapData);
#endif
                    }
                    else
                    {
                        control.Focus();
                    }
                    return;

                case EventType.KEY_DOWN:
                    ((TagData)mgRadioPanel.Tag).MouseDownOnControl = null;
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }

            DefaultHandler.getInstance().handleEvent(type, sender, e, mapData);
        }
Exemple #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            ControlsMap controlsMap = ControlsMap.getInstance();
            Control     control     = (Control)sender;
            MapData     mapData     = controlsMap.getMapData(control);

            if (mapData == null)
            {
                return;
            }

            Type    senderType = sender.GetType();
            ListBox listBox    = (ListBox)sender;

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(mapData.getControl()));

            try
            {
                switch (type)
                {
                case EventType.MOUSE_DOWN:
                    MouseEventArgs mouseEvtArgs = (MouseEventArgs)e;
                    GuiUtils.SaveLastClickInfo(mapData, (Control)sender, new Point(mouseEvtArgs.X, mouseEvtArgs.Y));
                    bool leftClickWasPressed = (((MouseEventArgs)e).Button == MouseButtons.Left);
                    GuiUtils.SetOnClickOnTagData(control, leftClickWasPressed);

#if !PocketPC
                    if (leftClickWasPressed)
                    {
                        GuiUtils.AssessDrag(control, (MouseEventArgs)e, mapData);
                    }
#endif

                    return;

                case EventType.MOUSE_UP:
                case EventType.GOT_FOCUS:
                case EventType.LOST_FOCUS:
                    GuiUtils.SetOnClickOnTagData(control, false);

#if !PocketPC
                    if (type == EventType.MOUSE_UP)
                    {
                        GuiUtils.ResetDragInfo(control);
                    }
#endif
                    return;

                case EventType.KEY_DOWN:
                    if (OnkeyDown(type, sender, e))
                    {
                        return;
                    }
                    break;

                case EventType.CLICK:
                    // we do not want the process selection to accure here. only in SelectedIndexChanged.
                    return;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }

            DefaultHandler.getInstance().handleEvent(type, sender, e);
        }
Exemple #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            Control   clientPanel;
            MapData   mapData;
            GuiMgForm guiMgForm;

            // When modal window is opened and if we close the form Modal form using external event (i.e. Stop RTE from studio / Exit System event)
            // We are getting closed event 2 times for a modal window :
            //          1) First time from GuiCommandsQueue.closeForm() due to form.close() and
            //          2) We are not able to figure out from where we are getting the second closed event.
            // When we come here to process closed event second time the object is already disposed, hence we should not process any events.
            if (GuiUtils.isDisposed((Control)sender))
            {
                return;
            }

            clientPanel = ((TagData)((Control)sender).Tag).ClientPanel;
            if (clientPanel == null)
            {
                clientPanel = (Control)sender;
            }
            mapData   = ControlsMap.getInstance().getMapData(clientPanel);
            guiMgForm = mapData.getForm();
            GuiForm form = (GuiForm)sender;


            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(guiMgForm));

            try
            {
                switch (type)
                {
                case EventType.LOAD:
#if !PocketPC
                    // #919192: Icon displayed for an maximised MDI Child is not the one set in
                    // form's Icon property before loading the form.
                    // This is a framework bug. The workaround is to set the icon for Maximised MDI Child again in load handler.
                    if (form.IsMdiChild && form.WindowState == FormWindowState.Maximized)
                    {
                        Icon originalIcon = form.Icon;
                        form.Icon = null;
                        form.Icon = originalIcon;
                    }
                    ContextForms.AddForm(form);
#endif
                    form.Activate();
                    break;

                case EventType.CAN_REPOSITION:

                    if (form.IsMdiChild && OldZorderManager.getInstance().UseOldZorderAlgorithm)
                    {
                        if (!ContextForms.IsLastForm(form))
                        {
                            GuiForm nextForm = ContextForms.GetNextForm(form);
                            if (nextForm.Handle != ((RepositionEventArgs)e).HwndInsertAfter)
                            {
                                ((RepositionEventArgs)e).CanReposition = false;
                            }
                        }
                    }
                    break;

                case EventType.ACTIVATED:
                    //ClientManager.Instance.RefreshMenu(mgForm.getTask().getMgdID());
                    OnFormActivate(form);
                    //Defect 124155 - if form is ancestor to blocking batch form - return activation to the batch
                    if (form.IsMdiChild && ContextForms.IsBlockedByMdiForm(form))
                    {
                        GuiForm formToActivate = ContextForms.GetBlockingFormToActivate(form);
                        if (formToActivate != null && !formToActivate.IsClosing)
                        {
                            formToActivate.Activate();
                        }
                    }

                    break;

                case EventType.WMACTIVATE:
                    OnWmActivate(form, e);

                    break;

#if !PocketPC
                case EventType.SHOWN:
                    if (form.WindowState == FormWindowState.Normal &&
                        ((TagData)form.Tag).WindowType != WindowType.FitToMdi &&
                        ((TagData)form.Tag).WindowType != WindowType.Sdi &&
                        ((TagData)form.Tag).WindowType != WindowType.MdiFrame)
                    {
                        Rectangle?savedbounds = GuiUtils.getSavedBounds(form);
                        if (savedbounds != null)
                        {
                            Rectangle rect = (Rectangle)savedbounds;

                            if (rect.Size != form.ClientSize)
                            {
                                GuiUtils.setBounds(form, rect);
                            }
                        }
                    }

                    GuiUtils.saveFormBounds(form);
                    form.Resize += FormHandler.getInstance().ResizeHandler;

                    // form is shown, so set the flag as false
                    PrintPreviewFocusManager.GetInstance().IsInModalFormOpening = false;
                    ((TagData)form.Tag).IsShown = true;
                    break;
#endif
                case EventType.MDI_CHILD_ACTIVATED:

                    Events.OnFormActivate(guiMgForm);


                    break;

                case EventType.RESIZE:
                    if (((TagData)form.Tag).IgnoreWindowResizeAndMove)
                    {
                        return;
                    }
                    onResize(form, guiMgForm);
                    break;

                case EventType.RESIZE_BEGIN:
                    OnResizeBegin(form);
                    break;

                case EventType.RESIZE_END:
                    OnResizeEnd(form);
                    break;

                case EventType.LAYOUT:
#if !PocketPC
                    if (GuiUtils.IsFormMinimized(form))
                    {
                        ((TagData)form.Tag).Minimized = true;
                    }
                    else if (!((TagData)form.Tag).IsShown)
                    {
                        ((TagData)form.Tag).Minimized = false;
                    }
#endif
                    if (((TagData)form.Tag).WindowType == WindowType.Sdi)
                    {
                        SDIFormLayout(form);
                    }
                    return;

                case EventType.SIZING:
                    OnSizing(form, (SizingEventArgs)e);
                    break;

#if !PocketPC //tmp
                case EventType.COPY_DATA:
                    Events.OnCopyData(guiMgForm, ((CopyDataEventArgs)e).Copydata);
                    return;

                case EventType.MOVE:
                    if (((TagData)form.Tag).WindowType == WindowType.ChildWindow)
                    {
                        Control parent = form.Parent;


                        Debug.Assert(parent is Panel);
                        Form parentform = GuiUtils.FindForm(parent);
                        if (GuiUtils.IsFormMinimized(parentform))
                        {
                            return;
                        }

                        EditorSupportingPlacementLayout placementLayout = ((TagData)parent.Tag).PlacementLayout;
                        if (placementLayout != null)
                        {
                            //TODO: If the child window is moved due to scrolling of the parent window,
                            //computeAndUpdateLogicalSize() should not be called.
                            placementLayout.computeAndUpdateLogicalSize(parent);
                        }
                    }

                    if (((TagData)form.Tag).IgnoreWindowResizeAndMove)
                    {
                        return;
                    }
                    onMove(form, guiMgForm);
                    break;
#endif
                case EventType.CLOSING:
                    //handle the event only if it was not canceled.
                    if (((CancelEventArgs)e).Cancel == false)
                    {
                        bool clrHandledEvent = false;
#if !PocketPC
                        //When MDI Frame is closing, We should not put ACT_EXIT on each it's child windows.
                        //This causes invokation of confirmation dialog, which should be avoided.
                        WindowType windowType = ((TagData)form.Tag).WindowType;
                        if (((FormClosingEventArgs)e).CloseReason == System.Windows.Forms.CloseReason.MdiFormClosing &&
                            (windowType == WindowType.MdiChild || windowType == WindowType.FitToMdi))
                        {
                            return;
                        }
#endif
                        clrHandledEvent = Events.OnFormClose(guiMgForm);


#if !PocketPC //tmp
                        // If CloseReason is UserClosing, then only set Cancel.
                        if (((FormClosingEventArgs)e).CloseReason == System.Windows.Forms.CloseReason.UserClosing)
#endif
                        //If clrHandledEvent is true then 'Cancel' should be false else true.
                        ((CancelEventArgs)e).Cancel = !clrHandledEvent;
                    }
                    return;

                case EventType.CLOSED:
#if PocketPC
                    GUIMain.getInstance().MainForm.closeSoftKeyboard();
#endif
                    break;

                case EventType.NCMOUSE_DOWN:
                    if (!IsClickOnCloseButton((NCMouseEventArgs)e))
                    {
#if !PocketPC
                        // QCR #414516. Click on title bar mustn't move cursor to the parent task.
                        Form previousActiveForm = Form.ActiveForm ?? lastActiveTopLevelForm;

                        //defect 120508 : if the form was already active - we should not process the mouse down
                        if (GuiUtils.FindTopLevelForm(form) != previousActiveForm)
#endif
                        Events.OnMouseDown(guiMgForm, null, null, true, 0, true, true);
                    }
                    break;

                case EventType.NCACTIVATE:
                    Events.OnNCActivate(guiMgForm);
                    break;

                case EventType.DISPOSED:
                    Events.OnDispose(guiMgForm);
                    ContextForms.RemoveForm(form);

                    clientPanel.Tag = null;
                    form.Tag        = null;

                    return;

                case EventType.DEACTIVATED:
                    Events.OnCloseHelp(guiMgForm);
                    break;

#if PocketPC
                case EventType.KEY_DOWN:
                    // Key event preview - KeyDown with 'tab' key is usually used by the system to move the focus
                    // between controls. We want to do it ourselves, so we intercept it here and pass it to the control
                    // in focus.
                    if (((KeyEventArgs)e).KeyCode == Keys.Tab)
                    {
                        // get the tagdata and look for the control that has the focus
                        TagData tagData = (TagData)((Control)sender).Tag;

                        // If the control is one of those for which we need to raise the event, aise it and mark the
                        // event as handled.
                        if (tagData.LastFocusedControl is MgTextBox)
                        {
                            ((MgTextBox)tagData.LastFocusedControl).CallKeyDown((KeyEventArgs)e);
                            ((KeyEventArgs)e).Handled = true;
                        }
                        else if (tagData.LastFocusedControl is MgCheckBox)
                        {
                            ((MgCheckBox)tagData.LastFocusedControl).CallKeyDown((KeyEventArgs)e);
                            ((KeyEventArgs)e).Handled = true;
                        }
                        else if (tagData.LastFocusedControl is MgComboBox)
                        {
                            ((MgComboBox)tagData.LastFocusedControl).CallKeyDown((KeyEventArgs)e);
                            ((KeyEventArgs)e).Handled = true;
                        }
                        else if (tagData.LastFocusedControl is MgButtonBase)
                        {
                            ((MgButtonBase)tagData.LastFocusedControl).CallKeyDown((KeyEventArgs)e);
                            ((KeyEventArgs)e).Handled = true;
                        }
                        else if (tagData.LastFocusedControl is MgTabControl)
                        {
                            ((MgTabControl)tagData.LastFocusedControl).CallKeyDown((KeyEventArgs)e);
                            ((KeyEventArgs)e).Handled = true;
                        }
                    }
                    return;
#endif
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }
            DefaultHandler.getInstance().handleEvent(type, sender, e, mapData);
        }
Exemple #13
0
        /*
         * (non-Javadoc)
         *  For ContextMenu : MENU_OPENING replaces the SWT's MenuDetect. Since there is no such handler on a control, we needed a way
         *  to block the system's menu and show nothing in case there was no context menu assigned by the user. We also need to decide on
         *  the correct context menu before it opens.
         *  We do that by assigning a new and empty context menu for each control that is created.
         *  When the user right clicks on a control, the empty context (or a real context) shoots a MENU_OPENING.
         *  In this point do a few things :
         *  1. If this is the 1st opening event for that click, we need to decide if that is the correct menu to be opened.
         *     In case its the 2nd time, the 'ContextCanOpen' flag will be true, verifying that we don't need to check the menu.
         *  2. To check the menu we have separate methods for table controls and other controls.
         *     each type will have its own 'handleContextMenu'.
         *     * In table, if the clicked cell is already in edit mode, then the control we'll get here will be already a regular edit box.
         *  3. In case we have discovered that the correct menu to be showed is not the one that had sent us the 'OPENING' event,
         *     we will cancel its opening and insteed we will set the 'ContextCanOpen' to true and call the ContextMenuStrip.Show ourselves.
         *     That way the correct menu will be opened.
         */
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            MapData       mapData;
            GuiMgForm     guiMgForm = null;
            MenuReference menuRef   = null;
            ControlsMap   controlsMap;

            Manager.ContextIDGuard contextIDGuard = null;

            mapData = ControlsMap.getInstance().getMapData(sender);
            if (mapData != null)
            {
                menuRef   = mapData.getMenuReference();
                guiMgForm = menuRef.GetMgForm();
                if (guiMgForm != null)
                {
                    contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(guiMgForm));
                }
            }
            try
            {
                switch (type)
                {
                // Only ContexMenuStrip and ToolStripMenuItem can be opened. A MenuStrip is never opened, only its childs which are items.
                // *** see also comment above.
                case EventType.MENU_OPENING:
                    // only if the context itself is opening
                    // the purpose is to determine the correct menu to be opened on the control. (substitude to the SWT.MENU_DETECT).
                    if (sender is ContextMenuStrip && !((TagData)((ContextMenuStrip)sender).Tag).ContextCanOpen)
                    {
                        ContextMenuStrip contextMenu  = (ContextMenuStrip)sender;
                        Control          control      = contextMenu.SourceControl;
                        GuiMgControl     guiMgControl = null;

                        controlsMap = ControlsMap.getInstance();

                        if (control is Form)
                        {
                            // in case of form control, the real control is its panel
                            control = ((TagData)(control.Tag)).ClientPanel;
                        }

                        /*Defect 131535 :
                         * After 3.1 the MDIClient is covered with a Panel with FitToMDI.
                         * In the defect scenario when user presses the right click on online form and keeping the right click pressed drags the cursor to MDI form and then leaves the button
                         * then, somehow we get the SourceControl of the context menu as MDIClient.
                         * But the MDIClient is not saved in ControlsMap anymore.
                         * In order to fix the problem whenever we get the SourceControl of context menu as MDIClient set it to MgPanel obtained from it's parent's (GuiForm) ClientPanel.*/
                        if (control is System.Windows.Forms.MdiClient)
                        {
                            GuiForm guiForm = (GuiForm)control.Parent;
                            control = ((TagData)guiForm.Tag).ClientPanel;
                        }

                        ContainerManager containerManager = ((TagData)(control.Tag)).ContainerManager;
                        if (containerManager is TableManager || containerManager is TreeManager || containerManager is BasicControlsManager)
                        {
                            // Use the mouse pos to determine in which row and column we are at.
                            // We cannot use the contextMenu.Left\Top, since its not always the point from which the cursor was opened.
                            // If the menu was opened via keyboard, we will not get here , since the control will be not table control but the cell control itself.
                            Point MousePos = Control.MousePosition;

                            // get the relative location on the menu within the container.
                            Point pt = control.PointToClient(new Point(MousePos.X, MousePos.Y));
                            mapData = containerManager.HitTest(pt, true, true);
                            if (mapData == null)
                            {
                                if (containerManager is TableManager)
                                {
                                    GuiUtils.setTooltip(control, "");
                                }
                                else
                                {
                                    if (control is Panel && ((TagData)(control.Tag)).ContainerTabControl != null)
                                    {
                                        // in case its the tab panel, the control will be the tab control
                                        control = ((TagData)(control.Tag)).ContainerTabControl;
                                    }

                                    mapData = controlsMap.getMapData(control);
                                }
                            }
                        }
                        else
                        {
                            mapData = controlsMap.getMapData(control);
                        }

                        // Do not go in here if tableManager.handleContextMenu was executed.

                        if (mapData != null)
                        {
                            bool focusChanged = false;
                            guiMgControl = mapData.getControl();
                            bool onMultiMark = false;
                            if (containerManager == null && ((TagData)control.Tag).IsEditor)
                            {
                                Object obj = controlsMap.object2Widget(guiMgControl, mapData.getIdx());
                                if (obj is LogicalControl)
                                {
                                    containerManager = ((LogicalControl)obj).ContainerManager;
                                }
                            }

                            if (containerManager is ItemsManager)
                            {
                                onMultiMark = ((ItemsManager)containerManager).IsItemMarked(mapData.getIdx());
                            }
                            focusChanged = Events.OnBeforeContextMenu(guiMgControl, mapData.getIdx(), onMultiMark);
                            //If the focus was changed, the control must have been saved as the focussing control.
                            //So, remove it from here.
                            if (focusChanged)
                            {
                                GuiUtils.removeFocusingControl(GuiUtils.FindForm(control));
                            }

                            GuiUtils.setTooltip(control, "");
                        }

                        // Cancel the opening of the context, as we will be handling it thr' event.
                        ((CancelEventArgs)e).Cancel = true;

                        // Add Event to Open a Context Menu, So, that it should be opened after the event added by
                        // OnBeforeContextMenu event.
                        int line = mapData != null?mapData.getIdx() : 0;

                        // If right click in on table control and not any control attached to table control
                        if (control is TableControl && guiMgControl == null)
                        {
                            guiMgControl = controlsMap.getMapData(control).getControl();
                        }
                        // Invoke the event to open a context menu.
                        Events.OnOpenContextMenu(guiMgControl, mapData != null ? mapData.getForm() : null,
                                                 contextMenu.Left, contextMenu.Top, line);
                        return;
                    }
                    else
                    {
                        mapData = ControlsMap.getInstance().getMapData(sender);
                        if (mapData == null)
                        {
                            break;
                        }

                        menuRef   = mapData.getMenuReference();
                        guiMgForm = menuRef.GetMgForm();
                        if (sender is MgToolStripMenuItem)
                        {
                            // This change is to improve performance of pulldown menu. When we apply modality, (while opening a batch task).
                            // We just disable menu items on GuiMenuEntry. actual menu is diabled in .ent whe
                            foreach (ToolStripItem item in ((ToolStripMenuItem)sender).DropDownItems)
                            {
                                if (item is MgToolStripMenuItem)
                                {
                                    TagData      tagData1      = (TagData)((MgToolStripMenuItem)item).Tag;
                                    GuiMenuEntry guiMenuEntry1 = tagData1.guiMenuEntry;

                                    if (!(guiMenuEntry1 is MenuEntryEvent || guiMenuEntry1 is MenuEntryMenu))
                                    {
                                        if (guiMenuEntry1.getModalDisabled() && (item.Enabled == guiMenuEntry1.getModalDisabled()))
                                        {
                                            item.Enabled = false;
                                        }
                                        else if (!item.Enabled && (guiMenuEntry1.getEnabled() == true))
                                        {
                                            item.Enabled = guiMenuEntry1.getEnabled();
                                        }
                                    }
                                }
                            }

                            // Create windowMenu items for MgToolStripMenuItem (Only sub-menus can define window menu)
                            TagData tagData = (TagData)((MgToolStripMenuItem)sender).Tag;
                            Events.InitWindowListMenuItems(guiMgForm, tagData.guiMenuEntry, tagData.MenuStyle);
                        }
                    }

                    // we get here in 3 cases :
                    // 1. ContextCanOpen is true. i.e. we have a confirmation to open. we are already in the recursive call.
                    // 2. We are in the original opening, but this is the correct menu.
                    // 3. This is a ToolStripMenuItem (i.e. not the context menu itself.

                    //when opening a menu (pulldown or context), check if paste action
                    //should be enabled/disabled.
                    //Don't check for dummy, no need. also, if u try : getLastFocusedControl will throw exception since dummy don't have mapData.
                    // Dummy is only relevant in context menu (not in drop down).
                    if (!(sender is ContextMenuStrip && ((ContextMenuStrip)sender).Name == "Dummy"))
                    {
                        //Call to checkPasteEnable() was introduced for QCR# 241365 in Java RC.
                        //This code is added for following situation:
                        //If there are 3 fields a, b, c. Field C has modifiable = No.
                        //If contex menu of fields a and b show paste as enabled, then the modifiable=no field will also show paste enabled...
                        //and it shouldn't.
                        //When we are on 3rd field, tab to another window and get back (to loose and regain focus)
                        //now, the paste is disabled on c as it should...but tab to the other fields, now the paste is disabled for them as well.
                        //to make paste enabled for Modifiable fields, this call is required here.
                        GuiMgControl guiMgControl = getLastFocusedControl(sender);
                        GuiUtils.checkPasteEnable(guiMgControl, true);
                    }

                    return;


                // Select event can happen ONLY on MenuItem, not on Menu. (see addHandler).
                case EventType.MENU_ITEM_SELECTED:
                    onSelection(sender);

                    break;

                case EventType.MOUSE_ENTER:
                    onItemEnterLeave((ToolStripItem)sender, type);
                    break;

                case EventType.MOUSE_LEAVE:
                    onItemEnterLeave((ToolStripItem)sender, type);
                    break;

                case EventType.CLOSED:
                    if (sender is ContextMenuStrip)
                    {
                        ToolStrip menu = (ToolStrip)sender;
                        if (((ContextMenuStrip)sender).Name == "Dummy")
                        {
                            break;
                        }

                        //Current context menu will be disposed , So, create the dummy context menu for control.
                        Control control = ((TagData)menu.Tag).MouseDownOnControl;
                        GuiUtils.setContextMenu(control, null);

                        //Dispose context Menu.
                        GuiMgMenu mgMenu = ((TagData)menu.Tag).GuiMgMenu;
                        Events.OnContextMenuClose(menuRef.GetMgForm(), mgMenu);
                    }
                    break;

                case EventType.DISPOSED:
                    controlsMap = ControlsMap.getInstance();
                    GuiMenuEntry guiMenuEntry = null;

                    if (sender is ContextMenuStrip && ((ContextMenuStrip)sender).Name == "Dummy")
                    {
                        break;
                    }

                    mapData = controlsMap.getMapData(sender);

                    if (mapData == null)
                    {
                        break;
                    }

                    menuRef   = mapData.getMenuReference();
                    guiMgForm = menuRef.GetMgForm();

                    if (guiMgForm != null)
                    {
                        if (sender is ToolStripItem)
                        {
                            ToolStripItem menuItem  = (ToolStripItem)sender;
                            MenuStyle     menuStyle = ((TagData)menuItem.Tag).MenuStyle;

                            guiMenuEntry = ((TagData)menuItem.Tag).guiMenuEntry;

                            guiMenuEntry.removeMenuIsInstantiated(guiMgForm, menuStyle);

                            //if (menuEntry is MenuEntryMenu)
                            //   menuEntry.removeInstantiatedMenuItems(mgForm, menuStyle);
                            if ((guiMenuEntry.ImageFile != null) && menuItem.Image != null)
                            {
                                menuItem.Image.Dispose();
                            }
                            menuItem.Tag = null;
                        }
                        else if (sender is ToolStrip)
                        {
                            ToolStrip menu      = (ToolStrip)sender;
                            MenuStyle menuStyle = ((TagData)menu.Tag).MenuStyle;

                            if (((TagData)menu.Tag).GuiMgMenu != null)
                            {
                                GuiMgMenu mgMenu = ((TagData)menu.Tag).GuiMgMenu;
                                mgMenu.removeInstantiatedMenu(guiMgForm, menuStyle);
                            }
                            //else if (((TagData)menu.Tag).menuEntry != null)
                            //{
                            //   MenuEntry mgMenu = ((TagData)menu.Tag).menuEntry;
                            //   menuEntry.removeInstantiatedMenuItems(mgForm, menuStyle);
                            //}

                            menu.Tag = null;
                        }
                    }

                    if (menuRef != null)
                    {
                        Object fromMap = controlsMap.object2Widget(menuRef);
                        if (fromMap != null)
                        {
                            controlsMap.remove(menuRef);
                        }
                    }

                    break;

                case EventType.KEY_DOWN:
                {
                    if (((KeyEventArgs)e).KeyCode == Keys.F1)
                    {
                        ToolStrip menu = (ToolStrip)sender;

                        foreach (ToolStripItem menuItem in menu.Items)
                        {
                            if (menuItem.CanSelect && menuItem.Selected)
                            {
                                guiMenuEntry = ((TagData)menuItem.Tag).guiMenuEntry;

                                if (guiMenuEntry.Help > 0)
                                {
                                    if (menu.IsDropDown)
                                    {
                                        // Defect Id 115414: If help is opened then menu needs to be closed. After closing the menu focus should not be on the menu.
                                        // Same like when menu is clicked.ToolStripDropDownCloseReason.ItemClicked option closes the menu and
                                        // focus does not remains on the menu.
                                        ((ToolStripDropDownMenu)menu).Close(ToolStripDropDownCloseReason.ItemClicked);
                                    }
                                    Events.OnHelpInVokedOnMenu(guiMenuEntry, ((TagData)menuItem.Tag).MapData.getMenuReference().GetMgForm());
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (MnemonicHelper.HandleMnemonicForHebrew((ToolStrip)sender, (char)((KeyEventArgs)e).KeyCode))
                        {
                            ((KeyEventArgs)e).Handled = true;
                        }
                    }
                }
                break;

                default:
                    System.Console.Out.WriteLine(type.ToString());
                    break;
                }
            }
            finally
            {
                if (contextIDGuard != null)
                {
                    contextIDGuard.Dispose();
                }
            }
        }
Exemple #14
0
        /// <summary></summary>
        /// <param name="type"></param>
        /// <param name="sender"></param>
        /// <param name="evtArgs"></param>
        internal override void handleEvent(EventType type, Object sender, EventArgs evtArgs)
        {
            ControlsMap controlsMap = ControlsMap.getInstance();
            Control     ctrl        = (Control)sender;
            MapData     mapData     = controlsMap.getMapData(ctrl);

            if (mapData == null)
            {
                return;
            }

            GuiMgControl mgControl = mapData.getControl();
            MgLinkLabel  linkLabel = ctrl as MgLinkLabel;

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(mgControl));

            try
            {
                if (linkLabel != null)
                {
                    switch (type)
                    {
                    case EventType.LINK_CLICKED:
                        LinkLabelLinkClickedEventArgs args = (LinkLabelLinkClickedEventArgs)evtArgs;
#if !PocketPC
                        if (args.Button == MouseButtons.Left)
#endif
                        // Mobile: we get here only with a left button click
                        OnLinkClicked(linkLabel, controlsMap, mapData, mgControl, true);
                        return;

                    case EventType.GOT_FOCUS:
                    case EventType.MOUSE_UP:
                        break;

                    case EventType.MOUSE_DOWN:
                        if (!linkLabel.Focused)
                        {
                            GuiUtils.saveFocusingControl(GuiUtils.FindForm(linkLabel), mapData);
                        }

                        break;

                    case EventType.MOUSE_ENTER:
                        linkLabel.OnHovering = true;
                        break;

                    case EventType.MOUSE_LEAVE:
                        linkLabel.OnHovering = false;
                        break;

                    case EventType.KEY_DOWN:
                        KeyEventArgs keyEventArgs = (KeyEventArgs)evtArgs;

                        if (KbdConvertor.isModifier(keyEventArgs.KeyCode))
                        {
                            return;
                        }

                        if (keyEventArgs.Modifiers == Keys.None && keyEventArgs.KeyCode == Keys.Space)
                        {
                            OnLinkClicked(linkLabel, controlsMap, mapData, mgControl, false);
                            return;
                        }
                        break;

                    case EventType.PRESS:
                        if (!linkLabel.Focused)
                        {
                            GuiUtils.saveFocusingControl(GuiUtils.FindForm(linkLabel), mapData);
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }


            DefaultHandler.getInstance().handleEvent(type, sender, evtArgs);
        }
Exemple #15
0
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            ControlsMap controlsMap = ControlsMap.getInstance();
            UtilImeJpn  utilImeJpn  = Manager.UtilImeJpn;

            TextBox textCtrl = (TextBox)sender;
            int     start;
            int     end;

            MapData mapData = controlsMap.getMapData(textCtrl);

            if (mapData == null)
            {
                return;
            }

            GuiMgControl guiMgCtrl = mapData.getControl();
            GuiMgForm    guiMgForm = mapData.getForm();

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(guiMgCtrl));

            if (Events.ShouldLog(Logger.LogLevels.Gui))
            {
                Events.WriteGuiToLog("TextBoxHandler(\"" + mapData.getControl().getName(mapData.getIdx()) + "\"): " + type);
            }

            try
            {
                switch (type)
                {
                case EventType.GOT_FOCUS:
                    // check the paste enable. check the clip content.
                    if (mapData != null)
                    {
                        GuiUtils.checkPasteEnable(mapData.getControl(), true);
                        GuiUtils.SetFocusColor(textCtrl);
                    }
                    break;

                case EventType.LOST_FOCUS:
                    // Always disable paste when exiting a text ctrl. (since we might be focusing on a diff type of
                    // ctrl).
                    if (mapData != null)
                    {
                        GuiUtils.disablePaste(mapData.getControl());
                        GuiUtils.ResetFocusColor(textCtrl);
                    }
                    break;

                case EventType.KEY_UP:
                    GuiUtils.enableDisableEvents(sender, mapData.getControl());
                    return;

                case EventType.KEY_DOWN:
                    KeyEventArgs keyEventArgs = (KeyEventArgs)e;

                    if (ShouldBeHandledByTextBox(textCtrl, keyEventArgs))
                    {
                        GuiUtils.checkAutoWide(mapData.getControl(), textCtrl, GuiUtils.getValue(textCtrl));
                        keyEventArgs.Handled = false;
                        return;
                    }
                    break;

                case EventType.IME_EVENT:
                    // (Korean) IME messages (WM_IME_COMPOSITION, etc.) are handled as pseudo-input
                    // where action=MG_ACT_CHAR, text=" ".
                    // To distinguish with real " ", ImeParam im is attached to RuntimeEvent.
                    ImeEventArgs iea = (ImeEventArgs)e;
                    start = textCtrl.SelectionStart;
                    end   = textCtrl.SelectionStart + textCtrl.SelectionLength;
                    Events.OnKeyDown(guiMgForm, guiMgCtrl, Modifiers.MODIFIER_NONE, 0, start, end, " ", iea.im, true, "-1", false, iea.Handled);
                    iea.Handled = true;
                    break;

                case EventType.KEY_PRESS:
                    KeyPressEventArgs keyPressEventArgs = (KeyPressEventArgs)e;
                    // skipp control key
                    if (Char.IsControl(keyPressEventArgs.KeyChar))
                    {
                        return;
                    }

                    start = textCtrl.SelectionStart;
                    end   = textCtrl.SelectionStart + textCtrl.SelectionLength;
                    String pressedChar = "" + keyPressEventArgs.KeyChar;

                    // flag the isActChar to indicate this is MG_ACT_CHAR
                    Events.OnKeyDown(guiMgForm, guiMgCtrl, Modifiers.MODIFIER_NONE, 0, start, end, pressedChar, true, "-1", keyPressEventArgs.Handled);
                    keyPressEventArgs.Handled = true;
                    break;

                case EventType.MOUSE_UP:
                    GuiUtils.enableDisableEvents(sender, mapData.getControl());
                    break;

                case EventType.CUT:
                    Events.CutEvent(mapData.getControl());
                    return;

                case EventType.COPY:
                    Events.CopyEvent(mapData.getControl());
                    return;

                case EventType.PASTE:
                    Events.PasteEvent(mapData.getControl());
                    return;

                case EventType.CLEAR:
                    Events.ClearEvent(mapData.getControl());
                    return;

                case EventType.UNDO:
                    Events.UndoEvent(mapData.getControl());
                    return;



                case EventType.STATUS_TEXT_CHANGED:
                    // JPN: ZIMERead function
                    if (utilImeJpn != null && sender is MgTextBox && !utilImeJpn.IsEditingCompStr((Control)sender))
                    {
                        utilImeJpn.StrImeRead = ((MgTextBox)sender).GetCompositionString();
                    }
                    return;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }

            DefaultHandler.getInstance().handleEvent(type, sender, e);
        }
Exemple #16
0
        /* (non-Javadoc)
         * @see org.eclipse.swt.widgets.Handler#handleEvent(org.eclipse.swt.widgets.Event)
         */
        internal override void handleEvent(EventType type, Object sender, EventArgs e)
        {
            ControlsMap controlsMap  = ControlsMap.getInstance();
            RichTextBox richTextCtrl = (RichTextBox)sender;
            MapData     mapData      = controlsMap.getMapData(richTextCtrl);

            if (mapData == null)
            {
                return;
            }

            GuiMgControl ctrl      = mapData.getControl();
            GuiMgForm    guiMgForm = mapData.getForm();

            UtilImeJpn utilImeJpn = Manager.UtilImeJpn; // JPN: IME support

            var contextIDGuard = new Manager.ContextIDGuard(Manager.GetContextID(ctrl));

            try
            {
                switch (type)
                {
                case EventType.GOT_FOCUS:
                    // check the paste enable. check the clip content.
                    if (mapData != null)
                    {
                        GuiUtils.checkPasteEnable(mapData.getControl(), true);
                    }

                    // For RichEdit Ctrl, Set AcceptButton(i.e. DefaultButton) to null in order to allow enter key on RichEdit control.
                    if (sender is MgRichTextBox)
                    {
                        Form form = GuiUtils.FindForm(richTextCtrl);
                        form.AcceptButton = null;

                        if (((MgRichTextBox)sender).ReadOnly)
                        {
                            GuiUtils.restoreFocus(form);
                        }
                    }
                    break;

                case EventType.LOST_FOCUS:
                    // Always disable paste when exiting a text ctrl. (since we might be focusing on a diff type of
                    // ctrl).
                    if (mapData != null)
                    {
                        GuiUtils.disablePaste(mapData.getControl());
                    }
                    break;

                case EventType.KEY_UP:
                    // Korean
                    if (sender is MgRichTextBox && ((MgRichTextBox)sender).KoreanInterimSel >= 0)
                    {
                        return;
                    }

                    if (utilImeJpn != null)
                    {
                        if (utilImeJpn.IsEditingCompStr(richTextCtrl)) // JPN: IME support
                        {
                            return;
                        }

                        if (richTextCtrl is MgRichTextBox)           // JPN: ZIMERead function
                        {
                            utilImeJpn.StrImeRead = ((MgRichTextBox)richTextCtrl).GetCompositionString();
                        }
                    }

                    GuiUtils.enableDisableEvents(sender, mapData.getControl());
                    return;

                case EventType.KEY_DOWN:
                    // Korean
                    if (sender is MgRichTextBox && ((MgRichTextBox)sender).KoreanInterimSel >= 0)
                    {
                        return;
                    }

                    if (utilImeJpn != null && utilImeJpn.IsEditingCompStr(richTextCtrl)) // JPN: IME support
                    {
                        return;
                    }

                    KeyEventArgs keyEventArgs = (KeyEventArgs)e;
                    // marking the text (next/prev char or beg/end text) we let the
                    // system to take care of it.
                    // why ? There is no way in windows to set the caret at the beginning of
                    // a selected text. it works only on multi mark for some reason.
                    // also posting a shift+key does not work well since we have no way of knowing
                    // if the shift is already pressed or not.
                    // *** ALL other keys will continue to handleEvent.
                    if ((keyEventArgs.Shift && (keyEventArgs.KeyCode == Keys.Left || keyEventArgs.KeyCode == Keys.Right || keyEventArgs.KeyCode == Keys.Up || keyEventArgs.KeyCode == Keys.Down || keyEventArgs.KeyCode == Keys.Home || keyEventArgs.KeyCode == Keys.End)) ||
                        (keyEventArgs.Control && (keyEventArgs.KeyCode == Keys.Left || keyEventArgs.KeyCode == Keys.Right)))
                    {
                        keyEventArgs.Handled = false;
                        return;
                    }
                    break;

                case EventType.KEY_PRESS:

                    KeyPressEventArgs keyPressEventArgs = (KeyPressEventArgs)e;

                    bool IgnoreKeyPress = ((TagData)richTextCtrl.Tag).IgnoreKeyPress;
                    // should we ignore the key pressed ?
                    if (IgnoreKeyPress)
                    {
                        ((TagData)richTextCtrl.Tag).IgnoreKeyPress = false;

                        return;
                    }

                    // skipp control key
                    if (Char.IsControl(keyPressEventArgs.KeyChar))
                    {
                        return;
                    }

                    int start = richTextCtrl.SelectionStart;
                    int end   = richTextCtrl.SelectionStart + richTextCtrl.SelectionLength;

                    String pressedChar = "" + keyPressEventArgs.KeyChar;

                    // flag the isActChar to indicate this is MG_ACT_CHAR
                    Events.OnKeyDown(guiMgForm, ctrl, Modifiers.MODIFIER_NONE, 0, start, end, pressedChar, true, "-1", keyPressEventArgs.Handled);

                    // keyPressEventArgs.Handled wii stay 'false' in order to let the system put the correct char.
                    // What will happen is 2 things : 1. processKeyDown will add 'MG_ACT_CHAR'. 2. The system will write the char.
                    // In the past, the 'ACT_CHAR' was using sendKeys in order to write the char, but it makes problems in multilanguage systems.
                    // So, in TextMaskEditor for rich , ACT_CHAR will do nothing, just pass there in order to rais the 'control modify'.
                    //keyPressEventArgs.Handled = true;
                    break;

                case EventType.MOUSE_UP:
                    GuiUtils.enableDisableEvents(sender, mapData.getControl());
                    break;
                }
            }
            finally
            {
                contextIDGuard.Dispose();
            }

            DefaultHandler.getInstance().handleEvent(type, sender, e);
        }