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); } }
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(); } }
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); } }
private void ElectCandidate() { if (_uiElementCandidate == null) { return; } _selectedUIElement = _uiElementCandidate; _myCanvas.Children.Add(_uiElementCandidate); _myCanvas.InvalidateVisual(); _uiElementCandidate = null; }
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); }
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; }
/// <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(); } } }
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; }
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); }
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; }
void _myCanvas_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e) { _selectedUIElement = null; }