// --------------------------------- !From events --------------------------------- // //public Edges makeEdges(vec2 posSource, string source, vec2 posStock, string stock, float r, string weight) //{ // if (oriented) return new OrientedEdges(posSource, source, posStock, stock, r, weight); // else return new NonOrientedEdges(posSource, source, posStock, stock, r, weight); //} // ----------------------------- Mouse Events ----------------------------- // private void MainForm_MouseClick(object sender, MouseEventArgs e) { try { if (!_field.Status || tsbtnMove.Checked) { return; } switch (e.Button) { case MouseButtons.Left: { vec2 pos = new vec2((float)e.X, (float)e.Y); if (max.x - pos.x < R || pos.x - left < R || max.y - pos.y < R || pos.y - top < R) { _field.UnmarkGraphModels(); } else if ((selectedKey = _field.GetPosKey(pos, R)) != null && !tsBtnAddVertex.Checked) { _field.MarkGraphModel(selectedKey); var model = _field[selectedKey]; if (model is AVertexModel && _field.MarkedModelsCount <= 2) { if (_field.MarkedVertexModelCount == 1) { sourceModel = (AVertexModel)model; } else if (_field.MarkedVertexModelCount == 2) { stockModel = (AVertexModel)model; } } } else if (_field.GetPosKey(pos, R + R + R / 2) == null && tsBtnAddVertex.Checked) { if (_field.MarkedVertexModelCount > 0 || _field.MarkedEdgeModelCount > 0) { _field.UnmarkGraphModels(); break; } string v = i++.ToString(); var model = new VertexDrawModel(v, pos); AddModelCommandArgs command = new AddModelCommandArgs(model); CommandEntered?.Invoke(this, command); } else { _field.UnmarkGraphModels(); sourceModel = stockModel = null; } break; } default: break; } } catch (Exception ex) { PostErrorMessage(ex.Message); } }
public AddModelCommand(AddModelCommandArgs args, IModelField field) : base(field) { _args = args; }