예제 #1
0
 public EditSelectedLocalNameForm(Identification idType, string language, string namePair, CatchLocalNameSelectedForm parentForm)
 {
     InitializeComponent();
     _idType     = idType;
     _language   = language;
     _namePair   = namePair;
     _parentForm = parentForm;
     if (_idType == Identification.LocalName)
     {
         foreach (var item in Names.AllSpeciesDictionary)
         {
             comboBox.Items.Add(item);
         }
         lblEdit.Text = "Select a species name";
         Text         = "Provide a species name";
     }
     else if (_idType == Identification.Scientific)
     {
         foreach (var item in Names.LocalNameListDict)
         {
             comboBox.Items.Add(item);
         }
         lblEdit.Text = "Select a local/common name";
         Text         = "Provide a local name";
     }
     comboBox.ValueMember        = "Key";
     comboBox.DisplayMember      = "Value";
     comboBox.AutoCompleteMode   = AutoCompleteMode.SuggestAppend;
     comboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
     comboBox.Visible            = true;
     txtLocalName.Visible        = false;
     comboBox.Location           = txtLocalName.Location;
     comboBox.Size   = txtLocalName.Size;
     _editActionType = EditActionType.ActionTypeAdd;
 }
예제 #2
0
 public EditSelectedLocalNameForm(string selectedName, string nameGuid, CatchLocalNameSelectedForm parentForm)
 {
     InitializeComponent();
     _selectedName   = selectedName;
     _nameGuid       = nameGuid;
     _parentForm     = parentForm;
     _editActionType = EditActionType.ActionTypeEdit;
 }
예제 #3
0
        private static EditActionType getInvertedAction(EditActionType forwardActionType)
        {
            switch (forwardActionType)
            {
                case EditActionType.SetNodePosition: return EditActionType.SetNodePosition;
                case EditActionType.ReplaceGeometry: return EditActionType.ReplaceGeometry;
                case EditActionType.InsertNode: return EditActionType.DeleteNode;
                case EditActionType.DeleteNode: return EditActionType.InsertNode;
                case EditActionType.InsertPatch: return EditActionType.DeletePatch;
                case EditActionType.DeletePatch: return EditActionType.InsertPatch;
            }

            throw new ArgumentException("Unsupported value", "forwardActionType");
        }
예제 #4
0
        public EditAction(EditActionType actionType, EditActionParameters parameters, out EditAction inverseAction)
        {
            _actionType = actionType;
            _parameters = parameters;

            EditActionParameters invertedParameters = new EditActionParameters();

            inverseAction = null;

            if (actionType == EditActionType.SetNodePosition)
            {
                invertedParameters.PatchIndex = parameters.PatchIndex;
                invertedParameters.NodeIndex = parameters.NodeIndex;

                ICoordinate oldPosition = null;
                if (_parameters.OldGeometry is Polyline)
                    oldPosition = (ICoordinate)(_parameters.OldGeometry as Polyline).Paths[parameters.PatchIndex].Vertices[_parameters.NodeIndex].Clone();

                if (_parameters.OldGeometry is Polygon)
                    oldPosition = (ICoordinate)(_parameters.OldGeometry as Polygon).Contours[parameters.PatchIndex].Vertices[_parameters.NodeIndex].Clone();

                invertedParameters.NodePosition = oldPosition;
                
            }
            else if (actionType == EditActionType.InsertNode)
            {
                invertedParameters.PatchIndex = parameters.PatchIndex;
                invertedParameters.NodeIndex = parameters.NodeIndex;
            }
            else if (actionType == EditActionType.DeleteNode)
            {
                invertedParameters.PatchIndex = parameters.PatchIndex;
                invertedParameters.NodeIndex = parameters.NodeIndex;

                ICoordinate oldPosition = null;
                if (_parameters.OldGeometry is Polyline)
                    oldPosition = (ICoordinate)(_parameters.OldGeometry as Polyline).Paths[parameters.PatchIndex].Vertices[_parameters.NodeIndex].Clone();

                if (_parameters.OldGeometry is Polygon)
                    oldPosition = (ICoordinate)(_parameters.OldGeometry as Polygon).Contours[parameters.PatchIndex].Vertices[_parameters.NodeIndex].Clone();

                invertedParameters.NodePosition = oldPosition;
            }
            else if (actionType == EditActionType.InsertPatch)
            {
                invertedParameters.PatchIndex = parameters.PatchIndex;
            }
            else if (actionType == EditActionType.DeletePatch)
            {
                invertedParameters.PatchIndex = parameters.PatchIndex;

                List<ICoordinate> patchCoordinates = new List<ICoordinate>();
                if (_parameters.OldGeometry is Polyline)
                    foreach (ICoordinate c in (_parameters.OldGeometry as Polyline).Paths[parameters.PatchIndex].Vertices)
                        patchCoordinates.Add((ICoordinate)c.Clone());

                if (_parameters.OldGeometry is Polygon)
                    foreach (ICoordinate c in (_parameters.OldGeometry as Polygon).Contours[parameters.PatchIndex].Vertices)
                        patchCoordinates.Add((ICoordinate)c.Clone());

                invertedParameters.PatchCoordinates = patchCoordinates;
            }
            else if (actionType == EditActionType.ReplaceGeometry)
            {
                invertedParameters.NewGeometry = parameters.OldGeometry;
            }

            _parameters.OldGeometry = null;
            inverseAction = new EditAction(getInvertedAction(actionType), invertedParameters);
        }
예제 #5
0
 private EditAction(EditActionType actionType, EditActionParameters parameters)
 {
     _actionType = actionType;
     _parameters = parameters;
 }