Skip to content

Commit

Permalink
CreateAndEditGeometries scale mode fix (#1282)
Browse files Browse the repository at this point in the history
  • Loading branch information
williambohrmann3 authored Aug 11, 2023
1 parent a3dcffc commit 6e93c71
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
Padding="1"
Background="{AppThemeBinding Light={StaticResource White},
Dark={StaticResource Dark}}">
<CheckBox CheckedChanged="CheckBox_CheckedChanged" />
<CheckBox x:Name="UniformScaleCheckBox" CheckedChanged="CheckBox_CheckedChanged" />
<Label Text="Uniform Scale" VerticalOptions="Center" />
</HorizontalStackLayout>
<Button Grid.Row="4"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,9 @@ private void PointButton_Click(object sender, EventArgs e)
// Disable the combo box as this is always a vertex tool when creating a point.
ToolPicker.IsEnabled = false;

// Disable scale checkbox since points don't scale.
UniformScaleCheckBox.IsEnabled = false;

_geometryEditor.Start(GeometryType.Point);
}
}
Expand Down Expand Up @@ -192,16 +195,28 @@ private void ToolPicker_SelectedIndexChanged(object sender, EventArgs e)
PointButton.IsEnabled = MultipointButton.IsEnabled = !_geometryEditor.IsStarted && tool is VertexTool;
}

// Set the scale mode of the geometry editor.
// Set the scale mode for every geometry editor tool.
private void CheckBox_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
// Determine if shape tools should use uniform scaling.
GeometryEditorScaleMode shouldBeUniform = (sender as CheckBox).IsChecked ? GeometryEditorScaleMode.Uniform : GeometryEditorScaleMode.Stretch;
// Determine the newly selected scale mode.
GeometryEditorScaleMode scaleMode =
UniformScaleCheckBox.IsChecked ? GeometryEditorScaleMode.Uniform : GeometryEditorScaleMode.Stretch;

// Update all shape tools scaling options.
foreach (ShapeTool tool in _toolDictionary.Values.Where(v => v is ShapeTool))
// Update the scale mode for every tool.
foreach (GeometryEditorTool tool in _toolDictionary.Values)
{
tool.Configuration.ScaleMode = shouldBeUniform;
if (tool is FreehandTool freehandTool)
{
freehandTool.Configuration.ScaleMode = scaleMode;
}
else if (tool is VertexTool vertexTool)
{
vertexTool.Configuration.ScaleMode = scaleMode;
}
else if (tool is ShapeTool shapeTool)
{
shapeTool.Configuration.ScaleMode = scaleMode;
}
}
}

Expand Down Expand Up @@ -287,9 +302,14 @@ private async void MyMapView_GeoViewTapped(object sender, Esri.ArcGISRuntime.Mau

// Configure the UI depending on the geometry type.
GeometryType geometryType = _selectedGraphic.Geometry.GeometryType;
if (geometryType == GeometryType.Point || geometryType == GeometryType.Multipoint)
if (geometryType == GeometryType.Point)
{
ToolPicker.SelectedIndex = 0;
ToolComboBox.SelectedIndex = 0;
UniformScaleCheckBox.IsEnabled = false;
}
if (geometryType == GeometryType.Multipoint)
{
ToolComboBox.SelectedIndex = 0;
}
DisableOtherGeometryButtons(_geometryButtons[geometryType]);

Expand Down Expand Up @@ -341,6 +361,8 @@ private void ResetFromEditingSession()
PointButton.IsEnabled = MultipointButton.IsEnabled = _geometryEditor.Tool is VertexTool;
PolylineButton.IsEnabled = PolygonButton.IsEnabled = true;
ToolPicker.IsEnabled = true;

UniformScaleCheckBox.IsEnabled = true;
}

// Return the graphic style based on geometry type.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@
Grid.ColumnSpan="2"
Margin="5"
Background="White">
<CheckBox Margin="5"
<CheckBox x:Name="UniformScaleCheckBox"
Margin="5"
Checked="CheckBox_CheckedChanged"
Content="Uniform scale"
Unchecked="CheckBox_CheckedChanged" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@ private void PointButton_Click(object sender, RoutedEventArgs e)
// Disable the combo box as this is always a vertex tool when creating a point.
ToolComboBox.IsEnabled = false;

// Disable scale checkbox since points don't scale.
UniformScaleCheckBox.IsEnabled = false;

_geometryEditor.Start(GeometryType.Point);
}
}
Expand Down Expand Up @@ -199,17 +202,28 @@ private void ToolComboBox_SelectionChanged(object sender, SelectionChangedEventA
PointButton.IsEnabled = MultipointButton.IsEnabled = !_geometryEditor.IsStarted && _geometryEditor.Tool is VertexTool;
}

// Set the scale mode of the geometry editor.
// Set the scale mode for every geometry editor tool.
private void CheckBox_CheckedChanged(object sender, RoutedEventArgs e)
{
// Determine if shape tools should use uniform scaling.
GeometryEditorScaleMode shouldBeUniform =
(sender as CheckBox).IsChecked == true ? GeometryEditorScaleMode.Uniform : GeometryEditorScaleMode.Stretch;
// Determine the newly selected scale mode.
GeometryEditorScaleMode scaleMode =
UniformScaleCheckBox.IsChecked == true ? GeometryEditorScaleMode.Uniform : GeometryEditorScaleMode.Stretch;

// Update all shape tools scaling options.
foreach (ShapeTool tool in _toolDictionary.Values.Where(v => v is ShapeTool))
// Update the scale mode for every tool.
foreach (GeometryEditorTool tool in _toolDictionary.Values)
{
tool.Configuration.ScaleMode = shouldBeUniform;
if (tool is FreehandTool freehandTool)
{
freehandTool.Configuration.ScaleMode = scaleMode;
}
else if (tool is VertexTool vertexTool)
{
vertexTool.Configuration.ScaleMode = scaleMode;
}
else if (tool is ShapeTool shapeTool)
{
shapeTool.Configuration.ScaleMode = scaleMode;
}
}
}

Expand Down Expand Up @@ -294,7 +308,12 @@ private async void MyMapView_GeoViewTapped(object sender, GeoViewInputEventArgs

// Configure the UI depending on the geometry type.
GeometryType geometryType = _selectedGraphic.Geometry.GeometryType;
if (geometryType == GeometryType.Point || geometryType == GeometryType.Multipoint)
if (geometryType == GeometryType.Point)
{
ToolComboBox.SelectedIndex = 0;
UniformScaleCheckBox.IsEnabled = false;
}
if (geometryType == GeometryType.Multipoint)
{
ToolComboBox.SelectedIndex = 0;
}
Expand Down Expand Up @@ -348,6 +367,8 @@ private void ResetFromEditingSession()
PointButton.IsEnabled = MultipointButton.IsEnabled = _geometryEditor.Tool is VertexTool;
PolylineButton.IsEnabled = PolygonButton.IsEnabled = true;
ToolComboBox.IsEnabled = true;

UniformScaleCheckBox.IsEnabled = true;
}

// Return the graphic style based on geometry type.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@
Grid.ColumnSpan="2"
Padding="3"
Background="White">
<CheckBox Checked="CheckBox_CheckedChanged"
<CheckBox x:Name="UniformScaleCheckBox"
Checked="CheckBox_CheckedChanged"
Content="Uniform Scale"
Unchecked="CheckBox_CheckedChanged" />
</Border>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@ private void PointButton_Click(object sender, RoutedEventArgs e)
// Disable the combo box as this is always a vertex tool when creating a point.
ToolComboBox.IsEnabled = false;

// Disable scale checkbox since points don't scale.
UniformScaleCheckBox.IsEnabled = false;

_geometryEditor.Start(GeometryType.Point);
}
}
Expand Down Expand Up @@ -199,17 +202,28 @@ private void ToolComboBox_SelectionChanged(object sender, SelectionChangedEventA
PointButton.IsEnabled = MultipointButton.IsEnabled = !_geometryEditor.IsStarted && _geometryEditor.Tool is VertexTool;
}

// Set the scale mode of the geometry editor.
// Set the scale mode for every geometry editor tool.
private void CheckBox_CheckedChanged(object sender, RoutedEventArgs e)
{
// Determine if shape tools should use uniform scaling.
GeometryEditorScaleMode shouldBeUniform =
(sender as CheckBox).IsChecked == true ? GeometryEditorScaleMode.Uniform : GeometryEditorScaleMode.Stretch;
// Determine the newly selected scale mode.
GeometryEditorScaleMode scaleMode =
UniformScaleCheckBox.IsChecked == true ? GeometryEditorScaleMode.Uniform : GeometryEditorScaleMode.Stretch;

// Update all shape tools scaling options.
foreach (ShapeTool tool in _toolDictionary.Values.Where(v => v is ShapeTool))
// Update the scale mode for every tool.
foreach (GeometryEditorTool tool in _toolDictionary.Values)
{
tool.Configuration.ScaleMode = shouldBeUniform;
if (tool is FreehandTool freehandTool)
{
freehandTool.Configuration.ScaleMode = scaleMode;
}
else if (tool is VertexTool vertexTool)
{
vertexTool.Configuration.ScaleMode = scaleMode;
}
else if (tool is ShapeTool shapeTool)
{
shapeTool.Configuration.ScaleMode = scaleMode;
}
}
}

Expand Down Expand Up @@ -295,7 +309,12 @@ private async void MyMapView_GeoViewTapped(object sender, GeoViewInputEventArgs

// Configure the UI depending on the geometry type.
GeometryType geometryType = _selectedGraphic.Geometry.GeometryType;
if (geometryType == GeometryType.Point || geometryType == GeometryType.Multipoint)
if (geometryType == GeometryType.Point)
{
ToolComboBox.SelectedIndex = 0;
UniformScaleCheckBox.IsEnabled = false;
}
if (geometryType == GeometryType.Multipoint)
{
ToolComboBox.SelectedIndex = 0;
}
Expand Down Expand Up @@ -349,6 +368,8 @@ private void ResetFromEditingSession()
PointButton.IsEnabled = MultipointButton.IsEnabled = _geometryEditor.Tool is VertexTool;
PolylineButton.IsEnabled = PolygonButton.IsEnabled = true;
ToolComboBox.IsEnabled = true;

UniformScaleCheckBox.IsEnabled = true;
}

// Return the graphic style based on geometry type.
Expand Down

0 comments on commit 6e93c71

Please sign in to comment.