コード例 #1
0
ファイル: PointHelper.cs プロジェクト: lulzzz/daipan
        public static Point GetPointForConnector(FullyCreatedConnectorInfo connector)
        {
            Point point = new Point();

            switch (connector.Orientation)
            {
            case ConnectorOrientation.Top:
                point = new Point(connector.DataItem.Left + (DesignerItemViewModelBase.ItemWidth / 2), connector.DataItem.Top - (ConnectorInfoBase.ConnectorHeight));
                break;

            case ConnectorOrientation.Bottom:
                point = new Point(connector.DataItem.Left + (DesignerItemViewModelBase.ItemWidth / 2), (connector.DataItem.Top + DesignerItemViewModelBase.ItemHeight) + (ConnectorInfoBase.ConnectorHeight / 2));
                break;

            case ConnectorOrientation.Right:
                point = new Point(connector.DataItem.Left + DesignerItemViewModelBase.ItemWidth + (ConnectorInfoBase.ConnectorWidth), connector.DataItem.Top + (DesignerItemViewModelBase.ItemHeight / 2));
                break;

            case ConnectorOrientation.Left:
                point = new Point(connector.DataItem.Left - ConnectorInfoBase.ConnectorWidth, connector.DataItem.Top + (DesignerItemViewModelBase.ItemHeight / 2));
                break;
            }

            return(point);
        }
コード例 #2
0
        protected override void OnMouseUp(MouseButtonEventArgs e)
        {
            base.OnMouseUp(e);

            Mediator.Instance.NotifyColleagues <bool>("DoneDrawingMessage", true);

            if (sourceConnector != null)
            {
                FullyCreatedConnectorInfo sourceDataItem = sourceConnector.DataContext as FullyCreatedConnectorInfo;
                if (connectorsHit.Count() == 2)
                {
                    Connector sinkConnector = connectorsHit.Last();
                    FullyCreatedConnectorInfo sinkDataItem = sinkConnector.DataContext as FullyCreatedConnectorInfo;

                    int indexOfLastTempConnection = sinkDataItem.DataItem.Parent.Items.Count - 1;
                    sinkDataItem.DataItem.Parent.RemoveItemCommand.Execute(
                        sinkDataItem.DataItem.Parent.Items[indexOfLastTempConnection]);
                    sinkDataItem.DataItem.Parent.AddItemCommand.Execute(new ConnectorViewModel(sourceDataItem, sinkDataItem, sourceDataItem.DataItem.Parent));
                }
                else if (connectorsHit.Count == 1 && _lastHitActivity != null)
                {
                    var startOrientation  = connectorsHit.First().Orientation;
                    var targetOrientation = ConnectorOrientation.None;
                    switch (startOrientation)
                    {
                    case ConnectorOrientation.Left:
                        targetOrientation = ConnectorOrientation.Right;
                        break;

                    case ConnectorOrientation.Top:
                        targetOrientation = ConnectorOrientation.Bottom;
                        break;

                    case ConnectorOrientation.Right:
                        targetOrientation = ConnectorOrientation.Left;
                        break;

                    case ConnectorOrientation.Bottom:
                        targetOrientation = ConnectorOrientation.Top;
                        break;

                    default:
                        break;
                    }
                    var sinkDataItem = new FullyCreatedConnectorInfo(_lastHitActivity, targetOrientation);
                    int indexOfLastTempConnection = sinkDataItem.DataItem.Parent.Items.Count - 1;
                    sinkDataItem.DataItem.Parent.RemoveItemCommand.Execute(sinkDataItem.DataItem.Parent.Items[indexOfLastTempConnection]);
                    sinkDataItem.DataItem.Parent.AddItemCommand.Execute(new ConnectorViewModel(sourceDataItem, sinkDataItem, sourceDataItem.DataItem.Parent));
                }
                else
                {
                    //Need to remove last item as we did not finish drawing the path
                    int indexOfLastTempConnection = sourceDataItem.DataItem.Parent.Items.Count - 1;
                    sourceDataItem.DataItem.Parent.RemoveItemCommand.Execute(
                        sourceDataItem.DataItem.Parent.Items[indexOfLastTempConnection]);
                }
            }
            ClearConnectorCache();
        }
コード例 #3
0
ファイル: ConnectorViewModel.cs プロジェクト: lulzzz/daipan
 public ConnectorViewModel(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, IDiagramViewModel parent) : base(_currentConnectorId, parent)
 {
     if (sinkConnectorInfo != null && sinkConnectorInfo.Orientation != ConnectorOrientation.None)
     {
         _currentConnectorId++;
     }
     Init(sourceConnectorInfo, sinkConnectorInfo);
 }
コード例 #4
0
ファイル: ConnectorViewModel.cs プロジェクト: lulzzz/daipan
 private void Init(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo)
 {
     ShowDataChangeWindowCommand = new SimpleCommand(ExecuteShowDataChangeWindowCommand);
     visualiserService           = ApplicationServicesProvider.Instance.Provider.VisualizerService;
     this.Parent = sourceConnectorInfo.DataItem.Parent;
     this.SourceConnectorInfo = sourceConnectorInfo;
     this.SinkConnectorInfo   = sinkConnectorInfo;
     PathFinder = new OrthogonalPathFinder();
 }
コード例 #5
0
ファイル: ConnectorViewModel.cs プロジェクト: lulzzz/daipan
 public ConnectorViewModel(int id, IDiagramViewModel parent,
                           FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo) : base(id, parent)
 {
     Init(sourceConnectorInfo, sinkConnectorInfo);
 }