Ejemplo n.º 1
0
        void myCanvas_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            UpdateLastClickTime();

            //select ui element
            Point ptClick = e.GetPosition(_myCanvas);

            ClearLastSelection();
            _selectedUIElement = FindSelectedUIElement(ptClick);
            if (_selectedUIElement == null)
            {
                return;
            }

            //process double click event for labwareUIElement
            bool isDoubleClick = e.ClickCount == 2;

            onChangeLabel(isDoubleClick);

            if (otherFormNeedPickup)
            {
                _selectedUIElement.HighLighted = true;
            }
            else //let user move the UIElement
            {
                GetReady4Move(ptClick);
            }
        }
Ejemplo n.º 2
0
        private void UpdateCarrierGrid(BasewareUIElement _selectedUIElement, Point ptCurrent)
        {
            if (!(_selectedUIElement is CarrierUIElement))
            {
                return;
            }
            CarrierUIElement carrierUIElement = _selectedUIElement as CarrierUIElement;
            Carrier          carrier          = carrierUIElement.Carrier;

            int newGrid = VisualCommon.FindCorrespondingGrid(ptCurrent.X);
            int orgGrid = carrier.GridID;

            carrier.GridID = newGrid;
            if (carrier.Labwares.Count == 0)
            {
                return;
            }
            if (newGrid == orgGrid)
            {
                return;
            }

            foreach (Labware labware in carrier.Labwares)
            {
                labware.Refresh();
            }
        }
Ejemplo n.º 3
0
        public static void MountThis(BasewareUIElement baseUIElement, Point position, Grid container, Layout workingLayout)
        {
            bool bValid = IsValid(baseUIElement, position, container);

            if (!bValid)
            {
                if (baseUIElement is LabwareUIElement) //if labware has parent, let it go back
                {
                    LabwareUIElement labwareUIElement = (LabwareUIElement)baseUIElement;
                    if (labwareUIElement.Labware.ParentCarrier != null)
                    {
                        return;
                    }
                }

                container.Children.Remove(baseUIElement);
                if (baseUIElement is CarrierUIElement)
                {
                    RemoveUIElementsOnCarrier(container, baseUIElement as CarrierUIElement);
                }
                baseUIElement = null;
                return;
            }

            int grid = VisualCommon.FindCorrespondingGrid(position.X);

            if (baseUIElement is CarrierUIElement)
            {
                CarrierUIElement carrierUIElement = (CarrierUIElement)baseUIElement;
                carrierUIElement.Grid = grid;
            }

            if (baseUIElement is LabwareUIElement)
            {
                LabwareUIElement labwareUIElement = (LabwareUIElement)baseUIElement;
                Labware          labware          = labwareUIElement.Labware;
                CarrierUIElement carrierUIElement = null;
                int  siteID = -1;
                bool bFound = FindSuitableCarrier(position, labware.TypeName, container, ref carrierUIElement, ref siteID);
                if (bFound)
                {
                    if (labware.ParentCarrier != null)
                    {
                        labware.ParentCarrier.Labwares.Remove(labware);
                    }
                    labware.SiteID = siteID;
                    if (labware.IsDitiBox)
                    {
                        var ditiInfo = workingLayout.DitiInfo.DitiBoxInfos.Find(x => x.label == labware.Label);
                        if (ditiInfo == null)
                        {
                            DitiType ditiType = DitiBox.Parse(labware.TypeName);
                            workingLayout.DitiInfo.DitiBoxInfos.Add(new DitiBoxInfo(ditiType, labware.Label, 96));
                        }
                    }
                }
                carrierUIElement.Carrier.AddLabware(labware);
            }
        }
Ejemplo n.º 4
0
 private void ElectCandidate()
 {
     if (_uiElementCandidate == null)
     {
         return;
     }
     _selectedUIElement = _uiElementCandidate;
     _myCanvas.Children.Add(_uiElementCandidate);
     _myCanvas.InvalidateVisual();
     _uiElementCandidate = null;
 }
Ejemplo n.º 5
0
        void _myCanvas_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            Debug.WriteLine("Right Mouse Down");
            Point ptClick = e.GetPosition(_myCanvas);

            _selectedUIElement = FindSelectedUIElement(ptClick);
            if (_selectedUIElement == null)
            {
                return;
            }

            _myCanvas.ContextMenu = BuildMenu(_selectedUIElement.Ware);
        }
Ejemplo n.º 6
0
        private void RememberRelativePosition(BasewareUIElement baseUIElement)
        {
            if (baseUIElement is LabwareUIElement)
            {
                if (((LabwareUIElement)baseUIElement).Labware.ParentCarrier == null)
                {
                    relativeClickPosition2LeftTop = new Vector(-1, -1);
                    return;
                }
            }
            Point ptIElementInCanvase = baseUIElement.GetReferencePositionInCanvas();

            relativeClickPosition2LeftTop = _ptClick - ptIElementInCanvase;
        }
Ejemplo n.º 7
0
 /// <summary>
 /// redraw every UI elements
 /// </summary>
 /// <param name="uIElementCollection"></param>
 public static void UpdateVisuals(UIElementCollection uIElementCollection)
 {
     foreach (UIElement uiElement in uIElementCollection)
     {
         if (!(uiElement is BasewareUIElement))
         {
             continue;
         }
         BasewareUIElement basewareUIElement = (BasewareUIElement)uiElement;
         if (basewareUIElement != null)
         {
             basewareUIElement.InvalidateVisual();
         }
     }
 }
Ejemplo n.º 8
0
        private void onChangeLabel(bool isDoubleClick)
        {
            if (!isDoubleClick)
            {
                return;
            }
            if (!(_selectedUIElement is LabwareUIElement))
            {
                return;
            }
            LabwareUIElement labwareUIElement = _selectedUIElement as LabwareUIElement;

            labwareUIElement.Selected = false;
            if (onLabelPreviewChanged != null)
            {
                onLabelPreviewChanged(this, new LabelChangeEventArgs(labwareUIElement));
            }
            _selectedUIElement = null;
            return;
        }
Ejemplo n.º 9
0
        private static bool IsValid(BasewareUIElement baseUIElement, Point position, Grid container)
        {
            int gridPos   = VisualCommon.FindCorrespondingGrid(position.X);
            int totalGrid = Configurations.Instance.Worktable.GridCount;

            //1 moves out of worktable
            if (gridPos < 1 || gridPos > totalGrid)
            {
                return(false);
            }

            //2 if is Carrier, see whether there are enough grids for it
            if (baseUIElement is CarrierUIElement)
            {
                CarrierUIElement carrierUIElement = (CarrierUIElement)baseUIElement;
                bool             outOfRange       = IsOutofRange(gridPos, carrierUIElement);
                if (outOfRange)
                {
                    return(false);
                }

                bool overLapped = OverlapChecker.IsOverlapped(container, carrierUIElement, gridPos);
                if (overLapped)
                {
                    return(false);
                }
            }

            //3 if is labware, see whether there are suitable carrier for mounting onto
            if (baseUIElement is LabwareUIElement)
            {
                bool hasSuitableSite2Mount = HasSuitableSite(position, baseUIElement.Ware.TypeName, container);
                if (!hasSuitableSite2Mount)
                {
                    return(false);
                }
            }

            //baseUIElement.Selected = false;
            return(true);
        }
Ejemplo n.º 10
0
        void myCanvas_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            _myCanvas.ReleaseMouseCapture();
            Mouse.OverrideCursor = Cursors.Arrow;

            //clear select flag
            if (_selectedUIElement == null)
            {
                return;
            }

            if (_selectedUIElement is LabwareUIElement)
            {
                ((LabwareUIElement)_selectedUIElement).Moving = false;
            }

            //pipetting commands need to highlight the labware
            if (otherFormNeedPickup)
            {
                return;
            }


            //here is very tricky, for Carrier, we hope to install them by topleft,
            //but for labware, we hope to install them by mouse position.
            Vector vecAdjust = new Vector();

            if (_selectedUIElement is CarrierUIElement)
            {
                var uiCarrierElement = _selectedUIElement as CarrierUIElement;
                workingLayout.AddCarrier(uiCarrierElement.Carrier);
                vecAdjust = GetAdjustVector();
            }

            WareInstaller.MountThis(_selectedUIElement, e.GetPosition(_myCanvas) - vecAdjust, _myCanvas, workingLayout);

            DeHighlightAllSite();
            _selectedUIElement.Selected = false;
            _selectedUIElement          = null;
        }
Ejemplo n.º 11
0
 void _myCanvas_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e)
 {
     _selectedUIElement = null;
 }