diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml
index 0b84aba305..517303a880 100644
--- a/.github/workflows/CD.yml
+++ b/.github/workflows/CD.yml
@@ -35,13 +35,13 @@ jobs:
- name: create version environment variable - alpha
if: ${{ github.event.inputs.revision != 0 }}
run: |
- echo "gingertag=20${{ github.event.inputs.major}}.${{ github.event.inputs.minor}}-Alpha\ ${{github.event.inputs.build}}.${{ github.event.inputs.revision}}" >> $GITHUB_ENV
+ echo "gingertag=20${{ github.event.inputs.major}}.${{ github.event.inputs.minor}}-Alpha.${{github.event.inputs.build}}.${{ github.event.inputs.revision}}" >> $GITHUB_ENV
echo "gingernumber=${{ github.event.inputs.major}}.${{ github.event.inputs.minor}}.${{ github.event.inputs.build}}.${{ github.event.inputs.revision}}" >> $GITHUB_ENV
- name: create version environment variable - BETA
if: ${{ (github.event.inputs.build != 0) && (github.event.inputs.revision == 0 )}}
run: |
- echo "gingertag=20${{ github.event.inputs.major}}.${{ github.event.inputs.minor}}-Beta\ ${{ github.event.inputs.build}}" >> $GITHUB_ENV
+ echo "gingertag=20${{ github.event.inputs.major}}.${{ github.event.inputs.minor}}-Beta.${{ github.event.inputs.build}}" >> $GITHUB_ENV
echo "gingernumber=${{ github.event.inputs.major}}.${{ github.event.inputs.minor}}.${{ github.event.inputs.build}}.${{ github.event.inputs.revision}}" >> $GITHUB_ENV
- name: create version environment variable - Release
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 1b47e7447d..e044fb736b 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -4,12 +4,6 @@ on:
workflow_dispatch:
workflow_call:
- pull_request:
- branches:
- - master
- - Features/Linux-Migration
- - Releases/*
- - Releases/*/*
jobs:
# Codacy:
diff --git a/.github/workflows/Deploy-2.yml b/.github/workflows/Deploy-2.yml
index 34e3d7481e..47c20086bb 100644
--- a/.github/workflows/Deploy-2.yml
+++ b/.github/workflows/Deploy-2.yml
@@ -57,9 +57,9 @@ jobs:
# ------------------------------------------------------------------------------------------------------
# Create new Release for ginger
# ------------------------------------------------------------------------------------------------------
- - name: Create Github new Release
+ - name: Create Github Release
id: create-new-release
- uses: actions/create-release@v1
+ uses: GongT/actions-recreate-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
diff --git a/.github/workflows/LinuxBuild.yml b/.github/workflows/LinuxBuild.yml
index 6ffa1355ba..a6bfb29aca 100644
--- a/.github/workflows/LinuxBuild.yml
+++ b/.github/workflows/LinuxBuild.yml
@@ -1,12 +1,12 @@
name: Ginger Linux Build
on:
- pull_request:
- branches:
- - master
- - Features/Linux-Migration
- - Releases/*
- - Releases/*/*
+ # pull_request:
+ # branches:
+ # - master
+ # - Features/Linux-Migration
+ # - Releases/*
+ # - Releases/*/*
workflow_dispatch:
diff --git a/.github/workflows/MacBuild.yml b/.github/workflows/MacBuild.yml
index 393dfd0cbb..8bbbac8126 100644
--- a/.github/workflows/MacBuild.yml
+++ b/.github/workflows/MacBuild.yml
@@ -1,12 +1,12 @@
name: Ginger Mac Build
on:
- pull_request:
- branches:
- - master
- - Features/Linux-Migration
- - Releases/*
- - Releases/*/*
+ # pull_request:
+ # branches:
+ # - master
+ # - Features/Linux-Migration
+ # - Releases/*
+ # - Releases/*/*
workflow_dispatch:
@@ -62,4 +62,4 @@ jobs:
with:
name: Ginger MacOS UnitTests # Name of the check run which will be created
path: "**/*.trx" # Path to test results
- reporter: dotnet-trx # Format of test results
\ No newline at end of file
+ reporter: dotnet-trx # Format of test results
diff --git a/.github/workflows/Release-2.yml b/.github/workflows/Release-2.yml
index 0006dc555a..2069ee449b 100644
--- a/.github/workflows/Release-2.yml
+++ b/.github/workflows/Release-2.yml
@@ -33,8 +33,12 @@ jobs:
- name: Create Directory for GingerRuntime
run: |
- mv ./Documents/ReadMe.txt ./Runtime/ReadMe.txt
- mv ./Documents/gingerInstall.sh ./Runtime/gingerInstall.sh
+ mv ./Documents/ReadMe.txt ./Runtime/ReadMe.txt
+ mv ./Documents/gingerInstall.sh ./Runtime/gingerInstall.sh
+ chmod +x ./Runtime/gingerInstall.sh
+ sudo apt install dos2unix
+ dos2unix -b ./Runtime/ReadMe.txt
+ dos2unix -b ./Runtime/gingerInstall.sh
- uses: sibiraj-s/action-archiver@v1
with:
diff --git a/.github/workflows/WindowsBuild.yml b/.github/workflows/WindowsBuild.yml
index 71c53c6bc6..f858852973 100644
--- a/.github/workflows/WindowsBuild.yml
+++ b/.github/workflows/WindowsBuild.yml
@@ -1,12 +1,12 @@
name: Ginger Windows Build
on:
- pull_request:
- branches:
- - master
- - Features/Linux-Migration
- - Releases/*
- - Releases/*/*
+ # pull_request:
+ # branches:
+ # - master
+ # - Features/Linux-Migration
+ # - Releases/*
+ # - Releases/*/*
workflow_dispatch:
@@ -114,4 +114,4 @@ jobs:
# sealightsToken: "$(SLAGENTTOKEN)"
# SealightsBuildSessionId : $(Build.ArtifactStagingDirectory)\SealightsBuildSessionId.txt
-
\ No newline at end of file
+
diff --git a/CLITestsGithub.sh b/CLITestsGithub.sh
index dc82adbe5c..d98e7ce61a 100644
--- a/CLITestsGithub.sh
+++ b/CLITestsGithub.sh
@@ -17,7 +17,7 @@ echo "**************************************************************************
echo "run simple solution"
echo "******************************************************************************************************************************"
-dotnet GingerRuntime.dll run -s "/home/runner/work/Ginger/Ginger/Ginger/GingerCoreNETUnitTest/TestResources/Solutions/CLI" -e "Default" -r "Default Run Set"
+dotnet GingerRuntime.dll run -s "/home/runner/work/Ginger/Ginger/Ginger/GingerCoreNETUnitTest/TestResources/Solutions/CLI" -e "Default" -r "Default Run Set" -v "debug"
# echo "******************************************************************************************************************************"
diff --git a/Ginger/Ginger/ALM/ALMConnectionPage.xaml b/Ginger/Ginger/ALM/ALMConnectionPage.xaml
index 428642a3ef..010ddc7d98 100644
--- a/Ginger/Ginger/ALM/ALMConnectionPage.xaml
+++ b/Ginger/Ginger/ALM/ALMConnectionPage.xaml
@@ -10,10 +10,10 @@
Title="ALM Connection Settings">
-
+
-
+
@@ -49,7 +49,7 @@
-
+
@@ -95,7 +95,7 @@
-
+
@@ -108,17 +108,17 @@
-
+
-
+
-
+
diff --git a/Ginger/Ginger/ALM/JIRA/JiraImportSetByIdPage.xaml b/Ginger/Ginger/ALM/JIRA/JiraImportSetByIdPage.xaml
index f63f8617de..3c094d6052 100644
--- a/Ginger/Ginger/ALM/JIRA/JiraImportSetByIdPage.xaml
+++ b/Ginger/Ginger/ALM/JIRA/JiraImportSetByIdPage.xaml
@@ -10,7 +10,7 @@
Title="Jira Import Test Set By Id">
-
+
diff --git a/Ginger/Ginger/ALM/JIRA/JiraZephyrCyclesExplorerPage.xaml b/Ginger/Ginger/ALM/JIRA/JiraZephyrCyclesExplorerPage.xaml
index 92dc0c8442..c589d236e0 100644
--- a/Ginger/Ginger/ALM/JIRA/JiraZephyrCyclesExplorerPage.xaml
+++ b/Ginger/Ginger/ALM/JIRA/JiraZephyrCyclesExplorerPage.xaml
@@ -10,7 +10,7 @@
Height="600" Width="700"
Title="">
-
+
@@ -39,7 +39,7 @@
- 'BusinessFlow\aaa\ccc\vvv'
+ 'BusinessFlow\aaa\ccc\vvv'
diff --git a/Ginger/Ginger/ALM/MapToALMWizard/TestCasesMappingPage.xaml b/Ginger/Ginger/ALM/MapToALMWizard/TestCasesMappingPage.xaml
index 9ae0fe4a31..aa2c10e711 100644
--- a/Ginger/Ginger/ALM/MapToALMWizard/TestCasesMappingPage.xaml
+++ b/Ginger/Ginger/ALM/MapToALMWizard/TestCasesMappingPage.xaml
@@ -11,7 +11,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="TestCasesMappingPage">
-
+
diff --git a/Ginger/Ginger/ALM/MapToALMWizard/TestSetMappingPage.xaml b/Ginger/Ginger/ALM/MapToALMWizard/TestSetMappingPage.xaml
index d0715a6d86..64b341dfd9 100644
--- a/Ginger/Ginger/ALM/MapToALMWizard/TestSetMappingPage.xaml
+++ b/Ginger/Ginger/ALM/MapToALMWizard/TestSetMappingPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="TestSetMappingPage">
-
+
diff --git a/Ginger/Ginger/ALM/QC/QCManagerReport/QCManagerReportPage.xaml b/Ginger/Ginger/ALM/QC/QCManagerReport/QCManagerReportPage.xaml
index dd064db5da..816a992139 100644
--- a/Ginger/Ginger/ALM/QC/QCManagerReport/QCManagerReportPage.xaml
+++ b/Ginger/Ginger/ALM/QC/QCManagerReport/QCManagerReportPage.xaml
@@ -20,7 +20,7 @@
-
+
@@ -36,16 +36,16 @@
-
+
-
+
-
+
diff --git a/Ginger/Ginger/ALM/QC/QCTestLabExplorerPage.xaml b/Ginger/Ginger/ALM/QC/QCTestLabExplorerPage.xaml
index fdade60d1c..5bfb78b2a1 100644
--- a/Ginger/Ginger/ALM/QC/QCTestLabExplorerPage.xaml
+++ b/Ginger/Ginger/ALM/QC/QCTestLabExplorerPage.xaml
@@ -10,7 +10,7 @@
Height="600" Width="700"
Title="">
-
+
@@ -39,7 +39,7 @@
- 'BusinessFlow\aaa\ccc\vvv'
+ 'BusinessFlow\aaa\ccc\vvv'
diff --git a/Ginger/Ginger/ALM/QC/QCTestPlanExplorerPage.xaml b/Ginger/Ginger/ALM/QC/QCTestPlanExplorerPage.xaml
index 9866b3e4ad..bdbe2091f5 100644
--- a/Ginger/Ginger/ALM/QC/QCTestPlanExplorerPage.xaml
+++ b/Ginger/Ginger/ALM/QC/QCTestPlanExplorerPage.xaml
@@ -9,7 +9,7 @@
mc:Ignorable="d"
Height="600" Width="700" Title="QC/ALM Test Plan">
-
+
diff --git a/Ginger/Ginger/ALM/Qtest/QtestCyclesExplorerPage.xaml b/Ginger/Ginger/ALM/Qtest/QtestCyclesExplorerPage.xaml
index a4faaf2680..813e9b83f8 100644
--- a/Ginger/Ginger/ALM/Qtest/QtestCyclesExplorerPage.xaml
+++ b/Ginger/Ginger/ALM/Qtest/QtestCyclesExplorerPage.xaml
@@ -10,7 +10,7 @@
Height="600" Width="700"
Title="">
-
+
@@ -39,7 +39,7 @@
- 'BusinessFlow\aaa\ccc\vvv'
+ 'BusinessFlow\aaa\ccc\vvv'
diff --git a/Ginger/Ginger/ALM/Qtest/QtestModuleExplorerPage.xaml b/Ginger/Ginger/ALM/Qtest/QtestModuleExplorerPage.xaml
index a3e2f1ab3e..285fb23f33 100644
--- a/Ginger/Ginger/ALM/Qtest/QtestModuleExplorerPage.xaml
+++ b/Ginger/Ginger/ALM/Qtest/QtestModuleExplorerPage.xaml
@@ -9,7 +9,7 @@
mc:Ignorable="d"
Height="600" Width="700" Title="Qtest/ALM Test Plan">
-
+
diff --git a/Ginger/Ginger/ALM/RQM/RQMImportPlanByIdPage.xaml b/Ginger/Ginger/ALM/RQM/RQMImportPlanByIdPage.xaml
index 0807d97497..39df02742c 100644
--- a/Ginger/Ginger/ALM/RQM/RQMImportPlanByIdPage.xaml
+++ b/Ginger/Ginger/ALM/RQM/RQMImportPlanByIdPage.xaml
@@ -10,7 +10,7 @@
Title="RQM Import Test Plan By Id">
-
+
diff --git a/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntPlanningExplorerPage.xaml b/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntPlanningExplorerPage.xaml
index 5f0f23285a..970ead9382 100644
--- a/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntPlanningExplorerPage.xaml
+++ b/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntPlanningExplorerPage.xaml
@@ -9,7 +9,7 @@
Height="600" Width="700"
Title="">
-
+
@@ -38,7 +38,7 @@
- 'BusinessFlow\aaa\ccc\vvv'
+ 'BusinessFlow\aaa\ccc\vvv'
diff --git a/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntRepositoryExplorerPage.xaml b/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntRepositoryExplorerPage.xaml
index da17b745f6..5c11e40102 100644
--- a/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntRepositoryExplorerPage.xaml
+++ b/Ginger/Ginger/ALM/ZephyrEnt/ZephyrEntRepositoryExplorerPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Height="600" Width="700" Title="ALM Test Repository">
-
+
diff --git a/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml b/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml
index 1f35d4e6ee..5a88e350c1 100644
--- a/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml
+++ b/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml
@@ -11,7 +11,7 @@
Title="ActionConverterPage">
-
+
@@ -36,7 +36,7 @@
+ BorderThickness="1" BorderBrush="{StaticResource $PrimaryColor_Black}" >
-
+
@@ -69,7 +69,7 @@
-
+
@@ -79,7 +79,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml.cs b/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml.cs
index 472591540c..eec74820aa 100644
--- a/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml.cs
+++ b/Ginger/Ginger/Actions/ActionConversion/ActionConverterPage.xaml.cs
@@ -268,7 +268,7 @@ private void btnConvertAction_Click(object sender, RoutedEventArgs e)
// by default, set the old activity as inactive
oldActivity.Active = false;
- // if the user has not chosen any target application in the combobox then, we set it as empty
+ // if the user has not chosen any target application in the combo box then, we set it as empty
if ((Boolean)chkDefaultTargetApp.IsChecked && cmbTargetApp.SelectedIndex != -1)
{
newActivity.TargetApplication = cmbTargetApp.SelectedValue.ToString();
@@ -307,7 +307,7 @@ private void btnConvertAction_Click(object sender, RoutedEventArgs e)
}
}
- // if the user has not chosen any target application in the combobox then, we set it as empty
+ // if the user has not chosen any target application in the combo box then, we set it as empty
if ((Boolean)chkDefaultTargetApp.IsChecked && cmbTargetApp.SelectedIndex != -1)
{
activity.TargetApplication = cmbTargetApp.SelectedValue.ToString();
diff --git a/Ginger/Ginger/ConflictResolve/ConflictResolve.cs b/Ginger/Ginger/Actions/ActionConversion/BooleanToEnabledConverter.cs
similarity index 50%
rename from Ginger/Ginger/ConflictResolve/ConflictResolve.cs
rename to Ginger/Ginger/Actions/ActionConversion/BooleanToEnabledConverter.cs
index 9ec9292b5a..429d82f22e 100644
--- a/Ginger/Ginger/ConflictResolve/ConflictResolve.cs
+++ b/Ginger/Ginger/Actions/ActionConversion/BooleanToEnabledConverter.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
/*
Copyright © 2014-2023 European Support Limited
@@ -16,32 +16,27 @@ limitations under the License.
*/
#endregion
-using Amdocs.Ginger.Common;
+using System;
+using System.Windows;
+using System.Windows.Data;
-namespace Ginger.ConflictResolve
+namespace Ginger.Actions.ActionConversion
{
-
- public class ConflictResolve
+ public class BooleanToEnabledConverter : IValueConverter
{
- public enum eResolveOperations
- {
- [EnumValueDescription("Accept Server Changes")]
- AcceptServer,
- [EnumValueDescription("Keep Local Changes")]
- KeepLocal
- }
- public string ConflictPath { get; set; }
-
- public string RelativeConflictPath
+ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
- get
+ if (value is bool isChecked)
{
- return amdocs.ginger.GingerCoreNET.WorkSpace.Instance.SolutionRepository.ConvertFullPathToBeRelative(ConflictPath);
+ return isChecked;
}
- }
- public string ItemName { get; set; }
+ return DependencyProperty.UnsetValue;
+ }
- public eResolveOperations resolveOperations { get; set; }
+ public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/Ginger/Ginger/Actions/ActionConversion/ConversionConfigurationWzardPage.xaml b/Ginger/Ginger/Actions/ActionConversion/ConversionConfigurationWzardPage.xaml
index 0462ccd2a4..0e0e3e564b 100644
--- a/Ginger/Ginger/Actions/ActionConversion/ConversionConfigurationWzardPage.xaml
+++ b/Ginger/Ginger/Actions/ActionConversion/ConversionConfigurationWzardPage.xaml
@@ -11,7 +11,7 @@
d:DesignHeight="450" d:DesignWidth="700"
Title="ConversionConfigurationWzardPage">
-
+
@@ -50,7 +50,7 @@
Style="{StaticResource $MenuExpanderTransparentStyle}" BorderBrush="Transparent" Expanded="ControlsViewsExpander_Expanded"
Collapsed="ControlsViewsExpander_Collapsed" Visibility="{Binding ElementName=xNewActivityRadioBtn, Path=IsChecked, Converter={StaticResource visibilityConverter}}" >
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionConversion/ConversionStatusForgroundColorConverter.cs b/Ginger/Ginger/Actions/ActionConversion/ConversionStatusForgroundColorConverter.cs
index 7e4c468c17..73fc419386 100644
--- a/Ginger/Ginger/Actions/ActionConversion/ConversionStatusForgroundColorConverter.cs
+++ b/Ginger/Ginger/Actions/ActionConversion/ConversionStatusForgroundColorConverter.cs
@@ -36,7 +36,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn
return App.Current.TryFindResource("$PassedStatusColor") as SolidColorBrush; //green
case Amdocs.Ginger.Common.Enums.eImageType.Running:
- return App.Current.TryFindResource("$Color_DarkBlue") as SolidColorBrush;//blue
+ return App.Current.TryFindResource("$PrimaryColor_Black") as SolidColorBrush;//blue
case Amdocs.Ginger.Common.Enums.eImageType.Pending:
return App.Current.TryFindResource("$PendingStatusColor") as SolidColorBrush;//orange
diff --git a/Ginger/Ginger/Actions/ActionConversion/ConversionStatusReportPage.xaml b/Ginger/Ginger/Actions/ActionConversion/ConversionStatusReportPage.xaml
index a63f93d525..82db1ee47f 100644
--- a/Ginger/Ginger/Actions/ActionConversion/ConversionStatusReportPage.xaml
+++ b/Ginger/Ginger/Actions/ActionConversion/ConversionStatusReportPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="450" d:DesignWidth="700"
Title="ConversionStatusReportPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionConversion/EnumValueToBooleanConverter.cs b/Ginger/Ginger/Actions/ActionConversion/EnumValueToBooleanConverter.cs
new file mode 100644
index 0000000000..3d130aef2f
--- /dev/null
+++ b/Ginger/Ginger/Actions/ActionConversion/EnumValueToBooleanConverter.cs
@@ -0,0 +1,50 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using System;
+using System.Windows.Data;
+
+namespace Ginger.Actions.ActionConversion
+{
+ public class EnumValueToBooleanConverter : IValueConverter where TEnum : struct, Enum
+ {
+ public TEnum ValueToCheck { get; set; }
+ public bool IsCheckEqual { get; set; }
+ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ if (Enum.TryParse(value?.ToString(), out TEnum enumValue))
+ {
+ if (IsCheckEqual)
+ {
+ return enumValue.Equals(ValueToCheck);
+ }
+ else
+ {
+ return !enumValue.Equals(ValueToCheck);
+
+ }
+ }
+ return false;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Ginger/Ginger/Actions/ActionConversion/MultiBooleanToVisibilityConverter.cs b/Ginger/Ginger/Actions/ActionConversion/MultiBooleanToVisibilityConverter.cs
new file mode 100644
index 0000000000..6e3f16e119
--- /dev/null
+++ b/Ginger/Ginger/Actions/ActionConversion/MultiBooleanToVisibilityConverter.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Data;
+
+namespace Ginger.Actions.ActionConversion
+{
+ public sealed class MultiBooleanToVisibilityConverter : IMultiValueConverter
+ {
+ ///
+ /// Converts the target type visibility to visible if one of the values is true
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+ {
+ return values.OfType().Any(b => b) ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Ginger/Ginger/Actions/ActionConversion/SelectActionWzardPage.xaml b/Ginger/Ginger/Actions/ActionConversion/SelectActionWzardPage.xaml
index d5a56d058f..fc4db89ae2 100644
--- a/Ginger/Ginger/Actions/ActionConversion/SelectActionWzardPage.xaml
+++ b/Ginger/Ginger/Actions/ActionConversion/SelectActionWzardPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="450" d:DesignWidth="700"
Title="SelectActionWzardPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionConversion/SelectActivityWzardPage.xaml b/Ginger/Ginger/Actions/ActionConversion/SelectActivityWzardPage.xaml
index 88ffe75d58..c7f746328c 100644
--- a/Ginger/Ginger/Actions/ActionConversion/SelectActivityWzardPage.xaml
+++ b/Ginger/Ginger/Actions/ActionConversion/SelectActivityWzardPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="450" d:DesignWidth="700"
Title="SelectActivityWzardPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionConversion/SelectBusinessFlowWzardPage.xaml b/Ginger/Ginger/Actions/ActionConversion/SelectBusinessFlowWzardPage.xaml
index 452decc326..f1137297bc 100644
--- a/Ginger/Ginger/Actions/ActionConversion/SelectBusinessFlowWzardPage.xaml
+++ b/Ginger/Ginger/Actions/ActionConversion/SelectBusinessFlowWzardPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="450" d:DesignWidth="700"
Title="SelectBusinessFlowWzardPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPage.xaml
index 4e070fa063..66bd11f0fc 100644
--- a/Ginger/Ginger/Actions/ActionEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPage.xaml
@@ -14,7 +14,7 @@
d:DesignWidth="1000"
d:DesignHeight="800">
-
+
@@ -53,7 +53,7 @@
-
+
@@ -63,7 +63,7 @@
-
+
@@ -99,7 +99,7 @@
-
+
@@ -145,7 +145,7 @@
-
+
@@ -197,7 +197,7 @@
-
+
@@ -209,7 +209,7 @@
-
+
@@ -254,7 +254,7 @@
-
+
@@ -314,7 +314,7 @@
-
+
@@ -334,7 +334,7 @@
-
+
@@ -355,7 +355,7 @@
-->
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActAgentManipulationEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActAgentManipulationEditPage.xaml
index 47cda142b4..8dcdb6e046 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActAgentManipulationEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActAgentManipulationEditPage.xaml
@@ -8,7 +8,7 @@
xmlns:UserControlsLib="clr-namespace:Ginger.UserControlsLib"
Title="ActAgentManipulationEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActBrowserElementEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActBrowserElementEditPage.xaml
index dd69f59bbe..55da3ea940 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActBrowserElementEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActBrowserElementEditPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="800"
Title="ActBrowserElementEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml
index aedec7d276..08ab53de2c 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActConsoleCommandEditPage.xaml
@@ -7,14 +7,14 @@
d:DesignHeight="500" d:DesignWidth="600"
Title="ActConsoleCommandEditPage">
-
+
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActDataSourcePage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActDataSourcePage.xaml
index c5881cd22f..c7fb9eb40a 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActDataSourcePage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActDataSourcePage.xaml
@@ -8,7 +8,7 @@
mc:Ignorable="d" d:DesignWidth="600" Height="1040"
Title="DataSource Expression Editor" >
-
+
@@ -28,7 +28,7 @@
-
+
@@ -40,16 +40,16 @@
-
+
-
+
-
+
@@ -74,7 +74,7 @@
-
+
@@ -100,7 +100,7 @@
-
+
@@ -112,10 +112,10 @@
-
+
-
+
@@ -148,7 +148,7 @@
-
+
@@ -168,7 +168,7 @@
-
+
@@ -180,7 +180,7 @@
-
+
@@ -211,7 +211,7 @@
-
+
@@ -220,7 +220,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActDemoPageEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActDemoPageEditPage.xaml
index 047f0fcd4a..4180f4606a 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActDemoPageEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActDemoPageEditPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="650" d:DesignWidth="700"
Title="Data Structure Example">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActDescriptionPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActDescriptionPage.xaml
index 7a87cbe181..6605c1e855 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActDescriptionPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActDescriptionPage.xaml
@@ -11,13 +11,13 @@
-
+
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml
index f37d79ae26..31b94a5ae6 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="380" d:DesignWidth="700"
Title="ActExcelEditPage" >
-
+
@@ -21,7 +21,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
Select All Rows
@@ -59,16 +59,16 @@
-
+
-
+
-
+
@@ -78,7 +78,7 @@
-
+
*
Viewing Excel Data (View Data / View Filtered Data) will display ATMOST 50 ROWS
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml.cs b/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml.cs
index a9f926a801..fa6b8613a1 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml.cs
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActExcelEditPage.xaml.cs
@@ -77,7 +77,7 @@ public void Bind()
}
EnableSheetNameComboBox();
- // populate Sheet dropdown
+ // populate Sheet drop down
if (!string.IsNullOrEmpty(mAct.ExcelFileName))
{
FillSheetCombo();
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml
index e03b35eecb..d696666325 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="250" d:DesignWidth="700"
Title="ActFileOperationEditPage" >
-
+
@@ -19,7 +19,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml.cs b/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml.cs
index f0d5d6dd08..7519388dff 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml.cs
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActFileOperationEditPage.xaml.cs
@@ -54,7 +54,7 @@ private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
TextFileNameTextBox.ValueTextBox.Text = fileName;
}
- if (General.SetupBrowseFolder(new System.Windows.Forms.FolderBrowserDialog()) is string folderName)
+ else if (General.SetupBrowseFolder(new System.Windows.Forms.FolderBrowserDialog()) is string folderName)
{
TextFileNameTextBox.ValueTextBox.Text = folderName;
}
@@ -66,7 +66,7 @@ private void FileActionMode_SelectionChanged(object sender, SelectionChangedEven
}
///
- /// Update browsertype according to selected file action. Some needs file browser and some needs folder browser
+ /// Update browser type according to selected file action. Some needs file browser and some needs folder browser
///
private void UpdateBrowserTypes()
{
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActFileTransferEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActFileTransferEditPage.xaml
index 996a5298bb..b5518d3631 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActFileTransferEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActFileTransferEditPage.xaml
@@ -29,7 +29,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActGenElementEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActGenElementEditPage.xaml
index a1c30ae160..3396291914 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActGenElementEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActGenElementEditPage.xaml
@@ -12,7 +12,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActHandleBrowserAlert.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActHandleBrowserAlert.xaml
index 0dbe3b2413..9fcadcbb63 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActHandleBrowserAlert.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActHandleBrowserAlert.xaml
@@ -10,7 +10,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActLaunchJavaWSApplicationEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActLaunchJavaWSApplicationEditPage.xaml
index 9ddc37e494..f0e0fa9cf0 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActLaunchJavaWSApplicationEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActLaunchJavaWSApplicationEditPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="800" d:DesignWidth="600"
Title="ActLaunchJavaWSApplicationEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActLogActionPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActLogActionPage.xaml
index d45475ec02..c544234269 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActLogActionPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActLogActionPage.xaml
@@ -19,7 +19,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActMenuItemEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActMenuItemEditPage.xaml
index 7839d22122..5678cffea7 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActMenuItemEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActMenuItemEditPage.xaml
@@ -8,9 +8,9 @@
Title="ActSmartSyncEditPage">
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActOcrEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActOcrEditPage.xaml
index 2679d03032..92975ee2e3 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActOcrEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActOcrEditPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="556.717" d:DesignWidth="728.358"
Title="ActOcrEditPage" >
-
+
@@ -20,7 +20,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
@@ -71,7 +71,7 @@
-
+
@@ -89,7 +89,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActPWLEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActPWLEditPage.xaml
index 8a79660c91..a3b1bc24ed 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActPWLEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActPWLEditPage.xaml
@@ -10,9 +10,9 @@
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActReadTextFileEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActReadTextFileEditPage.xaml
index 2b129a82ac..16a5046aaf 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActReadTextFileEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActReadTextFileEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="350" d:DesignWidth="700"
Title="ActReadTextFileEditPage" >
-
+
@@ -22,12 +22,12 @@
-
+
-
+
@@ -42,7 +42,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml
index f335d8fb75..880cfe2a7b 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml
@@ -13,7 +13,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml.cs b/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml.cs
index f3c860369b..3ebb217963 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml.cs
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActScreenShotEditPage.xaml.cs
@@ -20,6 +20,7 @@ limitations under the License.
using Amdocs.Ginger.Common;
using GingerCore.Actions;
using System;
+using System.IO;
using System.Windows;
using System.Windows.Controls;
@@ -54,8 +55,8 @@ private void BrowseButton_Click(object sender, RoutedEventArgs e)
if (FileName.Contains(SolutionFolder))
{
FileName = FileName.Replace(SolutionFolder, @"~\");
- }
- mAct.SaveToFileName = FileName;
+ }
+ mAct.SaveToFileName = FileName;
}
}
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActSendKeysEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActSendKeysEditPage.xaml
index daed50fdfa..240f3e8bb1 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActSendKeysEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActSendKeysEditPage.xaml
@@ -24,7 +24,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActSetVariableValuePage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActSetVariableValuePage.xaml
index 508dafe9ca..5bf64b9166 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActSetVariableValuePage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActSetVariableValuePage.xaml
@@ -15,19 +15,19 @@
-
+
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActSmartSyncEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActSmartSyncEditPage.xaml
index 285963947a..65ac824dd7 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActSmartSyncEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActSmartSyncEditPage.xaml
@@ -8,7 +8,7 @@
Title="ActSmartSyncEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActTableEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActTableEditPage.xaml
index 66c2c883bb..e335f0e4f2 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActTableEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActTableEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="400" d:DesignWidth="800"
Title="ActTableEditPage">
-
+
@@ -25,10 +25,10 @@
-
+
-
+
@@ -41,7 +41,7 @@
-
+
@@ -57,10 +57,10 @@
-
-
-
-
+
+
+
+
@@ -71,7 +71,7 @@
-
+
@@ -80,7 +80,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/ActUIElementEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/ActUIElementEditPage.xaml
index 5865c3dfe8..ce7a7cfbd0 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/ActUIElementEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/ActUIElementEditPage.xaml
@@ -7,7 +7,7 @@
mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="800"
Title="ActUIElementEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/Locators/LocateByPOMElementPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/Locators/LocateByPOMElementPage.xaml
index 10529c523d..7e617fbaa8 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/Locators/LocateByPOMElementPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/Locators/LocateByPOMElementPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="30" d:DesignWidth="1035"
Title="LocateByPOMElementPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementDragAndDropEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementDragAndDropEditPage.xaml
index 74d6021e27..a8a19ab55b 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementDragAndDropEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementDragAndDropEditPage.xaml
@@ -23,13 +23,13 @@
-
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementJavaPlatformPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementJavaPlatformPage.xaml
index b2b41ca9a1..04b49f000e 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementJavaPlatformPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementJavaPlatformPage.xaml
@@ -14,7 +14,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSelectAndValidate.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSelectAndValidate.xaml
index 28e8c8127b..ac2f2a5a0b 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSelectAndValidate.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSelectAndValidate.xaml
@@ -22,7 +22,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSendKeysAndValidate.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSendKeysAndValidate.xaml
index d5993d031f..0b12d1bdff 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSendKeysAndValidate.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementSendKeysAndValidate.xaml
@@ -22,7 +22,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementTableConfigPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementTableConfigPage.xaml
index db41843f10..e97a1f55ed 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementTableConfigPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActUIElementLib/UIElementTableConfigPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="430" d:DesignWidth="820"
Title="TableActionConfigPage">
-
+
@@ -40,17 +40,17 @@
+ Background="{StaticResource $BackgroundColor_White}" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0">Sub-element Type
+ Background="{StaticResource $BackgroundColor_White}" VerticalAlignment="Center" Grid.Row="1" Grid.Column="0">Sub Element Action
-
@@ -58,7 +58,7 @@
-
+
@@ -71,7 +71,7 @@
-
+
@@ -111,14 +111,14 @@
-
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ActValidationEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ActValidationEditPage.xaml
index bc78188327..0e016cf6c4 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ActValidationEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ActValidationEditPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="600" d:DesignWidth="1000"
Title="ActValdiationEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/JSON/ActJSONValidateTagsEditPage .xaml b/Ginger/Ginger/Actions/ActionEditPages/JSON/ActJSONValidateTagsEditPage .xaml
index 64acd225e7..17ea593ccb 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/JSON/ActJSONValidateTagsEditPage .xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/JSON/ActJSONValidateTagsEditPage .xaml
@@ -11,7 +11,7 @@
Title="ActJSONValidateTagsEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaEXEEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaEXEEditPage.xaml
index 4d4cc2ef1a..ae1f6a04f7 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaEXEEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaEXEEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="ActJavaEXEEditPage">
-
+
@@ -30,7 +30,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaElementEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaElementEditPage.xaml
index b25fd2ddda..7aa29f058a 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaElementEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/Java/ActJavaElementEditPage.xaml
@@ -7,13 +7,13 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="ActJavaElementEditPage">
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameGetDetailsEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameGetDetailsEditPage.xaml
index ee6ee4e3ca..5bec367a41 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameGetDetailsEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameGetDetailsEditPage.xaml
@@ -15,12 +15,12 @@
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSendKey.xaml b/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSendKey.xaml
index 646350fe75..a0e84c0954 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSendKey.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSendKey.xaml
@@ -10,7 +10,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSetTextEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSetTextEditPage.xaml
index e8f7893f7b..db03cdd649 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSetTextEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/Mainframe/ActMainFrameSetTextEditPage.xaml
@@ -17,7 +17,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/PlugIns/ActPlugInEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/PlugIns/ActPlugInEditPage.xaml
index da77d74611..34aedca971 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/PlugIns/ActPlugInEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/PlugIns/ActPlugInEditPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="ActPlugInEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/Tuxedo/ActTuxedoEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/Tuxedo/ActTuxedoEditPage.xaml
index cc8d1918b6..e870c370ee 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/Tuxedo/ActTuxedoEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/Tuxedo/ActTuxedoEditPage.xaml
@@ -17,7 +17,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml
index 8ccc7910d1..c6679a77a8 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="556.717" d:DesignWidth="728.358"
Title="ValidationDBPage" >
-
+
@@ -22,7 +22,7 @@
-
+
@@ -39,7 +39,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
@@ -73,7 +73,7 @@
-
+
@@ -88,7 +88,7 @@
-
+
@@ -106,7 +106,7 @@
-
+
@@ -125,7 +125,7 @@
-
+
@@ -143,7 +143,7 @@
-
+
@@ -159,7 +159,7 @@
-
+
@@ -175,7 +175,7 @@
-
+
@@ -195,7 +195,7 @@
-
+
@@ -208,7 +208,7 @@
-
+
@@ -235,7 +235,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml.cs b/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml.cs
index db39621b90..047f1a8eb0 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml.cs
+++ b/Ginger/Ginger/Actions/ActionEditPages/ValidationDBPage.xaml.cs
@@ -62,14 +62,14 @@ public ValidationDBPage(ActDBValidation act)
{
mAct.AddOrUpdateInputParamValue("SQL", mAct.GetInputParamValue("Value"));
}
-
+
FillAppComboBox();
//New UI Controls:
//Query Type selection radio button :
QueryTypeRadioButton.Init(typeof(ActDBValidation.eQueryType), SqlSelection, mAct.GetOrCreateInputParam(ActDBValidation.Fields.QueryTypeRadioButton, ActDBValidation.eQueryType.FreeSQL.ToString()), QueryType_SelectionChanged);
checkQueryType();
-
+
//Free SQL
//needs to be unmarked when fixed VE issue
SQLUCValueExpression.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(ActDBValidation.Fields.SQL));
@@ -483,9 +483,11 @@ private void ValidationCfgComboBox_SelectionChanged(object sender, SelectionChan
private void SetVisibleControlsForAction()
{
+
+ // Whenever no Database Operation is selected then the Input Type and the Radio buttons related to the input type should be hidden.
if (ValidationCfgComboBox.SelectedItem == null)
{
- RadioButtonsSection.Visibility = Visibility.Visible;
+ RadioButtonsSection.Visibility = Visibility.Collapsed;
FreeSQLStackPanel.Visibility = Visibility.Collapsed;
SqlFile.Visibility = Visibility.Collapsed;
DoCommit.Visibility = Visibility.Collapsed;
@@ -538,7 +540,6 @@ private void SetVisibleControlsForAction()
lblWhere.Visibility = Visibility.Hidden;
TableColWhereStackPanel.Height = 40;
DoCommit.Visibility = Visibility.Collapsed;
- FreeSQLStackPanel.Visibility = Visibility.Collapsed;
DoUpdate.Visibility = Visibility.Visible;
RadioButtonsSection.Visibility = Visibility.Collapsed;
UpdateDbParametersGrid.Visibility = Visibility.Visible;
@@ -549,14 +550,18 @@ private void SetVisibleControlsForAction()
}
else
{
- FreeSQLStackPanel.Visibility = Visibility.Visible;
+ string queryTypeRadioValue = mAct.GetInputParamValue(ActDBValidation.Fields.QueryTypeRadioButton);
+ if (queryTypeRadioValue == ActDBValidation.eQueryType.FreeSQL.ToString())
+ {
+ FreeSQLStackPanel.Visibility = Visibility.Visible;
+ SqlFile.Visibility = Visibility.Collapsed;
+ }
TableColWhereStackPanel.Visibility = Visibility.Collapsed;
txtWhere.Visibility = Visibility.Visible;
lblWhere.Visibility = Visibility.Visible;
TableColWhereStackPanel.Height = 244;
DoCommit.Visibility = Visibility.Visible;
DoUpdate.Visibility = Visibility.Collapsed;
- FreeSQLStackPanel.Visibility = Visibility.Visible;
RadioButtonsSection.Visibility = Visibility.Visible;
}
break;
diff --git a/Ginger/Ginger/Actions/ActionEditPages/VisualTesting/ActVisualTestingEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/VisualTesting/ActVisualTestingEditPage.xaml
index cb97470755..66b46d4b5a 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/VisualTesting/ActVisualTestingEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/VisualTesting/ActVisualTestingEditPage.xaml
@@ -9,7 +9,7 @@
Title="ActVisualTestingEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActDiameterEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActDiameterEditPage.xaml
new file mode 100644
index 0000000000..d35f03db94
--- /dev/null
+++ b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActDiameterEditPage.xaml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActDiameterEditPage.xaml.cs b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActDiameterEditPage.xaml.cs
new file mode 100644
index 0000000000..59ac0f077c
--- /dev/null
+++ b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActDiameterEditPage.xaml.cs
@@ -0,0 +1,503 @@
+using Amdocs.Ginger.CoreNET.ActionsLib.Webservices.Diameter;
+using Amdocs.Ginger.CoreNET.DiameterLib;
+using System.Windows.Controls;
+using System.Collections.Generic;
+using Amdocs.Ginger.Common;
+using Amdocs.Ginger.Repository;
+using GingerCore.GeneralLib;
+using System.Windows;
+using Ginger.UserControls;
+using Ginger.UserControlsLib.TextEditor;
+using System.Windows.Data;
+using System.Linq;
+using Ginger.Actions.ActionConversion;
+using static Amdocs.Ginger.CoreNET.DiameterLib.DiameterEnums;
+
+namespace Ginger.Actions.WebServices
+{
+ ///
+ /// Interaction logic for ActDiameterEditPage.xaml
+ ///
+ public partial class ActDiameterEditPage : Page
+ {
+ private enum eGridType
+ {
+ RequestGrid,
+ ResponseGrid
+ }
+ ActDiameter mAct;
+ ObservableList groupedAvpsList = new ObservableList();
+
+ public ActDiameterEditPage(ActDiameter act)
+ {
+ mAct = act;
+ InitializeComponent();
+ BindControls();
+ SetGroupedAvpList();
+ SetRequestAvpsGrid();
+ SetCustomResponseAvpsGrid();
+ }
+
+ private void SetCustomResponseAvpsGrid()
+ {
+ xCustomResponseAvpListGrid.btnAdd.AddHandler(Button.ClickEvent, new RoutedEventHandler(AddAvpToCustomResponseAvpGrid));
+ xCustomResponseAvpListGrid.SetTitleLightStyle = true;
+
+ GridViewDef view = CreateGridView();
+ CreateAvpGridColumns(view, eGridType.ResponseGrid);
+
+ xCustomResponseAvpListGrid.SetAllColumnsDefaultView(view);
+ xCustomResponseAvpListGrid.InitViewItems();
+ xCustomResponseAvpListGrid.DataSourceList = mAct.CustomResponseAvpList;
+ }
+
+ private ObservableList LoadAvpForMessage(eDiameterMessageType diameterMessageType)
+ {
+ return DiameterUtils.GetMandatoryAVPForMessage(diameterMessageType);
+ }
+
+ private void BindControls()
+ {
+ ActInputValue messageType = mAct.GetOrCreateInputParam(nameof(ActDiameter.DiameterMessageType), eDiameterMessageType.None.ToString());
+ xMessageTypeComboBox.Init(messageType, typeof(eDiameterMessageType), false, xMessageTypeComboBox_SelectionChanged);
+ xCommandCodeTextBox.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(nameof(ActDiameter.CommandCode)));
+ xApplicationIdTextBox.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(nameof(ActDiameter.ApplicationId)));
+ xHopByHopIdTextBox.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(nameof(ActDiameter.HopByHopIdentifier)));
+ xEndToEndIdTextBox.Init(Context.GetAsContext(mAct.Context), mAct.GetOrCreateInputParam(nameof(ActDiameter.EndToEndIdentifier)));
+
+ BindingHandler.ObjFieldBinding(xIsRequestCheckBox, CheckBox.IsCheckedProperty, mAct, nameof(ActDiameter.IsRequestBitSet));
+ BindingHandler.ObjFieldBinding(xProxiableCheckBox, CheckBox.IsCheckedProperty, mAct, nameof(ActDiameter.IsProxiableBitSet));
+ BindingHandler.ObjFieldBinding(xErrorCheckBox, CheckBox.IsCheckedProperty, mAct, nameof(ActDiameter.IsErrorBitSet));
+ }
+
+ private void SetRequestAvpsGrid()
+ {
+ xRequestAvpListGrid.btnAdd.AddHandler(Button.ClickEvent, new RoutedEventHandler(AddAvpToRequestAvpGrid));
+ xRequestAvpListGrid.SetTitleLightStyle = true;
+
+ GridViewDef view = CreateGridView();
+ CreateAvpGridColumns(view, eGridType.RequestGrid);
+
+ xRequestAvpListGrid.SetAllColumnsDefaultView(view);
+ xRequestAvpListGrid.InitViewItems();
+ xRequestAvpListGrid.DataSourceList = mAct.RequestAvpList;
+ }
+ private void CreateAvpGridColumns(GridViewDef view, eGridType gridType)
+ {
+ List colViews = GetGridColViewList(gridType);
+ foreach (var colView in colViews)
+ {
+ view.GridColsView.Add(colView);
+ }
+ }
+ private List GetGridColViewList(eGridType gridType)
+ {
+ List colViews = new List();
+
+ var nameColView = new GridColView()
+ {
+ Header = "Name",
+ Field = nameof(DiameterAVP.Name),
+ WidthWeight = 200,
+ StyleType = GridColView.eGridColStyleType.Template,
+ CellTemplate = ucGrid.GetGridComboBoxTemplate(DiameterUtils.AvpDictionaryList,
+ displayMemberPath: nameof(DiameterAVP.Name),
+ selectedValuePath: nameof(DiameterAVP.Name),
+ selectedValueField: nameof(DiameterAVP.Name),
+ allowEdit: true,
+ comboSelectionChangedHandler: xAvpNameComboBox_SelectionChanged,
+ comboBoxTag: gridType.ToString())
+ };
+
+ var codeColView = new GridColView()
+ {
+ Header = "Code",
+ WidthWeight = 45,
+ MaxWidth = 45,
+ Field = nameof(DiameterAVP.Code)
+ };
+
+ var dataTypeColView = new GridColView()
+ {
+ Header = "Data Type",
+ WidthWeight = 100,
+ Field = nameof(DiameterAVP.DataType),
+ StyleType = GridColView.eGridColStyleType.Template,
+ CellTemplate = ucGrid.GetGridComboBoxTemplate(GingerCore.General.GetEnumValuesForCombo(typeof(DiameterEnums.eDiameterAvpDataType)), nameof(DiameterAVP.DataType), comboSelectionChangedHandler: xDataTypeComboBox_SelectionChanged)
+ };
+
+ colViews.Add(nameColView);
+ colViews.Add(codeColView);
+ colViews.Add(dataTypeColView);
+
+
+ if (gridType == eGridType.RequestGrid)
+ {
+ var mandatoryColView = new GridColView()
+ {
+ Header = "Mandatory",
+ WidthWeight = 60,
+ MaxWidth = 75,
+ Field = nameof(DiameterAVP.IsMandatory),
+ StyleType = GridColView.eGridColStyleType.CheckBox
+ };
+ var vendorSpecificColView = new GridColView()
+ {
+ Header = "Vendor Specific",
+ WidthWeight = 80,
+ MaxWidth = 95,
+ Field = nameof(DiameterAVP.IsVendorSpecific),
+ StyleType = GridColView.eGridColStyleType.CheckBox
+ };
+ var vendorIdColView = new GridColView()
+ {
+ Header = "Vendor Id",
+ WidthWeight = 110,
+ Field = nameof(DiameterAVP.VendorId),
+ StyleType = GridColView.eGridColStyleType.Template,
+ CellTemplate = GetTextBoxCellTemplate(valuePath: nameof(DiameterAVP.VendorId), isEnabledPath: nameof(DiameterAVP.IsVendorSpecific))
+ };
+ var parentAvpColView = new GridColView()
+ {
+ Header = "Parent AVP",
+ WidthWeight = 150,
+ Field = nameof(DiameterAVP.ParentName),
+ StyleType = GridColView.eGridColStyleType.Template,
+ CellTemplate = GetParentAVPComboBoxDataTemplate(groupedAvpsList, valuePath: nameof(DiameterAVP.ParentAvpGuid), isEnabledPath: nameof(DiameterAVP.DataType), xParentAVP_SelectionChanged, gridType)
+ };
+ var valueColView = new GridColView()
+ {
+ Field = nameof(DiameterAVP.Value),
+ Header = "Value",
+ StyleType = GridColView.eGridColStyleType.Template,
+ CellTemplate = ucGrid.getDataColValueExpressionTemplate(nameof(DiameterAVP.ValueVE), (Context)mAct.Context)
+ };
+
+ colViews.Add(mandatoryColView);
+ colViews.Add(vendorSpecificColView);
+ colViews.Add(vendorIdColView);
+ colViews.Add(parentAvpColView);
+ colViews.Add(valueColView);
+ }
+
+ return colViews;
+ }
+
+ private GridViewDef CreateGridView()
+ {
+ GridViewDef view = new GridViewDef(GridViewDef.DefaultViewName);
+ view.GridColsView = new ObservableList();
+ return view;
+ }
+ private void AddAvpToCustomResponseAvpGrid(object sender, RoutedEventArgs e)
+ {
+ mAct.CustomResponseAvpList.Add(new DiameterAVP());
+ }
+ private void xAvpNameComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ ComboBox? avpNameCB = sender as ComboBox;
+ if (avpNameCB != null && avpNameCB.IsDropDownOpen)
+ {
+ if ((string)avpNameCB.Tag == eGridType.RequestGrid.ToString())
+ {
+ HandleRequestGridAvpNameChanged(avpNameCB);
+ }
+ else if ((string)avpNameCB.Tag == eGridType.ResponseGrid.ToString())
+ {
+ HandleResponseGridAvpNameChanged(avpNameCB);
+ }
+
+ }
+ }
+ private void HandleResponseGridAvpNameChanged(ComboBox avpNameCB)
+ {
+ int selectedItemIndex = xCustomResponseAvpListGrid.grdMain.SelectedIndex;
+ if (selectedItemIndex != -1)
+ {
+ var sourceAVP = (DiameterAvpDictionaryItem)avpNameCB.SelectedItem;
+ DiameterAVP currentAVP = mAct.CustomResponseAvpList[selectedItemIndex];
+ UpdateAVP(currentAVP, sourceAVP);
+ UpdateResponseAvpsGridDataSource();
+ SetGroupedAvpList();
+ }
+ }
+ private void HandleRequestGridAvpNameChanged(ComboBox avpNameCB)
+ {
+ int selectedItemIndex = xRequestAvpListGrid.grdMain.SelectedIndex;
+ if (selectedItemIndex != -1)
+ {
+ var sourceAVP = (DiameterAvpDictionaryItem)avpNameCB.SelectedItem;
+ DiameterAVP currentAVP = mAct.RequestAvpList[selectedItemIndex];
+ UpdateAVP(currentAVP, sourceAVP);
+ UpdateRequestAvpsGridDataSource();
+ SetGroupedAvpList();
+ }
+ }
+ private void UpdateAVP(DiameterAVP avpToUpdate, DiameterAvpDictionaryItem sourceAvp)
+ {
+ var mapperConfig = new AutoMapper.MapperConfiguration(cfg => cfg.AddProfile());
+ var mapper = mapperConfig.CreateMapper();
+
+ mapper.Map(sourceAvp, avpToUpdate);
+
+ avpToUpdate.ParentName = null;
+ avpToUpdate.ParentAvpGuid = System.Guid.Empty;
+ avpToUpdate.NestedAvpList.Clear();
+ }
+ private void xDataTypeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ ComboBox? dataTypeCB = sender as ComboBox;
+ if (dataTypeCB != null && dataTypeCB.IsDropDownOpen)
+ {
+ SetGroupedAvpList();
+ }
+ }
+
+ private void SetGroupedAvpList()
+ {
+ ValidateGroupedAvpList();
+ AddGroupedAvpToListFromRequestGrid();
+ AddGroupedAvpToListFromCustomResponseGrid();
+ }
+
+ private void AddGroupedAvpToListFromCustomResponseGrid()
+ {
+ if (mAct.CustomResponseAvpList != null)
+ {
+ var responseGroupedAvps = mAct.CustomResponseAvpList.Where(x => x.DataType == DiameterEnums.eDiameterAvpDataType.Grouped);
+ foreach (DiameterAVP groupedAVP in responseGroupedAvps)
+ {
+ if (!groupedAvpsList.Contains(groupedAVP))
+ {
+ groupedAvpsList.Add(groupedAVP);
+ }
+ }
+ }
+ }
+ private void AddGroupedAvpToListFromRequestGrid()
+ {
+ if (mAct.RequestAvpList != null)
+ {
+ var requestGroupedAvps = mAct.RequestAvpList.Where(x => x.DataType == DiameterEnums.eDiameterAvpDataType.Grouped);
+ foreach (DiameterAVP groupedAVP in requestGroupedAvps)
+ {
+ if (!groupedAvpsList.Contains(groupedAVP))
+ {
+ groupedAvpsList.Add(groupedAVP);
+ }
+ }
+ }
+ }
+ private void ValidateGroupedAvpList()
+ {
+ if (groupedAvpsList != null)
+ {
+ if (groupedAvpsList.Any())
+ {
+ List itemsToRemove = new List();
+
+ foreach (DiameterAVP avp in groupedAvpsList)
+ {
+ if (avp.DataType != DiameterEnums.eDiameterAvpDataType.Grouped)
+ {
+ ClearChildAVP(avp);
+ itemsToRemove.Add(avp);
+ }
+ }
+
+ foreach (DiameterAVP avpToRemove in itemsToRemove)
+ {
+ groupedAvpsList.Remove(avpToRemove);
+ }
+ }
+ else
+ {
+ groupedAvpsList.Add(new DiameterAVP() { Name = "N/A", DataType = DiameterEnums.eDiameterAvpDataType.Grouped });
+ }
+ }
+
+ }
+ private void ClearChildAVP(DiameterAVP avp)
+ {
+ foreach (DiameterAVP childAvp in avp.NestedAvpList)
+ {
+ if (childAvp != null)
+ {
+ childAvp.ParentName = null;
+ childAvp.ParentAvpGuid = System.Guid.Empty;
+ }
+ }
+ avp.NestedAvpList.Clear();
+ }
+ private void xParentAVP_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ ComboBox? parentAvpCB = sender as ComboBox;
+ if (parentAvpCB != null && parentAvpCB.IsDropDownOpen)
+ {
+ var selectedAvp = parentAvpCB.SelectedItem as DiameterAVP;
+ if (selectedAvp != null)
+ {
+ HandleRequestParentAvpChanged(selectedAvp);
+ }
+ }
+ }
+ private void HandleRequestParentAvpChanged(DiameterAVP selectedAvp)
+ {
+ int selectedItemIndex = xRequestAvpListGrid.grdMain.SelectedIndex;
+ if (selectedItemIndex != -1)
+ {
+ var avp = (DiameterAVP)xRequestAvpListGrid.grdMain.Items[selectedItemIndex];
+ if (avp != null)
+ {
+ avp.ParentName = selectedAvp.Name;
+ }
+ }
+ }
+ private void AddAvpToRequestAvpGrid(object sender, RoutedEventArgs e)
+ {
+ mAct.RequestAvpList.Add(new DiameterAVP());
+ }
+ private void xViewRawRequestBtn_Click(object sender, RoutedEventArgs e)
+ {
+ if (mAct != null)
+ {
+ string requestContent = DiameterUtils.GetRawRequestContentPreview(mAct);
+ if (requestContent != string.Empty)
+ {
+ string tempFilePath = GingerCoreNET.GeneralLib.General.CreateTempTextFile(requestContent);
+ if (System.IO.File.Exists(tempFilePath))
+ {
+ DocumentEditorPage docPage = new DocumentEditorPage(tempFilePath, enableEdit: false, UCTextEditorTitle: string.Empty);
+ docPage.Width = 800;
+ docPage.Height = 800;
+ docPage.ShowAsWindow("Raw Request Preview");
+ System.IO.File.Delete(tempFilePath);
+ return;
+ }
+ }
+ }
+ Reporter.ToUser(eUserMsgKey.StaticErrorMessage, "Failed to load raw request preview, see log for details.");
+ }
+ private void xMessageTypeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (xMessageTypeComboBox.ComboBox.IsDropDownOpen)
+ {
+ if (mAct != null)
+ {
+ SetMessageDetails(mAct.DiameterMessageType);
+ }
+ }
+ }
+ private void SetMessageDetails(eDiameterMessageType messageType)
+ {
+ ResetMessageDetails();
+ if (messageType == eDiameterMessageType.CapabilitiesExchangeRequest)
+ {
+ mAct.CommandCode = 257;
+ mAct.ApplicationId = 0;
+ mAct.IsRequestBitSet = true;
+ GetMessageAvpByMessageType(messageType);
+ }
+ else if (messageType == eDiameterMessageType.CreditControlRequest)
+ {
+ mAct.CommandCode = 272;
+ mAct.ApplicationId = 4;
+ mAct.IsRequestBitSet = true;
+ mAct.IsProxiableBitSet = true;
+ GetMessageAvpByMessageType(messageType);
+ }
+
+ UpdateRequestAvpsGridDataSource();
+ }
+
+ private void GetMessageAvpByMessageType(eDiameterMessageType messageType)
+ {
+ var avpList = LoadAvpForMessage(messageType);
+ foreach (DiameterAVP avp in avpList)
+ {
+ if (avp != null)
+ {
+ mAct.RequestAvpList.Add(avp);
+ }
+ }
+ }
+
+ private void ResetMessageDetails()
+ {
+ // Reset Diameter Action to default values
+ mAct.CommandCode = 0;
+ mAct.ApplicationId = 0;
+ mAct.EndToEndIdentifier = 0;
+ mAct.HopByHopIdentifier = 0;
+ mAct.IsRequestBitSet = false;
+ mAct.IsProxiableBitSet = false;
+ mAct.IsErrorBitSet = false;
+ mAct.RequestAvpList?.Clear();
+ mAct.CustomResponseAvpList?.Clear();
+ }
+
+ private void UpdateRequestAvpsGridDataSource()
+ {
+ if (mAct != null && xRequestAvpListGrid != null)
+ {
+ xRequestAvpListGrid.DataSourceList = mAct.RequestAvpList;
+ }
+ }
+ private void UpdateResponseAvpsGridDataSource()
+ {
+ if (mAct != null && xCustomResponseAvpListGrid != null)
+ {
+ xCustomResponseAvpListGrid.DataSourceList = mAct.CustomResponseAvpList;
+ }
+ }
+ private DataTemplate GetParentAVPComboBoxDataTemplate(ObservableList groupedAvpList, string valuePath, string isEnabledPath, SelectionChangedEventHandler changedEventHandler, eGridType gridType)
+ {
+ DataTemplate template = new DataTemplate();
+ FrameworkElementFactory combo = new FrameworkElementFactory(typeof(ComboBox));
+
+ combo.SetValue(ComboBox.ItemsSourceProperty, groupedAvpList);
+ combo.SetValue(ComboBox.DisplayMemberPathProperty, nameof(DiameterAVP.Name));
+ combo.SetValue(ComboBox.SelectedValuePathProperty, nameof(DiameterAVP.Guid));
+
+ SetDataTemplateValueBinding(combo, valuePath, ComboBox.SelectedValueProperty);
+
+ combo.SetValue(TagProperty, gridType);
+
+ combo.AddHandler(ComboBox.SelectionChangedEvent, changedEventHandler);
+
+ template.VisualTree = combo;
+ return template;
+ }
+ private DataTemplate GetTextBoxCellTemplate(string valuePath, string isEnabledPath)
+ {
+ DataTemplate template = new DataTemplate();
+ FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox));
+
+ textBox.SetValue(TextBox.TextProperty, valuePath);
+
+ SetDataTemplateValueBinding(textBox, valuePath, TextBox.TextProperty);
+ SetDataTemplateIsEnableBinding(textBox, isEnabledPath, new BooleanToEnabledConverter());
+
+ template.VisualTree = textBox;
+
+ return template;
+ }
+ private void SetDataTemplateValueBinding(FrameworkElementFactory frameworkElement, string valuePath, DependencyProperty dependencyProperty, BindingMode bindingMode = BindingMode.TwoWay, UpdateSourceTrigger updateSourceTrigger = UpdateSourceTrigger.PropertyChanged)
+ {
+ Binding valueBinding = new Binding(valuePath)
+ {
+ Mode = bindingMode,
+ UpdateSourceTrigger = updateSourceTrigger
+ };
+ frameworkElement.SetBinding(dependencyProperty, valueBinding);
+ }
+ private void SetDataTemplateIsEnableBinding(FrameworkElementFactory frameworkElement, string isEnablePath, IValueConverter valueConverter)
+ {
+ Binding isEnableBinding = new Binding(isEnablePath)
+ {
+ Converter = valueConverter
+ };
+ frameworkElement.SetBinding(IsEnabledProperty, isEnableBinding);
+ }
+ }
+}
diff --git a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActRESTEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActRESTEditPage.xaml
index ecd345ca9e..9e4ed1200b 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActRESTEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActRESTEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="600" d:DesignWidth="1000"
Title="ActRESTEditPage">
-
+
@@ -55,28 +55,28 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActSoapUIEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActSoapUIEditPage.xaml
index a3c0b95d2f..6d40332181 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActSoapUIEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActSoapUIEditPage.xaml
@@ -12,7 +12,7 @@
Title="ActSoapUIEditPage">
-
+
@@ -58,7 +58,7 @@
-
+
@@ -74,7 +74,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebAPIEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebAPIEditPage.xaml
index 3e810fa03f..6489ca6152 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebAPIEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebAPIEditPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="1500" d:DesignWidth="750"
Title="ActWebAPIEditPage">
-
+
@@ -136,7 +136,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebServiceEditPage.xaml b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebServiceEditPage.xaml
index cbf278860a..430bf6dc81 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebServiceEditPage.xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/WebServices/ActWebServiceEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="500" d:DesignWidth="500"
Title="ActWebServiceEditPage">
-
+
diff --git a/Ginger/Ginger/Actions/ActionEditPages/XML/ActXMLValidateTagsEditPage .xaml b/Ginger/Ginger/Actions/ActionEditPages/XML/ActXMLValidateTagsEditPage .xaml
index 9228533d45..727e6550f6 100644
--- a/Ginger/Ginger/Actions/ActionEditPages/XML/ActXMLValidateTagsEditPage .xaml
+++ b/Ginger/Ginger/Actions/ActionEditPages/XML/ActXMLValidateTagsEditPage .xaml
@@ -8,7 +8,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="ActXMLTagValidationPage" >
-
+
diff --git a/Ginger/Ginger/Actions/ActionsListViewHelper.cs b/Ginger/Ginger/Actions/ActionsListViewHelper.cs
index 5d3fef74b7..af17a85c32 100644
--- a/Ginger/Ginger/Actions/ActionsListViewHelper.cs
+++ b/Ginger/Ginger/Actions/ActionsListViewHelper.cs
@@ -97,6 +97,21 @@ private void OnActionListItemEvent(ActionListItemEventArgs.eEventType eventType,
public bool ExpandItemOnLoad { get; set; } = false;
+ public bool ShowIndex
+ {
+ get
+ {
+ if (PageViewMode == General.eRIPageViewMode.Add || PageViewMode == General.eRIPageViewMode.AddFromModel || PageViewMode == General.eRIPageViewMode.AddFromShardRepository)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+
public ActionsListViewHelper(Context context, General.eRIPageViewMode pageViewMode)
{
mContext = context;
diff --git a/Ginger/Ginger/Actions/ActionsListViewPage.xaml b/Ginger/Ginger/Actions/ActionsListViewPage.xaml
index ceda2370fc..917a7c59b1 100644
--- a/Ginger/Ginger/Actions/ActionsListViewPage.xaml
+++ b/Ginger/Ginger/Actions/ActionsListViewPage.xaml
@@ -20,7 +20,7 @@
-
+
@@ -34,7 +34,7 @@
-
+
@@ -63,8 +63,8 @@
-
-
+
+
diff --git a/Ginger/Ginger/Actions/ActionsListViewPage.xaml.cs b/Ginger/Ginger/Actions/ActionsListViewPage.xaml.cs
index 8bc899c8a0..602af0a386 100644
--- a/Ginger/Ginger/Actions/ActionsListViewPage.xaml.cs
+++ b/Ginger/Ginger/Actions/ActionsListViewPage.xaml.cs
@@ -435,7 +435,7 @@ private void xResetMenuItem_Click(object sender, RoutedEventArgs e)
private void RunBtn_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
+ ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$HighlightColor_LightBlue");
}
private void RunBtn_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
diff --git a/Ginger/Ginger/Actions/ScreenShotViewPage.xaml b/Ginger/Ginger/Actions/ScreenShotViewPage.xaml
index 12b3d145c7..89213c1635 100644
--- a/Ginger/Ginger/Actions/ScreenShotViewPage.xaml
+++ b/Ginger/Ginger/Actions/ScreenShotViewPage.xaml
@@ -8,8 +8,8 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="ScreenShotViewPage">
-
-
+
+
@@ -25,7 +25,7 @@
-
+
diff --git a/Ginger/Ginger/Actions/UserControls/UCInputValuesGrid.xaml b/Ginger/Ginger/Actions/UserControls/UCInputValuesGrid.xaml
index 29c25634af..834b5cb7ac 100644
--- a/Ginger/Ginger/Actions/UserControls/UCInputValuesGrid.xaml
+++ b/Ginger/Ginger/Actions/UserControls/UCInputValuesGrid.xaml
@@ -8,7 +8,7 @@
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="700">
-
+
diff --git a/Ginger/Ginger/Activities/ActivitiesGroupPage.xaml b/Ginger/Ginger/Activities/ActivitiesGroupPage.xaml
index 57bcf27f6d..a410ee4b0f 100644
--- a/Ginger/Ginger/Activities/ActivitiesGroupPage.xaml
+++ b/Ginger/Ginger/Activities/ActivitiesGroupPage.xaml
@@ -12,7 +12,7 @@
d:DesignHeight="800" d:DesignWidth="800"
Title="Edit Activities Group">
-
+
diff --git a/Ginger/Ginger/Activities/ActivitiesGroupSelectionPage.xaml b/Ginger/Ginger/Activities/ActivitiesGroupSelectionPage.xaml
index 0a61dedada..86b150a554 100644
--- a/Ginger/Ginger/Activities/ActivitiesGroupSelectionPage.xaml
+++ b/Ginger/Ginger/Activities/ActivitiesGroupSelectionPage.xaml
@@ -11,7 +11,7 @@
d:DesignHeight="200" d:DesignWidth="600"
Title="Select Activities Group">
-
+
-
+
@@ -124,7 +124,7 @@
-
+
diff --git a/Ginger/Ginger/Activities/ActivityPage.xaml.cs b/Ginger/Ginger/Activities/ActivityPage.xaml.cs
index 7f77d90f92..b2150ee145 100644
--- a/Ginger/Ginger/Activities/ActivityPage.xaml.cs
+++ b/Ginger/Ginger/Activities/ActivityPage.xaml.cs
@@ -63,7 +63,7 @@ public UcListView ActionListView
}
// We keep a static page so even if we move between activities the Run controls and info stay the same
- public ActivityPage(Activity activity, Context context, Ginger.General.eRIPageViewMode pageViewMode)
+ public ActivityPage(Activity activity, Context context, Ginger.General.eRIPageViewMode pageViewMode, bool highlightActivityName = false)
{
InitializeComponent();
@@ -73,6 +73,11 @@ public ActivityPage(Activity activity, Context context, Ginger.General.eRIPageVi
SetUIView();
BindControlsToActivity();
+
+ if (highlightActivityName)
+ {
+ xNameTextBlock.Foreground= (SolidColorBrush)FindResource("$SelectionColor_Pink");
+ }
}
private void UpdateActivityViewMode(Ginger.General.eRIPageViewMode pageViewMod)
@@ -367,7 +372,7 @@ private void UpdateDescription()
{
xDescriptionTextBlock.Text = string.Empty;
TextBlockHelper xDescTextBlockHelper = new TextBlockHelper(xDescriptionTextBlock);
- SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$Color_DarkBlue")).ToString());
+ SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$PrimaryColor_Black")).ToString());
if (mActivity != null)
{
//Application info
@@ -594,12 +599,12 @@ private void xEditBtn_Click(object sender, RoutedEventArgs e)
private void RunBtn_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
+ ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
}
private void RunBtn_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
+ ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$HighlightColor_LightBlue");
}
private async void xSaveBtn_Click(object sender, RoutedEventArgs e)
diff --git a/Ginger/Ginger/Activities/AddActivityWizard/AddActivityConfigsPage.xaml b/Ginger/Ginger/Activities/AddActivityWizard/AddActivityConfigsPage.xaml
index 210953d595..6fb39dced0 100644
--- a/Ginger/Ginger/Activities/AddActivityWizard/AddActivityConfigsPage.xaml
+++ b/Ginger/Ginger/Activities/AddActivityWizard/AddActivityConfigsPage.xaml
@@ -10,6 +10,6 @@
Title="AddActivityConfigsPage">
-
+
diff --git a/Ginger/Ginger/Activities/AddActivityWizard/AddActivityDetailsPage.xaml b/Ginger/Ginger/Activities/AddActivityWizard/AddActivityDetailsPage.xaml
index d4596ade6f..4b547d39d2 100644
--- a/Ginger/Ginger/Activities/AddActivityWizard/AddActivityDetailsPage.xaml
+++ b/Ginger/Ginger/Activities/AddActivityWizard/AddActivityDetailsPage.xaml
@@ -12,7 +12,7 @@
Title="AddActivityDetailsPage">
-
+
diff --git a/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml b/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml
index 7a5a2011a6..e445f632ff 100644
--- a/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml
+++ b/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="ConfigureErrorListPage">
-
+
diff --git a/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml.cs b/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml.cs
index 90dad7c228..b83a25e7c6 100644
--- a/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml.cs
+++ b/Ginger/Ginger/Activities/ConfigureErrorListPage.xaml.cs
@@ -33,12 +33,12 @@ public partial class ConfigureErrorListPage : Page
GenericWindow _pageGenericWin = null;
ErrorHandler mErrorHandler;
- List mErrorList = new List();
+ ObservableList mErrorList = new ObservableList();
public ConfigureErrorListPage(ErrorHandler errorHandler)
{
InitializeComponent();
mErrorHandler = errorHandler;
- mErrorList = mErrorHandler.ErrorStringList.ToList();
+ mErrorList = new ObservableList(mErrorHandler.ErrorStringList);
SetGridsView();
}
private void SetGridsView()
@@ -56,7 +56,7 @@ private void SetGridsView()
xErrorListConfigurationGrd.MarkUnMarkAllActive += XErrorListConfigurationGrd_MarkUnMarkAllActive; ;
xErrorListConfigurationGrd.btnAdd.Click += BtnAdd_Click;
- xErrorListConfigurationGrd.DataSourceList = new ObservableList(mErrorList);
+ xErrorListConfigurationGrd.DataSourceList = mErrorList;
}
private void XErrorListConfigurationGrd_MarkUnMarkAllActive(bool Status)
@@ -74,7 +74,6 @@ private void XErrorListConfigurationGrd_MarkUnMarkAllActive(bool Status)
private void BtnAdd_Click(object sender, RoutedEventArgs e)
{
mErrorList.Add(new ErrorDetails() { ErrorString = string.Empty, ErrorDescription = string.Empty, IsSelected = true });
- xErrorListConfigurationGrd.DataSourceList = new ObservableList(mErrorList);
}
public void ShowAsWindow(eWindowShowStyle windowStyle = eWindowShowStyle.Free)
diff --git a/Ginger/Ginger/Activities/ErrorHandlerMappingPage.xaml b/Ginger/Ginger/Activities/ErrorHandlerMappingPage.xaml
index a493b7d9b8..a61227e0dd 100644
--- a/Ginger/Ginger/Activities/ErrorHandlerMappingPage.xaml
+++ b/Ginger/Ginger/Activities/ErrorHandlerMappingPage.xaml
@@ -8,7 +8,7 @@
xmlns:GingerCore="clr-namespace:GingerCore;assembly=GingerCore"
mc:Ignorable="d"
Title="SpecificErrorHandler" Height="600" Width="700">
-
+
diff --git a/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDetailsPage.xaml b/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDetailsPage.xaml
index 7a7e838972..65b9c64b45 100644
--- a/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDetailsPage.xaml
+++ b/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDetailsPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="AddAgentDetailsPage">
-
+
diff --git a/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDriverConfigPage.xaml b/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDriverConfigPage.xaml
index 55a6af4592..2afaa06b28 100644
--- a/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDriverConfigPage.xaml
+++ b/Ginger/Ginger/Agents/AddAgentWizardLib/AddAgentDriverConfigPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="AddAgentDriverConfigPage">
-
+
diff --git a/Ginger/Ginger/Agents/AgentConfigControl.xaml b/Ginger/Ginger/Agents/AgentConfigControl.xaml
index 0972c501c9..17d21e3c52 100644
--- a/Ginger/Ginger/Agents/AgentConfigControl.xaml
+++ b/Ginger/Ginger/Agents/AgentConfigControl.xaml
@@ -12,7 +12,7 @@
-
+
diff --git a/Ginger/Ginger/Agents/AgentDriverConfigPage.xaml b/Ginger/Ginger/Agents/AgentDriverConfigPage.xaml
index 9219d22f30..db56119894 100644
--- a/Ginger/Ginger/Agents/AgentDriverConfigPage.xaml
+++ b/Ginger/Ginger/Agents/AgentDriverConfigPage.xaml
@@ -9,16 +9,16 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="AgentDriverConfigPage">
-
+
-
+
-
+
diff --git a/Ginger/Ginger/Agents/AgentEditPage.xaml b/Ginger/Ginger/Agents/AgentEditPage.xaml
index 2923051650..289e1df39b 100644
--- a/Ginger/Ginger/Agents/AgentEditPage.xaml
+++ b/Ginger/Ginger/Agents/AgentEditPage.xaml
@@ -12,7 +12,7 @@
Title="AgentEditPage">
-
+
diff --git a/Ginger/Ginger/Agents/AgentsNew/NewAgentEditPage.xaml b/Ginger/Ginger/Agents/AgentsNew/NewAgentEditPage.xaml
index 4939ec34ef..5a86347173 100644
--- a/Ginger/Ginger/Agents/AgentsNew/NewAgentEditPage.xaml
+++ b/Ginger/Ginger/Agents/AgentsNew/NewAgentEditPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="AgentEditPage">
-
+
@@ -31,7 +31,7 @@
-
+
diff --git a/Ginger/Ginger/Agents/AgentsNew/NewAgentPage.xaml b/Ginger/Ginger/Agents/AgentsNew/NewAgentPage.xaml
index d0c95c82a8..9d957c4451 100644
--- a/Ginger/Ginger/Agents/AgentsNew/NewAgentPage.xaml
+++ b/Ginger/Ginger/Agents/AgentsNew/NewAgentPage.xaml
@@ -7,7 +7,7 @@
Height="85" Width="350" MinHeight="85"
Title="Add New Agent">
-
+
@@ -22,9 +22,9 @@
-
+
-
+
diff --git a/Ginger/Ginger/Agents/AgentsPage.xaml b/Ginger/Ginger/Agents/AgentsPage.xaml
index 99eb35bf7f..1de8837186 100644
--- a/Ginger/Ginger/Agents/AgentsPage.xaml
+++ b/Ginger/Ginger/Agents/AgentsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="AgentsPage">
-
+
diff --git a/Ginger/Ginger/Agents/ucAgentControl.xaml b/Ginger/Ginger/Agents/ucAgentControl.xaml
index 0636a1dd5e..d2208cf230 100644
--- a/Ginger/Ginger/Agents/ucAgentControl.xaml
+++ b/Ginger/Ginger/Agents/ucAgentControl.xaml
@@ -8,7 +8,7 @@
mc:Ignorable="d"
d:DesignHeight="120" d:DesignWidth="400">
-
+
diff --git a/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml b/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml
index 123eaadec6..608aefaf21 100644
--- a/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml
+++ b/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml
@@ -9,7 +9,7 @@
xmlns:h="clr-namespace:Ginger.Help" h:GingerHelpProvider.HelpString="Analyzer"
Title="AnalyzerPage">
-
+
@@ -27,8 +27,10 @@
-
-
+
+
+
+
@@ -42,10 +44,10 @@
-
+
-
-
+
+
diff --git a/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml.cs b/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml.cs
index 92f0adeb62..c598c3c4af 100644
--- a/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml.cs
+++ b/Ginger/Ginger/AnalyzerLib/AnalyzerPage.xaml.cs
@@ -59,7 +59,7 @@ private enum AnalyzedObject
ObservableList mIssues = new ObservableList();
- private Solution mSolution;
+ private Solution? mSolution;
private BusinessFlow businessFlow;
private RunSetConfig mRunSetConfig;
// ObservableList DSList;
@@ -132,22 +132,32 @@ public void Init(Solution Solution)
AnalyzerItemsGrid.Title = "'" + mSolution.Name + "' Solution Issues";
}
- public void Init(Solution Solution, BusinessFlow BusinessFlow, bool selfHealingAutoFixIssue = false)
+ public void Init(BusinessFlow BusinessFlow, bool selfHealingAutoFixIssue = false)
+ {
+ Init(BusinessFlow, solution: null, selfHealingAutoFixIssue);
+ }
+
+ public void Init(BusinessFlow businessFlow, Solution? solution, bool selfHealingAutoFixIssue = false)
{
mAnalyzedObject = AnalyzedObject.BusinessFlow;
- mSolution = Solution;
- businessFlow = BusinessFlow;
- AnalyzerItemsGrid.Title = "'" + BusinessFlow.Name + "' " + GingerDicser.GetTermResValue(eTermResKey.BusinessFlow) + " Issues";
+ mSolution = solution;
+ this.businessFlow = businessFlow;
+ AnalyzerItemsGrid.Title = $"'{businessFlow.Name}' {GingerDicser.GetTermResValue(eTermResKey.BusinessFlow)} Issues";
mAnalyzerUtils.SelfHealingAutoFixIssue = selfHealingAutoFixIssue;
}
- internal void Init(Solution solution, Run.RunSetConfig RSC)
+ public void Init(RunSetConfig runSetConfig)
+ {
+ Init(runSetConfig, solution: null);
+ }
+
+ internal void Init(Run.RunSetConfig RSC, Solution? solution)
{
mRunSetConfig = RSC;
mSolution = solution;
mAnalyzedObject = AnalyzedObject.RunSetConfig;
- AnalyzerItemsGrid.Title = "'" + RSC.Name + "' " + GingerDicser.GetTermResValue(eTermResKey.RunSet) + " Issues";
+ AnalyzerItemsGrid.Title = $"'{RSC.Name}' {GingerDicser.GetTermResValue(eTermResKey.RunSet)} Issues";
mAnalyzerUtils.SelfHealingAutoFixIssue = RSC.SelfHealingConfiguration.AutoFixAnalyzerIssue;
@@ -177,6 +187,12 @@ private async void RerunButton_Click(object sender, RoutedEventArgs e)
await Analyze();
}
+ public async Task AnalyzeWithUI()
+ {
+ mAnalyzeWithUI = true;
+ await Analyze();
+ }
+
public async Task AnalyzeWithoutUI()
{
mAnalyzeWithUI = false;
@@ -212,12 +228,12 @@ await Task.Factory.StartNew(() =>
case AnalyzedObject.BusinessFlow:
SetStatus("Analyzing " + GingerDicser.GetTermResValue(eTermResKey.BusinessFlow, suffixString: ": ") + businessFlow.Name + "...");
- mAnalyzerUtils.RunBusinessFlowAnalyzer(businessFlow, mIssues);
+ mAnalyzerUtils.RunBusinessFlowAnalyzer(businessFlow, mSolution, mIssues);
break;
case AnalyzedObject.RunSetConfig:
SetStatus("Analyzing " + GingerDicser.GetTermResValue(eTermResKey.RunSet) + "...");
- mAnalyzerUtils.RunRunSetConfigAnalyzer(mRunSetConfig, mIssues);
+ mAnalyzerUtils.RunRunSetConfigAnalyzer(mRunSetConfig, mSolution, mIssues);
break;
}
});
@@ -241,12 +257,12 @@ await Task.Factory.StartNew(() =>
BusyInProcess = false;
mAnalyzerCompleted = true;
- SetAnalayzeProceesAsCompleted();
+ SetAnalyzeProcessAsCompleted();
}
}
- private void SetAnalayzeProceesAsCompleted()
+ private void SetAnalyzeProcessAsCompleted()
{
if (mAnalyzeWithUI)
{
@@ -270,6 +286,11 @@ private void SetUIAfterAnalyzerCompleted()
if (mIssues.Count > 0)
{
+ Dispatcher.Invoke(() =>
+ {
+ AnalyzerItemsGrid.Visibility = Visibility.Visible;
+ xNoIssueTextBlock.Visibility = Visibility.Collapsed;
+ });
//sort- placing Critical & High on top
Dispatcher.Invoke(() =>
@@ -286,6 +307,14 @@ private void SetUIAfterAnalyzerCompleted()
AnalyzerItemsGrid.Grid.SelectedItem = mIssues[0];
});
}
+ else
+ {
+ Dispatcher.Invoke(() =>
+ {
+ AnalyzerItemsGrid.Visibility = Visibility.Collapsed;
+ xNoIssueTextBlock.Visibility = Visibility.Visible;
+ });
+ }
}
catch (Exception ex)
{
@@ -755,11 +784,11 @@ private void SaveAllFixedItems()
BusinessFlow bs = null;
if (AI.GetType() == typeof(AnalyzeBusinessFlow))
{
- bs = ((AnalyzeBusinessFlow)AI).mBusinessFlow;
+ bs = ((AnalyzeBusinessFlow)AI).BusinessFlow;
}
else if (AI.GetType() == typeof(AnalyzeActivity))
{
- bs = ((AnalyzeActivity)AI).mBusinessFlow;
+ bs = ((AnalyzeActivity)AI).BusinessFlow;
}
else if (AI.GetType() == typeof(AnalyzeAction))
{
@@ -828,21 +857,14 @@ private void AnalyzerItemsGrid_RowDoubleClick(object sender, EventArgs e)
Act actionIssue = currentAnalyzeAction.mAction;
actionIssue.SolutionFolder = WorkSpace.Instance.Solution.Folder.ToUpper();
ActionEditPage actedit = new ActionEditPage(actionIssue, General.eRIPageViewMode.ChildWithSave, currentAnalyzeAction.mBusinessFlow, currentAnalyzeAction.mActivity);
- //setting the BusinessFlow on the Action in Order to save
- //actedit.mActParentBusinessFlow = ((AnalyzeAction)AnalyzerItemsGrid.CurrentItem).mBusinessFlow;
- //actedit.ap = null;
actedit.ShowAsWindow(eWindowShowStyle.Dialog);
}
if (AnalyzerItemsGrid.CurrentItem is AnalyzeActivity)
{
AnalyzeActivity currentAnalyzeActivity = (AnalyzeActivity)AnalyzerItemsGrid.CurrentItem;
- Activity ActivityIssue = currentAnalyzeActivity.mActivity;
- //ActivityIssue.SolutionFolder = WorkSpace.Instance.Solution.Folder.ToUpper();
- GingerWPF.BusinessFlowsLib.ActivityPage ActivityEdit = new GingerWPF.BusinessFlowsLib.ActivityPage(ActivityIssue, new Context() { BusinessFlow = currentAnalyzeActivity.mBusinessFlow }, General.eRIPageViewMode.ChildWithSave);
- //setting the BusinessFlow on the Activity in Order to save
- //ActivityEdit.mBusinessFlow = ((AnalyzeActivity)AnalyzerItemsGrid.CurrentItem).mBusinessFlow;
- //ActivityEdit.ap = null;
+ Activity ActivityIssue = currentAnalyzeActivity.Activity;
+ GingerWPF.BusinessFlowsLib.ActivityPage ActivityEdit = new GingerWPF.BusinessFlowsLib.ActivityPage(ActivityIssue, new Context() { BusinessFlow = currentAnalyzeActivity.BusinessFlow }, General.eRIPageViewMode.ChildWithSave);
ActivityEdit.ShowAsWindow(eWindowShowStyle.Dialog);
}
diff --git a/Ginger/Ginger/App.xaml.cs b/Ginger/Ginger/App.xaml.cs
index f33393d32e..5f73ccba8a 100644
--- a/Ginger/Ginger/App.xaml.cs
+++ b/Ginger/Ginger/App.xaml.cs
@@ -19,6 +19,7 @@ limitations under the License.
using amdocs.ginger.GingerCoreNET;
using Amdocs.Ginger.Common;
+using Amdocs.Ginger.CoreNET.log4netLib;
using Amdocs.Ginger.CoreNET.RunLib;
using Amdocs.Ginger.Repository;
using Ginger.BusinessFlowWindows;
@@ -259,24 +260,12 @@ private void Application_Startup(object sender, StartupEventArgs e)
Amdocs.Ginger.CoreNET.log4netLib.GingerLog.PrintStartUpInfo();
+
if (!WorkSpace.Instance.RunningInExecutionMode)
{
- if (WorkSpace.Instance.UserProfile.AppLogLevel == eAppReporterLoggingLevel.Debug)
+ if(WorkSpace.Instance.UserProfile !=null && WorkSpace.Instance.UserProfile.AppLogLevel == eAppReporterLoggingLevel.Debug)
{
- try
- {
- if (!System.Diagnostics.Trace.Listeners.Contains(CustomTraceListener.Instance))
- {
- System.Diagnostics.Trace.Listeners.Add(CustomTraceListener.Instance);
-
- System.Diagnostics.Trace.WriteLine("Ginger Start up", "Info");
- }
- }
- catch (Exception ex)
- {
- Reporter.ToLog(eLogLevel.ERROR, "Custom Trace listerner ", ex.InnerException);
- }
-
+ GingerLog.StartCustomTraceListeners();
}
HideConsoleWindow();
StartGingerUI();// start regular Ginger UI
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelBodyNodeSyncPage.xaml b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelBodyNodeSyncPage.xaml
index 793d381e33..29d5660344 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelBodyNodeSyncPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelBodyNodeSyncPage.xaml
@@ -8,18 +8,18 @@
Height="650" Width="850"
Title="Body Node Deletion Preview">
-
+
- Below marked in red are the nodes in the API Model Request Body which about to be deleted.Please review those and approve if to continue with deletion.
+ Below marked in red are the nodes in the API Model Request Body which about to be deleted.Please review those and approve if to continue with deletion.
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml
index c955f686e3..00f31c1935 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml
@@ -10,7 +10,7 @@
Title="APIModelPage">
-
+
@@ -39,31 +39,16 @@
-
-
-
-
-
-
+
+
-
+
-
+
@@ -170,7 +155,7 @@
Template File Path:
-
+
@@ -183,7 +168,7 @@
-
+
@@ -223,7 +208,7 @@
-
+
@@ -263,20 +248,20 @@
-
+
-
+
-
+
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml.cs b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml.cs
index 6d22fddbad..48d7f3f054 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml.cs
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelPage.xaml.cs
@@ -752,7 +752,7 @@ private void ActionTab_SelectionChanged(object sender, SelectionChangedEventArgs
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AdAPIModelMappingPage.xaml b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AdAPIModelMappingPage.xaml
index d3036a3c3f..561d98ffa6 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AdAPIModelMappingPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AdAPIModelMappingPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="AdAPIModelMappingPage">
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelExtraConfigsPage.xaml b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelExtraConfigsPage.xaml
index 00481bf32f..cd8283c289 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelExtraConfigsPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelExtraConfigsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="AddAPIModelExtraConfigsPage">
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml
index e5f92cc9aa..0ff0a2ddcd 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="AddAPIModelSelectTypePage" >
-
+
@@ -50,7 +50,7 @@
-
+
@@ -58,6 +58,6 @@
-
+
\ No newline at end of file
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml.cs b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml.cs
index 02369deb39..af5e36664f 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml.cs
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/AddAPIModelSelectTypePage.xaml.cs
@@ -20,12 +20,14 @@ limitations under the License.
using Amdocs.Ginger.Common.APIModelLib;
using Amdocs.Ginger.Common.Repository.ApplicationModelLib;
using Amdocs.Ginger.Common.Repository.ApplicationModelLib.APIModelLib;
+using Amdocs.Ginger.Common.Repository.ApplicationModelLib.APIModelLib.SwaggerApi;
using Amdocs.Ginger.Repository;
using DocumentFormat.OpenXml.Drawing;
using Ginger.UserControls;
using GingerWPF.ApplicationModelsLib.APIModels;
using GingerWPF.ApplicationModelsLib.APIModels.APIModelWizard;
using GingerWPF.WizardLib;
+using NPOI.HPSF;
using System;
using System.Collections.Specialized;
using System.Threading.Tasks;
@@ -242,6 +244,15 @@ private void APIType_SelectionChanged(object sender, SelectionChangedEventArgs e
xURLTextBox.Text = string.Empty;
+ if (APITypeComboBox.SelectedValue.ToString() == eAPIType.Swagger.ToString())
+ {
+ SupportNote.Visibility = Visibility.Visible;
+ }
+ else
+ {
+ SupportNote.Visibility = Visibility.Collapsed;
+ }
+
if (URLRadioButton.IsChecked == true)
{
if (APITypeComboBox.SelectedValue.ToString() == eAPIType.Swagger.ToString() || (string.IsNullOrEmpty(xURLTextBox.Text) && APITypeComboBox.SelectedValue.ToString() == eAPIType.WSDL.ToString()))
@@ -274,6 +285,7 @@ private void APIType_SelectionChanged(object sender, SelectionChangedEventArgs e
xBrowseLoadButton.Visibility = Visibility.Collapsed;
xPreviewButton.Visibility = Visibility.Collapsed;
XMLTemplatesLable.Visibility = Visibility.Visible;
+ SupportNote.Visibility = Visibility.Collapsed;
BrowseButtonClicked(new object(), new RoutedEventArgs());
xURLTextBox.ClearValidations(TextBox.TextProperty);
@@ -427,7 +439,7 @@ private void BrowseButtonClicked(object sender, RoutedEventArgs e)
{
System.Windows.Forms.OpenFileDialog dlg2 = new System.Windows.Forms.OpenFileDialog();
- dlg2.Filter = "JSON Files (*.json)|*.json" + "|YAML Files (*.yaml)|*.yaml;*.yml" + "|All Files (*.*)|*.*";
+ dlg2.Filter = "JSON Files (*.json)|*.json|YAML Files (*.yaml, *.yml)|*.yaml;*.yml|All Files (*.*)|*.*";
System.Windows.Forms.DialogResult result = dlg2.ShowDialog();
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml
index fd367b95eb..fe1e286ba2 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="1555.556" d:DesignWidth="3453.333"
Title="ScanAPIModelWizardPage">
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml.cs b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml.cs
index e7996c60d0..a4409bac29 100644
--- a/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml.cs
+++ b/Ginger/Ginger/ApplicationModelsLib/APIModels/APIModelWizard/ScanAPIModelWizardPage.xaml.cs
@@ -22,6 +22,7 @@ limitations under the License.
using Amdocs.Ginger.Common.Enums;
using Amdocs.Ginger.Common.Repository.ApplicationModelLib;
using Amdocs.Ginger.Common.Repository.ApplicationModelLib.APIModelLib;
+using Amdocs.Ginger.Common.Repository.ApplicationModelLib.APIModelLib.SwaggerApi;
using Amdocs.Ginger.Repository;
using Ginger;
using Ginger.ApplicationModelsLib.APIModels.APIModelWizard;
@@ -603,7 +604,7 @@ private void XManualMatchBtn_Click(object sender, RoutedEventArgs e)
apiModelTreeSelectionPage = new SingleItemTreeViewSelectionPage("API Models", eImageType.APIModel, apiRoot, SingleItemTreeViewSelectionPage.eItemSelectionType.Single, true,
new System.Tuple(nameof(ApplicationAPIModel.APIType), deltaAPI.learnedAPI.APIType.ToString()));
- apiModelTreeSelectionPage.xTreeView.Tree.RefresTreeNodeChildrens(apiRoot);
+ apiModelTreeSelectionPage.xTreeView.Tree.RefreshTreeNodeChildrens(apiRoot);
List
-
+
@@ -92,44 +92,29 @@
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/DeltaWizard/PomDeltaViewPage.xaml.cs b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/DeltaWizard/PomDeltaViewPage.xaml.cs
index c3fb5d746e..3843df29f4 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/DeltaWizard/PomDeltaViewPage.xaml.cs
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/DeltaWizard/PomDeltaViewPage.xaml.cs
@@ -542,7 +542,7 @@ private void xElementDetailsTabs_SelectionChanged(object sender, SelectionChange
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMGeneralDetailsWizardPage.xaml b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMGeneralDetailsWizardPage.xaml
index 21d02ce6ff..721363f8d8 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMGeneralDetailsWizardPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMGeneralDetailsWizardPage.xaml
@@ -13,7 +13,7 @@
Title="SelectAppFolderWizardPage">
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMLearnConfigWizardPage.xaml b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMLearnConfigWizardPage.xaml
index 70275cb155..6b4fb97ea1 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMLearnConfigWizardPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMLearnConfigWizardPage.xaml
@@ -11,7 +11,7 @@
Title="Learn Config">
-
+
@@ -65,10 +65,10 @@
-
+
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMObjectsMappingWizardPage.xaml b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMObjectsMappingWizardPage.xaml
index 4fe7945724..3dbdf54c01 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMObjectsMappingWizardPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMWizardLib/LearnWizard/POMObjectsMappingWizardPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="LearnWizardPage">
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml
index b4877ea2f3..2abe97cb03 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="30" d:DesignWidth="380"
Title="POMsSelectionPage">
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml.cs b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml.cs
index ce122513ff..a9bd155bc4 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml.cs
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/POMsSelectionPage.xaml.cs
@@ -123,7 +123,7 @@ public void RefreshTreeItems(object sender, RoutedEventArgs e)
private void UpdatePOMTree()
{
mApplicationPOMSelectionPage.xTreeView.Tree.SelectItem(mItemTypeRootNode);
- mApplicationPOMSelectionPage.xTreeView.Tree.RefresTreeNodeChildrens(mItemTypeRootNode);
+ mApplicationPOMSelectionPage.xTreeView.Tree.RefreshTreeNodeChildrens(mItemTypeRootNode);
}
///
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml
index e4a84f0f16..ded3c73796 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="PomAllElementsPage">
-
+
@@ -30,36 +30,21 @@
-
-
-
-
-
+
-
+
-
+
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs
index 50a82ec4fb..9cd9ab2f76 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomAllElementsPage.xaml.cs
@@ -406,7 +406,7 @@ private void POMModelTabsSelectionChanged(object sender, SelectionChangedEventAr
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml
index bbe2d5ea9d..717e74850d 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml
@@ -74,7 +74,7 @@
-
+
diff --git a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml.cs b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml.cs
index 107d9be655..c099ec0c06 100644
--- a/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml.cs
+++ b/Ginger/Ginger/ApplicationModelsLib/POMModels/PomElementsPage.xaml.cs
@@ -976,7 +976,7 @@ private void xElementDetailsTabs_SelectionChanged(object sender, SelectionChange
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/ApplicationModelsLib/Unused/POMSimulatorPage.xaml b/Ginger/Ginger/ApplicationModelsLib/Unused/POMSimulatorPage.xaml
index dc9626305b..2c1ce31b34 100644
--- a/Ginger/Ginger/ApplicationModelsLib/Unused/POMSimulatorPage.xaml
+++ b/Ginger/Ginger/ApplicationModelsLib/Unused/POMSimulatorPage.xaml
@@ -32,7 +32,7 @@
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/ActionsLibrary/ActionsLibraryNavPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/ActionsLibrary/ActionsLibraryNavPage.xaml
index 8b4b814551..f10368243f 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/ActionsLibrary/ActionsLibraryNavPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/ActionsLibrary/ActionsLibraryNavPage.xaml
@@ -14,61 +14,46 @@
-
+
-
+
-
-
-
-
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/RepositoryPage.xaml.cs b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/RepositoryPage.xaml.cs
index 5cb2156355..895e4c1411 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/RepositoryPage.xaml.cs
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/RepositoryPage.xaml.cs
@@ -116,7 +116,7 @@ private void TabControl_SelectionChanged(object sender, SelectionChangedEventArg
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml
index f672ed6df2..4e723c4bea 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml
@@ -18,48 +18,32 @@
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
+
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml.cs b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml.cs
index f4aed12619..de18df7e9a 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml.cs
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositoryNavPage.xaml.cs
@@ -75,7 +75,7 @@ private void TabControl_SelectionChanged(object sender, SelectionChangedEventArg
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositorySummaryPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositorySummaryPage.xaml
index 1140301bdb..fb060ac2e5 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositorySummaryPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/SharedRepositoryLib/SharedRepositorySummaryPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="SharedRepositoryPage">
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage.xaml
index 0a422a8d0e..9d6f870106 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="300" d:DesignWidth="500"
Title="ControlActionsPage">
-
+
@@ -25,7 +25,7 @@
-
+
@@ -39,7 +39,7 @@
-
+
@@ -68,7 +68,7 @@
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage_New.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage_New.xaml
index 3bc842205b..ff0146c830 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage_New.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ControlActionsPage_New.xaml
@@ -4,7 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:UserControls="clr-namespace:Amdocs.Ginger.UserControls" xmlns:uclistview="clr-namespace:Ginger.UserControlsLib.UCListView" xmlns:Ginger="clr-namespace:Ginger"
- mc:Ignorable="d" Background="{StaticResource $BackgroundColor_LightGray}"
+ mc:Ignorable="d" Background="{StaticResource $BackgroundColor_White}"
Title="ControlActionsPage_New">
@@ -37,7 +37,7 @@
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ElementInfoPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ElementInfoPage.xaml
index bd607c4d64..5c1039f0e2 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ElementInfoPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/ElementInfoPage.xaml
@@ -10,7 +10,7 @@
Title="ElementInfoPage">
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/FilterElementsPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/FilterElementsPage.xaml
index 0967537399..39062ce38d 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/FilterElementsPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/FilterElementsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="650" d:DesignWidth="600"
Title="FilterElementsPage">
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/MenuControlActionsPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/MenuControlActionsPage.xaml
index 6e76d03830..671bd03642 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/MenuControlActionsPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/MenuControlActionsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="MenuControlActionsPage">
-
+
@@ -19,7 +19,7 @@
-
+
-
+
-
+
-
+
BF Name
@@ -57,6 +57,6 @@
AppName
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml
index d60f4b5faa..e7ab4aac17 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml
@@ -11,7 +11,7 @@
Title="Ginger Window Explorer">
-
+
@@ -38,28 +38,13 @@
-
-
-
-
-
-
+
-
+
@@ -67,7 +52,7 @@
-
+
@@ -80,45 +65,45 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -126,11 +111,11 @@
-
+
-
+
@@ -141,7 +126,7 @@
-
+
@@ -152,16 +137,16 @@
-
-
+
+
-
+
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs
index 8e3178bcb1..89f8ae908a 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/Common/WindowExplorerPage.xaml.cs
@@ -147,7 +147,7 @@ public WindowExplorerPage(ApplicationAgent ApplicationAgent, Context context, Ac
xWindowControlsTreeView.SearchStarted += WindowControlsTreeView_SearchStarted;
xWindowControlsTreeView.SearchCancelled += WindowControlsTreeView_SearchCancelled;
xWindowControlsTreeView.SearchCompleted += WindowControlsTreeView_SearchCompleted;
- xWindowControlsTreeView.TreeTitleStyle = (Style)TryFindResource("@NoTitle");
+ xWindowControlsTreeView.TreeTitleVisibility = Visibility.Collapsed;
xWindowControlsTreeView.Tree.ItemSelected += WindowControlsTreeView_ItemSelected;
xWindowSelection.RefreshWindowsButton.Click += RefreshWindowsButton_Click;
@@ -1363,7 +1363,7 @@ private async void ViewsTabs_SelectionChanged(object sender, SelectionChangedEve
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/UIA/UIAElementPage.xaml b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/UIA/UIAElementPage.xaml
index 3b49768821..5dff42eb93 100644
--- a/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/UIA/UIAElementPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/AddActionMenu/WindowExplorer/UIA/UIAElementPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="ControlInfoPage">
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml b/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml
index ea468b3bf9..95f8f6bbf9 100644
--- a/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml
@@ -1,13 +1,9 @@
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
+ x:Class="Ginger.BusinessFlowWindows.ExecutionSummaryPage"
+ Height="550" Width="600">
@@ -20,7 +16,7 @@
-
+
@@ -34,11 +30,11 @@
-
+
-
-
-
+
+
+
@@ -69,10 +65,10 @@
-
-
-
-
+
+
+
+
diff --git a/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml.cs b/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml.cs
index 257e05d02e..bfed394c7c 100644
--- a/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml.cs
+++ b/Ginger/Ginger/AutomatePageLib/ExecutionSummaryPage.xaml.cs
@@ -72,12 +72,7 @@ private void ShowPie()
SeriesActivityCollection = new SeriesCollection();
SeriesActionCollection = new SeriesCollection();
- DataContext = this;
- //if (ActivityChart.Palette == null)
- // ActivityChart.Palette = new ResourceDictionaryCollection();
- //else
- // ActivityChart.Palette.Clear();
- //List activityStatList = new List();
+ DataContext = this;
List st = mContext.BusinessFlow.GetActivitiesStats();
foreach (var v in st)
{
@@ -91,11 +86,6 @@ private void ShowPie()
Activities.Content = GingerDicser.GetTermResValue(eTermResKey.Activities);
//Action
- //if (ActionChart.Palette == null)
- // ActionChart.Palette = new ResourceDictionaryCollection();
- //else
- // ActionChart.Palette.Clear();
- //List actionStatList = new List();
List act = mContext.BusinessFlow.GetActionsStat();
foreach (var v in act)
{
@@ -112,14 +102,6 @@ private void ShowPie()
{
SwitchLegend(s);
}
- {
- stck.Children.Add(Ginger.General.makeImgFromControl(ActivityChart, totalActivity.ToString(), 1));
- stck.Children.Add(Ginger.General.makeImgFromControl(ActionChart, totalAction.ToString(), 2));
- }
- {
- //App.RunsetActivityTextbox.Text = totalActivity.ToString();
- //App.RunsetActionTextbox.Text = totalAction.ToString();
- }
}
public void HideAllLegend()
{
diff --git a/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml b/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml
index 4ad0d8b7a3..b81817a304 100644
--- a/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml
+++ b/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml
@@ -24,115 +24,103 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
- Environment:
-
+
+
+
+ Environment:
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
@@ -307,14 +316,14 @@
-
+
-
+
-
+
@@ -325,12 +334,15 @@
-
+
-
+
-
-
+
+
+
+
+
@@ -347,7 +359,7 @@
-
+
diff --git a/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml.cs b/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml.cs
index 69e52fca33..75a4dab326 100644
--- a/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml.cs
+++ b/Ginger/Ginger/AutomatePageLib/NewAutomatePage.xaml.cs
@@ -90,7 +90,7 @@ public partial class NewAutomatePage : GingerUIPage, INotifyPropertyChanged
bool mExecutionIsInProgress = false;
bool mSyncSelectedItemWithExecution = true;
- GridLength mLastAddActionsColumnWidth = new GridLength(400);
+ GridLength mLastAddActionsColumnWidth = new GridLength(350);
ObjectId mRunnerLiteDbId;
ObjectId mRunSetLiteDbId;
@@ -586,7 +586,7 @@ private void SetActivityEditPage()
if (mActivityPage == null)
{
var pageViewMode = mContext.Activity.Type == Amdocs.Ginger.Repository.eSharedItemType.Regular ? Ginger.General.eRIPageViewMode.Automation : Ginger.General.eRIPageViewMode.ViewAndExecute;
- mActivityPage = new ActivityPage(mContext.Activity, mContext, pageViewMode);
+ mActivityPage = new ActivityPage(mContext.Activity, mContext, pageViewMode, highlightActivityName:true);
}
else
{
@@ -703,7 +703,7 @@ private void SetUIElementsBehaverDuringExecution()
xRunFlowBtn.ToolTip = "Execution is in progress";
xRunFlowBtn.IsEnabled = false;
xRunFlowBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_ExecutionRunning");
- xRunFlowBtn.ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
+ xRunFlowBtn.ButtonImageForground = (SolidColorBrush)FindResource("$HighlightColor_LightBlue");
xStopRunBtn.ButtonImageType = eImageType.Stop;
xStopRunBtn.ButtonText = "Stop";
@@ -778,7 +778,7 @@ private void xRunFlowBtn_UpdateDuringAnalyzing()
xRunFlowBtn.ToolTip = "Analyzing in progress";
xRunFlowBtn.IsEnabled = false;
xRunFlowBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_ExecutionRunning");
- xRunFlowBtn.ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
+ xRunFlowBtn.ButtonImageForground = (SolidColorBrush)FindResource("$HighlightColor_LightBlue");
});
}
@@ -918,7 +918,7 @@ private async Task RunAutomateTabFlow()
{
AnalyzerPage analyzerPage = new AnalyzerPage();
- analyzerPage.Init(WorkSpace.Instance.Solution, mBusinessFlow, WorkSpace.Instance.AutomateTabSelfHealingConfiguration.AutoFixAnalyzerIssue);
+ analyzerPage.Init(mBusinessFlow, WorkSpace.Instance.AutomateTabSelfHealingConfiguration.AutoFixAnalyzerIssue);
await analyzerPage.AnalyzeWithoutUI();
Reporter.HideStatusMessage();
if (analyzerPage.TotalHighAndCriticalIssues > 0)
@@ -1380,7 +1380,7 @@ private void xAnalyzeBtn_Click(object sender, RoutedEventArgs e)
}
AnalyzerPage AP = new AnalyzerPage();
- AP.Init(WorkSpace.Instance.Solution, mBusinessFlow);
+ AP.Init(mBusinessFlow);
AP.ShowAsWindow();
}
@@ -1786,12 +1786,12 @@ private void xSelectedItemExecutionSyncBtn_Click(object sender, RoutedEventArgs
private void RunBtn_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
+ ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
}
private void RunBtn_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
+ ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$HighlightColor_LightBlue");
}
private void xExportToCSVMenuItem_Click(object sender, RoutedEventArgs e)
@@ -1807,7 +1807,6 @@ private void Page_Loaded(object sender, RoutedEventArgs e)
}
//Help Layouts
- App.MainWindow.AddHelpLayoutToShow("AutomatePage_GoBackToBFsHelp", xGoToBFsTreeBtn, string.Format("Click here to go back to {0} tree", GingerDicser.GetTermResValue(eTermResKey.BusinessFlows)));
App.MainWindow.AddHelpLayoutToShow("AutomatePage_BusinessFlowLayerHelp", xBusinessFlowItemComboBox, string.Format("Select here which layer of {0} you want to configure: {1}, {2} or Details", GingerDicser.GetTermResValue(eTermResKey.BusinessFlow), GingerDicser.GetTermResValue(eTermResKey.Activities), GingerDicser.GetTermResValue(eTermResKey.Variables)));
App.MainWindow.AddHelpLayoutToShow("AutomatePage_AppsAgentsMappingHelp", xAppsAgentsMappingFrame, "Here you should match between the Application and the Agent which will be used for communicating and automating it");
App.MainWindow.AddHelpLayoutToShow("AutomatePage_EnvironmentSelectionHelp", xEnvironmentComboBox, "Environments should be used for storing environment level parameters, DB connection details and more, go to “Resources-> Environments” to configure all environments you need and select here which environment data to use in execution time");
diff --git a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml
index 6981d75af9..413066360c 100644
--- a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml
+++ b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml
@@ -1,4 +1,4 @@
-
-
+
Name:
-
+
-
+
Description:
-
+
-
+
Run Description:
-
+
@@ -36,17 +36,17 @@
-
+
-
+
-
+
diff --git a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml.cs b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml.cs
index 13629a081d..0a55a0263e 100644
--- a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml.cs
+++ b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowConfigurationsPage.xaml.cs
@@ -21,7 +21,9 @@ limitations under the License.
using Amdocs.Ginger.Repository;
using Ginger;
using Ginger.BusinessFlowWindows;
+using Ginger.ConflictResolve;
using Ginger.UserControls;
+using System.Collections.Generic;
using GingerCore;
using GingerCore.Activities;
using GingerCore.GeneralLib;
@@ -31,6 +33,7 @@ limitations under the License.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
+using System;
namespace GingerWPF.BusinessFlowsLib
{
@@ -182,7 +185,6 @@ private void BindControls()
BindingHandler.ObjFieldBinding(xCreatedByTextBox, TextBox.TextProperty, mBusinessFlow.RepositoryItemHeader, nameof(RepositoryItemHeader.CreatedBy));
BindingHandler.ObjFieldBinding(xAutoPrecentageTextBox, TextBox.TextProperty, mBusinessFlow, nameof(BusinessFlow.AutomationPrecentage), System.Windows.Data.BindingMode.OneWay);
BindingHandler.ObjFieldBinding(xPublishcheckbox, CheckBox.IsCheckedProperty, mBusinessFlow, nameof(RepositoryItemBase.Publish));
-
//// Per source we can show specific source page info
//if (mBusinessFlow.Source == BusinessFlow.eSource.Gherkin)
//{
diff --git a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml
index 882b427fe6..e6b4bceac4 100644
--- a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml
+++ b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml
@@ -12,7 +12,7 @@
d:DesignHeight="300" d:DesignWidth="800"
Title="BusinessFlowViewPage">
-
+
@@ -75,7 +75,7 @@
-
+
@@ -85,9 +85,9 @@
-
+
-
+
@@ -97,7 +97,7 @@
-
+
@@ -116,7 +116,7 @@
-
+
@@ -135,7 +135,7 @@
-
+
diff --git a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml.cs b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml.cs
index 1967714922..0d8052512b 100644
--- a/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml.cs
+++ b/Ginger/Ginger/BusinessFlowWindows/BusinessFlowViewPage.xaml.cs
@@ -44,8 +44,8 @@ public partial class BusinessFlowViewPage : GingerUIPage
Context mContext;
Ginger.General.eRIPageViewMode mPageViewMode;
- ActivitiesListViewPage mActivitiesPage;
- VariabelsListViewPage mVariabelsPage;
+ public ActivitiesListViewPage mActivitiesPage;
+ public VariabelsListViewPage mVariabelsPage;
BusinessFlowConfigurationsPage mConfigurationsPage;
GenericWindow mGenericWin = null;
@@ -226,7 +226,7 @@ private void UpdateInfoSection()
{
xDescriptionTextBlock.Text = string.Empty;
TextBlockHelper xDescTextBlockHelper = new TextBlockHelper(xDescriptionTextBlock);
- //SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$Color_DarkBlue")).ToString());
+ //SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$PrimaryColor_Black")).ToString());
if (!string.IsNullOrEmpty(mBusinessFlow.Description))
{
@@ -311,7 +311,7 @@ private void xAutomate_Click(object sender, RoutedEventArgs e)
private void xAnalyzeBtn_Click(object sender, RoutedEventArgs e)
{
AnalyzerPage AP = new AnalyzerPage();
- AP.Init(WorkSpace.Instance.Solution, mBusinessFlow);
+ AP.Init(mBusinessFlow);
AP.ShowAsWindow();
}
diff --git a/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml b/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml
index dcb7b1f01f..9ad1bb8803 100644
--- a/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml
+++ b/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml
@@ -8,7 +8,7 @@
mc:Ignorable="d"
Height="375" Width="600">
-
+
diff --git a/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml.cs b/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml.cs
index e5022917f3..4298a87bc9 100644
--- a/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml.cs
+++ b/Ginger/Ginger/BusinessFlowWindows/EditBusinessFlowAppsPage.xaml.cs
@@ -70,6 +70,7 @@ private void SetGridView()
ApplicationPlatform AP1 = new ApplicationPlatform();
AP1.AppName = AP.AppName;
AP1.Platform = AP.Platform;
+ AP1.Guid = AP.Guid;
// If this App was selected before then mark it
TargetApplication APS = (TargetApplication)(from x in mBusinessFlow.TargetApplications where x.Name == AP.AppName select x).FirstOrDefault();
@@ -160,6 +161,7 @@ public void SetTargetApplications()
{
TargetApplication tt = new TargetApplication();
tt.AppName = TA.AppName;
+ tt.TargetGuid = TA.Guid;
tt.Selected = true;
mBusinessFlow.TargetApplications.Add(tt);
}
diff --git a/Ginger/Ginger/ConflictResolve/AnalyzeMergedPage.xaml b/Ginger/Ginger/ConflictResolve/AnalyzeMergedPage.xaml
new file mode 100644
index 0000000000..7774ee8187
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/AnalyzeMergedPage.xaml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/ConflictResolve/AnalyzeMergedPage.xaml.cs b/Ginger/Ginger/ConflictResolve/AnalyzeMergedPage.xaml.cs
new file mode 100644
index 0000000000..0d8142060f
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/AnalyzeMergedPage.xaml.cs
@@ -0,0 +1,109 @@
+using amdocs.ginger.GingerCoreNET;
+using Amdocs.Ginger.Common.SourceControlLib;
+using Amdocs.Ginger.Repository;
+using Ginger.AnalyzerLib;
+using Ginger.Run;
+using Ginger.SourceControl;
+using GingerCore;
+using GingerCore.GeneralLib;
+using GingerWPF.WizardLib;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Ginger.ConflictResolve
+{
+ ///
+ /// Interaction logic for AnalyeMergedPage.xaml
+ ///
+ public partial class AnalyeMergedPage : Page, IWizardPage
+ {
+ private readonly AnalyzerPage _analyzerPage;
+
+ public AnalyeMergedPage()
+ {
+ InitializeComponent();
+ _analyzerPage = new();
+ }
+
+ public static bool IsTypeSupportedForIsolatedAnalyzation(Type type)
+ {
+ return
+ typeof(BusinessFlow).IsAssignableFrom(type) ||
+ typeof(RunSetConfig).IsAssignableFrom(type);
+ }
+
+ public void WizardEvent(WizardEventArgs WizardEventArgs)
+ {
+ ResolveMergeConflictWizard wizard = (ResolveMergeConflictWizard)WizardEventArgs.Wizard;
+
+ if (WizardEventArgs.EventType == EventType.Active)
+ {
+ OnWizardActivePage(wizard);
+ }
+ }
+
+ private void OnWizardActivePage(ResolveMergeConflictWizard wizard)
+ {
+ Task.Run(() =>
+ {
+ ShowLoading();
+ bool hasMergedItem = wizard.TryGetOrCreateMergedItem(out RepositoryItemBase? mergedItem);
+ if (hasMergedItem && mergedItem != null)
+ {
+ if (mergedItem is BusinessFlow mergedBusinessFlow)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ _analyzerPage.Init(mergedBusinessFlow, WorkSpace.Instance.AutomateTabSelfHealingConfiguration.AutoFixAnalyzerIssue);
+ xAnalyzerPageFrame.ClearAndSetContent(_analyzerPage);
+ });
+ _analyzerPage.AnalyzeWithUI().Wait();
+ }
+ else if (mergedItem is RunSetConfig mergedRunSetConfig)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ _analyzerPage.Init(mergedRunSetConfig);
+ xAnalyzerPageFrame.ClearAndSetContent(_analyzerPage);
+ });
+ }
+ }
+ HideLoading();
+ });
+ }
+
+ private void ShowLoading()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xContentGrid.Visibility = Visibility.Collapsed;
+ if (xLoadingFrame.Content == null)
+ {
+ xLoadingFrame.Content = new LoadingPage();
+ }
+ xLoadingFrame.Visibility = Visibility.Visible;
+ });
+ }
+
+ private void HideLoading()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xLoadingFrame.Visibility = Visibility.Collapsed;
+ xContentGrid.Visibility = Visibility.Visible;
+ });
+ }
+ }
+}
diff --git a/Ginger/Ginger/ConflictResolve/Conflict.cs b/Ginger/Ginger/ConflictResolve/Conflict.cs
new file mode 100644
index 0000000000..4cf0522f04
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/Conflict.cs
@@ -0,0 +1,211 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using amdocs.ginger.GingerCoreNET;
+using Amdocs.Ginger.Common;
+using Amdocs.Ginger.Common.SourceControlLib;
+using Amdocs.Ginger.Repository;
+using Ginger.SourceControl;
+using GingerCore.GeneralLib;
+using NPOI.OpenXmlFormats.Dml.Chart;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Globalization;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Data;
+
+namespace Ginger.ConflictResolve
+{
+
+ public class Conflict : INotifyPropertyChanged
+ {
+ public enum ResolutionType
+ {
+ [EnumValueDescription("Accept Server Changes")]
+ AcceptServer,
+ [EnumValueDescription("Keep Local Changes")]
+ KeepLocal,
+ [EnumValueDescription("Merge Conflicts")]
+ CherryPick
+ }
+
+ private RepositoryItemBase? _localItem;
+ private RepositoryItemBase? _remoteItem;
+ private RepositoryItemBase? _mergedItem;
+ private bool _isMergedItemSet = false;
+ private Comparison _comparison;
+ private bool _isComparisonLoaded = false;
+
+ public event PropertyChangedEventHandler? PropertyChanged;
+
+ public string Path { get; }
+
+ public string RelativePath { get; }
+
+ private bool _isSelectedForResolution;
+ public bool IsSelectedForResolution
+ {
+ get => _isSelectedForResolution;
+ set
+ {
+ if(_isSelectedForResolution != value)
+ {
+ _isSelectedForResolution = value;
+ OnPropertyChanged(nameof(IsSelectedForResolution));
+ }
+ }
+ }
+
+ private ResolutionType _resolution;
+ public ResolutionType Resolution
+ {
+ get => _resolution;
+ set
+ {
+ if(_resolution != value)
+ {
+ _resolution = value;
+ CanResolve = CalculateCanResolve();
+ OnPropertyChanged(nameof(Resolution));
+ }
+ }
+ }
+
+ public Comparison Comparison
+ {
+ get
+ {
+ if (!_isComparisonLoaded)
+ {
+ LoadComparison();
+ }
+
+ return _comparison;
+ }
+ }
+
+ private bool _canResolve;
+ public bool CanResolve
+ {
+ get => _canResolve;
+ private set
+ {
+ if (_canResolve != value)
+ {
+ _canResolve = value;
+ OnPropertyChanged(nameof(CanResolve));
+ }
+ }
+ }
+
+ public Conflict(string conflictPath)
+ {
+ Path = conflictPath;
+ _localItem = SourceControlIntegration.GetLocalItemFromConflict(WorkSpace.Instance.SourceControl, Path);
+ _remoteItem = SourceControlIntegration.GetRemoteItemFromConflict(WorkSpace.Instance.SourceControl, Path);
+ _comparison = null!;
+ _canResolve = CalculateCanResolve();
+ RelativePath = WorkSpace.Instance.SolutionRepository.ConvertFullPathToBeRelative(Path);
+ }
+
+ private void OnPropertyChanged(string propertyName)
+ {
+ PropertyChangedEventHandler? handler = PropertyChanged;
+ if (handler != null)
+ {
+ handler(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+
+ private void LoadComparison()
+ {
+ _isComparisonLoaded = true;
+ _comparison = SourceControlIntegration.CompareConflictedItems(_localItem, _remoteItem);
+ _comparison.PropertyChanged += (_, args) =>
+ {
+ if(string.Equals(args.PropertyName, nameof(Comparison.ChildComparisons)))
+ {
+ DiscardMergedItem();
+ }
+ };
+ }
+
+ public RepositoryItemBase? GetLocalItem()
+ {
+ return _localItem;
+ }
+
+ public RepositoryItemBase? GetRemoteItem()
+ {
+ return _remoteItem;
+ }
+
+ public bool TryGetMergedItem(out RepositoryItemBase? mergedItem)
+ {
+ if (_isMergedItemSet)
+ {
+ mergedItem = _mergedItem;
+ return true;
+ }
+ else
+ {
+ mergedItem = null;
+ return false;
+ }
+ }
+
+ public bool TryCreateAndSetMergedItemFromComparison()
+ {
+ return TryCreateAndSetMergedItemFromComparison(out RepositoryItemBase? _);
+ }
+
+ public bool TryCreateAndSetMergedItemFromComparison(out RepositoryItemBase? mergedItem)
+ {
+ int unselectedComparisonCount = Comparison.UnselectedComparisonCount();
+ if(unselectedComparisonCount > 0)
+ {
+ mergedItem = null;
+ return false;
+ }
+
+ _mergedItem = SourceControlIntegration.CreateMergedItemFromComparison(Comparison);
+ mergedItem = _mergedItem;
+ _isMergedItemSet = true;
+ CanResolve = CalculateCanResolve();
+ return true;
+ }
+
+ public void DiscardMergedItem()
+ {
+ _mergedItem = null;
+ _isMergedItemSet = false;
+ CanResolve = CalculateCanResolve();
+ }
+
+ private bool CalculateCanResolve()
+ {
+ return
+ _resolution == ResolutionType.KeepLocal ||
+ _resolution == ResolutionType.AcceptServer ||
+ (_resolution == ResolutionType.CherryPick && _isMergedItemSet);
+ }
+ }
+}
diff --git a/Ginger/Ginger/ConflictResolve/ConflictComparisonTreeViewItem.cs b/Ginger/Ginger/ConflictResolve/ConflictComparisonTreeViewItem.cs
new file mode 100644
index 0000000000..bf6c085feb
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/ConflictComparisonTreeViewItem.cs
@@ -0,0 +1,221 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using Amdocs.Ginger.Common;
+using Amdocs.Ginger.Common.Enums;
+using Amdocs.Ginger.Common.SourceControlLib;
+using Amdocs.Ginger.Repository;
+using Amdocs.Ginger.UserControls;
+using GingerCore.GeneralLib;
+using GingerWPF.TreeViewItemsLib;
+using GingerWPF.UserControlsLib.UCTreeView;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+
+namespace Ginger.ConflictResolve
+{
+ public sealed class ConflictComparisonTreeViewItem : NewTreeViewItemBase, ITreeViewItem
+ {
+ private readonly Comparison _comparison;
+ private readonly Comparison.StateType[] _childrenStateFilter;
+
+ public ConflictComparisonTreeViewItem(Comparison comparison, Comparison.StateType[] childrenStateFilter)
+ {
+ _comparison = comparison;
+ _childrenStateFilter = childrenStateFilter;
+ }
+
+ public List Childrens()
+ {
+ if (_comparison.HasChildComparisons)
+ {
+ return _comparison.ChildComparisons
+ .Where(childComparison => _childrenStateFilter.Contains(childComparison.State))
+ .Select(childComparison => (ITreeViewItem)new ConflictComparisonTreeViewItem(childComparison, _childrenStateFilter))
+ .ToList();
+ }
+ return Array.Empty().ToList();
+ }
+
+ public Page EditPage(Context mContext = null)
+ {
+ return null;
+ }
+
+ public StackPanel Header()
+ {
+ StackPanel headerStackPanel = new()
+ {
+ Orientation = Orientation.Horizontal,
+ };
+
+ SolidColorBrush itemColor = GetItemColor();
+ headerStackPanel.Background = itemColor;
+
+ CheckBox? itemSelectCheckBox = GetItemSelectCheckBox();
+ if (itemSelectCheckBox != null)
+ {
+ headerStackPanel.Children.Add(itemSelectCheckBox);
+ }
+
+ ImageMakerControl itemImage = GetItemImage();
+ headerStackPanel.Children.Add(itemImage);
+
+ Label itemHeader = GetItemHeader();
+ headerStackPanel.Children.Add(itemHeader);
+
+ return headerStackPanel;
+ }
+
+ private SolidColorBrush GetItemColor()
+ {
+ switch (_comparison.State)
+ {
+ case Comparison.StateType.Unmodified:
+ return Brushes.Transparent;
+ case Comparison.StateType.Modified:
+ return new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FEFAD4"));
+ case Comparison.StateType.Added:
+ return new SolidColorBrush((Color)ColorConverter.ConvertFromString("#CAE9E6"));
+ case Comparison.StateType.Deleted:
+ return new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FCD8D6"));
+ default:
+ throw new NotImplementedException();
+ }
+ }
+
+ private CheckBox? GetItemSelectCheckBox()
+ {
+ if (_comparison.State == Comparison.StateType.Unmodified || _comparison.State == Comparison.StateType.Modified)
+ {
+ return null;
+ }
+
+ if (_comparison.HasParentComparison &&
+ (_comparison.ParentComparison.State == Comparison.StateType.Added ||
+ _comparison.ParentComparison.State == Comparison.StateType.Deleted))
+ {
+ return null;
+ }
+
+ CheckBox itemSelectCheckbox = new();
+ itemSelectCheckbox.VerticalAlignment = System.Windows.VerticalAlignment.Center;
+ BindingHandler.ObjFieldBinding(
+ control: itemSelectCheckbox,
+ dependencyProperty: CheckBox.IsCheckedProperty,
+ obj: _comparison,
+ property: nameof(Comparison.Selected));
+ BindingHandler.ObjFieldBinding(
+ control: itemSelectCheckbox,
+ dependencyProperty: CheckBox.IsEnabledProperty,
+ obj: _comparison,
+ property: nameof(Comparison.IsSelectionEnabled));
+ itemSelectCheckbox.Tag = _comparison;
+
+ itemSelectCheckbox.Checked += CheckBox_CheckedUnchecked;
+ itemSelectCheckbox.Unchecked += CheckBox_CheckedUnchecked;
+
+ return itemSelectCheckbox;
+ }
+
+ private void CheckBox_CheckedUnchecked(object sender, RoutedEventArgs e)
+ {
+ //not required
+ }
+
+ private ImageMakerControl GetItemImage()
+ {
+ ImageMakerControl itemImage = new ImageMakerControl();
+ if (_comparison.HasData && _comparison.Data is RepositoryItemBase ribData)
+ {
+ itemImage.ImageType = ribData.ItemImageType;
+ }
+ else if (_comparison.DataType != null && typeof(RepositoryItemBase).IsAssignableFrom(_comparison.DataType))
+ {
+ if (_comparison.DataType.IsAbstract || _comparison.DataType.GetConstructor(Type.EmptyTypes) == null)
+ {
+ itemImage.ImageType = eImageType.Unknown;
+ }
+ else
+ {
+ RepositoryItemBase? rib = (RepositoryItemBase?)Activator.CreateInstance(_comparison.DataType);
+ if (rib != null)
+ {
+ itemImage.ImageType = rib.ItemImageType;
+ }
+ else
+ {
+ itemImage.ImageType = eImageType.Info;
+ }
+ }
+ }
+ else
+ {
+ itemImage.ImageType = eImageType.Info;
+ }
+
+ itemImage.Width = 16;
+ itemImage.Height = 16;
+
+ return itemImage;
+ }
+
+ private Label GetItemHeader()
+ {
+ Label itemHeaderLabel = new();
+
+ if (_comparison.HasChildComparisons)
+ {
+ itemHeaderLabel.Content = _comparison.Name;
+ }
+ else
+ {
+ itemHeaderLabel.Content = _comparison.Name + ": " + _comparison.DataAsString;
+ }
+
+ return itemHeaderLabel;
+ }
+
+ public bool IsExpandable()
+ {
+ return
+ _comparison.HasChildComparisons &&
+ _comparison.ChildComparisons.Any(childComparison => _childrenStateFilter.Contains(childComparison.State));
+ }
+
+ public ContextMenu Menu()
+ {
+ return null;
+ }
+
+ public object NodeObject()
+ {
+ return _comparison;
+ }
+
+ public void SetTools(ITreeView TV)
+ {
+ //not required
+ }
+ }
+}
diff --git a/Ginger/Ginger/ConflictResolve/ConflictMergeTreeViewItem.cs b/Ginger/Ginger/ConflictResolve/ConflictMergeTreeViewItem.cs
new file mode 100644
index 0000000000..a307e0fd7d
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/ConflictMergeTreeViewItem.cs
@@ -0,0 +1,147 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using Amdocs.Ginger.Common;
+using Amdocs.Ginger.Common.Enums;
+using Amdocs.Ginger.Common.SourceControlLib;
+using Amdocs.Ginger.Repository;
+using Amdocs.Ginger.UserControls;
+using GingerWPF.TreeViewItemsLib;
+using GingerWPF.UserControlsLib.UCTreeView;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Controls;
+using System.Windows.Media;
+
+namespace Ginger.ConflictResolve
+{
+ public sealed class ConflictMergeTreeViewItem : NewTreeViewItemBase, ITreeViewItem
+ {
+ private readonly Comparison _comparison;
+
+ public ConflictMergeTreeViewItem(Comparison comparison)
+ {
+ _comparison = comparison;
+ }
+
+ public List Childrens()
+ {
+ if (_comparison.HasChildComparisons)
+ {
+ return _comparison.ChildComparisons
+ .Select(childComparison => (ITreeViewItem)new ConflictMergeTreeViewItem(childComparison))
+ .ToList();
+ }
+ return Array.Empty().ToList();
+ }
+
+ public Page EditPage(Context mContext = null)
+ {
+ return null;
+ }
+
+ public StackPanel Header()
+ {
+ StackPanel headerStackPanel = new();
+ headerStackPanel.Orientation = Orientation.Horizontal;
+
+ ImageMakerControl itemImage = GetItemImage();
+ headerStackPanel.Children.Add(itemImage);
+
+ Label itemHeader = GetItemHeader();
+ headerStackPanel.Children.Add(itemHeader);
+
+ return headerStackPanel;
+ }
+
+ private ImageMakerControl GetItemImage()
+ {
+ ImageMakerControl itemImage = new ImageMakerControl();
+ if (_comparison.HasData && _comparison.Data is RepositoryItemBase ribData)
+ {
+ itemImage.ImageType = ribData.ItemImageType;
+ }
+ else if (_comparison.DataType != null && typeof(RepositoryItemBase).IsAssignableFrom(_comparison.DataType))
+ {
+ if (_comparison.DataType.IsAbstract || _comparison.DataType.GetConstructor(Type.EmptyTypes) == null)
+ {
+ itemImage.ImageType = eImageType.Unknown;
+ }
+ else
+ {
+ RepositoryItemBase? rib = (RepositoryItemBase?)Activator.CreateInstance(_comparison.DataType);
+ if (rib != null)
+ {
+ itemImage.ImageType = rib.ItemImageType;
+ }
+ else
+ {
+ itemImage.ImageType = eImageType.Info;
+ }
+ }
+ }
+ else
+ {
+ itemImage.ImageType = eImageType.Info;
+ }
+
+ itemImage.Width = 16;
+ itemImage.Height = 16;
+
+ return itemImage;
+ }
+
+ private Label GetItemHeader()
+ {
+ Label itemHeaderLabel = new();
+
+ if (_comparison.HasChildComparisons)
+ {
+ itemHeaderLabel.Content = _comparison.Name;
+ }
+ else
+ {
+ itemHeaderLabel.Content = _comparison.Name + ": " + _comparison.DataAsString;
+ }
+ return itemHeaderLabel;
+ }
+
+ public bool IsExpandable()
+ {
+ return
+ _comparison.HasChildComparisons &&
+ _comparison.ChildComparisons.Any();
+ }
+
+ public ContextMenu Menu()
+ {
+ return null;
+ }
+
+ public object NodeObject()
+ {
+ return null;
+ }
+
+ public void SetTools(ITreeView TV)
+ {
+ //this method is not required
+ }
+ }
+}
diff --git a/Ginger/Ginger/ConflictResolve/ConflictResolveIntro.md b/Ginger/Ginger/ConflictResolve/ConflictResolveIntro.md
new file mode 100644
index 0000000000..be754de3e2
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/ConflictResolveIntro.md
@@ -0,0 +1,10 @@
+### For what conflict resolution is used for?
+Conflict Resolution wizard is used for resolving merge conflicts. It allows users to keep a mixture of local and remote changes while resolving the conflict.
+
+### How to resolve conflicts?
+Select the relevant changes that you want to use to resolve each conflict, and click on next. You will be presented with a preview of the merged item. Finally you can click on the Resolve button to resolve all the conflicts.
+
+### What does conflict color coding denote?
+Red color denotes a property or item that is missing from remote.
+Green color denotes a property or item that is available in remote.
+Yellow color denotes a property or item that exists in both local and remote but, it is modified.
\ No newline at end of file
diff --git a/Ginger/Ginger/ConflictResolve/ConflictViewPage.xaml b/Ginger/Ginger/ConflictResolve/ConflictViewPage.xaml
new file mode 100644
index 0000000000..e83fd736da
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/ConflictViewPage.xaml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/ConflictResolve/ConflictViewPage.xaml.cs b/Ginger/Ginger/ConflictResolve/ConflictViewPage.xaml.cs
new file mode 100644
index 0000000000..b896b78633
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/ConflictViewPage.xaml.cs
@@ -0,0 +1,300 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using Amdocs.Ginger.Common;
+using Amdocs.Ginger.Common.SourceControlLib;
+using GingerWPF.UserControlsLib.UCTreeView;
+using GingerWPF.WizardLib;
+using System;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace Ginger.ConflictResolve
+{
+ ///
+ /// Interaction logic for ConflictViewPage.xaml
+ ///
+ public partial class ConflictViewPage : Page, IWizardPage
+ {
+ private ResolveMergeConflictWizard? _wizard;
+
+ public ConflictViewPage()
+ {
+ InitializeComponent();
+ SetUI();
+ }
+
+ private void SetUI()
+ {
+ SetConflictButtonUI();
+ }
+
+ private void SetConflictButtonUI()
+ {
+ xPrevConflict.xButtonText.Visibility = Visibility.Collapsed;
+ xPrevConflict.xButtonImage.Margin = new Thickness(left: 5, top: 0, right: 5, bottom: 0);
+ xNextConflict.xButtonText.Visibility = Visibility.Collapsed;
+ xNextConflict.xButtonImage.Margin = new Thickness(left: 5, top: 0, right: 5, bottom: 0);
+ }
+
+ public void WizardEvent(WizardEventArgs wizardEventArgs)
+ {
+ _wizard = wizardEventArgs.Wizard as ResolveMergeConflictWizard;
+
+ if (_wizard == null)
+ {
+ throw new InvalidOperationException($"{nameof(ConflictViewPage)} must be used with {nameof(ResolveMergeConflictWizard)}.");
+ }
+
+ switch (wizardEventArgs.EventType)
+ {
+ case EventType.Init:
+ OnWizardPageInit();
+ break;
+ case EventType.LeavingForNextPage:
+ OnWizardPageLeavingForNextPage(wizardEventArgs);
+ break;
+ default:
+ break;
+ }
+ }
+
+ private void OnWizardPageInit()
+ {
+ if(_wizard == null)
+ {
+ return;
+ }
+
+ Task.Run(() =>
+ {
+ ShowLoading();
+ SetConflictStats(_wizard.Comparison);
+ UpdateRemainingConflictCount();
+ SetTreeItems(_wizard.Comparison);
+ HideLoading();
+ });
+ }
+
+ private void ShowLoading()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xContentGrid.Visibility = Visibility.Collapsed;
+ if (xLoadingFrame.Content == null)
+ {
+ xLoadingFrame.Content = new LoadingPage();
+ }
+ xLoadingFrame.Visibility = Visibility.Visible;
+ });
+ }
+
+ private void HideLoading()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xLoadingFrame.Visibility = Visibility.Collapsed;
+ xContentGrid.Visibility = Visibility.Visible;
+ });
+ }
+
+ private void SetConflictStats(Comparison comparison)
+ {
+ BindComparisonSelectedProperty(comparison);
+ }
+
+ private void BindComparisonSelectedProperty(Comparison comparison)
+ {
+ if(comparison.State == Comparison.StateType.Unmodified)
+ {
+ return;
+ }
+
+ comparison.PropertyChanged += Comparison_Selected_Changed;
+
+ if(comparison.State == Comparison.StateType.Added || comparison.State == Comparison.StateType.Deleted)
+ {
+ return;
+ }
+
+ foreach(Comparison childComparison in comparison.ChildComparisons)
+ {
+ BindComparisonSelectedProperty(childComparison);
+ }
+ }
+
+ private void Comparison_Selected_Changed(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (!string.Equals(e.PropertyName, nameof(Comparison.Selected)))
+ {
+ return;
+ }
+
+ UpdateRemainingConflictCount();
+ }
+
+ private void UpdateRemainingConflictCount()
+ {
+ if(_wizard != null)
+ {
+ int remainingComparisonCount = _wizard.Comparison.UnselectedComparisonCount();
+ Dispatcher.Invoke(() => xRemainingConflictCount.Text = remainingComparisonCount.ToString());
+ }
+ }
+
+ private void SetTreeItems(Comparison comparison)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xLocalItemTree.AddItem(
+ new ConflictComparisonTreeViewItem(
+ comparison,
+ childrenStateFilter: new[]
+ {
+ Comparison.StateType.Unmodified,
+ Comparison.StateType.Modified,
+ Comparison.StateType.Deleted
+ }));
+ xRemoteItemTree.AddItem(
+ new ConflictComparisonTreeViewItem(
+ comparison,
+ childrenStateFilter: new[]
+ {
+ Comparison.StateType.Unmodified,
+ Comparison.StateType.Modified,
+ Comparison.StateType.Added
+ }));
+ });
+ }
+
+ private void OnWizardPageLeavingForNextPage(WizardEventArgs eventArgs)
+ {
+ if(_wizard == null)
+ {
+ return;
+ }
+
+ int unselectedComparisonCount = _wizard.Comparison.UnselectedComparisonCount();
+ if (unselectedComparisonCount > 0)
+ {
+ Reporter.ToUser(eUserMsgKey.HandleConflictsBeforeMovingForward, messageArgs: unselectedComparisonCount);
+ eventArgs.CancelEvent = true;
+ }
+ }
+
+ private void ShowNavigatingToConflictLoader()
+ {
+ if (_wizard == null)
+ {
+ return;
+ }
+
+ _wizard.ProcessStarted();
+ }
+
+ private void HideNavigatingToConflictLoader()
+ {
+ if(_wizard == null)
+ {
+ return;
+ }
+
+ _wizard.ProcessEnded();
+ }
+
+ private void xPrevConflict_Click(object sender, RoutedEventArgs e)
+ {
+ _ = HighlighPrevConflictAsync();
+ }
+
+ private async Task HighlighPrevConflictAsync()
+ {
+ NextConflictFinder localNextConflictFinder = new();
+ Task findNextLocalConflictTask = xLocalItemTree.IterateTreeViewItemsAsync(localNextConflictFinder.IterationConsumer, inReverseOrder: true);
+
+ NextConflictFinder remoteNextConflictFinder = new();
+ Task findNextRemoteConflictTask = xRemoteItemTree.IterateTreeViewItemsAsync(remoteNextConflictFinder.IterationConsumer, inReverseOrder: true);
+
+ ShowNavigatingToConflictLoader();
+ await Task.WhenAll(findNextLocalConflictTask, findNextRemoteConflictTask);
+ HideNavigatingToConflictLoader();
+
+ if (localNextConflictFinder.NextConflictTreeViewItem != null)
+ {
+ xLocalItemTree.FocusItem(localNextConflictFinder.NextConflictTreeViewItem);
+ }
+
+ if (remoteNextConflictFinder.NextConflictTreeViewItem != null)
+ {
+ xRemoteItemTree.FocusItem(remoteNextConflictFinder.NextConflictTreeViewItem);
+ }
+ }
+
+ private void xNextConflict_Click(object sender, RoutedEventArgs e)
+ {
+ _ = HighlightNextConflictAsync();
+ }
+
+ private async Task HighlightNextConflictAsync()
+ {
+ NextConflictFinder localNextConflictFinder = new();
+ Task findNextLocalConflictTask = xLocalItemTree.IterateTreeViewItemsAsync(localNextConflictFinder.IterationConsumer);
+
+ NextConflictFinder remoteNextConflictFinder = new();
+ Task findNextRemoteConflictTask = xRemoteItemTree.IterateTreeViewItemsAsync(remoteNextConflictFinder.IterationConsumer);
+
+ ShowNavigatingToConflictLoader();
+ await Task.WhenAll(findNextLocalConflictTask, findNextRemoteConflictTask);
+ HideNavigatingToConflictLoader();
+
+ if (localNextConflictFinder.NextConflictTreeViewItem != null)
+ {
+ xLocalItemTree.FocusItem(localNextConflictFinder.NextConflictTreeViewItem);
+ }
+
+ if (remoteNextConflictFinder.NextConflictTreeViewItem != null)
+ {
+ xRemoteItemTree.FocusItem(remoteNextConflictFinder.NextConflictTreeViewItem);
+ }
+ }
+
+ private sealed class NextConflictFinder
+ {
+ public TreeViewItem? NextConflictTreeViewItem { get; private set; }
+
+ public bool IterationConsumer(TreeViewItem currentTreeViewItem)
+ {
+ Comparison comparison = (Comparison)((ITreeViewItem)currentTreeViewItem.Tag).NodeObject();
+ bool continueIteration = true;
+
+ bool IsAddedOrDeleted = comparison.State == Comparison.StateType.Added || comparison.State == Comparison.StateType.Deleted;
+ bool canBeSelected = comparison.IsSelectionEnabled;
+ bool selfAndSiblingNotSelected = !comparison.Selected && (!comparison.HasSiblingComparison || !comparison.SiblingComparison.Selected);
+
+ if (IsAddedOrDeleted && canBeSelected && selfAndSiblingNotSelected)
+ {
+ NextConflictTreeViewItem = currentTreeViewItem;
+ continueIteration = false;
+ }
+
+ return continueIteration;
+ }
+ }
+ }
+}
diff --git a/Ginger/Ginger/ConflictResolve/PreviewMergedPage.xaml b/Ginger/Ginger/ConflictResolve/PreviewMergedPage.xaml
new file mode 100644
index 0000000000..89a7670dfa
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/PreviewMergedPage.xaml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/ConflictResolve/PreviewMergedPage.xaml.cs b/Ginger/Ginger/ConflictResolve/PreviewMergedPage.xaml.cs
new file mode 100644
index 0000000000..23f9b59462
--- /dev/null
+++ b/Ginger/Ginger/ConflictResolve/PreviewMergedPage.xaml.cs
@@ -0,0 +1,136 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using Amdocs.Ginger.Common.SourceControlLib;
+using Amdocs.Ginger.Repository;
+using Ginger.SourceControl;
+using GingerCore;
+using GingerCore.GeneralLib;
+using GingerWPF.BusinessFlowsLib;
+using GingerWPF.WizardLib;
+using LibGit2Sharp;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Ginger.ConflictResolve
+{
+ ///
+ /// Interaction logic for PreviewMergedPage.xaml
+ ///
+ public partial class PreviewMergedPage : Page, IWizardPage
+ {
+ public PreviewMergedPage()
+ {
+ InitializeComponent();
+ }
+
+ public void WizardEvent(WizardEventArgs WizardEventArgs)
+ {
+ ResolveMergeConflictWizard wizard = (ResolveMergeConflictWizard)WizardEventArgs.Wizard;
+
+ switch(WizardEventArgs.EventType)
+ {
+ case EventType.Active:
+ OnWizardPageActive(wizard);
+ break;
+ default:
+ break;
+ }
+ }
+
+ private void OnWizardPageActive(ResolveMergeConflictWizard wizard)
+ {
+ Task.Run(() =>
+ {
+ ShowLoading();
+ bool hasMergedItem = wizard.TryGetOrCreateMergedItem(out RepositoryItemBase? mergedItem);
+ if (hasMergedItem && mergedItem != null)
+ {
+ Comparison mergedItemComparison = SourceControlIntegration.CompareConflictedItems(mergedItem, null);
+ SetTreeItems(mergedItemComparison);
+ SetPageContent(mergedItem);
+ }
+ HideLoading();
+ });
+ }
+
+ private void ShowLoading()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xContentGrid.Visibility = Visibility.Collapsed;
+ if (xLoadingFrame.Content == null)
+ {
+ xLoadingFrame.Content = new LoadingPage();
+ }
+ xLoadingFrame.Visibility = Visibility.Visible;
+ });
+ }
+
+ private void HideLoading()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xLoadingFrame.Visibility = Visibility.Collapsed;
+ xContentGrid.Visibility = Visibility.Visible;
+ });
+ }
+
+ private void SetTreeItems(Comparison comparison)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xTree.ClearTreeItems();
+ xTree.AddItem(new ConflictMergeTreeViewItem(comparison));
+ });
+ }
+
+ private void SetPageContent(RepositoryItemBase mergedItem)
+ {
+ if(mergedItem is BusinessFlow mergedBusinessFlow)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xPageViewTabItem.IsEnabled = true;
+ xPageFrame.ClearAndSetContent(new BusinessFlowViewPage(mergedBusinessFlow, context: null!, General.eRIPageViewMode.View));
+ });
+ }
+ else
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xPageViewTabItem.IsEnabled = false;
+ xPageFrame.ClearAndSetContent(null);
+ });
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml b/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml
index 54a556651b..998ea3841c 100644
--- a/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml
+++ b/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml
@@ -3,18 +3,40 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:local="clr-namespace:Ginger.ConflictResolve" xmlns:Ginger="clr-namespace:Ginger"
+ xmlns:local="clr-namespace:Ginger.ConflictResolve"
+ xmlns:Ginger="clr-namespace:Ginger"
+ xmlns:UserControls="clr-namespace:Amdocs.Ginger.UserControls"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="1200"
Height="600" Width="1200" Title="Resolve Conflict Window">
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
diff --git a/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml.cs b/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml.cs
index 9dd07db3d0..32c1fef37c 100644
--- a/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml.cs
+++ b/Ginger/Ginger/ConflictResolve/ResolveConflictWindow.xaml.cs
@@ -18,15 +18,33 @@ limitations under the License.
using amdocs.ginger.GingerCoreNET;
using Amdocs.Ginger.Common;
+using Amdocs.Ginger.Repository;
using Ginger.SourceControl;
using Ginger.UserControls;
+using GingerCore;
using GingerCoreNET.SourceControl;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
-using static Ginger.ConflictResolve.ConflictResolve;
+using static Ginger.ConflictResolve.Conflict;
+using GingerWPF.BusinessFlowsLib;
+using Amdocs.Ginger.Common.SourceControlLib;
+using GingerWPF.WizardLib;
+using GingerCore.GeneralLib;
+using System.Globalization;
+using System.Linq;
+using Ginger.AnalyzerLib;
+using System.Threading.Tasks;
+using Amdocs.Ginger.UserControls;
+using Amdocs.Ginger.Core;
+using Amdocs.Ginger.Common.Enums;
+using OctaneRepositoryStd.BLL;
+using System.Security.Cryptography;
+using System.Diagnostics.CodeAnalysis;
+using Ginger.Run;
namespace Ginger.ConflictResolve
{
@@ -35,69 +53,380 @@ namespace Ginger.ConflictResolve
///
public partial class ResolveConflictWindow : Page
{
- GenericWindow genWin = null;
- List mConflictPaths;
- public bool IsResolved { get; set; }
- ObservableList conflictResolves = new ObservableList();
- Dictionary filePathDct = new Dictionary();
+ private GenericWindow? _genericWindow = null;
+ private readonly ObservableList _conflicts;
+ private ImageMakerControl _genericWindowLoaderIcon;
+ private Button _resolveButton;
+ private Button _analyzeButton;
+
+ public bool IsResolved { get; private set; }
+
+
public ResolveConflictWindow(List conflictPaths)
{
IsResolved = false;
InitializeComponent();
- mConflictPaths = conflictPaths;
+ _conflicts = CreateConflictList(conflictPaths);
SetGridView();
+ CreateControlsForGenericWindow();
}
- public void ShowAsWindow(eWindowShowStyle windowStyle = eWindowShowStyle.Dialog)
+
+ private ObservableList CreateConflictList(IEnumerable conflictPaths)
+ {
+ ObservableList conflicts = new();
+ foreach (string conflictPath in conflictPaths)
+ {
+ Conflict conflict = new(conflictPath)
+ {
+ IsSelectedForResolution = true,
+ Resolution = ResolutionType.KeepLocal
+ };
+ conflicts.Add(conflict);
+ }
+ return conflicts;
+ }
+
+ [MemberNotNull(nameof(_genericWindowLoaderIcon), nameof(_resolveButton), nameof(_analyzeButton))]
+ private void CreateControlsForGenericWindow()
{
- Button resolveBtn = new Button();
- resolveBtn.Content = "Resolve";
- resolveBtn.Click += new RoutedEventHandler(resolve_Click);
+ _resolveButton = new()
+ {
+ Content = "Resolve",
+ ToolTip = "Resolve selected conflicts"
+ };
+ _resolveButton.Click += new RoutedEventHandler(resolve_Click);
+
+ _analyzeButton = new()
+ {
+ Content = "Analyze",
+ ToolTip = "Analyze selected conflicts"
+ };
+ _analyzeButton.Click += analyzeBtn_Click;
- GingerCore.General.LoadGenericWindow(ref genWin, App.MainWindow, windowStyle, "Source Control Conflicts", this, new ObservableList
-
+
diff --git a/Ginger/Ginger/DataSource/AddNewTableColumnPage.xaml b/Ginger/Ginger/DataSource/AddNewTableColumnPage.xaml
index fb9c14a16f..db50a3f7b5 100644
--- a/Ginger/Ginger/DataSource/AddNewTableColumnPage.xaml
+++ b/Ginger/Ginger/DataSource/AddNewTableColumnPage.xaml
@@ -7,7 +7,7 @@
Height="30" Width="400" MinHeight="30"
Title="Add New Table Column">
-
+
diff --git a/Ginger/Ginger/DataSource/AddNewTablePage.xaml b/Ginger/Ginger/DataSource/AddNewTablePage.xaml
index 085ccde900..295b3ef5d2 100644
--- a/Ginger/Ginger/DataSource/AddNewTablePage.xaml
+++ b/Ginger/Ginger/DataSource/AddNewTablePage.xaml
@@ -8,7 +8,7 @@
Height="60" Width="500" MinHeight="60"
Title="Add New Table">
-
+
@@ -22,7 +22,7 @@
-
+
diff --git a/Ginger/Ginger/DataSource/DataSourceExportToExcelPage.xaml b/Ginger/Ginger/DataSource/DataSourceExportToExcelPage.xaml
index fa76a6ee01..57b55cc2c0 100644
--- a/Ginger/Ginger/DataSource/DataSourceExportToExcelPage.xaml
+++ b/Ginger/Ginger/DataSource/DataSourceExportToExcelPage.xaml
@@ -9,7 +9,7 @@
Height="750" Width="718"
Title="Export to Excel">
-
+
@@ -45,7 +45,7 @@
-
+
diff --git a/Ginger/Ginger/DataSource/DataSourceNameValidationRule.cs b/Ginger/Ginger/DataSource/DataSourceNameValidationRule.cs
index d3f170d91b..37f506b32c 100644
--- a/Ginger/Ginger/DataSource/DataSourceNameValidationRule.cs
+++ b/Ginger/Ginger/DataSource/DataSourceNameValidationRule.cs
@@ -1,4 +1,22 @@
-using System.Linq;
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using System.Linq;
using GingerCore.DataSource;
using amdocs.ginger.GingerCoreNET;
using System.Windows.Controls;
diff --git a/Ginger/Ginger/DataSource/DataSourcePage.xaml b/Ginger/Ginger/DataSource/DataSourcePage.xaml
index 2c4e3a8b26..f0164c4fdb 100644
--- a/Ginger/Ginger/DataSource/DataSourcePage.xaml
+++ b/Ginger/Ginger/DataSource/DataSourcePage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="DataSourcePage">
-
+
@@ -28,7 +28,7 @@
-
+
diff --git a/Ginger/Ginger/DataSource/DataSourcePage.xaml.cs b/Ginger/Ginger/DataSource/DataSourcePage.xaml.cs
index d3e6ae79c4..9bc0c624d3 100644
--- a/Ginger/Ginger/DataSource/DataSourcePage.xaml.cs
+++ b/Ginger/Ginger/DataSource/DataSourcePage.xaml.cs
@@ -65,7 +65,7 @@ public DataSourcePage(DataSourceBase dsDetails)
private void SetGridView()
{
//Set the grid name
- grdTableList.Title = "'" + mDSDetails.Name + "' Tables List";
+ grdTableList.Title = $"'{mDSDetails.Name}' Tables List";
//Set the Tool Bar look
grdTableList.ShowUpDown = Visibility.Collapsed;
@@ -202,5 +202,10 @@ private void AddTable(object sender, RoutedEventArgs e)
}
#endregion Functions
+
+ private void DataSourceNameTextBox_TextChanged(object sender, TextChangedEventArgs e)
+ {
+ grdTableList.Title = $"'{mDSDetails.Name}' Tables List";
+ }
}
}
diff --git a/Ginger/Ginger/DataSource/DataSourceTablePage.xaml b/Ginger/Ginger/DataSource/DataSourceTablePage.xaml
index 1ae4fc224f..8d39713c1d 100644
--- a/Ginger/Ginger/DataSource/DataSourceTablePage.xaml
+++ b/Ginger/Ginger/DataSource/DataSourceTablePage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="DataSourceTablePage">
-
+
diff --git a/Ginger/Ginger/DataSource/DataSourceTablesListPage.xaml b/Ginger/Ginger/DataSource/DataSourceTablesListPage.xaml
index 3b00ce7535..50e5fe6e04 100644
--- a/Ginger/Ginger/DataSource/DataSourceTablesListPage.xaml
+++ b/Ginger/Ginger/DataSource/DataSourceTablesListPage.xaml
@@ -8,7 +8,7 @@
Height="60" Width="500" MinHeight="60"
Title="Data Tables List">
-
+
@@ -19,10 +19,10 @@
-
+
-
+
diff --git a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceBrowseFile.xaml b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceBrowseFile.xaml
index afda745d6e..12407e406f 100644
--- a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceBrowseFile.xaml
+++ b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceBrowseFile.xaml
@@ -11,7 +11,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="Import DataSource from Excel">
-
+
diff --git a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceDisplayData.xaml b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceDisplayData.xaml
index 241219b77d..4646c85903 100644
--- a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceDisplayData.xaml
+++ b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceDisplayData.xaml
@@ -11,7 +11,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="Import DataSource from Excel">
-
+
@@ -49,7 +49,7 @@
-->
-
+
diff --git a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceFinishPage.xaml b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceFinishPage.xaml
index 6b36a96141..ff60ebf0a2 100644
--- a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceFinishPage.xaml
+++ b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceFinishPage.xaml
@@ -11,7 +11,7 @@
Height="400" Width="500"
Title="Import DataSource from Excel">
-
+
diff --git a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceSheetSelection.xaml b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceSheetSelection.xaml
index d3a436d01a..fcab986eba 100644
--- a/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceSheetSelection.xaml
+++ b/Ginger/Ginger/DataSource/ImportExcelWizardLib/ImportDataSourceSheetSelection.xaml
@@ -11,7 +11,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="Import DataSource from Excel">
-
+
@@ -37,7 +37,7 @@
-
+
diff --git a/Ginger/Ginger/DataSource/RemoveTableColumnPage.xaml b/Ginger/Ginger/DataSource/RemoveTableColumnPage.xaml
index 00bb1f0aa7..88293b1492 100644
--- a/Ginger/Ginger/DataSource/RemoveTableColumnPage.xaml
+++ b/Ginger/Ginger/DataSource/RemoveTableColumnPage.xaml
@@ -7,7 +7,7 @@
Height="28" Width="400" MinHeight="30"
Title="Remove Table Column">
-
+
@@ -17,7 +17,7 @@
-
+
diff --git a/Ginger/Ginger/Dictionaries/Skins/GingerDefaultSkinDictionary.xaml b/Ginger/Ginger/Dictionaries/Skins/GingerDefaultSkinDictionary.xaml
index 37b5cff269..97dd8c6e3e 100644
--- a/Ginger/Ginger/Dictionaries/Skins/GingerDefaultSkinDictionary.xaml
+++ b/Ginger/Ginger/Dictionaries/Skins/GingerDefaultSkinDictionary.xaml
@@ -1,65 +1,68 @@
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
+
+
+
-
+
+
+
+
@@ -879,14 +968,14 @@
-
+
-
+
+
+
+
@@ -1292,7 +1412,7 @@
-
+
@@ -1373,7 +1493,7 @@
-
+
-->
+
+
@@ -1856,13 +2004,13 @@
Grid.Column="1" Grid.ColumnSpan="5"
Grid.Row="2" Grid.RowSpan="5"
BorderThickness="1"
- BorderBrush="{DynamicResource $Color_DarkBlue}" />
+ BorderBrush="{DynamicResource $PrimaryColor_Black}" />
+ Stretch="Fill" Stroke="{DynamicResource $PrimaryColor_Black}"/>
+ Stroke="{DynamicResource $PrimaryColor_Black}" />
+ Fill="{DynamicResource $PrimaryColor_Black}" />
@@ -1916,7 +2064,7 @@
-
+
@@ -1981,33 +2129,33 @@
-
-
-
-
-
+
+
+
+
+
-
@@ -2493,15 +2640,21 @@
pack://application:,,,/Ginger;component/Images/POM_32x32.png
+ pack://application:,,,/Ginger;component/Images/$Close-Window.png
+ pack://application:,,,/Ginger;component/Images/$DeExpand-Window.png
+ pack://application:,,,/Ginger;component/Images/$Expand-Window.png
+ pack://application:,,,/Ginger;component/Images/$Minimize-Window.png
+ pack://application:,,,/Ginger;component/Images/$Pin-Window.png
+
@@ -2512,7 +2665,7 @@
-
+
@@ -2520,13 +2673,13 @@
+
@@ -2545,13 +2706,21 @@
+
@@ -2596,7 +2765,7 @@
-
+
@@ -2604,45 +2773,42 @@
-
+
-
@@ -2651,7 +2817,7 @@
-
+
@@ -2665,7 +2831,7 @@
-
+
@@ -2674,16 +2840,16 @@
-
+
@@ -2698,8 +2864,8 @@
@@ -3179,6 +3347,14 @@
+
+
-
+
-
+
-
+
@@ -3286,37 +3470,37 @@
-
+
+
+
+
@@ -3392,15 +3599,15 @@
x:Name="Border"
Grid.ColumnSpan="2"
CornerRadius="0"
- Background="{DynamicResource $Color_DarkBlue}"
- BorderBrush="{DynamicResource $Color_DarkBlue}"
+ Background="{DynamicResource $PrimaryColor_Black}"
+ BorderBrush="{DynamicResource $PrimaryColor_Black}"
BorderThickness="1" />
+ BorderBrush="{DynamicResource $PrimaryColor_Black}"/>
@@ -3522,7 +3729,7 @@
-
+
@@ -3581,7 +3788,7 @@
Margin="4,0,4,0"
Focusable="True"
Background="White"
- Foreground="{DynamicResource $Color_DarkBlue}"
+ Foreground="{DynamicResource $PrimaryColor_Black}"
Visibility="Hidden"
IsReadOnly="{TemplateBinding IsReadOnly}"/>
+ BorderBrush="{DynamicResource $PrimaryColor_Black}"/>
@@ -3703,7 +3910,7 @@
-
+
@@ -3726,16 +3933,24 @@
+
@@ -3769,6 +3984,6 @@
-->
-
+
diff --git a/Ginger/Ginger/Drivers/Common/DeviceEditorPage.xaml b/Ginger/Ginger/Drivers/Common/DeviceEditorPage.xaml
index 52328fa632..aa4d7f9789 100644
--- a/Ginger/Ginger/Drivers/Common/DeviceEditorPage.xaml
+++ b/Ginger/Ginger/Drivers/Common/DeviceEditorPage.xaml
@@ -93,7 +93,7 @@
-
+
diff --git a/Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml b/Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml
index 4ecc2e3abe..ff6da8b689 100644
--- a/Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml
+++ b/Ginger/Ginger/Drivers/DriversConfigsEditPages/AppiumDriverEditPage.xaml
@@ -14,7 +14,7 @@
-
+
diff --git a/Ginger/Ginger/Drivers/DriversConfigsEditPages/SeleniumRemoteWebDriverEditPage.xaml b/Ginger/Ginger/Drivers/DriversConfigsEditPages/SeleniumRemoteWebDriverEditPage.xaml
index 6afe4f8779..0eda9a856b 100644
--- a/Ginger/Ginger/Drivers/DriversConfigsEditPages/SeleniumRemoteWebDriverEditPage.xaml
+++ b/Ginger/Ginger/Drivers/DriversConfigsEditPages/SeleniumRemoteWebDriverEditPage.xaml
@@ -8,9 +8,9 @@
Title="SeleniumDriverEditPage">
-
+
-
+
@@ -33,9 +33,9 @@
-
+
-
+
@@ -72,9 +72,9 @@
-
-
-
+
+
+
diff --git a/Ginger/Ginger/Drivers/DriversConfigsEditPages/WebServicesDriverEditPage.xaml b/Ginger/Ginger/Drivers/DriversConfigsEditPages/WebServicesDriverEditPage.xaml
new file mode 100644
index 0000000000..0a7c74dfff
--- /dev/null
+++ b/Ginger/Ginger/Drivers/DriversConfigsEditPages/WebServicesDriverEditPage.xaml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/Drivers/DriversConfigsEditPages/WebServicesDriverEditPage.xaml.cs b/Ginger/Ginger/Drivers/DriversConfigsEditPages/WebServicesDriverEditPage.xaml.cs
new file mode 100644
index 0000000000..5e6fc6ddd6
--- /dev/null
+++ b/Ginger/Ginger/Drivers/DriversConfigsEditPages/WebServicesDriverEditPage.xaml.cs
@@ -0,0 +1,142 @@
+using GingerCore;
+using System.Windows;
+using System.Windows.Controls;
+using GingerCore.GeneralLib;
+using GingerCore.Drivers.WebServicesDriverLib;
+
+namespace Ginger.Drivers.DriversConfigsEditPages
+{
+ ///
+ /// Interaction logic for WebServicesDriverEditPage.xaml
+ ///
+ public partial class WebServicesDriverEditPage : Page
+ {
+ Agent mAgent = null;
+ public WebServicesDriverEditPage(Agent webServicesAgent)
+ {
+ InitializeComponent();
+
+ mAgent = webServicesAgent;
+ BindConfigurations();
+ }
+
+ private void BindConfigurations()
+ {
+ #region Connection Configurations Settings Binding
+ #region TCP Details Binding
+ DriverConfigParam useTCP = mAgent.GetOrCreateParam(nameof(WebServicesDriver.UseTcp));
+ BindingHandler.ObjFieldBinding(xUseTcpCheckBox, CheckBox.IsCheckedProperty, useTCP, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xUseTcpCheckBox, CheckBox.ToolTipProperty, useTCP, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam tcpHostname = mAgent.GetOrCreateParam(nameof(WebServicesDriver.TcpHostname));
+ xTcpHostnameTextBox.Init(null, tcpHostname, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xTcpHostnameTextBox, TextBox.ToolTipProperty, tcpHostname, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam tcpPort = mAgent.GetOrCreateParam(nameof(WebServicesDriver.TcpPort));
+ xTcpPortTextBox.Init(null, tcpPort, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xTcpPortTextBox, TextBox.ToolTipProperty, tcpPort, nameof(DriverConfigParam.Description));
+ #endregion
+ #region Advanced Connection Settings Binding
+ // Proxy Settings Binding
+ DriverConfigParam useProxy = mAgent.GetOrCreateParam(nameof(WebServicesDriver.UseServerProxySettings));
+ BindingHandler.ObjFieldBinding(xUseProxyCheckBox, CheckBox.IsCheckedProperty, useProxy, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xUseProxyCheckBox, CheckBox.ToolTipProperty, useProxy, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam proxy = mAgent.GetOrCreateParam(nameof(WebServicesDriver.WebServicesProxy));
+ xProxyTextBox.Init(null, proxy, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xProxyTextBox, TextBox.ToolTipProperty, proxy, nameof(DriverConfigParam.Description));
+
+ //Driver loading time TO
+ DriverConfigParam driverTimeout = mAgent.GetOrCreateParam(nameof(WebServicesDriver.DriverLoadWaitingTime));
+ xTimeoutTextBox.Init(null, driverTimeout, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xTimeoutTextBox, TextBox.ToolTipProperty, driverTimeout, nameof(DriverConfigParam.Description));
+
+ //Driver's Security Type
+ GingerCore.General.FillComboFromEnumType(xSecurityTypeComboBox, typeof(WebServicesDriver.eSecurityType));
+ DriverConfigParam securityType = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SecurityType));
+ BindingHandler.ObjFieldBinding(xSecurityTypeComboBox, ComboBox.TextProperty, securityType, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSecurityTypeComboBox, ComboBox.ToolTipProperty, securityType, nameof(DriverConfigParam.Description));
+ #endregion
+ #endregion
+ #region Save Request/Response Binding
+ DriverConfigParam saveRequest = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SaveRequestXML));
+ BindingHandler.ObjFieldBinding(xSaveRequestCheckBox, CheckBox.IsCheckedProperty, saveRequest, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSaveRequestCheckBox, CheckBox.ToolTipProperty, saveRequest, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam saveResponse = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SaveResponseXML));
+ BindingHandler.ObjFieldBinding(xSaveResponseCheckBox, CheckBox.IsCheckedProperty, saveResponse, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSaveResponseCheckBox, CheckBox.ToolTipProperty, saveResponse, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam savePath = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SavedXMLDirectoryPath));
+ xSaveRequestResponsePathTextBox.Init(null, savePath, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSaveRequestResponsePathTextBox, TextBox.ToolTipProperty, savePath, nameof(DriverConfigParam.Description));
+ #endregion
+ #region SoapUI Orchestration Settings Binding
+ DriverConfigParam soapUIDirectoryPath = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIDirectoryPath));
+ xSoapUIDirectoryPathTextBox.Init(null, soapUIDirectoryPath, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIDirectoryPathTextBox, TextBox.ToolTipProperty, soapUIDirectoryPath, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUIExecutionDirectoryPath = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIExecutionOutputsDirectoryPath));
+ xSoapUIOutputsDirectoryPathTextBox.Init(null, soapUIExecutionDirectoryPath, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIOutputsDirectoryPathTextBox, TextBox.ToolTipProperty, soapUIExecutionDirectoryPath, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUISettingsFile = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUISettingFile));
+ xSoapUISettingsFile.Init(null, soapUISettingsFile, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUISettingsFile, TextBox.ToolTipProperty, soapUISettingsFile, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUISettingsFilePassword = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUISettingFilePassword));
+ xSoapUISettingsFilePassword.Init(null, soapUISettingsFilePassword, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUISettingsFilePassword, TextBox.ToolTipProperty, soapUISettingsFilePassword, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUIProjectPassword = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIProjectPassword));
+ xSoapUIProjectPassword.Init(null, soapUIProjectPassword, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIProjectPassword, TextBox.ToolTipProperty, soapUIProjectPassword, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUIRunAsAdmin = mAgent.GetOrCreateParam(nameof(WebServicesDriver.RunSoapUIProcessAsAdmin));
+ BindingHandler.ObjFieldBinding(xSoapUIRunAsAdminCheckBox, CheckBox.IsCheckedProperty, soapUIRunAsAdmin, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIRunAsAdminCheckBox, CheckBox.ToolTipProperty, soapUIRunAsAdmin, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUIRedirectError = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIProcessRedirectStandardError));
+ BindingHandler.ObjFieldBinding(xSoapUIRedirectErrorCheckBox, CheckBox.IsCheckedProperty, soapUIRedirectError, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIRedirectErrorCheckBox, CheckBox.ToolTipProperty, soapUIRedirectError, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUIRedirectOutput = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIProcessRedirectStandardOutput));
+ BindingHandler.ObjFieldBinding(xSoapUIRedirectOutputCheckBox, CheckBox.IsCheckedProperty, soapUIRedirectOutput, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIRedirectOutputCheckBox, CheckBox.ToolTipProperty, soapUIRedirectOutput, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUIUseShell = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIProcessUseShellExecute));
+ BindingHandler.ObjFieldBinding(xSoapUIUseShellCheckBox, CheckBox.IsCheckedProperty, soapUIUseShell, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIUseShellCheckBox, CheckBox.ToolTipProperty, soapUIUseShell, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUIWindowStyle = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIProcessWindowStyle));
+ BindingHandler.ObjFieldBinding(xSoapUIWindowStyleCheckBox, CheckBox.IsCheckedProperty, soapUIWindowStyle, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUIWindowStyleCheckBox, CheckBox.ToolTipProperty, soapUIWindowStyle, nameof(DriverConfigParam.Description));
+
+ DriverConfigParam soapUINoWindow = mAgent.GetOrCreateParam(nameof(WebServicesDriver.SoapUIProcessCreateNoWindow));
+ BindingHandler.ObjFieldBinding(xSoapUINoWindowCheckBox, CheckBox.IsCheckedProperty, soapUINoWindow, nameof(DriverConfigParam.Value));
+ BindingHandler.ObjFieldBinding(xSoapUINoWindowCheckBox, CheckBox.ToolTipProperty, soapUINoWindow, nameof(DriverConfigParam.Description));
+ #endregion
+ }
+
+ private void xUseProxyChxBox_Checked(object sender, RoutedEventArgs e)
+ {
+ if (xProxyTextBox != null)
+ {
+ if (xProxyTextBox.IsEnabled)
+ {
+ xProxyTextBox.IsEnabled = false;
+ }
+ }
+ }
+ private void xUseProxyChxBox_Unchecked(object sender, RoutedEventArgs e)
+ {
+ if (xProxyTextBox != null)
+ {
+ if (!xProxyTextBox.IsEnabled)
+ {
+ xProxyTextBox.IsEnabled = true;
+ }
+ }
+ }
+ }
+}
diff --git a/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/AndroidADBDriverWindow.xaml b/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/AndroidADBDriverWindow.xaml
index 96fc447a9f..34903e06b9 100644
--- a/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/AndroidADBDriverWindow.xaml
+++ b/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/AndroidADBDriverWindow.xaml
@@ -21,7 +21,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
@@ -68,7 +68,7 @@
-
+
@@ -83,7 +83,7 @@
-
+
@@ -98,7 +98,7 @@
-
+
Try ADB Shell Commands: i.e.: ls, ps, dumpsys
@@ -109,10 +109,10 @@
-
+
-
+
Dial
diff --git a/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/DeviceViewPage.xaml b/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/DeviceViewPage.xaml
index c754de812c..06196f81b3 100644
--- a/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/DeviceViewPage.xaml
+++ b/Ginger/Ginger/Drivers/DriversWindows/ADBDriverWindow/DeviceViewPage.xaml
@@ -69,7 +69,7 @@
-
+
diff --git a/Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml b/Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml
index 5067ecc77c..c68f3aa1d5 100644
--- a/Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml
+++ b/Ginger/Ginger/Drivers/DriversWindows/MobileDriverWindow.xaml
@@ -22,8 +22,8 @@
-
-
+
+
@@ -34,13 +34,13 @@
-
+
-
+
@@ -61,12 +61,12 @@
-
+
-
+
@@ -180,7 +180,7 @@
-
+
diff --git a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvAppsPage.xaml b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvAppsPage.xaml
index 135cb69f03..39b1d735b7 100644
--- a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvAppsPage.xaml
+++ b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvAppsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="AddNewEnvAppsPage">
-
+
diff --git a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvDetailsWizardPage.xaml b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvDetailsWizardPage.xaml
index c3c3f28987..5b9e001217 100644
--- a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvDetailsWizardPage.xaml
+++ b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvDetailsWizardPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="AddNewEnvDetailsWizardPage">
-
+
Name:
diff --git a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml
index acce5020b4..1155ecb3dc 100644
--- a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml
+++ b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="AddNewEnvIntroPage">
-
+
diff --git a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml.cs b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml.cs
index 6310299407..261bd13428 100644
--- a/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml.cs
+++ b/Ginger/Ginger/Environments/AddEnvironmentWizardLib/AddNewEnvIntroPage.xaml.cs
@@ -35,7 +35,7 @@ public AddNewEnvIntroPage()
TextBlockHelper TBH = new TextBlockHelper(xNewEnvironmentIntroTxtBlock);
- SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$Color_DarkBlue")).ToString());
+ SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$PrimaryColor_Black")).ToString());
//Application info
TBH.AddFormattedText("For What Environments are Needed?", foregroundColor, true);
TBH.AddLineBreak();
diff --git a/Ginger/Ginger/Environments/ApplicationPage.xaml b/Ginger/Ginger/Environments/ApplicationPage.xaml
index ddfd028c2d..7aea69fa8a 100644
--- a/Ginger/Ginger/Environments/ApplicationPage.xaml
+++ b/Ginger/Ginger/Environments/ApplicationPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="ApplicationPage">
-
+
@@ -23,48 +23,32 @@
-
-
-
-
-
-
-
+
+
-
+
-
+
-
+
-
+
-
+
diff --git a/Ginger/Ginger/Environments/ApplicationPage.xaml.cs b/Ginger/Ginger/Environments/ApplicationPage.xaml.cs
index 3e0878ac51..16f2a5a565 100644
--- a/Ginger/Ginger/Environments/ApplicationPage.xaml.cs
+++ b/Ginger/Ginger/Environments/ApplicationPage.xaml.cs
@@ -135,7 +135,7 @@ private void ColorSelectedTab()
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/Environments/AppsListPage.xaml b/Ginger/Ginger/Environments/AppsListPage.xaml
index 8579d8f8f2..9b7b3fd5ba 100644
--- a/Ginger/Ginger/Environments/AppsListPage.xaml
+++ b/Ginger/Ginger/Environments/AppsListPage.xaml
@@ -11,7 +11,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="AppsListPage">
-
+
@@ -22,7 +22,7 @@
-
+
diff --git a/Ginger/Ginger/Environments/AppsListPage.xaml.cs b/Ginger/Ginger/Environments/AppsListPage.xaml.cs
index 4c4b6ffff9..2fc5c5e81d 100644
--- a/Ginger/Ginger/Environments/AppsListPage.xaml.cs
+++ b/Ginger/Ginger/Environments/AppsListPage.xaml.cs
@@ -78,7 +78,7 @@ private void InitReleaseComboBox()
private void SetGridView()
{
//Set the grid name
- grdApps.Title = "'" + AppEnvironmnet.Name + "' Environment Applications";
+ grdApps.Title = $"'{AppEnvironmnet.Name}' Environment Applications";
grdApps.SetTitleLightStyle = true;
//Set the Tool Bar look
@@ -142,5 +142,10 @@ private void AddAppsToOtherEnvironments(object sender, RoutedEventArgs e)
}
#endregion Functions
+
+ private void EnvNameTextBox_TextChanged(object sender, TextChangedEventArgs e)
+ {
+ grdApps.Title = $"'{EnvNameTextBox.Text}' Environment Applications";
+ }
}
}
diff --git a/Ginger/Ginger/Environments/EnvsListPage.xaml b/Ginger/Ginger/Environments/EnvsListPage.xaml
index 79b124ea5c..01dadf6109 100644
--- a/Ginger/Ginger/Environments/EnvsListPage.xaml
+++ b/Ginger/Ginger/Environments/EnvsListPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="EnvsListPage">
-
+
diff --git a/Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml b/Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml
index adf5416a41..8bc9687b42 100644
--- a/Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml
+++ b/Ginger/Ginger/ExternalConfigurations/ApplitoolsExternalConfigurationsPage.xaml
@@ -11,7 +11,7 @@
Title="Execution Logger Configuration">
-
+
@@ -20,7 +20,7 @@
-
+
diff --git a/Ginger/Ginger/ExternalConfigurations/SealightsExternalConfigurationsPage.xaml b/Ginger/Ginger/ExternalConfigurations/SealightsExternalConfigurationsPage.xaml
index a9dba6461a..a68ac202dd 100644
--- a/Ginger/Ginger/ExternalConfigurations/SealightsExternalConfigurationsPage.xaml
+++ b/Ginger/Ginger/ExternalConfigurations/SealightsExternalConfigurationsPage.xaml
@@ -11,7 +11,7 @@
Title="Execution Logger Configuration">
-
+
@@ -20,7 +20,7 @@
-
+
diff --git a/Ginger/Ginger/ExternalConfigurations/VRTExternalConfigurationsPage.xaml b/Ginger/Ginger/ExternalConfigurations/VRTExternalConfigurationsPage.xaml
index 979da1d7ff..4a921a9982 100644
--- a/Ginger/Ginger/ExternalConfigurations/VRTExternalConfigurationsPage.xaml
+++ b/Ginger/Ginger/ExternalConfigurations/VRTExternalConfigurationsPage.xaml
@@ -11,7 +11,7 @@
Title="Execution Logger Configuration">
-
+
@@ -20,7 +20,7 @@
-
+
diff --git a/Ginger/Ginger/Functionalities/FindAndReplacePage.xaml b/Ginger/Ginger/Functionalities/FindAndReplacePage.xaml
index f15989281b..997f18bbc0 100644
--- a/Ginger/Ginger/Functionalities/FindAndReplacePage.xaml
+++ b/Ginger/Ginger/Functionalities/FindAndReplacePage.xaml
@@ -10,7 +10,7 @@
Height="800" Width="800"
Title="Find & Replace">
-
+
diff --git a/Ginger/Ginger/GeneralLib/ExceptionDetailsPage.xaml b/Ginger/Ginger/GeneralLib/ExceptionDetailsPage.xaml
index c95687ea4f..eab04096cb 100644
--- a/Ginger/Ginger/GeneralLib/ExceptionDetailsPage.xaml
+++ b/Ginger/Ginger/GeneralLib/ExceptionDetailsPage.xaml
@@ -7,7 +7,7 @@
Height="160" Width="600" MinHeight="160" MinWidth="100"
Title="ExceptionDetailsPage">
-
+
@@ -25,7 +25,7 @@
-
+
diff --git a/Ginger/Ginger/GeneralLib/General.cs b/Ginger/Ginger/GeneralLib/General.cs
index d5c0e17b84..9ae5699d2f 100644
--- a/Ginger/Ginger/GeneralLib/General.cs
+++ b/Ginger/Ginger/GeneralLib/General.cs
@@ -95,6 +95,7 @@ public enum eRIPageViewMode
/// Item should be open for read only but should allow execute
///
ViewAndExecute = 10
+
}
public static bool isDesignMode()
diff --git a/Ginger/Ginger/GeneralLib/LoadingPage.xaml b/Ginger/Ginger/GeneralLib/LoadingPage.xaml
index 174ff9e0e2..387b551b1f 100644
--- a/Ginger/Ginger/GeneralLib/LoadingPage.xaml
+++ b/Ginger/Ginger/GeneralLib/LoadingPage.xaml
@@ -9,10 +9,10 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="LoadingPage">
-
+
-
+
diff --git a/Ginger/Ginger/GeneralLib/LogDetailsPage.xaml b/Ginger/Ginger/GeneralLib/LogDetailsPage.xaml
index d1d22188af..320a21d99c 100644
--- a/Ginger/Ginger/GeneralLib/LogDetailsPage.xaml
+++ b/Ginger/Ginger/GeneralLib/LogDetailsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="LogDetailsPage">
-
+
@@ -18,9 +18,9 @@
-
+
-
+
diff --git a/Ginger/Ginger/GeneralWindows/AboutPage.xaml b/Ginger/Ginger/GeneralWindows/AboutPage.xaml
index b91a06b7d6..752c1952e3 100644
--- a/Ginger/Ginger/GeneralWindows/AboutPage.xaml
+++ b/Ginger/Ginger/GeneralWindows/AboutPage.xaml
@@ -8,7 +8,7 @@
Height="550" Width="700"
Title="About Ginger">
-
+
diff --git a/Ginger/Ginger/GeneralWindows/AboutPage.xaml.cs b/Ginger/Ginger/GeneralWindows/AboutPage.xaml.cs
index 773e35de82..051b9eaafb 100644
--- a/Ginger/Ginger/GeneralWindows/AboutPage.xaml.cs
+++ b/Ginger/Ginger/GeneralWindows/AboutPage.xaml.cs
@@ -48,7 +48,7 @@ private void SetApplicationInfo()
{
txtBlkApplicationInfo.Text = string.Empty;
TextBlockHelper TBH = new TextBlockHelper(txtBlkApplicationInfo);
- SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$Color_DarkBlue")).ToString());
+ SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$PrimaryColor_Black")).ToString());
//Application info
TBH.AddFormattedText("Application:", foregroundColor, true);
@@ -69,7 +69,7 @@ private void SetCreditInfo()
{
txtCredit.Text = string.Empty;
TextBlockHelper TBH = new TextBlockHelper(txtCredit);
- SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$Color_DarkBlue")).ToString());
+ SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$PrimaryColor_Black")).ToString());
TBH.AddFormattedText("Inventor, Chief Architect & Developer:", foregroundColor);
TBH.AddLineBreak();
diff --git a/Ginger/Ginger/GeneralWindows/ClosingWindow.xaml b/Ginger/Ginger/GeneralWindows/ClosingWindow.xaml
index fe97a407df..47fd3b0c76 100644
--- a/Ginger/Ginger/GeneralWindows/ClosingWindow.xaml
+++ b/Ginger/Ginger/GeneralWindows/ClosingWindow.xaml
@@ -2,8 +2,8 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:usercontrols="clr-namespace:Amdocs.Ginger.UserControls"
- Title="Closing" Height="240" Width="320" BorderThickness="10" BorderBrush="{StaticResource $BackgroundColor_LightGray}" WindowStyle="None" Topmost="True" WindowStartupLocation="CenterScreen">
-
+ Title="Closing" Height="240" Width="320" BorderThickness="10" BorderBrush="{StaticResource $BackgroundColor_White}" WindowStyle="None" Topmost="True" WindowStartupLocation="CenterScreen">
+
diff --git a/Ginger/Ginger/GeneralWindows/NewStartPage.xaml b/Ginger/Ginger/GeneralWindows/NewStartPage.xaml
index 260dc756cf..328e30e130 100644
--- a/Ginger/Ginger/GeneralWindows/NewStartPage.xaml
+++ b/Ginger/Ginger/GeneralWindows/NewStartPage.xaml
@@ -17,7 +17,7 @@
-
+
diff --git a/Ginger/Ginger/GeneralWindows/StartPage.xaml b/Ginger/Ginger/GeneralWindows/StartPage.xaml
index 9eea8837e4..50cfbf9559 100644
--- a/Ginger/Ginger/GeneralWindows/StartPage.xaml
+++ b/Ginger/Ginger/GeneralWindows/StartPage.xaml
@@ -8,7 +8,7 @@
Title="StartPage">
-
+
@@ -53,7 +53,7 @@
x:Name="recentSolutionsListBox"
Width="200"
Height="100"
- Background="{DynamicResource $BackgroundColor_LightGray}"
+ Background="{DynamicResource $BackgroundColor_White}"
BorderThickness="0"
DockPanel.Dock="Top">
diff --git a/Ginger/Ginger/Ginger.csproj b/Ginger/Ginger/Ginger.csproj
index b898b3f1c0..8a20d165bd 100644
--- a/Ginger/Ginger/Ginger.csproj
+++ b/Ginger/Ginger/Ginger.csproj
@@ -32,8 +32,14 @@
+
+
+
+
+
+
@@ -580,7 +586,6 @@
-
@@ -621,6 +626,7 @@
+
PreserveNewest
@@ -632,6 +638,11 @@
+
+
+
+
+
Never
@@ -663,14 +674,15 @@
-
+
-
+
+
@@ -2401,9 +2413,6 @@
Never
-
- Never
-
Never
diff --git a/Ginger/Ginger/GingerGridLib/GingerGridPage.xaml b/Ginger/Ginger/GingerGridLib/GingerGridPage.xaml
index 15d515de13..b2167e4461 100644
--- a/Ginger/Ginger/GingerGridLib/GingerGridPage.xaml
+++ b/Ginger/Ginger/GingerGridLib/GingerGridPage.xaml
@@ -9,14 +9,14 @@
d:DesignHeight="300" d:DesignWidth="600"
Title="GingerGridPage">
-
+
-
+
diff --git a/Ginger/Ginger/GingerIconNew.ico b/Ginger/Ginger/GingerIconNew.ico
index 9b6373d5a6..f7d93dd379 100644
Binary files a/Ginger/Ginger/GingerIconNew.ico and b/Ginger/Ginger/GingerIconNew.ico differ
diff --git a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/ItemDependancyPage.xaml b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/ItemDependancyPage.xaml
index d64519c6ce..b3659f0610 100644
--- a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/ItemDependancyPage.xaml
+++ b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/ItemDependancyPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="800"
Title="SelectItemImportTypePage">
-
+
diff --git a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemFromSolutionPage.xaml b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemFromSolutionPage.xaml
index 5d922a1ebd..1233b2fe11 100644
--- a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemFromSolutionPage.xaml
+++ b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemFromSolutionPage.xaml
@@ -8,14 +8,14 @@
d:DesignHeight="300" d:DesignWidth="800"
Title="SelectItemFromSolutionPage">
-
+
Filter List by Item Type:
-
+
Select Items To Import:
diff --git a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemImportTypePage.xaml b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemImportTypePage.xaml
index d0ae2d2b4a..bb5a332e83 100644
--- a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemImportTypePage.xaml
+++ b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemImportTypePage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="800"
Title="SelectItemImportTypePage">
-
+
diff --git a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemTypesToImportPage.xaml b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemTypesToImportPage.xaml
index a0131a6f06..059369b3b2 100644
--- a/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemTypesToImportPage.xaml
+++ b/Ginger/Ginger/GlobalSolutionLib/ImportItemWizardLib/SelectItemTypesToImportPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="800"
Title="SelectItemImportTypePage">
-
+
diff --git a/Ginger/Ginger/Images/$Close-Window.png b/Ginger/Ginger/Images/$Close-Window.png
new file mode 100644
index 0000000000..9a3d5016dd
Binary files /dev/null and b/Ginger/Ginger/Images/$Close-Window.png differ
diff --git a/Ginger/Ginger/Images/$DeExpand-Window.png b/Ginger/Ginger/Images/$DeExpand-Window.png
new file mode 100644
index 0000000000..0c57af27e1
Binary files /dev/null and b/Ginger/Ginger/Images/$DeExpand-Window.png differ
diff --git a/Ginger/Ginger/Images/$Expand-Window.png b/Ginger/Ginger/Images/$Expand-Window.png
new file mode 100644
index 0000000000..079fd0d0af
Binary files /dev/null and b/Ginger/Ginger/Images/$Expand-Window.png differ
diff --git a/Ginger/Ginger/Images/$Minimize-Window.png b/Ginger/Ginger/Images/$Minimize-Window.png
new file mode 100644
index 0000000000..f7b4bc10d4
Binary files /dev/null and b/Ginger/Ginger/Images/$Minimize-Window.png differ
diff --git a/Ginger/Ginger/Images/$Pin-Window.png b/Ginger/Ginger/Images/$Pin-Window.png
new file mode 100644
index 0000000000..a207a07aa1
Binary files /dev/null and b/Ginger/Ginger/Images/$Pin-Window.png differ
diff --git a/Ginger/Ginger/Imports/QTP/QTPImportPage.xaml b/Ginger/Ginger/Imports/QTP/QTPImportPage.xaml
index 6f632fb3d1..a74f76cdaf 100644
--- a/Ginger/Ginger/Imports/QTP/QTPImportPage.xaml
+++ b/Ginger/Ginger/Imports/QTP/QTPImportPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="800"
Title="Import from QTP">
-
+
diff --git a/Ginger/Ginger/Imports/UFT/UFTImportPage.xaml b/Ginger/Ginger/Imports/UFT/UFTImportPage.xaml
index e6f81ee9e6..ac2515093c 100644
--- a/Ginger/Ginger/Imports/UFT/UFTImportPage.xaml
+++ b/Ginger/Ginger/Imports/UFT/UFTImportPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="800"
Title="Import from ASAP">
-
+
diff --git a/Ginger/Ginger/MainWindow.xaml b/Ginger/Ginger/MainWindow.xaml
index 89ec73074a..7736048d52 100644
--- a/Ginger/Ginger/MainWindow.xaml
+++ b/Ginger/Ginger/MainWindow.xaml
@@ -10,17 +10,17 @@
Closing="MainWindow_Closing" PreviewKeyDown="MainWindow_PreviewKeyDown">
-
+
-
+
-
+
-
+
@@ -28,16 +28,16 @@
-
+
-
+
-
+
@@ -69,7 +69,7 @@
-
+
@@ -90,11 +90,14 @@
-
+
-
+
+
+
+
@@ -133,10 +136,13 @@
-
+
-
+
+
+
+
@@ -158,14 +164,13 @@
-
+
-
+
+
+
+
-
-
-
-
@@ -181,7 +186,7 @@
-
+
@@ -215,12 +220,12 @@
-
+
-
+
@@ -232,11 +237,6 @@
-
-
-
-
-
@@ -278,6 +278,11 @@
+
+
+
+
+
@@ -293,30 +298,29 @@
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
diff --git a/Ginger/Ginger/MainWindow.xaml.cs b/Ginger/Ginger/MainWindow.xaml.cs
index 5de1c2059a..9cdaa92051 100644
--- a/Ginger/Ginger/MainWindow.xaml.cs
+++ b/Ginger/Ginger/MainWindow.xaml.cs
@@ -19,6 +19,7 @@ limitations under the License.
using amdocs.ginger.GingerCoreNET;
using Amdocs.Ginger.Common;
using Amdocs.Ginger.Common.Enums;
+using Amdocs.Ginger.Common.SourceControlLib;
using Amdocs.Ginger.CoreNET.GeneralLib;
using Amdocs.Ginger.CoreNET.TelemetryLib;
using Amdocs.Ginger.IO;
@@ -28,6 +29,7 @@ limitations under the License.
using Ginger.AnalyzerLib;
using Ginger.BusinessFlowWindows;
using Ginger.ConfigurationsLib;
+using Ginger.ConflictResolve;
using Ginger.Drivers.DriversWindows;
using Ginger.Functionalities;
using Ginger.GeneralLib;
@@ -39,13 +41,17 @@ limitations under the License.
using Ginger.SourceControl;
using Ginger.User;
using GingerCore;
+using GingerCore.Actions;
using GingerCore.ALM;
+using GingerCore.FlowControlLib;
using GingerCore.GeneralLib;
using GingerCoreNET.SolutionRepositoryLib.UpgradeLib;
using GingerCoreNET.SourceControl;
using GingerWPF;
+using GingerWPF.WizardLib;
using System;
using System.Collections.Concurrent;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
@@ -271,7 +277,7 @@ private void Workspace_PropertyChanged(object sender, System.ComponentModel.Prop
xNoLoadedSolutionImg.Visibility = Visibility.Visible;
GingerCore.General.DoEvents();
xSolutionTabsListView.SelectedItem = null;
- xSolutionTabsListView.SelectedItem = xBusinessFlowsListItem;
+ SelectBusinessFlowsMenu();
}
});
}
@@ -392,7 +398,7 @@ internal void AutoLoadLastSolution()
{
WorkSpace.Instance.OpenSolution(((UserProfileOperations)WorkSpace.Instance.UserProfile.UserProfileOperations).RecentSolutionsAsObjects[0].Folder);
xSolutionTabsListView.SelectedItem = null;
- xSolutionTabsListView.SelectedItem = xBusinessFlowsListItem;
+ SelectBusinessFlowsMenu();
}
}
catch (Exception ex)
@@ -420,11 +426,17 @@ public void WorkSpacePropertyChanged(object sender, System.ComponentModel.Proper
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xSolutionNameTextBlock, TextBlock.TextProperty, WorkSpace.Instance.Solution, nameof(Solution.Name), System.Windows.Data.BindingMode.OneWay);
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xSolutionNameTextBlock, TextBlock.ToolTipProperty, WorkSpace.Instance.Solution, nameof(Solution.Folder), System.Windows.Data.BindingMode.OneWay);
xSolutionTabsListView.SelectedItem = null;
- xSolutionTabsListView.SelectedItem = xBusinessFlowsListItem;
+ SelectBusinessFlowsMenu();
}
}
}
+ private void SelectBusinessFlowsMenu()
+ {
+ xSolutionTabsListView.SelectedItem = xBusinessFlowsListItem;
+ ((TwoLevelMenuPage)xBusinessFlowsListItem.Tag).SelectFirstTopMenu();
+ }
+
public void CloseWithoutAsking()
{
mAskUserIfToClose = false;
@@ -523,7 +535,7 @@ private void xSolutionTopNavigationListView_SelectionChanged(object sender, Sele
{
if (xBusinessFlowsListItem.Tag == null)
{
- xBusinessFlowsListItem.Tag = new BusinessFlowsAutomatePage();
+ xBusinessFlowsListItem.Tag = BusinessFlowsMenu.MenusPage;
}
SelectedSolutionTab = eSolutionTabType.BusinessFlows;
}
@@ -534,6 +546,7 @@ private void xSolutionTopNavigationListView_SelectionChanged(object sender, Sele
xRunListItem.Tag = RunMenu.MenusPage;
}
SelectedSolutionTab = eSolutionTabType.Run;
+ RunMenu.MenusPage.SelectFirstTopMenu();
}
else if (selectedTopListItem == xConfigurationsListItem)
{
@@ -611,12 +624,53 @@ public void SetSolutionDependedUIElements()
xSolutionSourceControlInitMenuItem.Visibility = Visibility.Visible;
xSolutionSourceControlSetMenuItem.Visibility = Visibility.Collapsed;
}
-
}
else
{
xLoadedSolutionMenusPnl.Visibility = Visibility.Collapsed;
}
+ UpdateSourceControlIndicators();
+ }
+
+ private void UpdateSourceControlIndicators()
+ {
+ if (WorkSpace.Instance.Solution != null && WorkSpace.Instance.Solution.SourceControl !=null)
+ {
+ Task.Run(() =>
+ {
+ List conflictPaths = SourceControlIntegration.GetConflictPaths(WorkSpace.Instance.Solution.SourceControl);
+ if (conflictPaths.Any())
+ {
+ ShowConflictIndicators();
+ }
+ else
+ {
+ HideConflictIndicators();
+ }
+ });
+ }
+ else
+ {
+ HideConflictIndicators();
+ }
+ }
+
+ private void ShowConflictIndicators()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xSourceControlOperationsWarn.ImageType = eImageType.MediumWarn;
+ xResolveConflictsWarn.ImageType = eImageType.MediumWarn;
+ });
+ }
+
+ private void HideConflictIndicators()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ xSourceControlOperationsWarn.ImageType = eImageType.Empty;
+ xResolveConflictsWarn.ImageType = eImageType.Empty;
+ });
}
private async void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
@@ -755,14 +809,15 @@ private void ResolveSourceControlConflicts(eResolveConflictsSide side)
Reporter.HideStatusMessage();
}
- private void ResolveConflictsLocalMenuItem_Click(object sender, RoutedEventArgs e)
- {
- ResolveSourceControlConflicts(eResolveConflictsSide.Local);
- }
-
- private void ResolveConflictsServerMenuItem_Click(object sender, RoutedEventArgs e)
+ private void xResolveConflictsMenuItem_Click(object sender, RoutedEventArgs e)
{
- ResolveSourceControlConflicts(eResolveConflictsSide.Server);
+ List conflictPaths = SourceControlIntegration.GetConflictPaths(WorkSpace.Instance.Solution.SourceControl);
+ ResolveConflictWindow resolveConflictWindow = new(conflictPaths);
+ resolveConflictWindow.ShowAsWindow();
+ if(resolveConflictWindow.IsResolved)
+ {
+ HideConflictIndicators();
+ }
}
private void xHelpOptionsMenuItem_Click(object sender, RoutedEventArgs e)
@@ -915,6 +970,7 @@ private void App_AutomateBusinessFlowEvent(AutomateEventArgs args)
{
//TODO: load Business Flows tab
xSolutionTabsListView.SelectedItem = xBusinessFlowsListItem;
+ ((TwoLevelMenuPage)xBusinessFlowsListItem.Tag).SelectTopMenu(1);//selecting Automate menu option
}
}
@@ -1018,7 +1074,7 @@ private void UpdateUserDetails()
{
if (string.IsNullOrEmpty(WorkSpace.Instance.UserProfile.ProfileImage))
{
- xProfileImageImgBrush.ImageSource = ImageMakerControl.GetImageSource(Amdocs.Ginger.Common.Enums.eImageType.User, foreground: (System.Windows.Media.SolidColorBrush)FindResource("$BackgroundColor_LightGray"), width: 50);
+ xProfileImageImgBrush.ImageSource = ImageMakerControl.GetImageSource(Amdocs.Ginger.Common.Enums.eImageType.User, foreground: (System.Windows.Media.SolidColorBrush)FindResource("$BackgroundColor_White"), width: 50);
}
else
{
@@ -1064,11 +1120,11 @@ private void xLogOptionsMenuItem_Click(object sender, RoutedEventArgs e)
private void SetLogOptionsMenuItems()
{
//delete all shown Log options sub menu items
- for (int i = 0; i < xUserOperationsMainMenuItem.Items.Count; i++)
+ for (int i = 0; i < xExtraOperationsMainMenuItem.Items.Count; i++)
{
- if ((string)((MenuItem)xUserOperationsMainMenuItem.Items[i]).Tag == "Log")
+ if ((string)((MenuItem)xExtraOperationsMainMenuItem.Items[i]).Tag == "Log")
{
- xUserOperationsMainMenuItem.Items.RemoveAt(i);
+ xExtraOperationsMainMenuItem.Items.RemoveAt(i);
i--;
}
}
@@ -1076,12 +1132,12 @@ private void SetLogOptionsMenuItems()
if (xLogOptionsMenuItem.Tag != null)
{
//Insert
- int insertIndex = xUserOperationsMainMenuItem.Items.IndexOf(xLogOptionsMenuItem) + 1;
+ int insertIndex = xExtraOperationsMainMenuItem.Items.IndexOf(xLogOptionsMenuItem) + 1;
- AddSubMenuItem(xUserOperationsMainMenuItem, "View Current Log Details", "Log", btnViewLogDetails_Click, insertIndex++, iconType: eImageType.View);
- AddSubMenuItem(xUserOperationsMainMenuItem, "Open Full Log File", "Log", btnViewLog_Click, insertIndex++, iconType: eImageType.File);
- AddSubMenuItem(xUserOperationsMainMenuItem, "Open Log File Folder", "Log", btnViewLogLocation_Click, insertIndex++, iconType: eImageType.OpenFolder);
- AddSubMenuItem(xUserOperationsMainMenuItem, "Open Ginger Console Window", "Log", btnLaunchConsole_Click, insertIndex, iconType: eImageType.Window);
+ AddSubMenuItem(xExtraOperationsMainMenuItem, "View Current Log Details", "Log", btnViewLogDetails_Click, insertIndex++, iconType: eImageType.View);
+ AddSubMenuItem(xExtraOperationsMainMenuItem, "Open Full Log File", "Log", btnViewLog_Click, insertIndex++, iconType: eImageType.File);
+ AddSubMenuItem(xExtraOperationsMainMenuItem, "Open Log File Folder", "Log", btnViewLogLocation_Click, insertIndex++, iconType: eImageType.OpenFolder);
+ AddSubMenuItem(xExtraOperationsMainMenuItem, "Open Ginger Console Window", "Log", btnLaunchConsole_Click, insertIndex, iconType: eImageType.Window);
}
}
diff --git a/Ginger/Ginger/MenusLib/BusinessFlowsMenu.cs b/Ginger/Ginger/MenusLib/BusinessFlowsMenu.cs
new file mode 100644
index 0000000000..fd8b4c7ebc
--- /dev/null
+++ b/Ginger/Ginger/MenusLib/BusinessFlowsMenu.cs
@@ -0,0 +1,164 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using amdocs.ginger.GingerCoreNET;
+using Amdocs.Ginger.Common;
+using Amdocs.Ginger.Common.Enums;
+using Ginger.BusinessFlowWindows;
+using Ginger.GeneralWindows;
+using Ginger.SolutionWindows.TreeViewItems;
+using Ginger.TwoLevelMenuLib;
+using GingerCore;
+using GingerWPF.BusinessFlowsLib;
+using GingerWPF.UserControlsLib;
+using GingerWPF.UserControlsLib.UCTreeView;
+using System;
+using System.Windows.Controls;
+using System.Windows.Input;
+
+namespace Ginger.MenusLib
+{
+ public static class BusinessFlowsMenu
+ {
+ private static TwoLevelMenu twoLevelMenu;
+ private static TwoLevelMenuPage mMenusPage = null;
+
+ static SingleItemTreeViewExplorerPage mBusFlowsPage;
+ static NewAutomatePage mNewAutomatePage;
+
+ public static TwoLevelMenuPage MenusPage
+ {
+ get
+ {
+ if (mMenusPage == null)
+ {
+ mMenusPage = new TwoLevelMenuPage(GetMenu());
+ WorkSpace.Instance.PropertyChanged -= WorkSpacePropertyChanged;
+ WorkSpace.Instance.PropertyChanged += WorkSpacePropertyChanged;
+ }
+ return mMenusPage;
+ }
+ }
+
+ private static void WorkSpacePropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == nameof(WorkSpace.Solution))
+ {
+ if (WorkSpace.Instance.Solution == null)
+ {
+ MenusPage.Reset();
+ }
+ }
+ }
+
+ private static TwoLevelMenu GetMenu()
+ {
+ twoLevelMenu = new TwoLevelMenu();
+
+ TopMenuItem businessFlowsMenu = new TopMenuItem(eImageType.BusinessFlow, GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.BusinessFlows), ConsoleKey.B, "Business FLows AID", "Solution Automation Flows");
+ businessFlowsMenu.Add(eImageType.BusinessFlow, "", GetBusinessFlowsPage, ConsoleKey.B, "", "AID");
+ twoLevelMenu.Add(businessFlowsMenu);
+
+ TopMenuItem automateMenu = new TopMenuItem(eImageType.Automate, "Automate", ConsoleKey.A, "Automate AID", "Design Automation Flow");
+ automateMenu.Add(eImageType.Automate, "", GetAutomatePage, ConsoleKey.A, "", "AID");
+ twoLevelMenu.Add(automateMenu);
+
+ App.AutomateBusinessFlowEvent -= App_AutomateBusinessFlowEvent;
+ App.AutomateBusinessFlowEvent += App_AutomateBusinessFlowEvent;
+
+ return twoLevelMenu;
+ }
+
+ private static async void App_AutomateBusinessFlowEvent(AutomateEventArgs args)
+ {
+ if (args.EventType == AutomateEventArgs.eEventType.Automate)
+ {
+ BusinessFlow bf = (BusinessFlow)args.Object;
+ try
+ {
+ Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
+ Reporter.ToStatus(eStatusMsgKey.StaticStatusProcess, null, "Loading Automate Page...");
+ if (mNewAutomatePage == null)
+ {
+ mNewAutomatePage = new NewAutomatePage(bf);
+ }
+ await mNewAutomatePage.LoadBusinessFlowToAutomate(bf);
+ }
+ finally
+ {
+ Mouse.OverrideCursor = null;
+ Reporter.HideStatusMessage();
+ }
+ }
+ }
+
+ private static Page GetBusinessFlowsPage()
+ {
+ BusinessFlowsFolderTreeItem busFlowsRootFolder = new BusinessFlowsFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
+ mBusFlowsPage = new SingleItemTreeViewExplorerPage(GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.BusinessFlows), eImageType.BusinessFlow, busFlowsRootFolder, busFlowsRootFolder.SaveAllTreeFolderItemsHandler, busFlowsRootFolder.AddItemHandler, treeItemDoubleClickHandler: BusinessFlowsTree_ItemDoubleClick, true, showTitle: true);
+ return mBusFlowsPage;
+ }
+
+ private static void BusinessFlowsTree_ItemDoubleClick(object sender, EventArgs e)
+ {
+ TreeViewItem i = (TreeViewItem)sender;
+ if (i != null)
+ {
+ ITreeViewItem iv = (ITreeViewItem)i.Tag;
+
+ if (iv.NodeObject() != null && iv.NodeObject() is BusinessFlow)
+ {
+ App.OnAutomateBusinessFlowEvent(AutomateEventArgs.eEventType.Automate, (BusinessFlow)iv.NodeObject());
+ }
+ }
+ }
+
+ private static BusinessFlow GetBusinessFlowToAutomate()
+ {
+ if (mBusFlowsPage.SelectedItemObject != null && mBusFlowsPage.SelectedItemObject is BusinessFlow)
+ {
+ return (BusinessFlow)mBusFlowsPage.SelectedItemObject;
+ }
+ else if (WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems().Count > 0)
+ {
+ return (BusinessFlow)WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems()[0];
+ }
+ else
+ {
+ Reporter.ToUser(eUserMsgKey.StaticWarnMessage, GingerDicser.GetTermResValue(eTermResKey.BusinessFlow, prefixString: "Please first add and select"));
+ return null;
+ }
+
+ }
+
+ private static Page GetAutomatePage()
+ {
+ BusinessFlow bf = GetBusinessFlowToAutomate();
+ if (bf != null)
+ {
+ mNewAutomatePage = new NewAutomatePage(bf);
+ App.OnAutomateBusinessFlowEvent(AutomateEventArgs.eEventType.Automate, bf);
+ }
+ else
+ {
+ return null;
+ }
+ return mNewAutomatePage;
+ }
+ }
+}
diff --git a/Ginger/Ginger/MenusLib/ConfigurationsMenu.cs b/Ginger/Ginger/MenusLib/ConfigurationsMenu.cs
index fda197cd36..ed72ef8660 100644
--- a/Ginger/Ginger/MenusLib/ConfigurationsMenu.cs
+++ b/Ginger/Ginger/MenusLib/ConfigurationsMenu.cs
@@ -115,7 +115,7 @@ private static Page AgentsList()
{
AgentsFolderTreeItem AgentsRoot = new AgentsFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
AgentsRoot.IsGingerDefualtFolder = true;
- SingleItemTreeViewExplorerPage agentsPage = new SingleItemTreeViewExplorerPage("Agents", eImageType.Agent, AgentsRoot, AgentsRoot.SaveAllTreeFolderItemsHandler, AgentsRoot.AddItemHandler, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage agentsPage = new SingleItemTreeViewExplorerPage("Agents", eImageType.Agent, AgentsRoot, AgentsRoot.SaveAllTreeFolderItemsHandler, AgentsRoot.AddItemHandler, isSaveButtonHidden: true, showTitle: true);
return agentsPage;
}
@@ -129,7 +129,7 @@ private static Page ReportsList()
{
HTMLGingerReportsTreeItem reportsRoot = new HTMLGingerReportsTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
reportsRoot.IsGingerDefualtFolder = true;
- SingleItemTreeViewExplorerPage reportsPage = new SingleItemTreeViewExplorerPage("Reports Templates", eImageType.Report, reportsRoot, reportsRoot.SaveAllTreeFolderItemsHandler, reportsRoot.AddItemHandler, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage reportsPage = new SingleItemTreeViewExplorerPage("Reports Templates", eImageType.Report, reportsRoot, reportsRoot.SaveAllTreeFolderItemsHandler, reportsRoot.AddItemHandler, isSaveButtonHidden: true, showTitle:false);
return reportsPage;
}
diff --git a/Ginger/Ginger/MenusLib/ResourcesMenu.cs b/Ginger/Ginger/MenusLib/ResourcesMenu.cs
index 070ba0aa00..d3238dd120 100644
--- a/Ginger/Ginger/MenusLib/ResourcesMenu.cs
+++ b/Ginger/Ginger/MenusLib/ResourcesMenu.cs
@@ -120,34 +120,34 @@ private static Page GetGlobalVariabelsPage()
private static Page SharedActivitiesGroups()
{
SharedActivitiesGroupsFolderTreeItem activitiesGroupsRoot = new SharedActivitiesGroupsFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage activitiesGroupsPage = new SingleItemTreeViewExplorerPage(GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.ActivitiesGroups), eImageType.ActivitiesGroup, activitiesGroupsRoot, saveAllHandler: activitiesGroupsRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage activitiesGroupsPage = new SingleItemTreeViewExplorerPage(GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.ActivitiesGroups), eImageType.ActivitiesGroup, activitiesGroupsRoot, saveAllHandler: activitiesGroupsRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true, showTitle: true);
return activitiesGroupsPage;
}
private static Page SharedActivities()
{
SharedActivitiesFolderTreeItem activitiesRoot = new SharedActivitiesFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage activitiesPage = new SingleItemTreeViewExplorerPage(GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.Activities), eImageType.Activity, activitiesRoot, saveAllHandler: activitiesRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage activitiesPage = new SingleItemTreeViewExplorerPage(GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.Activities), eImageType.Activity, activitiesRoot, saveAllHandler: activitiesRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true, showTitle: true);
return activitiesPage;
}
private static Page SharedActions()
{
SharedActionsFolderTreeItem actionsRoot = new SharedActionsFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage actionsPage = new SingleItemTreeViewExplorerPage("Actions", eImageType.Action, actionsRoot, actionsRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage actionsPage = new SingleItemTreeViewExplorerPage("Actions", eImageType.Action, actionsRoot, actionsRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true, showTitle: true);
return actionsPage;
}
private static Page SharedVariables()
{
SharedVariablesFolderTreeItem variablesRoot = new SharedVariablesFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage variablesPage = new SingleItemTreeViewExplorerPage(GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.Variables), eImageType.Variable, variablesRoot, variablesRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage variablesPage = new SingleItemTreeViewExplorerPage(GingerCore.GingerDicser.GetTermResValue(GingerCore.eTermResKey.Variables), eImageType.Variable, variablesRoot, variablesRoot.SaveAllTreeFolderItemsHandler, isSaveButtonHidden: true, showTitle: true);
return variablesPage;
}
private static Page GetEnvsPage()
{
EnvironmentsFolderTreeItem EnvsRoot = new EnvironmentsFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage p = new SingleItemTreeViewExplorerPage("Environments", eImageType.Environment, EnvsRoot, EnvsRoot.SaveAllTreeFolderItemsHandler, EnvsRoot.AddItemHandler, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage envsPage = new SingleItemTreeViewExplorerPage("Environments", eImageType.Environment, EnvsRoot, EnvsRoot.SaveAllTreeFolderItemsHandler, EnvsRoot.AddItemHandler, isSaveButtonHidden: true, showTitle: true);
EnvsRoot.IsGingerDefualtFolder = true;
- return p;
+ return envsPage;
}
private static Page EnvsCompare()
{
@@ -160,15 +160,15 @@ private static Page Documents()
documentsFolderRoot.IsGingerDefualtFolder = true;
documentsFolderRoot.Path = Path.Combine(WorkSpace.Instance.SolutionRepository.SolutionFolder, "Documents");
documentsFolderRoot.Folder = "Documents";
- SingleItemTreeViewExplorerPage dataSourcesRootPage = new SingleItemTreeViewExplorerPage("Documents", eImageType.File, documentsFolderRoot, saveAllHandler: null, addHandler: null);
- return dataSourcesRootPage;
+ SingleItemTreeViewExplorerPage docsRootPage = new SingleItemTreeViewExplorerPage("Documents", eImageType.File, documentsFolderRoot, saveAllHandler: null, addHandler: null, showTitle: true);
+ return docsRootPage;
}
private static Page DataSources()
{
DataSourceFolderTreeItem dataSourcesRoot = new DataSourceFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
dataSourcesRoot.IsGingerDefualtFolder = true;
- SingleItemTreeViewExplorerPage dataSourcesRootPage = new SingleItemTreeViewExplorerPage("Data Sources", eImageType.DataSource, dataSourcesRoot, dataSourcesRoot.SaveAllTreeFolderItemsHandler, dataSourcesRoot.AddDataSource);
+ SingleItemTreeViewExplorerPage dataSourcesRootPage = new SingleItemTreeViewExplorerPage("Data Sources", eImageType.DataSource, dataSourcesRoot, dataSourcesRoot.SaveAllTreeFolderItemsHandler, dataSourcesRoot.AddDataSource, showTitle: true);
return dataSourcesRootPage;
}
@@ -180,14 +180,14 @@ private static Page ModelsGlobalParameters()
private static Page POMModels()
{
ApplicationPOMsTreeItem POMsRoot = new ApplicationPOMsTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage pomModelPage = new SingleItemTreeViewExplorerPage("Page Objects Models", eImageType.Application, POMsRoot, POMsRoot.SaveAllTreeFolderItemsHandler, POMsRoot.AddPOM, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage pomModelPage = new SingleItemTreeViewExplorerPage("Page Objects Models", eImageType.Application, POMsRoot, POMsRoot.SaveAllTreeFolderItemsHandler, POMsRoot.AddPOM, isSaveButtonHidden: true, showTitle: true);
return pomModelPage;
}
private static Page APIModels()
{
AppApiModelsFolderTreeItem apiRoot = new AppApiModelsFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage apiModelPage = new SingleItemTreeViewExplorerPage("API Models", eImageType.APIModel, apiRoot, apiRoot.SaveAllTreeFolderItemsHandler, apiRoot.AddAPIModelFromDocument, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage apiModelPage = new SingleItemTreeViewExplorerPage("API Models", eImageType.APIModel, apiRoot, apiRoot.SaveAllTreeFolderItemsHandler, apiRoot.AddAPIModelFromDocument, isSaveButtonHidden: true, showTitle: true);
return apiModelPage;
}
@@ -199,7 +199,7 @@ private static Page PluginsList()
}
PlugInsFolderTreeItem pluginsRoot = new PlugInsFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
- SingleItemTreeViewExplorerPage PluginsRootPage = new SingleItemTreeViewExplorerPage("Plugins", eImageType.PluginPackage, pluginsRoot, saveAllHandler: pluginsRoot.SaveAllTreeFolderItemsHandler, addHandler: pluginsRoot.AddPlugIn, isSaveButtonHidden: true);
+ SingleItemTreeViewExplorerPage PluginsRootPage = new SingleItemTreeViewExplorerPage("Plugins", eImageType.PluginPackage, pluginsRoot, saveAllHandler: pluginsRoot.SaveAllTreeFolderItemsHandler, addHandler: pluginsRoot.AddPlugIn, isSaveButtonHidden: true, showTitle: true);
return PluginsRootPage;
}
diff --git a/Ginger/Ginger/PluginsLib/AddPluginWizardLib/PluginPackageInfoPage.xaml b/Ginger/Ginger/PluginsLib/AddPluginWizardLib/PluginPackageInfoPage.xaml
index ab4d069fe9..fc47d2ad97 100644
--- a/Ginger/Ginger/PluginsLib/AddPluginWizardLib/PluginPackageInfoPage.xaml
+++ b/Ginger/Ginger/PluginsLib/AddPluginWizardLib/PluginPackageInfoPage.xaml
@@ -28,10 +28,10 @@
-
+
-
+
diff --git a/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageFolderPage.xaml b/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageFolderPage.xaml
index dc50908d26..44fd25b188 100644
--- a/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageFolderPage.xaml
+++ b/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageFolderPage.xaml
@@ -10,7 +10,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="SelectPluginFolderPage">
-
+
Select Plugin folder:
diff --git a/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageTypePage.xaml b/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageTypePage.xaml
index 16196436f2..20d0bef290 100644
--- a/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageTypePage.xaml
+++ b/Ginger/Ginger/PluginsLib/AddPluginWizardLib/SelectPluginPackageTypePage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="SelectPluginTypePage">
-
+
Select Plugin Source Type:
Plugin folder located on this machine
diff --git a/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml b/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml
index 0ab93e65ea..0584ac7e81 100644
--- a/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml
+++ b/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="PluginPackagePage">
-
+
@@ -17,19 +17,19 @@
-
+
-
+
-
+
@@ -56,23 +56,23 @@
-
+
-
+
@@ -84,11 +84,11 @@
-
+
-
+
diff --git a/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml.cs b/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml.cs
index a6b363ac0f..3aff1d3284 100644
--- a/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml.cs
+++ b/Ginger/Ginger/PluginsLib/PluginPackagePage.xaml.cs
@@ -127,7 +127,7 @@ private void TabControl_SelectionChanged(object sender, SelectionChangedEventArg
// if (PlugInTab.SelectedItem == tab)
// ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
// else
- // ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ // ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
// ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
// }
diff --git a/Ginger/Ginger/PluginsLib/PluginsIndexPage.xaml b/Ginger/Ginger/PluginsLib/PluginsIndexPage.xaml
index ae9a75bac9..4cb6ce94fd 100644
--- a/Ginger/Ginger/PluginsLib/PluginsIndexPage.xaml
+++ b/Ginger/Ginger/PluginsLib/PluginsIndexPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="PluginsIndexPage">
-
+
diff --git a/Ginger/Ginger/ReporterLib/GingerHelperWindow.xaml b/Ginger/Ginger/ReporterLib/GingerHelperWindow.xaml
index 4cc3e1fb76..10c950e694 100644
--- a/Ginger/Ginger/ReporterLib/GingerHelperWindow.xaml
+++ b/Ginger/Ginger/ReporterLib/GingerHelperWindow.xaml
@@ -13,7 +13,7 @@
Closing="Window_Closing"
>
-
+
@@ -32,12 +32,12 @@
-
+
-
+
diff --git a/Ginger/Ginger/ReporterLib/UserMessageBox.xaml b/Ginger/Ginger/ReporterLib/UserMessageBox.xaml
index bfa5425eab..49fe8c1f32 100644
--- a/Ginger/Ginger/ReporterLib/UserMessageBox.xaml
+++ b/Ginger/Ginger/ReporterLib/UserMessageBox.xaml
@@ -8,10 +8,10 @@
mc:Ignorable="d"
Title="Ginger Message" Height="200" Width="400" WindowStyle="ToolWindow" ShowInTaskbar="False"
WindowStartupLocation="CenterScreen" Topmost="True"
- Background="{StaticResource $BackgroundColor_LightGray}" BorderBrush="{StaticResource $amdocsLogoRadialGradientBrush}"
+ Background="{StaticResource $BackgroundColor_White}" BorderBrush="{StaticResource $amdocsLogoRadialGradientBrush}"
KeyUp="Window_KeyUp">
-
+
diff --git a/Ginger/Ginger/ReporterLib/UserMessageBox.xaml.cs b/Ginger/Ginger/ReporterLib/UserMessageBox.xaml.cs
index 054ed45ffd..0eeac37ddf 100644
--- a/Ginger/Ginger/ReporterLib/UserMessageBox.xaml.cs
+++ b/Ginger/Ginger/ReporterLib/UserMessageBox.xaml.cs
@@ -72,23 +72,23 @@ public UserMessageBox(string txt, string caption, eUserMsgOption buttonsType,
{
case eUserMsgIcon.Error:
xMessageImage.ImageType = Amdocs.Ginger.Common.Enums.eImageType.Error;
- xMessageImage.ImageForeground = Brushes.DarkRed;
+ xMessageImage.ImageForeground = (SolidColorBrush)FindResource("$HighlightColor_Red");
break;
case eUserMsgIcon.None:
xMessageImage.Visibility = Visibility.Collapsed;
break;
case eUserMsgIcon.Question:
xMessageImage.ImageType = Amdocs.Ginger.Common.Enums.eImageType.Question;
- xMessageImage.ImageForeground = Brushes.Purple;
+ xMessageImage.ImageForeground = (SolidColorBrush)FindResource("$HighlightColor_Mint");
break;
case eUserMsgIcon.Warning:
xMessageImage.ImageType = Amdocs.Ginger.Common.Enums.eImageType.Warn;
- xMessageImage.ImageForeground = Brushes.DarkOrange;
+ xMessageImage.ImageForeground = (SolidColorBrush)FindResource("$HighlightColor_Orange");
break;
case eUserMsgIcon.Information:
default:
xMessageImage.ImageType = Amdocs.Ginger.Common.Enums.eImageType.Info;
- xMessageImage.ImageForeground = Brushes.DarkBlue;
+ xMessageImage.ImageForeground = (SolidColorBrush)FindResource("$HighlightColor_Aqua");
break;
}
}
diff --git a/Ginger/Ginger/Reports/Designer/HTMLReportTemplateDesignerPage .xaml b/Ginger/Ginger/Reports/Designer/HTMLReportTemplateDesignerPage .xaml
index d70e48a4d2..68599682be 100644
--- a/Ginger/Ginger/Reports/Designer/HTMLReportTemplateDesignerPage .xaml
+++ b/Ginger/Ginger/Reports/Designer/HTMLReportTemplateDesignerPage .xaml
@@ -20,7 +20,7 @@
-
+
@@ -46,7 +46,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
diff --git a/Ginger/Ginger/Reports/Designer/ReportTemplateDesignerPage.xaml b/Ginger/Ginger/Reports/Designer/ReportTemplateDesignerPage.xaml
index e913c7e958..4784a9e3b8 100644
--- a/Ginger/Ginger/Reports/Designer/ReportTemplateDesignerPage.xaml
+++ b/Ginger/Ginger/Reports/Designer/ReportTemplateDesignerPage.xaml
@@ -19,8 +19,8 @@
-
-
+
+
@@ -41,7 +41,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml b/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml
index 22fcff8a19..43382ff59d 100644
--- a/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml
+++ b/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml
@@ -11,10 +11,10 @@
Title="Execution Logger Configuration">
-
+
-
+
@@ -65,7 +65,7 @@
-
+
@@ -85,30 +85,24 @@
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
diff --git a/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml.cs b/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml.cs
index b76d183a9b..781d07ce59 100644
--- a/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml.cs
+++ b/Ginger/Ginger/Reports/ExecutionResultsConfiguration.xaml.cs
@@ -70,19 +70,8 @@ private void SetControls()
{
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(FolderTextBox, TextBox.TextProperty, _selectedExecutionLoggerConfiguration, nameof(ExecutionLoggerConfiguration.ExecutionLoggerConfigurationExecResultsFolder));
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xFolderMaximumSizeTextBox, TextBox.TextProperty, _selectedExecutionLoggerConfiguration, nameof(ExecutionLoggerConfiguration.ExecutionLoggerConfigurationMaximalFolderSize), bindingConvertor: new GingerCore.GeneralLib.LongStringConverter());
-
-
- xPublishingPhaseRadioButton.Init(typeof(ExecutionLoggerConfiguration.eDataPublishingPhase),
- xPublishingPhasePanel, _selectedExecutionLoggerConfiguration,
- nameof(ExecutionLoggerConfiguration.DataPublishingPhase));
-
- xDeleteLocalDataRadioButton.Init(typeof(ExecutionLoggerConfiguration.eDeleteLocalDataOnPublish),
- xDeleteLocalDataOnPublishPanel, _selectedExecutionLoggerConfiguration,
- nameof(ExecutionLoggerConfiguration.DeleteLocalDataOnPublish));
-
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xEndPointURLTextBox, TextBox.TextProperty, _selectedExecutionLoggerConfiguration,
- nameof(ExecutionLoggerConfiguration.CentralLoggerEndPointUrl));
-
+ GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xEndPointURLTextBox, TextBox.TextProperty, _selectedExecutionLoggerConfiguration, nameof(ExecutionLoggerConfiguration.CentralLoggerEndPointUrl));
+ GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xHTMLReportURLTextBox, TextBox.TextProperty, _selectedExecutionLoggerConfiguration, nameof(ExecutionLoggerConfiguration.CentralizedHtmlReportServiceURL));
if (_selectedExecutionLoggerConfiguration.ExecutionLoggerConfigurationIsEnabled)
{
executionResultOnRadioBtnsPnl.IsChecked = true;
diff --git a/Ginger/Ginger/Reports/HTMLReportAttachmentConfigurationPage.xaml b/Ginger/Ginger/Reports/HTMLReportAttachmentConfigurationPage.xaml
index 82240e1eca..be2ca51649 100644
--- a/Ginger/Ginger/Reports/HTMLReportAttachmentConfigurationPage.xaml
+++ b/Ginger/Ginger/Reports/HTMLReportAttachmentConfigurationPage.xaml
@@ -10,11 +10,11 @@
Title="HTML Reports Attachment Configurations">
-
+
-
+
diff --git a/Ginger/Ginger/Reports/HTMLReportTemplatePage.xaml b/Ginger/Ginger/Reports/HTMLReportTemplatePage.xaml
index 4cd2d32d3a..cbeeb11e64 100644
--- a/Ginger/Ginger/Reports/HTMLReportTemplatePage.xaml
+++ b/Ginger/Ginger/Reports/HTMLReportTemplatePage.xaml
@@ -12,7 +12,7 @@
Title="New HTML Report Template">
-
+
@@ -20,8 +20,8 @@
-
-
+
+
@@ -43,7 +43,7 @@
-
+
@@ -76,7 +76,7 @@
-
+
@@ -116,7 +116,7 @@
-
+
@@ -170,7 +170,7 @@
-
+
@@ -196,7 +196,7 @@
-
+
@@ -222,7 +222,7 @@
-
+
@@ -252,7 +252,7 @@
-
+
@@ -282,7 +282,7 @@
-
+
@@ -312,7 +312,7 @@
-
+
@@ -368,7 +368,7 @@
-
+
@@ -377,7 +377,7 @@
-
+
@@ -403,7 +403,7 @@
-
+
@@ -429,7 +429,7 @@
-
+
@@ -459,7 +459,7 @@
-
+
@@ -489,7 +489,7 @@
-
+
@@ -519,7 +519,7 @@
-
+
@@ -555,7 +555,7 @@
-
+
diff --git a/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml b/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml
index f6adc0a033..06147d5a15 100644
--- a/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml
+++ b/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml
@@ -11,7 +11,7 @@
MinHeight="300" MinWidth="785"
Title="General HTML Reports Configurations">
-
+
@@ -45,30 +45,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml.cs b/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml.cs
index 157d21f415..c02459bb1c 100644
--- a/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml.cs
+++ b/Ginger/Ginger/Reports/HTMLReportsConfigurationPage.xaml.cs
@@ -46,9 +46,6 @@ private void Init()
mHTMLReportConfiguration.StartDirtyTracking();
CurrentItemToSave = WorkSpace.Instance.Solution;
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(LimitReportFolder, CheckBox.IsCheckedProperty, mHTMLReportConfiguration, nameof(mHTMLReportConfiguration.LimitReportFolderSize));
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xCentralizedReportDataServiceURLTextBox, TextBox.TextProperty, mHTMLReportConfiguration, nameof(mHTMLReportConfiguration.CentralizedReportDataServiceURL));
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xCentralizedHtmlReportServiceURLTextBox, TextBox.TextProperty, mHTMLReportConfiguration, nameof(mHTMLReportConfiguration.CentralizedHtmlReportServiceURL));
-
if (LimitReportFolder.IsChecked == true)
{
@@ -77,8 +74,6 @@ private void SetControls()
htmlReportAutoProdOnRadioBtn.IsChecked = false;
htmlReportAutoProdOffRadioBtn.IsChecked = true;
}
-
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xCentralizedReportSettingsGrid, Expander.VisibilityProperty, WorkSpace.Instance.UserProfile, nameof(WorkSpace.Instance.UserProfile.ShowEnterpriseFeatures), bindingConvertor: new GingerCore.GeneralLib.BoolVisibilityConverter());
}
diff --git a/Ginger/Ginger/Run/AutoRunWindow.xaml b/Ginger/Ginger/Run/AutoRunWindow.xaml
index b1278a68e3..00577e3058 100644
--- a/Ginger/Ginger/Run/AutoRunWindow.xaml
+++ b/Ginger/Ginger/Run/AutoRunWindow.xaml
@@ -5,10 +5,10 @@
xmlns:GingerCore="clr-namespace:GingerCore;assembly=GingerCore"
Title="AutoRunWindow" Height="300" Width="300" WindowState="Maximized">
-
+
-
+
diff --git a/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml b/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml
index f1b5c11a0a..c040efc729 100644
--- a/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml
+++ b/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml
@@ -11,17 +11,17 @@
Title="BusinessFlowRunVariablesPage">
-
-
+
+
-
+
-
+
@@ -29,29 +29,29 @@
-
+
-
+
-
+
Edit Variables
(0)
@@ -63,14 +63,14 @@
-
-
+
+
-
+
Flow Control
(0)
diff --git a/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml.cs b/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml.cs
index c2d0728a69..99b442438c 100644
--- a/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml.cs
+++ b/Ginger/Ginger/Run/BusinessFlowRunConfigurationsPage.xaml.cs
@@ -502,7 +502,7 @@ private void BusinessFlowTab_SelectionChanged(object sender, SelectionChangedEve
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/Run/FailedActionsScreenshotsPage.xaml b/Ginger/Ginger/Run/FailedActionsScreenshotsPage.xaml
index 28d69d3d45..300f463e53 100644
--- a/Ginger/Ginger/Run/FailedActionsScreenshotsPage.xaml
+++ b/Ginger/Ginger/Run/FailedActionsScreenshotsPage.xaml
@@ -17,8 +17,8 @@
-
-
+
+
diff --git a/Ginger/Ginger/Run/GingerRunnerConfigurationsPage.xaml b/Ginger/Ginger/Run/GingerRunnerConfigurationsPage.xaml
index a50a18212d..fc794a3e3a 100644
--- a/Ginger/Ginger/Run/GingerRunnerConfigurationsPage.xaml
+++ b/Ginger/Ginger/Run/GingerRunnerConfigurationsPage.xaml
@@ -10,7 +10,7 @@
Height="350" Width="500"
Title="Runner Configurations">
-
+
diff --git a/Ginger/Ginger/Run/GingerSelfHealingConfiguration.xaml b/Ginger/Ginger/Run/GingerSelfHealingConfiguration.xaml
index ac8ebab3b4..15cccc6955 100644
--- a/Ginger/Ginger/Run/GingerSelfHealingConfiguration.xaml
+++ b/Ginger/Ginger/Run/GingerSelfHealingConfiguration.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="350" d:DesignWidth="350"
Title="Self Healing Configurations">
-
+
diff --git a/Ginger/Ginger/Run/RunSetActions/ExportResultsToALMConfigPage.xaml.cs b/Ginger/Ginger/Run/RunSetActions/ExportResultsToALMConfigPage.xaml.cs
index 701872b6cc..a6a40111e8 100644
--- a/Ginger/Ginger/Run/RunSetActions/ExportResultsToALMConfigPage.xaml.cs
+++ b/Ginger/Ginger/Run/RunSetActions/ExportResultsToALMConfigPage.xaml.cs
@@ -27,10 +27,12 @@ limitations under the License.
using GingerCore.GeneralLib;
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
+using static Ginger.AnalyzerLib.AnalyzerItemBase;
using static GingerCore.ALM.PublishToALMConfig;
using static GingerCoreNET.ALMLib.ALMIntegrationEnums;
@@ -72,6 +74,8 @@ public ExportResultsToALMConfigPage(RunSetActionPublishToQC runSetActionPublishT
xALMTypeCbx.ComboBox.SelectionChanged += xALMTypeCbx_SelectionChanged;
xALMTestSetLevelCbx_SelectionChanged(this, null);
xALMTypeCbx_SelectionChanged(this, null);
+ SetTestLevelComboBoxList(runSetActionPublishToQC.RunAt);
+ PropertyChangedEventManager.AddHandler(runSetActionPublishToQC, RunAt_PropertyChanged, string.Empty);
}
private ExportResultsToALMConfigPage()
@@ -102,7 +106,7 @@ public static ExportResultsToALMConfigPage Instance
}
}
- public bool Init(ObservableList bfs, ValueExpression VE,Context Context=null)
+ public bool Init(ObservableList bfs, ValueExpression VE, Context Context = null)
{
this.Title = "Export Results To ALM";
GingerCoreNET.ALMLib.ALMConfig AlmConfig = WorkSpace.Instance.Solution.ALMConfigs.FirstOrDefault(x => x.DefaultAlm);
@@ -277,5 +281,39 @@ private void xALMTypeCbx_SelectionChanged(object sender, SelectionChangedEventAr
}
xSetFieldsBtn.Visibility = Visibility.Visible;
}
+
+ private void RunAt_PropertyChanged(object? sender, PropertyChangedEventArgs e)
+ {
+ if (string.Equals(e.PropertyName, nameof(RunSetActionBase.RunAt)))
+ {
+ SetTestLevelComboBoxList((sender as RunSetActionBase).RunAt);
+ }
+ }
+
+ private void SetTestLevelComboBoxList(RunSetActionBase.eRunAt runAt)
+ {
+ if (runAt == RunSetActionBase.eRunAt.DuringExecution)
+ {
+ for (int i = xALMTestSetLevelCbx.ComboBox.Items.Count - 1; i >= 0; i--)
+ {
+ if (xALMTestSetLevelCbx.ComboBox.Items[i].ToString() == GingerCore.General.GetEnumValueDescription(typeof(eALMTestSetLevel), eALMTestSetLevel.RunSet))
+ {
+ xALMTestSetLevelCbx.ComboBox.Items.RemoveAt(i);
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (xALMTestSetLevelCbx.ComboBox.Items.Count < 2)
+ {
+ xALMTestSetLevelCbx.ComboBox.Items.Add(new ComboItem()
+ {
+ Value = eALMTestSetLevel.RunSet.ToString(),
+ text = GingerCore.General.GetEnumValueDescription(typeof(eALMTestSetLevel), eALMTestSetLevel.RunSet)
+ });
+ }
+ }
+ }
}
}
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionAutomatedALMDefectsEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionAutomatedALMDefectsEditPage.xaml
index 076b6b1f6c..16f379b562 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionAutomatedALMDefectsEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionAutomatedALMDefectsEditPage.xaml
@@ -12,7 +12,7 @@
-
+
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionDeliveryMethodConfigPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionDeliveryMethodConfigPage.xaml
index c318ebdfbd..7c4b3d1115 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionDeliveryMethodConfigPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionDeliveryMethodConfigPage.xaml
@@ -9,16 +9,16 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="RunSetActionDeliveryMethodConfigPage">
-
+
-
+
E-mail Method:
-
+
SMTP Mail Host:
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionEditPage.xaml
index 4abf07302e..5c7983a9b4 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionEditPage.xaml
@@ -6,9 +6,9 @@
xmlns:UserControlsLib="clr-namespace:Ginger.UserControlsLib"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="600"
- Title="RunSetActionEditPage" Background="{StaticResource $BackgroundColor_LightGray}">
+ Title="RunSetActionEditPage" Background="{StaticResource $BackgroundColor_White}">
-
+
@@ -22,9 +22,9 @@
-
+
-
+
@@ -37,7 +37,7 @@
Condition:
-
+
@@ -46,9 +46,9 @@
-
+
-
+
Status:
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionGenerateTestNGReportEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionGenerateTestNGReportEditPage.xaml
index cb239483d0..b2d6f4a547 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionGenerateTestNGReportEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionGenerateTestNGReportEditPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="RunSetActionGenerateTestNGReportEditPage">
-
+
Target TestNG Report Folder:
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportEditPage.xaml
index 1282514d2c..b25c16205f 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportEditPage.xaml
@@ -9,12 +9,12 @@
d:DesignHeight="150" d:DesignWidth="600"
Title="RunSetActionHTMLReportEditPage">
-
+
-
+
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportSendEmailEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportSendEmailEditPage.xaml
index 0600615d57..318b3be316 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportSendEmailEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionHTMLReportSendEmailEditPage.xaml
@@ -10,19 +10,19 @@
Title="RunSetActionHTMLReportEmailEditPage">
-
+
-
+
-
+
@@ -57,7 +57,7 @@
-
+
@@ -65,8 +65,8 @@
-
-
+
+
@@ -82,7 +82,7 @@
-
+
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionSaveResultsEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionSaveResultsEditPage.xaml
index 687234626f..993be3502e 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionSaveResultsEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionSaveResultsEditPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="RunSetActionSaveResultsEditPage">
-
+
Selected Report Template Name:
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionScriptEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionScriptEditPage.xaml
index 103cba971f..f6176d4b24 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionScriptEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionScriptEditPage.xaml
@@ -7,7 +7,7 @@
d:DesignHeight="600" d:DesignWidth="800"
Title="RunSetActionScriptEditPage">
-
+
Script File Name:
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendDataToExternalSourceEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendDataToExternalSourceEditPage.xaml
index c2880f850b..1d6d74e696 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendDataToExternalSourceEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendDataToExternalSourceEditPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="550" d:DesignWidth="600"
Title="RunSetActionSendDataToExternalSourceEditPage">
-
+
@@ -20,7 +20,7 @@
-
+
@@ -40,7 +40,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendEmailEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendEmailEditPage.xaml
index a5c0413e8d..3d0b985843 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendEmailEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendEmailEditPage.xaml
@@ -7,10 +7,10 @@
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="600"
Title="RunSetActionEmailReportEditPage">
-
+
-
-
+
+
@@ -35,12 +35,12 @@
-
+
-
+
@@ -51,8 +51,8 @@
-
-
+
+
@@ -60,12 +60,12 @@
-
-
+
+
E-mail Method:
-
+
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendFreeEmailEditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendFreeEmailEditPage.xaml
index b33f71eee0..f46ae26044 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendFreeEmailEditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendFreeEmailEditPage.xaml
@@ -10,19 +10,19 @@
Title="RunSetActionSendFreeEmailEditPage">
-
+
-
+
-
+
@@ -54,7 +54,7 @@
-
+
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendSMSditPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendSMSditPage.xaml
index c0a5cd0491..d3c2ef9091 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionSendSMSditPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionSendSMSditPage.xaml
@@ -7,10 +7,10 @@
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="600"
Title="RunSetActionSendSMSEditPage">
-
+
-
-
+
+
@@ -42,8 +42,8 @@
-
-
+
+
diff --git a/Ginger/Ginger/Run/RunSetActions/RunSetActionSummaryJSONPage.xaml b/Ginger/Ginger/Run/RunSetActions/RunSetActionSummaryJSONPage.xaml
index 74093bf72f..112a7fe84c 100644
--- a/Ginger/Ginger/Run/RunSetActions/RunSetActionSummaryJSONPage.xaml
+++ b/Ginger/Ginger/Run/RunSetActions/RunSetActionSummaryJSONPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="RunSetActionSummaryJSONPage">
-
+
Note: The JSON Summary Report will be saved under the Solution "ExecutionResults" folder
diff --git a/Ginger/Ginger/Run/RunSetsExecutionsHistoryPage.xaml.cs b/Ginger/Ginger/Run/RunSetsExecutionsHistoryPage.xaml.cs
index faf44be92a..129161d8ef 100644
--- a/Ginger/Ginger/Run/RunSetsExecutionsHistoryPage.xaml.cs
+++ b/Ginger/Ginger/Run/RunSetsExecutionsHistoryPage.xaml.cs
@@ -192,7 +192,7 @@ await Task.Run(() =>
}
catch (Exception ex)
{
- Reporter.ToLog(eLogLevel.ERROR, "Error Occured during LoadExecutionHistory.", ex);
+ Reporter.ToLog(eLogLevel.ERROR, "Error Occurred during LoadExecutionHistory.", ex);
}
});
@@ -262,10 +262,7 @@ private void DeleteExecutionReports(System.Collections.IList runSetReports)
else if (runSetReport.DataRepMethod == ExecutionLoggerConfiguration.DataRepositoryMethod.TextFile)
{
string runSetFolder = executionLoggerHelper.GetLoggerDirectory(runSetReport.LogFolder);
-
- var fi = new DirectoryInfo(runSetFolder);
- CleanDirectory(fi.FullName);
- fi.Delete();
+ TextFileRepository.DeleteLocalData(runSetFolder);
}
else if (runSetReport.DataRepMethod == ExecutionLoggerConfiguration.DataRepositoryMethod.Remote && !remoteDeletionFlag)
{
@@ -280,27 +277,6 @@ private void DeleteExecutionReports(System.Collections.IList runSetReports)
}
}
- private static void CleanDirectory(string folderName)
- {
- try
- {
- System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(folderName);
-
- foreach (System.IO.FileInfo file in di.GetFiles())
- {
- file.Delete();
- }
- foreach (System.IO.DirectoryInfo dir in di.GetDirectories())
- {
- dir.Delete(true);
- }
- }
- catch (Exception ex)
- {
- Reporter.ToLog(eLogLevel.WARN, string.Format("Failed to Clean the Folder '{0}', Issue:'{1}'", folderName, ex.Message));
- }
- }
-
private void RefreshGrid(object sender, RoutedEventArgs e)
{
ReloadData();
diff --git a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardCLITypePage.xaml b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardCLITypePage.xaml
index bbe7d77c4c..2613c43782 100644
--- a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardCLITypePage.xaml
+++ b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardCLITypePage.xaml
@@ -12,7 +12,7 @@
-
+
diff --git a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml
index 13b2855bf3..adbb27688e 100644
--- a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml
+++ b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="CLIOptionsPage">
-
+
General Options:
@@ -32,7 +32,7 @@
-
+
@@ -41,7 +41,7 @@
-
+
@@ -52,6 +52,12 @@
+
+
+
+
+
+
Artifacts path (Output folder for execution results/reports)
diff --git a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml.cs b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml.cs
index 5d76bdc940..1fdc004613 100644
--- a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml.cs
+++ b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardOptionsPage.xaml.cs
@@ -69,6 +69,7 @@ public void WizardEvent(WizardEventArgs WizardEventArgs)
BindingHandler.ObjFieldBinding(xGingerRunEXEWindowShow, CheckBox.IsCheckedProperty, mAutoRunWizard.CliHelper, nameof(CLIHelper.ShowAutoRunWindow));
BindingHandler.ObjFieldBinding(xRunAnalyzerCheckBox, CheckBox.IsCheckedProperty, mAutoRunWizard.CliHelper, nameof(CLIHelper.RunAnalyzer));
BindingHandler.ObjFieldBinding(xSealightsConfigCheckBox, CheckBox.IsCheckedProperty, mAutoRunWizard.CliHelper, nameof(CLIHelper.SetSealightsSettings));
+ BindingHandler.ObjFieldBinding(xGlobalVariableConfigCheckBox, CheckBox.IsCheckedProperty, mAutoRunWizard.CliHelper, nameof(CLIHelper.GlobalVariableConfiguration));
// Disable the xSealightsConfigCheckBox if Sealights is not anable in Configuration's setting
if (WorkSpace.Instance.Solution.SealightsConfiguration.SealightsLog == Configurations.SealightsConfiguration.eSealightsLog.No)
diff --git a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardShortcutPage.xaml b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardShortcutPage.xaml
index 363a9646f0..94a3060555 100644
--- a/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardShortcutPage.xaml
+++ b/Ginger/Ginger/RunSetLib/CreateAutoRunWizardLib/AutoRunWizardShortcutPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="CreateCLIContentPage">
-
+
@@ -42,7 +42,7 @@
Execute Now
-
+
:
Yes
diff --git a/Ginger/Ginger/RunSetPageLib/HighlightBorder.xaml b/Ginger/Ginger/RunSetPageLib/HighlightBorder.xaml
index d733f8a498..22ec781950 100644
--- a/Ginger/Ginger/RunSetPageLib/HighlightBorder.xaml
+++ b/Ginger/Ginger/RunSetPageLib/HighlightBorder.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300">
diff --git a/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml b/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml
index 96b5d33386..58e2db036c 100644
--- a/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml
+++ b/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml
@@ -16,137 +16,146 @@
Title="Runset" Loaded="Page_loaded">
-
+
-
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -164,55 +173,57 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
-
+
-
-
-
+
+
+
@@ -255,7 +266,7 @@
-
+
@@ -264,13 +275,15 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -288,7 +301,7 @@
-
+
@@ -296,16 +309,18 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
@@ -316,17 +331,19 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -369,7 +386,7 @@
-
+
@@ -401,7 +418,7 @@
-
+
diff --git a/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml.cs b/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml.cs
index 844b4a2e07..07b0bd9fbf 100644
--- a/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml.cs
+++ b/Ginger/Ginger/RunSetPageLib/NewRunSetPage.xaml.cs
@@ -237,6 +237,9 @@ public NewRunSetPage()//when window opened manually
private void LoadRunSetConfigBySelection(RunSetConfig defaultRunSet)
{
+ //hide current Run set UI
+ xRunsetPageGrid.Visibility = Visibility.Collapsed;
+
if (mRunSetsSelectionPage == null)
{
RunSetFolderTreeItem runSetsRootfolder = new RunSetFolderTreeItem(WorkSpace.Instance.SolutionRepository.GetRepositoryItemRootFolder());
@@ -375,6 +378,7 @@ private void Runner_PropertyChanged(object sender, System.ComponentModel.Propert
}
UpdateRunButtonIcon();
+ UpdateReRunFailedButtonIcon();
}
});
}
@@ -413,7 +417,7 @@ private void UpdateRunButtonIcon(bool isRunStarted = false)
{
xRunRunsetBtn.ButtonImageType = eImageType.Running;
xRunRunsetBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_ExecutionRunning");
- xRunRunsetBtn.ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
+ xRunRunsetBtn.ButtonImageForground = (SolidColorBrush)FindResource("$HighlightColor_LightBlue");
xRunRunsetBtn.IsEnabled = false;
if (RunSetConfig.GingerRunners.Any(x => x.Executor.IsRunning == true))
{
@@ -442,77 +446,72 @@ private void UpdateRunButtonIcon(bool isRunStarted = false)
});
}
- //private void UpdateReRunFailedButtonIcon(bool isRunStarted = false)
- //{
-
- // this.Dispatcher.Invoke(() =>
- // {
- // bool setAsRunning = false;
- // if (WorkSpace.Instance.RunsetExecutor.Runners.Any(x => x.Executor.BusinessFlows.Any(x => x.RunStatus == eRunStatus.Failed)))
- // {
- // xReRunFailedRunsetBtn.Visibility = Visibility.Visible;
- // xRunRunsetBtn.Visibility = Visibility.Collapsed;
-
- // if (isRunStarted)
- // {
- // xReRunFailedRunsetBtn.ButtonText = "Starting...";
- // xReRunFailedRunsetBtn.ToolTip = "Performing Run Preparations";
- // setAsRunning = true;
- // }
- // else if (mRunSetConfig.IsRunning)
- // {
- // xReRunFailedRunsetBtn.ButtonText = "Running...";
- // setAsRunning = true;
- // }
- // else if (RunSetConfig.GingerRunners.FirstOrDefault(x => x.Status == eRunStatus.Running) != null)
- // {
- // xReRunFailedRunsetBtn.ButtonText = "Running...";
- // xReRunFailedRunsetBtn.ToolTip = "Execution of at least one Runner is in progress";
- // setAsRunning = true;
- // }
- // else
- // {
- // xReRunFailedRunsetBtn.ButtonText = "ReRunFailed";
- // xReRunFailedRunsetBtn.ToolTip = "Run All Failed Runners";
- // setAsRunning = false;
- // }
-
- // if (setAsRunning)
- // {
- // xReRunFailedRunsetBtn.ButtonImageType = eImageType.Running;
- // xReRunFailedRunsetBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_ExecutionRunning");
- // xReRunFailedRunsetBtn.ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
- // xReRunFailedRunsetBtn.IsEnabled = false;
- // if (RunSetConfig.GingerRunners.Any(x => x.Executor.IsRunning == true))
- // {
- // xStopRunsetBtn.ButtonText = "Stop";
- // xStopRunsetBtn.ButtonImageType = eImageType.Stop;
- // xStopRunsetBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_ExecutionStop");
- // xStopRunsetBtn.IsEnabled = true;
- // xStopRunsetBtn.Visibility = Visibility.Visible;
- // }
- // xContinueRunsetBtn.Visibility = Visibility.Collapsed;
- // xResetRunsetBtn.Visibility = Visibility.Collapsed;
- // }
- // else
- // {
- // xReRunFailedRunsetBtn.ButtonImageType = eImageType.Run;
- // xReRunFailedRunsetBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_Execution");
- // xReRunFailedRunsetBtn.ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
- // xReRunFailedRunsetBtn.IsEnabled = true;
- // xStopRunsetBtn.Visibility = Visibility.Collapsed;
- // xContinueRunsetBtn.Visibility = Visibility.Visible;
- // xResetRunsetBtn.Visibility = Visibility.Visible;
- // xRunsetSaveBtn.IsEnabled = true;
- // }
- // }
- // else
- // {
- // xReRunFailedRunsetBtn.Visibility = Visibility.Collapsed;
- // xRunRunsetBtn.Visibility = Visibility.Visible;
- // }
- // });
- //}
+ private void UpdateReRunFailedButtonIcon(bool isRunStarted = false)
+ {
+
+ this.Dispatcher.Invoke(() =>
+ {
+ bool setAsRunning = false;
+ if (WorkSpace.Instance.RunsetExecutor.Runners.Any(x => x.Executor != null && x.Executor.BusinessFlows.Any(x => x.RunStatus == eRunStatus.Failed)))
+ {
+ xReRunFailedRunsetBtn.Visibility = Visibility.Visible;
+ xRunRunsetBtn.Visibility = Visibility.Collapsed;
+
+ if (isRunStarted)
+ {
+ xReRunFailedRunsetBtn.ButtonText = "Starting...";
+ xReRunFailedRunsetBtn.ToolTip = "Performing Run Preparations";
+ setAsRunning = true;
+ }
+ else if (mRunSetConfig.IsRunning)
+ {
+ xReRunFailedRunsetBtn.ButtonText = "Running...";
+ xReRunFailedRunsetBtn.ToolTip = "Execution of at least one Runner is in progress";
+ setAsRunning = true;
+ }
+ else
+ {
+ xReRunFailedRunsetBtn.ButtonText = "Re-Run Failed Flows";
+ xReRunFailedRunsetBtn.ToolTip = "Re-Run All Failed Business flows";
+ setAsRunning = false;
+ }
+
+ if (setAsRunning)
+ {
+ xReRunFailedRunsetBtn.ButtonImageType = eImageType.Running;
+ xReRunFailedRunsetBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_ExecutionRunning");
+ xReRunFailedRunsetBtn.ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
+ xReRunFailedRunsetBtn.IsEnabled = false;
+ if (RunSetConfig.GingerRunners.Any(x => x.Executor.IsRunning == true))
+ {
+ xStopRunsetBtn.ButtonText = "Stop";
+ xStopRunsetBtn.ButtonImageType = eImageType.Stop;
+ xStopRunsetBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_ExecutionStop");
+ xStopRunsetBtn.IsEnabled = true;
+ xStopRunsetBtn.Visibility = Visibility.Visible;
+ }
+ xContinueRunsetBtn.Visibility = Visibility.Collapsed;
+ xResetRunsetBtn.Visibility = Visibility.Collapsed;
+ }
+ else
+ {
+ xReRunFailedRunsetBtn.ButtonImageType = eImageType.Run;
+ xReRunFailedRunsetBtn.ButtonStyle = (Style)FindResource("$RoundTextAndImageButtonStyle_Execution");
+ xReRunFailedRunsetBtn.ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
+ xReRunFailedRunsetBtn.IsEnabled = true;
+ xStopRunsetBtn.Visibility = Visibility.Collapsed;
+ xContinueRunsetBtn.Visibility = Visibility.Visible;
+ xResetRunsetBtn.Visibility = Visibility.Visible;
+ xRunsetSaveBtn.IsEnabled = true;
+ }
+ }
+ else
+ {
+ xReRunFailedRunsetBtn.Visibility = Visibility.Collapsed;
+ xRunRunsetBtn.Visibility = Visibility.Visible;
+ }
+ });
+ }
private bool CheckIfExecutionIsInProgress()
{
if (mRunSetConfig.IsRunning || RunSetConfig.GingerRunners.FirstOrDefault(x => x.Status == eRunStatus.Running || x.Executor.IsRunning == true) != null)
@@ -572,6 +571,10 @@ private async void RunnerItem_RunnerItemEvent(RunnerItemEventArgs EventArgs)
return;
}
WorkSpace.Instance.RunsetExecutor.RunSetConfig.LastRunsetLoggerFolder = null;
+ if (RunSetConfig.ExecutionID == null)
+ {
+ RunSetConfig.ExecutionID = Guid.NewGuid();
+ }
switch (EventArgs.RunnerItemType)
{
case RunnerItemPage.eRunnerItemType.BusinessFlow:
@@ -898,7 +901,7 @@ private void UpdateDescription()
{
xDescriptionTextBlock.Text = string.Empty;
TextBlockHelper xDescTextBlockHelper = new TextBlockHelper(xDescriptionTextBlock);
- SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$Color_DarkBlue")).ToString());
+ SolidColorBrush foregroundColor = (SolidColorBrush)new BrushConverter().ConvertFromString((TryFindResource("$PrimaryColor_Black")).ToString());
//description
if (!string.IsNullOrEmpty(mRunSetConfig.Description))
@@ -943,6 +946,7 @@ private void RunSetConfig_PropertyChanged(object sender, System.ComponentModel.P
else if (e.PropertyName == nameof(RunSetConfig.IsRunning))
{
UpdateRunButtonIcon();
+ UpdateReRunFailedButtonIcon();
}
}
@@ -1084,6 +1088,11 @@ private void ResetLoadedRunSet(RunSetConfig runSetToSet = null)
if (runSetToSet == null)
{
runSetToSet = GetDefualtRunSetConfig();
+ if (!WorkSpace.Instance.UserProfile.AutoLoadLastRunSet)
+ {
+ LoadRunSetConfigBySelection(runSetToSet);
+ return;
+ }
}
if (runSetToSet != null)
@@ -1109,7 +1118,7 @@ private void GingerRunnerHighlight(RunnerPage GRP, bool forceReload = false)
if (mCurrentSelectedRunner != null)
{
mCurrentSelectedRunner.xBorder.Visibility = System.Windows.Visibility.Collapsed;
- mCurrentSelectedRunner.xRunnerInfoSplitterBorder.Background = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ mCurrentSelectedRunner.xRunnerInfoSplitterBorder.Background = FindResource("$BackgroundColor_Black") as Brush;
mCurrentSelectedRunner.xRunnerInfoSplitterBorder.Height = 1;
if (!mCurrentSelectedRunner.ExecutorEngine.GingerRunner.Active)
{
@@ -1117,14 +1126,14 @@ private void GingerRunnerHighlight(RunnerPage GRP, bool forceReload = false)
}
else
{
- mCurrentSelectedRunner.xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ mCurrentSelectedRunner.xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
}
//highlight the selected Ginger
GRP.xBorder.Visibility = System.Windows.Visibility.Visible;
GRP.xRunnerInfoSplitterBorder.Background = FindResource("$amdocsLogoLinarGradientBrush") as Brush;
- GRP.xRunnerInfoSplitterBorder.Height = 4;
+ GRP.xRunnerInfoSplitterBorder.Height = 1;
if (!GRP.ExecutorEngine.GingerRunner.Active)
{
GRP.xRunnerNameTxtBlock.Foreground = Brushes.Gray;
@@ -1293,9 +1302,9 @@ internal void InitFlowDiagram()
if (mFlowDiagram == null)
{
mFlowDiagram = new FlowDiagramPage();
- mFlowDiagram.SetView(Brushes.White, false, false);
+ mFlowDiagram.SetView(Brushes.Transparent, false, false);
mFlowDiagram.SetHighLight = false;
- mFlowDiagram.BackGround = Brushes.White;
+ mFlowDiagram.BackGround = Brushes.Transparent;
mFlowDiagram.ZoomPanelContainer.Visibility = Visibility.Collapsed;
mFlowDiagram.ScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
mFlowDiagram.Height = 300;
@@ -1335,8 +1344,8 @@ internal void InitRunnerFlowElement(RunnerPage GRP, GingerExecutionEngine runner
GRP.xBorder.Visibility = System.Windows.Visibility.Collapsed;
GRP.xRunnerInfoSplitterBorder.Height = 1;
- GRP.xRunnerInfoSplitterBorder.Background = FindResource("$BackgroundColor_DarkBlue") as Brush;
- GRP.xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ GRP.xRunnerInfoSplitterBorder.Background = FindResource("$BackgroundColor_Black") as Brush;
+ GRP.xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_Black") as Brush;
mFlowX = mFlowX + 610;
}
@@ -1587,8 +1596,11 @@ public async void LoadRunSetConfig(RunSetConfig runSetConfig, bool runAsync = tr
{
try
{
+ //show current Run set UI
+ xRunsetPageGrid.Visibility = Visibility.Visible;
+
bool isSolutionSame = mRunSetConfig != null ? mRunSetConfig.ContainingFolderFullPath.Contains(WorkSpace.Instance.Solution.FileName) : false;
- bool bIsRunsetDirty = mRunSetConfig != null && mRunSetConfig.DirtyStatus == eDirtyStatus.Modified && isSolutionSame;
+ bool bIsRunsetDirty = mRunSetConfig != null && mRunSetConfig.DirtyStatus == eDirtyStatus.Modified && isSolutionSame;
if (WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList != null)
{
WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList.Clear();
@@ -1624,7 +1636,7 @@ public async void LoadRunSetConfig(RunSetConfig runSetConfig, bool runAsync = tr
{
InitRunnersSection(false, ViewMode);
}
-
+ UpdateReRunFailedButtonIcon();
this.Dispatcher.Invoke(() =>
{
//Init Operations Section
@@ -1824,7 +1836,7 @@ private void analyzerRunset_Click(object sender, RoutedEventArgs e)
Reporter.ToUser(eUserMsgKey.AnalyzerSaveRunSet);
return;
}
- AP.Init(WorkSpace.Instance.Solution, RSC);
+ AP.Init(RSC, WorkSpace.Instance.Solution);
AP.ShowAsWindow();
}
@@ -1874,7 +1886,7 @@ private async void xRunRunsetBtn_Click(object sender, RoutedEventArgs e)
return;
}
UpdateRunButtonIcon(true);
-
+
ResetALMDefectsSuggestions();
@@ -1917,83 +1929,85 @@ private async void xRunRunsetBtn_Click(object sender, RoutedEventArgs e)
finally
{
UpdateRunButtonIcon();
-
- //UpdateReRunFailedButtonIcon();
+ UpdateReRunFailedButtonIcon();
}
}
- //private async void xReRunFailedRunsetBtn_Click(object sender, RoutedEventArgs e)
- //{
- // RunsetExecutor ReRunRunsetExecutor = new RunsetExecutor();
+ private async void xReRunFailedRunsetBtn_Click(object sender, RoutedEventArgs e)
+ {
+ RunsetExecutor ReRunRunsetExecutor = new RunsetExecutor();
+ List DeactivatedBfInstanceGuidList = new List();
+ if (WorkSpace.Instance.RunsetExecutor.Runners.Any(x => x.Executor.BusinessFlows.Any(y => y.RunStatus == eRunStatus.Failed)))
+ {
+ WorkSpace.Instance.RunsetExecutor.RunSetConfig.ReRunConfigurations.Active = true;
+ }
+ else
+ {
+ Reporter.ToLog(eLogLevel.INFO, "No record found to re run for current execution");
+ return;
+ }
- // if(WorkSpace.Instance.RunsetExecutor.Runners.Any(x=>x.Executor.BusinessFlows.Any(y=>y.RunStatus == eRunStatus.Failed)))
- // {
- // WorkSpace.Instance.RunsetExecutor.RunSetConfig.ReRunConfiguration.Active = true;
- // }
+ if (WorkSpace.Instance.RunsetExecutor.RunSetConfig.ReRunConfigurations.Active)
+ {
+ try
+ {
+ if (RunSetConfig.DirtyStatus.Equals(eDirtyStatus.Modified))
+ {
+ UserSelectionSaveOrUndoRunsetChanges();
+ }
+ xRunsetSaveBtn.IsEnabled = false;
+ IEnumerable runnerNames = WorkSpace.Instance.RunsetExecutor.Runners.Where(x => x.Executor.BusinessFlows.Count == 0).Select(y => y.Name);
- // if (WorkSpace.Instance.RunsetExecutor.RunSetConfig.ReRunConfiguration.Active)
- // {
+ if (runnerNames.Any())
+ {
+ Reporter.ToUser(eUserMsgKey.StaticInfoMessage, $"{string.Join(", ", runnerNames)} is empty, please add {GingerDicser.GetTermResValue(eTermResKey.BusinessFlows)} to run.");
+ return;
+ }
+ UpdateReRunFailedButtonIcon(true);
+ ResetALMDefectsSuggestions();
- // try
- // {
- // if (RunSetConfig.DirtyStatus.Equals(eDirtyStatus.Modified))
- // {
- // UserSelectionSaveOrUndoRunsetChanges();
- // }
- // xRunsetSaveBtn.IsEnabled = false;
- // IEnumerable runnerNames = WorkSpace.Instance.RunsetExecutor.Runners.Where(x => x.Executor.BusinessFlows.Count == 0).Select(y => y.Name);
-
- // if (runnerNames.Any())
- // {
- // Reporter.ToUser(eUserMsgKey.StaticInfoMessage, $"{string.Join(", ", runnerNames)} is empty, please add {GingerDicser.GetTermResValue(eTermResKey.BusinessFlows)} to run.");
- // return;
- // }
- // UpdateReRunFailedButtonIcon(true);
-
- // ResetALMDefectsSuggestions();
-
-
- // //run analyzer
- // if (mRunSetConfig.RunWithAnalyzer)
- // {
- // int analyzeRes = await AnalyzeRunsetWithUI().ConfigureAwait(false);
- // if (analyzeRes == 1)
- // {
- // return;//cancel run because issues found
- // }
- // }
-
- // var result = await WorkSpace.Instance.RunsetExecutor.RunRunsetAsync().ConfigureAwait(false);
-
- // // handling ALM Defects Opening
-
- // if (WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList != null && WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList.Count > 0)
- // {
- // ObservableList ALMDefectProfiles = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems();
- // if (ALMDefectProfiles != null && ALMDefectProfiles.Count > 0)
- // {
- // this.Dispatcher.Invoke(() =>
- // {
- // InitALMDefectsOpeningSection();
- // });
- // }
-
- // }
- // }
- // catch (Exception ex)
- // {
- // Reporter.ToLog(eLogLevel.ERROR, "Runset execution failed: ", ex);
- // }
- // finally
- // {
- // UpdateReRunFailedButtonIcon();
- // }
- // }
- // else
- // {
- // return;
- // }
- //}
+
+ //run analyzer
+ if (mRunSetConfig.RunWithAnalyzer)
+ {
+ int analyzeRes = await AnalyzeRunsetWithUI().ConfigureAwait(false);
+ if (analyzeRes == 1)
+ {
+ return;//cancel run because issues found
+ }
+ }
+
+ var result = await WorkSpace.Instance.RunsetExecutor.RunRunsetAsync().ConfigureAwait(false);
+
+ // handling ALM Defects Opening
+
+ if (WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList != null && WorkSpace.Instance.RunsetExecutor.DefectSuggestionsList.Count > 0)
+ {
+ ObservableList ALMDefectProfiles = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems();
+ if (ALMDefectProfiles != null && ALMDefectProfiles.Count > 0)
+ {
+ this.Dispatcher.Invoke(() =>
+ {
+ InitALMDefectsOpeningSection();
+ });
+ }
+
+ }
+ }
+ catch (Exception ex)
+ {
+ Reporter.ToLog(eLogLevel.ERROR, "Runset execution failed during re run failed flows ", ex);
+ }
+ finally
+ {
+ UpdateReRunFailedButtonIcon();
+ }
+ }
+ else
+ {
+ return;
+ }
+ }
private void ResetRunners()
{
@@ -2016,7 +2030,6 @@ private async void xContinueRunsetBtn_Click(object sender, RoutedEventArgs e)
try
{
UpdateRunButtonIcon(true);
-
if (RunSetConfig.GingerRunners.FirstOrDefault(x => x.Status == eRunStatus.Stopped) == null)
{
Reporter.ToUser(eUserMsgKey.StaticWarnMessage, "There are no Stopped Runners to Continue.");
@@ -2051,7 +2064,7 @@ public async Task AnalyzeRunsetWithUI()
{
Reporter.ToStatus(eStatusMsgKey.AnalyzerIsAnalyzing, null, mRunSetConfig.Name, GingerDicser.GetTermResValue(eTermResKey.RunSet));
analyzerPage = new AnalyzerPage();
- analyzerPage.Init(WorkSpace.Instance.Solution, mRunSetConfig);
+ analyzerPage.Init(mRunSetConfig, WorkSpace.Instance.Solution);
});
await analyzerPage.AnalyzeWithoutUI();
@@ -2073,8 +2086,8 @@ public async Task AnalyzeRunsetWithUI()
private void xResetRunsetBtn_Click(object sender, RoutedEventArgs e)
{
CleanAndUpdateRunsetStats();
- //UpdateReRunFailedButtonIcon();
- //UpdateRunButtonIcon();
+ UpdateReRunFailedButtonIcon();
+ UpdateRunButtonIcon();
}
private void CleanAndUpdateRunsetStats()
@@ -2410,7 +2423,7 @@ private void xBusinessflowListView_SelectionChanged(object sender, SelectionChan
}
else
{
- currentitem.xItemName.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ currentitem.xItemName.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
}
@@ -2476,7 +2489,7 @@ private void xActivitiesListView_SelectionChanged(object sender, SelectionChange
foreach (RunnerItemPage currentitem in xActivitiesRunnerItemsListView.Items)
{
- currentitem.xItemName.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ currentitem.xItemName.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
if (mCurrentActivityRunnerItem != null)
{
@@ -2517,7 +2530,7 @@ private void SetHeighlightActionRunnerItem()
foreach (RunnerItemPage currentitem in xActionsRunnerItemsListView.Items)
{
- currentitem.xItemName.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ currentitem.xItemName.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
//Need it for first time.
if (xActionsRunnerItemsListView.SelectedItem == null)
@@ -2987,11 +3000,11 @@ private void xBusinessflowsActive_Click(object sender, RoutedEventArgs e)
bf.Active = SetBusinessflowActive;
if (SetBusinessflowActive)
{
- ((RunnerItemPage)ri).xItemName.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ ri.xItemName.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
else
{
- ((RunnerItemPage)ri).xItemName.Foreground = Brushes.Gray;
+ ri.xItemName.Foreground = Brushes.Gray;
}
}
}
@@ -3093,7 +3106,7 @@ private void xRunnersActive_Click(object sender, RoutedEventArgs e)
gr.GingerRunner.Active = SetRunnerActive;
if (SetRunnerActive)
{
- ((RunnerPage)rp.GetCustomeShape().Content).xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ ((RunnerPage)rp.GetCustomeShape().Content).xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
else
{
@@ -3195,23 +3208,13 @@ private void xUndoChangesBtn_Click(object sender, RoutedEventArgs e)
}
private void RunBtn_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
- {
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
- }
-
- private void RunBtn_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
}
- private void ReRunFailedBtn_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
- {
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_LightBlue");
- }
-
- private void ReRunFailedBtn_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
+ private void RunBtn_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
- ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$SelectionColor_Pink");
+ ((ucButton)sender).ButtonImageForground = (SolidColorBrush)FindResource("$HighlightColor_LightBlue");
}
private void xSelfHealingConfigBtn_Click(object sender, RoutedEventArgs e)
diff --git a/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml b/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml
index 68e0b5ac57..500eaa7f1a 100644
--- a/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml
+++ b/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml
@@ -9,7 +9,7 @@
xmlns:state="clr-namespace:Ginger.MoveToGingerWPF.Run_Set_Pages"
d:DesignWidth="515" MouseDoubleClick="UserControl_MouseDoubleClick">
-
+
@@ -18,31 +18,31 @@
-
+ Grid.RowSpan="2" Grid.ColumnSpan="2" CornerRadius="10"/>
-
-
+
+
-
+
-
+
-
-
+
+
diff --git a/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml.cs b/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml.cs
index 092bed9d2b..9030721a0a 100644
--- a/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml.cs
+++ b/Ginger/Ginger/RunSetPageLib/RunnerItemPage.xaml.cs
@@ -216,16 +216,12 @@ public RunnerItemPage(object Runnerobj = null, bool ViewMode = false)
{
InitializeComponent();
- //ItemsTotalCount++;
- //ItemsCount++;
-
ItemObject = Runnerobj;
if (ItemObject != null)
{
if (ItemObject.GetType() == typeof(GingerCore.BusinessFlow))
{
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatus, StatusItem.StatusProperty, ItemObject, nameof(BusinessFlow.RunStatus), BindingMode.OneWay);
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatusIcon, ImageMakerControl.ImageTypeProperty, ItemObject, nameof(BusinessFlow.RunStatus), bindingConvertor: new StatusIconConverter(), BindingMode.OneWay);
+ GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatus, StatusItem.StatusProperty, ItemObject, nameof(BusinessFlow.RunStatus), BindingMode.OneWay);
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xBusinessflowActive, ucButton.ButtonImageTypeProperty, ItemObject, nameof(BusinessFlow.Active), bindingConvertor: new ActiveIconConverter(), BindingMode.TwoWay);
((BusinessFlow)ItemObject).PropertyChanged += RunnerItem_BusinessflowPropertyChanged;
xRunnerItemContinue.ToolTip = "Resume Run from this " + GingerDicser.GetTermResValue(eTermResKey.BusinessFlow);
@@ -234,7 +230,6 @@ public RunnerItemPage(object Runnerobj = null, bool ViewMode = false)
else if (ItemObject.GetType() == typeof(GingerCore.Activity))
{
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatus, StatusItem.StatusProperty, ItemObject, nameof(Activity.Status), BindingMode.OneWay);
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatusIcon, ImageMakerControl.ImageTypeProperty, ItemObject, nameof(Activity.Status), bindingConvertor: new StatusIconConverter(), BindingMode.OneWay);
((Activity)ItemObject).PropertyChanged += RunnerItem_ActivityPropertyChanged;
xRunnerItemContinue.ToolTip = "Resume Run from this " + GingerDicser.GetTermResValue(eTermResKey.Activity);
xViewRunnerItem.ToolTip = "View " + GingerDicser.GetTermResValue(eTermResKey.Activity);
@@ -243,7 +238,6 @@ public RunnerItemPage(object Runnerobj = null, bool ViewMode = false)
else
{
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatus, StatusItem.StatusProperty, ItemObject, nameof(Act.Status), BindingMode.OneWay);
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatusIcon, ImageMakerControl.ImageTypeProperty, ItemObject, nameof(Act.Status), bindingConvertor: new StatusIconConverter(), BindingMode.OneWay);
((Act)ItemObject).PropertyChanged += RunnerItem_ActionPropertyChanged;
xRunnerItemContinue.ToolTip = "Resume Run from this Action";
xViewRunnerItem.ToolTip = "View Action";
@@ -263,12 +257,6 @@ public RunnerItemPage(object Runnerobj = null, bool ViewMode = false)
}
- //static int ItemsCount = 0;
- //static int ItemsTotalCount = 0;
- //~RunnerItemPage()
- //{
- // ItemsCount--;
- //}
private void RunnerItem_ActionPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(Act.Status))
@@ -484,7 +472,7 @@ public void ClearBindings()
BindingOperations.ClearAllBindings(xDetailView);
BindingOperations.ClearAllBindings(xStatus);
- BindingOperations.ClearAllBindings(xStatusIcon);
+ //BindingOperations.ClearAllBindings(xStatusIcon);
BindingOperations.ClearAllBindings(xItemName);
BindingOperations.ClearAllBindings(xItemDescription);
BindingOperations.ClearAllBindings(xItemSeparator);
diff --git a/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml b/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml
index 53ab6b1e3e..e1fc179dd4 100644
--- a/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml
+++ b/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml
@@ -12,7 +12,7 @@
mc:Ignorable="d"
h:GingerHelpProvider.HelpString="Run"
d:DesignHeight="200" d:DesignWidth="515"
- Title="Runner" Background="{StaticResource $BackgroundColor_LightGray}">
+ Title="Runner" Background="Transparent">
@@ -23,7 +23,7 @@
-
+
@@ -40,9 +40,9 @@
-
@@ -54,16 +54,16 @@
-
-
-
+
+
+
+
@@ -71,15 +71,15 @@
-
-
+
+
-
+
@@ -105,17 +105,17 @@
-
+
-
+
-
+
diff --git a/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml.cs b/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml.cs
index 2ef6a5ac79..ae5e977c43 100644
--- a/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml.cs
+++ b/Ginger/Ginger/RunSetPageLib/RunnerPage.xaml.cs
@@ -180,7 +180,6 @@ public void Init(GingerExecutionEngine runner, Context context, bool Viewmode =
ViewMode1 = Viewmode;
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xBusinessflowsTotalCount, Label.ContentProperty, mExecutorEngine, nameof(GingerExecutionEngine.TotalBusinessflow));
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatus, StatusItem.StatusProperty, mExecutorEngine.GingerRunner, nameof(GingerRunner.Status), BindingMode.OneWay);
- GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xStatusLabel, ImageMakerControl.ImageTypeProperty, mExecutorEngine.GingerRunner, nameof(GingerRunner.Status), bindingConvertor: new StatusIconConverter(), BindingMode.OneWay);
GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(xRunnerActive, ucButton.ButtonImageTypeProperty, mExecutorEngine.GingerRunner, nameof(GingerRunner.Active), bindingConvertor: new ActiveIconConverter(), BindingMode.TwoWay);
UpdateRunnerInfo();
if (Viewmode)
@@ -209,7 +208,6 @@ public void Clear()
{
BindingOperations.ClearBinding(xBusinessflowsTotalCount, Label.ContentProperty);
BindingOperations.ClearBinding(xStatus, StatusItem.StatusProperty);
- BindingOperations.ClearBinding(xStatusLabel, ImageMakerControl.ImageTypeProperty);
BindingOperations.ClearBinding(xRunnerActive, ucButton.ButtonImageTypeProperty);
if (ViewMode1)
{
@@ -482,7 +480,7 @@ private void Businessflow_ClickActive(object sender, RoutedEventArgs e)
}
else
{
- ((RunnerItemPage)sender).xItemName.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ ((RunnerItemPage)sender).xItemName.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
mExecutorEngine.GingerRunner.DirtyStatus = eDirtyStatus.Modified;
}
@@ -726,6 +724,10 @@ private void xRunRunnerBtn_Click(object sender, RoutedEventArgs e)
}
CheckIfRunsetDirty?.Invoke(null, null);
mExecutorEngine.RunLevel = eRunLevel.Runner;
+ if (WorkSpace.Instance.RunsetExecutor.RunSetConfig != null && WorkSpace.Instance.RunsetExecutor.RunSetConfig.ExecutionID == null)
+ {
+ WorkSpace.Instance.RunsetExecutor.RunSetConfig.ExecutionID = Guid.NewGuid();
+ }
RunRunner();
}
public async void RunRunner()
@@ -878,7 +880,7 @@ private void xRunnerActive_Click(object sender, RoutedEventArgs e)
}
else
{
- xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ xRunnerNameTxtBlock.Foreground = FindResource("$BackgroundColor_Black") as Brush;
}
}
diff --git a/Ginger/Ginger/RunSetPageLib/RunsetRunnersConfigPage.xaml b/Ginger/Ginger/RunSetPageLib/RunsetRunnersConfigPage.xaml
index 2f565c49f3..9175565e4d 100644
--- a/Ginger/Ginger/RunSetPageLib/RunsetRunnersConfigPage.xaml
+++ b/Ginger/Ginger/RunSetPageLib/RunsetRunnersConfigPage.xaml
@@ -10,7 +10,7 @@
Height="350" Width="500"
Title="Runners Execution Configurations">
-
+
diff --git a/Ginger/Ginger/RunSetPageLib/StatusItem.xaml b/Ginger/Ginger/RunSetPageLib/StatusItem.xaml
index ced3763045..9699f38f67 100644
--- a/Ginger/Ginger/RunSetPageLib/StatusItem.xaml
+++ b/Ginger/Ginger/RunSetPageLib/StatusItem.xaml
@@ -8,7 +8,7 @@
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Background="Transparent">
-
+
@@ -18,6 +18,6 @@
-
+
diff --git a/Ginger/Ginger/RunSetPageLib/StatusItem.xaml.cs b/Ginger/Ginger/RunSetPageLib/StatusItem.xaml.cs
index e084c4e037..a7267d8ab5 100644
--- a/Ginger/Ginger/RunSetPageLib/StatusItem.xaml.cs
+++ b/Ginger/Ginger/RunSetPageLib/StatusItem.xaml.cs
@@ -87,7 +87,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$PassedStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$PassedStatusColor");
}
break;
case eRunStatus.Failed:
@@ -98,7 +98,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$FailedStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$FailedStatusColor");
}
break;
case eRunStatus.Pending:
@@ -109,7 +109,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$PendingStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$PendingStatusColor");
}
break;
case eRunStatus.Running:
@@ -120,7 +120,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$RunningStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$RunningStatusColor");
}
break;
case eRunStatus.Stopped:
@@ -131,7 +131,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$StoppedStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$StoppedStatusColor");
}
break;
case eRunStatus.Blocked:
@@ -142,7 +142,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$BlockedStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$BlockedStatusColor");
}
break;
case eRunStatus.Skipped:
@@ -153,7 +153,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$SkippedStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$SkippedStatusColor");
}
break;
default:
@@ -164,7 +164,7 @@ private void SetStatus()
}
else
{
- xStatusTri.Fill = xStatusTri.Stroke = FindResource("$PendingStatusColor") as Brush;
+ xStatusIcon.ImageForeground = (SolidColorBrush)FindResource("$PendingStatusColor");
}
break;
}
diff --git a/Ginger/Ginger/SolutionAutoSaveAndRecover/RecoverPage.xaml b/Ginger/Ginger/SolutionAutoSaveAndRecover/RecoverPage.xaml
index 63224ada3f..2e6ce74415 100644
--- a/Ginger/Ginger/SolutionAutoSaveAndRecover/RecoverPage.xaml
+++ b/Ginger/Ginger/SolutionAutoSaveAndRecover/RecoverPage.xaml
@@ -12,7 +12,7 @@
Height="500" Width="800" MinHeight="500" MinWidth="800"
Title="Recover Unsaved Items">
-
+
diff --git a/Ginger/Ginger/SolutionLibNew/NewSolutionAgentsWizardPage.xaml b/Ginger/Ginger/SolutionLibNew/NewSolutionAgentsWizardPage.xaml
index 3a642f2609..ea4b0fe148 100644
--- a/Ginger/Ginger/SolutionLibNew/NewSolutionAgentsWizardPage.xaml
+++ b/Ginger/Ginger/SolutionLibNew/NewSolutionAgentsWizardPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="NewSolutionAgentsWizardPage">
-
+
@@ -29,6 +29,6 @@
-
+
diff --git a/Ginger/Ginger/SolutionLibNew/NewSolutionNameFolderWizardPage.xaml b/Ginger/Ginger/SolutionLibNew/NewSolutionNameFolderWizardPage.xaml
index 034bd543a5..63422010f3 100644
--- a/Ginger/Ginger/SolutionLibNew/NewSolutionNameFolderWizardPage.xaml
+++ b/Ginger/Ginger/SolutionLibNew/NewSolutionNameFolderWizardPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="NewSolutionNameFolderWizardPage">
-
+
Solution Name:
diff --git a/Ginger/Ginger/SolutionLibNew/NewSolutionPluginsWizardPage.xaml b/Ginger/Ginger/SolutionLibNew/NewSolutionPluginsWizardPage.xaml
index 713e4d0592..4abde52e6d 100644
--- a/Ginger/Ginger/SolutionLibNew/NewSolutionPluginsWizardPage.xaml
+++ b/Ginger/Ginger/SolutionLibNew/NewSolutionPluginsWizardPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="NewSolutionPluginsWizardPage">
-
+
diff --git a/Ginger/Ginger/SolutionLibNew/NewSolutionTargetApplicationWizardPage.xaml b/Ginger/Ginger/SolutionLibNew/NewSolutionTargetApplicationWizardPage.xaml
index 6e146d72b2..c34262baf4 100644
--- a/Ginger/Ginger/SolutionLibNew/NewSolutionTargetApplicationWizardPage.xaml
+++ b/Ginger/Ginger/SolutionLibNew/NewSolutionTargetApplicationWizardPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300"
Title="NewSolutionTargetApplicationWizardPage">
-
+
Main Application Name:
@@ -22,7 +22,7 @@
-
+
diff --git a/Ginger/Ginger/SolutionLibNew/RecentSolutionsPage.xaml b/Ginger/Ginger/SolutionLibNew/RecentSolutionsPage.xaml
index 1f837707d9..1982f711d5 100644
--- a/Ginger/Ginger/SolutionLibNew/RecentSolutionsPage.xaml
+++ b/Ginger/Ginger/SolutionLibNew/RecentSolutionsPage.xaml
@@ -16,7 +16,7 @@
-
+
diff --git a/Ginger/Ginger/SolutionWindows/AddSolutionPage.xaml b/Ginger/Ginger/SolutionWindows/AddSolutionPage.xaml
index 85cfb9cc5c..98003f035d 100644
--- a/Ginger/Ginger/SolutionWindows/AddSolutionPage.xaml
+++ b/Ginger/Ginger/SolutionWindows/AddSolutionPage.xaml
@@ -7,7 +7,7 @@
Height="350" Width="520" MinHeight="270"
Title="Add Solution">
-
+
Solution Name:
@@ -32,7 +32,7 @@
-
+
diff --git a/Ginger/Ginger/SolutionWindows/ReplaceEncryptionKeyPage.xaml b/Ginger/Ginger/SolutionWindows/ReplaceEncryptionKeyPage.xaml
index 2e0834bf41..12d9fa90fa 100644
--- a/Ginger/Ginger/SolutionWindows/ReplaceEncryptionKeyPage.xaml
+++ b/Ginger/Ginger/SolutionWindows/ReplaceEncryptionKeyPage.xaml
@@ -7,7 +7,7 @@
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="650" Width="650" Height="600px"
Title="ReplaceEncryptionKeyPage">
-
+
diff --git a/Ginger/Ginger/SolutionWindows/SolutionPage.xaml b/Ginger/Ginger/SolutionWindows/SolutionPage.xaml
index 41eb41b769..1a6d7ac6e0 100644
--- a/Ginger/Ginger/SolutionWindows/SolutionPage.xaml
+++ b/Ginger/Ginger/SolutionWindows/SolutionPage.xaml
@@ -8,9 +8,9 @@
d:DesignHeight="800" d:DesignWidth="800"
Title="SolutionPage">
-
+
-
+
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/ApplicationModelsTreeItems/AppApiModelsFolderTreeItem.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/ApplicationModelsTreeItems/AppApiModelsFolderTreeItem.cs
index 2f0b235155..d46c8fe8b6 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/ApplicationModelsTreeItems/AppApiModelsFolderTreeItem.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/ApplicationModelsTreeItems/AppApiModelsFolderTreeItem.cs
@@ -131,7 +131,7 @@ void ITreeViewItem.SetTools(ITreeView TV)
}
else
{
- AddFolderNodeBasicManipulationsOptions(mContextMenu, "API Model", allowAddNew: false, allowRefresh: false);
+ AddFolderNodeBasicManipulationsOptions(mContextMenu, "API Model", allowAddNew: false, allowRefresh: false, allowDeleteAllItems: true);
}
AddSourceControlOptions(mContextMenu);
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceFolderTreeItem.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceFolderTreeItem.cs
index c1f2aac1fd..8790499484 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceFolderTreeItem.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceFolderTreeItem.cs
@@ -200,7 +200,7 @@ public override void AddTreeItem()
AddNewDataSourcePage ADSP = new AddNewDataSourcePage(mDataSourcesRepositoryFolder);
ADSP.ShowAsWindow();
- mTreeView.Tree.RefresTreeNodeChildrens(this);
+ mTreeView.Tree.RefreshTreeNodeChildrens(this);
}
}
}
\ No newline at end of file
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceTreeItem.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceTreeItem.cs
index 5720ecffa1..31439c14ec 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceTreeItem.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/DataSourceTreeItem.cs
@@ -156,7 +156,7 @@ private void AddNewTableFromExcel(object sender, System.Windows.RoutedEventArgs
try
{
WizardWindow.ShowWizard(new ImportDataSourceFromExcelWizard(DSDetails), 860);
- mTreeView.Tree.RefresTreeNodeChildrens(this);
+ mTreeView.Tree.RefreshTreeNodeChildrens(this);
// RefreshTreeItems();
}
catch (Exception ex)
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/EnvironmentsTreeItems/EnvironmentTreeItem.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/EnvironmentsTreeItems/EnvironmentTreeItem.cs
index ec6e233bde..222395ccae 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/EnvironmentsTreeItems/EnvironmentTreeItem.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/EnvironmentsTreeItems/EnvironmentTreeItem.cs
@@ -75,7 +75,7 @@ private void Applications_CollectionChanged(object sender, System.Collections.Sp
{
if (mTreeView != null) //TODO: add handling to make sure this will never be Null and won't be set only on SetTools
{
- mTreeView.Tree.RefresTreeNodeChildrens(this);
+ mTreeView.Tree.RefreshTreeNodeChildrens(this);
}
}
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/HTMLGingerReportTreeItem.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/HTMLGingerReportTreeItem.cs
index 7efea00b74..a0f51b4d5f 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/HTMLGingerReportTreeItem.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/HTMLGingerReportTreeItem.cs
@@ -118,18 +118,20 @@ private void SetTemplateAsDefault(object sender, RoutedEventArgs e)
public override void DuplicateTreeItem(object item)
{
HTMLReportConfiguration copiedItem = (HTMLReportConfiguration)CopyTreeItemWithNewName((RepositoryItemBase)item);
+ if (copiedItem != null) {
HTMLReportConfigurationOperations reportConfigurationOperations = new HTMLReportConfigurationOperations(copiedItem);
copiedItem.HTMLReportConfigurationOperations = reportConfigurationOperations;
- if (copiedItem != null)
- {
- copiedItem.DirtyStatus = eDirtyStatus.NoTracked;
- //TODO: why below is needed??
- copiedItem.ID = copiedItem.HTMLReportConfigurationOperations.SetReportTemplateSequence(true);
- copiedItem.IsDefault = false;
if (copiedItem != null)
{
- WorkSpace.Instance.SolutionRepository.AddRepositoryItem(copiedItem);
- WorkSpace.Instance.Solution.SolutionOperations.SaveSolution(true, SolutionGeneral.Solution.eSolutionItemToSave.ReportConfiguration);
+ copiedItem.DirtyStatus = eDirtyStatus.NoTracked;
+ //TODO: why below is needed??
+ copiedItem.ID = copiedItem.HTMLReportConfigurationOperations.SetReportTemplateSequence(true);
+ copiedItem.IsDefault = false;
+ if (copiedItem != null)
+ {
+ WorkSpace.Instance.SolutionRepository.AddRepositoryItem(copiedItem);
+ WorkSpace.Instance.Solution.SolutionOperations.SaveSolution(true, SolutionGeneral.Solution.eSolutionItemToSave.ReportConfiguration);
+ }
}
}
}
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/NewTreeViewItemBase.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/NewTreeViewItemBase.cs
index 2efc880823..f7948a3e7a 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/NewTreeViewItemBase.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/NewTreeViewItemBase.cs
@@ -273,7 +273,7 @@ public override void RefreshTreeFolder(Type itemType, string path)
}
//refresh tree
- mTreeView.Tree.RefresTreeNodeChildrens((ITreeViewItem)this);
+ mTreeView.Tree.RefreshTreeNodeChildrens((ITreeViewItem)this);
mBulkOperationIsInProcess = false;
}
@@ -385,7 +385,7 @@ public void TreeFolderItems_CollectionChanged(object? sender, NotifyCollectionCh
case System.Collections.Specialized.NotifyCollectionChangedAction.Reset:
mTreeView.Tree.Dispatcher.Invoke(() =>
{
- mTreeView.Tree.RefresTreeNodeChildrens((ITreeViewItem)this);
+ mTreeView.Tree.RefreshTreeNodeChildrens((ITreeViewItem)this);
});
break;
}
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/SharedActivitiesGroupTreeItem.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/SharedActivitiesGroupTreeItem.cs
index 55d1306e31..6a78e77ec8 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/SharedActivitiesGroupTreeItem.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/SharedActivitiesGroupTreeItem.cs
@@ -16,7 +16,12 @@ limitations under the License.
*/
#endregion
+using amdocs.ginger.GingerCoreNET;
+using Amdocs.Ginger.Common;
using Amdocs.Ginger.Common.Enums;
+using Amdocs.Ginger.CoreNET.BPMN.Exceptions;
+using Amdocs.Ginger.CoreNET.BPMN.Models;
+using Amdocs.Ginger.CoreNET.BPMN.Serialization;
using Ginger.Activities;
using Ginger.ALM;
using Ginger.Repository;
@@ -25,6 +30,8 @@ limitations under the License.
using GingerWPF.UserControlsLib.UCTreeView;
using System;
using System.Collections.Generic;
+using System.IO;
+using System.Text;
using System.Windows;
using System.Windows.Controls;
@@ -32,6 +39,8 @@ namespace Ginger.SolutionWindows.TreeViewItems
{
class SharedActivitiesGroupTreeItem : NewTreeViewItemBase, ITreeViewItem
{
+ private const string BPMNExportPath = @"~\\Documents\BPMN";
+
private readonly ActivitiesGroup mActivitiesGroup;
private ActivitiesGroupPage mActivitiesGroupPage;
private SharedActivitiesGroupsFolderTreeItem.eActivitiesGroupsItemsShowMode mShowMode;
@@ -94,17 +103,19 @@ void ITreeViewItem.SetTools(ITreeView TV)
{
AddItemNodeBasicManipulationsOptions(mContextMenu);
- TreeViewUtils.AddMenuItem(mContextMenu, "View Repository Item Usage", ShowUsage, null, eImageType.InstanceLink);
+ TreeViewUtils.AddMenuItem(mContextMenu, "View Repository Item Usage", ShowUsage, imageType: eImageType.InstanceLink);
MenuItem exportMenu = TreeViewUtils.CreateSubMenu(mContextMenu, "Export");
- TreeViewUtils.AddSubMenuItem(exportMenu, "Export All to ALM", ExportToALM, null, "@ALM_16x16.png");
+ TreeViewUtils.AddSubMenuItem(exportMenu, "Export All to ALM", ExportToALM, icon: "@ALM_16x16.png");
+ TreeViewUtils.AddSubMenuItem(exportMenu, "Export to BPMN file", ExportBPMN, icon: eImageType.ShareExternal);
AddSourceControlOptions(mContextMenu);
}
else
{
- TreeViewUtils.AddMenuItem(mContextMenu, "View Repository Item Usage", ShowUsage, null, eImageType.InstanceLink);
+ TreeViewUtils.AddMenuItem(mContextMenu, "View Repository Item Usage", ShowUsage, imageType: eImageType.InstanceLink);
}
+
}
private void ShowUsage(object sender, RoutedEventArgs e)
@@ -113,6 +124,62 @@ private void ShowUsage(object sender, RoutedEventArgs e)
usagePage.ShowAsWindow();
}
+ private void ExportBPMN(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ Reporter.ToStatus(eStatusMsgKey.ExportingToBPMNFile);
+ string xml = CreateBPMNXMLForActivitiesGroup(mActivitiesGroup);
+ string filePath = SaveBPMNXMLFile(filename: mActivitiesGroup.Name, xml);
+ string solutionRelativeFilePath = WorkSpace.Instance.SolutionRepository.ConvertFullPathToBeRelative(filePath);
+ Reporter.ToUser(eUserMsgKey.ExportToBPMNSuccessful, solutionRelativeFilePath);
+ }
+ catch (Exception ex)
+ {
+ if (ex is BPMNException)
+ {
+ Reporter.ToUser(eUserMsgKey.GingerEntityToBPMNConversionError, ex.Message);
+ }
+ else
+ {
+ Reporter.ToUser(eUserMsgKey.GingerEntityToBPMNConversionError, "Unexpected Error, check logs for more details.");
+ }
+ Reporter.ToLog(eLogLevel.ERROR, "Error occurred while exporting BPMN", ex);
+ }
+ finally
+ {
+ Reporter.HideStatusMessage();
+ }
+ }
+
+ private string CreateBPMNXMLForActivitiesGroup(ActivitiesGroup activitiesGroup)
+ {
+ Reporter.ToLog(eLogLevel.INFO, $"Creating BPMN XML for activities group {activitiesGroup.Name}");
+ CollaborationFromActivityGroupCreator activitiesGroupToBPMNConverter = new(activitiesGroup);
+ Collaboration collaboration = activitiesGroupToBPMNConverter.Create();
+ BPMNXMLSerializer serializer = new();
+ string xml = serializer.Serialize(collaboration);
+ return xml;
+ }
+
+ private string SaveBPMNXMLFile(string filename, string xml)
+ {
+ Reporter.ToLog(eLogLevel.INFO, "Saving BPMN XML file");
+ if (!filename.EndsWith(".bpmn", StringComparison.OrdinalIgnoreCase))
+ {
+ filename += ".bpmn";
+ }
+
+ string directoryPath = WorkSpace.Instance.Solution.SolutionOperations.ConvertSolutionRelativePath(BPMNExportPath);
+ if (!Directory.Exists(directoryPath))
+ {
+ Directory.CreateDirectory(directoryPath);
+ }
+ string filePath = Path.Combine(directoryPath, filename);
+ File.WriteAllText(filePath, xml);
+ return filePath;
+ }
+
public override bool DeleteTreeItem(object item, bool deleteWithoutAsking = false, bool refreshTreeAfterDelete = true)
{
if (SharedRepositoryOperations.CheckIfSureDoingChange(mActivitiesGroup, "delete") == true)
diff --git a/Ginger/Ginger/SolutionWindows/TreeViewItems/TreeViewItemBase.cs b/Ginger/Ginger/SolutionWindows/TreeViewItems/TreeViewItemBase.cs
index 2012abd6ef..d5565ea7fc 100644
--- a/Ginger/Ginger/SolutionWindows/TreeViewItems/TreeViewItemBase.cs
+++ b/Ginger/Ginger/SolutionWindows/TreeViewItems/TreeViewItemBase.cs
@@ -426,7 +426,7 @@ public override void PasteCutTreeItems()
if (refreshNeeded)
{
//refresh source and target folder nodes
- mTreeView.Tree.RefresTreeNodeChildrens(mNodeManipulationsSource);
+ mTreeView.Tree.RefreshTreeNodeChildrens(mNodeManipulationsSource);
mTreeView.Tree.RefreshSelectedTreeNodeChildrens();
}
}
diff --git a/Ginger/Ginger/SolutionWindows/UpgradePage.xaml b/Ginger/Ginger/SolutionWindows/UpgradePage.xaml
index 9def16e41f..77ccb8beb8 100644
--- a/Ginger/Ginger/SolutionWindows/UpgradePage.xaml
+++ b/Ginger/Ginger/SolutionWindows/UpgradePage.xaml
@@ -8,7 +8,7 @@
Height="500" Width="800" MinHeight="500" MinWidth="500"
Title="SolutionUpgradePage">
-
+
diff --git a/Ginger/Ginger/SourceControl/CheckInPage.xaml b/Ginger/Ginger/SourceControl/CheckInPage.xaml
index a4e6d1729d..051c9f7e9b 100644
--- a/Ginger/Ginger/SourceControl/CheckInPage.xaml
+++ b/Ginger/Ginger/SourceControl/CheckInPage.xaml
@@ -10,7 +10,7 @@
Height="700" Width="700"
Title="Check-In Changes to Source Control">
-
+
diff --git a/Ginger/Ginger/SourceControl/CheckInPage.xaml.cs b/Ginger/Ginger/SourceControl/CheckInPage.xaml.cs
index c509f4631e..c25ddb8494 100644
--- a/Ginger/Ginger/SourceControl/CheckInPage.xaml.cs
+++ b/Ginger/Ginger/SourceControl/CheckInPage.xaml.cs
@@ -404,6 +404,11 @@ private static bool CommitChanges(SourceControlBase SourceControl, ICollection SelectedFiles)
{
foreach (SourceControlFileInfo SCFI in SelectedFiles)
{
- Object obj = null;
+ Object? obj = null;
if (SCFI.FileType == "Agent")
{
@@ -519,11 +518,6 @@ private void SaveAllDirtyFiles(List SelectedFiles)
{
obj = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems().FirstOrDefault(x => Path.GetFullPath(x.FileName) == Path.GetFullPath(SCFI.Path));
}
- else if (SCFI.FileType == "Execution Result")
- {
- throw new NotImplementedException();
- //FIXME
- }
else if (SCFI.FileType == "Run Set")
{
ObservableList RunSets = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems();
diff --git a/Ginger/Ginger/SourceControl/ResolveConflictPage.xaml b/Ginger/Ginger/SourceControl/ResolveConflictPage.xaml
index 71a54f577e..32984a5522 100644
--- a/Ginger/Ginger/SourceControl/ResolveConflictPage.xaml
+++ b/Ginger/Ginger/SourceControl/ResolveConflictPage.xaml
@@ -7,12 +7,12 @@
Height="350" Width="700"
Title="ResolveConflictPage">
-
+
-
+
diff --git a/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml b/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml
index ab8ce64ada..233c1357db 100644
--- a/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml
+++ b/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml
@@ -9,7 +9,7 @@
Title="Source Control Connection Details">
-
+
diff --git a/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml.cs b/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml.cs
index 9db6138062..bf379ec000 100644
--- a/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml.cs
+++ b/Ginger/Ginger/SourceControl/SourceControlConnDetailsPage.xaml.cs
@@ -57,7 +57,8 @@ private void Bind()
SourceControlClassTextBox.IsReadOnly = true;
SourceControlClassTextBox.IsEnabled = false;
- SourceControlURLTextBox.Text = SourceControlIntegration.GetRepositoryURL(WorkSpace.Instance.Solution.SourceControl);
+ string repositoryURL = SourceControlIntegration.GetRepositoryURL(WorkSpace.Instance.Solution.SourceControl);
+ SourceControlURLTextBox.Text = repositoryURL;
SourceControlURLTextBox.IsReadOnly = true;
SourceControlURLTextBox.IsEnabled = false;
diff --git a/Ginger/Ginger/SourceControl/SourceControlItemInfoPage.xaml b/Ginger/Ginger/SourceControl/SourceControlItemInfoPage.xaml
index a01ef410b6..3479e4844d 100644
--- a/Ginger/Ginger/SourceControl/SourceControlItemInfoPage.xaml
+++ b/Ginger/Ginger/SourceControl/SourceControlItemInfoPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="150" d:DesignWidth="150"
x:Name="SourceControlItemInfoPageSource" Title="Eliran" Height="300" Width="300">
-
+
diff --git a/Ginger/Ginger/SourceControl/SourceControlProjectsPage.xaml b/Ginger/Ginger/SourceControl/SourceControlProjectsPage.xaml
index 4b085bbaa7..cfba76b03c 100644
--- a/Ginger/Ginger/SourceControl/SourceControlProjectsPage.xaml
+++ b/Ginger/Ginger/SourceControl/SourceControlProjectsPage.xaml
@@ -12,7 +12,7 @@
Height="600" Width="800"
Title="Download Solution">
-
+
@@ -68,7 +68,7 @@
-
+
diff --git a/Ginger/Ginger/SourceControl/SourceControlUI.cs b/Ginger/Ginger/SourceControl/SourceControlUI.cs
index 27d25f8ac1..5d423f590b 100644
--- a/Ginger/Ginger/SourceControl/SourceControlUI.cs
+++ b/Ginger/Ginger/SourceControl/SourceControlUI.cs
@@ -89,6 +89,14 @@ public static bool GetLatest(string path, SourceControlBase SourceControl)
}
}
}
+ else if(string.Equals(error, Reporter.UserMsgsPool[eUserMsgKey.UncommitedChangesPreventCheckout].Message))
+ {
+ Reporter.ToUser(eUserMsgKey.UncommitedChangesPreventCheckout);
+ }
+ else
+ {
+ Reporter.ToUser(eUserMsgKey.StaticErrorMessage, $"Unable to get latest changes. {error}");
+ }
}
return true;
}
diff --git a/Ginger/Ginger/SourceControl/SourceControlUploadSolutionPage.xaml b/Ginger/Ginger/SourceControl/SourceControlUploadSolutionPage.xaml
index 64abf1d70e..8b3ee0710a 100644
--- a/Ginger/Ginger/SourceControl/SourceControlUploadSolutionPage.xaml
+++ b/Ginger/Ginger/SourceControl/SourceControlUploadSolutionPage.xaml
@@ -10,7 +10,7 @@
Height="400" Width="800"
Title="Upload Solution To Source Control">
-
+
@@ -70,7 +70,7 @@
-
+
diff --git a/Ginger/Ginger/TagsLib/TagsPage.xaml b/Ginger/Ginger/TagsLib/TagsPage.xaml
index 66e64d4416..e17fa6fa39 100644
--- a/Ginger/Ginger/TagsLib/TagsPage.xaml
+++ b/Ginger/Ginger/TagsLib/TagsPage.xaml
@@ -13,7 +13,7 @@
-
+
diff --git a/Ginger/Ginger/TagsLib/ucTag.xaml b/Ginger/Ginger/TagsLib/ucTag.xaml
index 6aab9e77a7..f57ba36771 100644
--- a/Ginger/Ginger/TagsLib/ucTag.xaml
+++ b/Ginger/Ginger/TagsLib/ucTag.xaml
@@ -6,37 +6,40 @@
xmlns:local="clr-namespace:Ginger.TagsLib"
mc:Ignorable="d">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/TagsLib/ucTag.xaml.cs b/Ginger/Ginger/TagsLib/ucTag.xaml.cs
index db68f88d48..7559548c6f 100644
--- a/Ginger/Ginger/TagsLib/ucTag.xaml.cs
+++ b/Ginger/Ginger/TagsLib/ucTag.xaml.cs
@@ -56,13 +56,13 @@ public void SetLabelText(string text)
private void tagStack_MouseLeave(object sender, MouseEventArgs e)
{
- tagStack.Background = (Brush)FindResource("$SelectionColor_VeryLightBlue");
+ xTagBorder.BorderBrush = (Brush)FindResource("$BackgroundColor_DarkGray");
closeImage.Visibility = Visibility.Collapsed;
}
private void tagStack_MouseEnter(object sender, MouseEventArgs e)
{
- tagStack.Background = (Brush)FindResource("$SelectionColor_Pink");
+ xTagBorder.BorderBrush = (Brush)FindResource("$SelectionColor_Pink");
closeImage.Visibility = Visibility.Visible;
}
}
diff --git a/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml b/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml
index e27cafb9a7..86cbdd3bf0 100644
--- a/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml
+++ b/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="800" d:DesignWidth="400"
Title="UserProfilePage">
-
+
diff --git a/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml.cs b/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml.cs
index 6daa99edb7..50a199bea9 100644
--- a/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml.cs
+++ b/Ginger/Ginger/UserConfigLib/UserProfilePage.xaml.cs
@@ -43,7 +43,7 @@ public UserProfilePage()
//profile image
if (string.IsNullOrEmpty(WorkSpace.Instance.UserProfile.ProfileImage))
{
- xProfileImageImgBrush.ImageSource = ImageMakerControl.GetImageSource(Amdocs.Ginger.Common.Enums.eImageType.User, foreground: (System.Windows.Media.SolidColorBrush)FindResource("$BackgroundColor_DarkBlue"), width: 50);
+ xProfileImageImgBrush.ImageSource = ImageMakerControl.GetImageSource(Amdocs.Ginger.Common.Enums.eImageType.User, foreground: (System.Windows.Media.SolidColorBrush)FindResource("$BackgroundColor_Black"), width: 50);
}
else
{
diff --git a/Ginger/Ginger/UserConfigLib/UserSettingsPage.xaml b/Ginger/Ginger/UserConfigLib/UserSettingsPage.xaml
index 654c16517d..63db0981b7 100644
--- a/Ginger/Ginger/UserConfigLib/UserSettingsPage.xaml
+++ b/Ginger/Ginger/UserConfigLib/UserSettingsPage.xaml
@@ -9,7 +9,7 @@
d:DesignHeight="600" d:DesignWidth="800" d:Height="600"
Title="UserSettings">
-
+
@@ -32,7 +32,7 @@
-
+
diff --git a/Ginger/Ginger/UserControlsLib/ActionInputValueUserControlLib/ActionInputValueUserControl.xaml b/Ginger/Ginger/UserControlsLib/ActionInputValueUserControlLib/ActionInputValueUserControl.xaml
index 980c09d134..c473ad81f0 100644
--- a/Ginger/Ginger/UserControlsLib/ActionInputValueUserControlLib/ActionInputValueUserControl.xaml
+++ b/Ginger/Ginger/UserControlsLib/ActionInputValueUserControlLib/ActionInputValueUserControl.xaml
@@ -9,7 +9,7 @@
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="300">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/UserControlsLib/ConsumerComboBox.xaml.cs b/Ginger/Ginger/UserControlsLib/ConsumerComboBox.xaml.cs
new file mode 100644
index 0000000000..087228eb61
--- /dev/null
+++ b/Ginger/Ginger/UserControlsLib/ConsumerComboBox.xaml.cs
@@ -0,0 +1,259 @@
+#region License
+/*
+Copyright © 2014-2023 European Support Limited
+
+Licensed under the Apache License, Version 2.0 (the "License")
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using Amdocs.Ginger.Common.VariablesLib;
+using Amdocs.Ginger.Common;
+using GingerCore.Activities;
+using GingerCore.Platforms;
+
+namespace Ginger.UserControlsLib
+{
+ ///
+ /// Interaction logic for ConsumerComboBox.xaml
+ ///
+ public partial class ConsumerComboBox : UserControl
+ {
+ private ObservableCollection _nodeList;
+ public ConsumerComboBox()
+ {
+ InitializeComponent();
+ _nodeList = new ObservableCollection();
+ }
+
+ #region Dependency Properties
+
+ public static readonly DependencyProperty ConsumerSourceProperty =
+ DependencyProperty.Register("ConsumerSource", typeof(ObservableList), typeof(ConsumerComboBox), new FrameworkPropertyMetadata(null,
+ new PropertyChangedCallback(ConsumerComboBox.OnConsumerSourceChanged)));
+
+ public static readonly DependencyProperty SelectedConsumerProperty =
+ DependencyProperty.Register("SelectedConsumer", typeof(ObservableList), typeof(ConsumerComboBox), new FrameworkPropertyMetadata(null,
+ new PropertyChangedCallback(ConsumerComboBox.OnSelectedConsumerChanged)));
+
+ public static readonly DependencyProperty TextProperty =
+ DependencyProperty.Register("Text", typeof(string), typeof(ConsumerComboBox), new UIPropertyMetadata(string.Empty));
+
+ public static readonly DependencyProperty DefaultTextProperty =
+ DependencyProperty.Register("DefaultText", typeof(string), typeof(ConsumerComboBox), new UIPropertyMetadata(string.Empty));
+
+
+ public ObservableList ConsumerSource
+ {
+ get { return (ObservableList)GetValue(ConsumerSourceProperty); }
+ set
+ {
+ SetValue(ConsumerSourceProperty, value);
+ }
+ }
+
+ public ObservableList SelectedConsumer
+ {
+ get { return (ObservableList)GetValue(SelectedConsumerProperty); }
+ set
+ {
+ SetValue(SelectedConsumerProperty, value);
+ }
+ }
+
+ public string Text
+ {
+ get { return (string)GetValue(TextProperty); }
+ set { SetValue(TextProperty, value); }
+ }
+
+ public string DefaultText
+ {
+ get { return (string)GetValue(DefaultTextProperty); }
+ set { SetValue(DefaultTextProperty, value); }
+ }
+ #endregion
+
+ #region Events
+ private static void OnConsumerSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ ConsumerComboBox control = (ConsumerComboBox)d;
+ control.DisplayInConsumer();
+ control.SelectNodes();
+ control.SetSelectedConsumer();
+ }
+
+ private static void OnSelectedConsumerChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ ConsumerComboBox control = (ConsumerComboBox)d;
+ control.SelectNodes();
+ control.SetText();
+ }
+
+
+ public event PropertyChangedEventHandler PropertyChanged;
+ public void OnPropertyChanged(string propertyName)
+ {
+ PropertyChangedEventHandler handler = PropertyChanged;
+ if (handler != null)
+ {
+ handler(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+
+ private void ConsumerCheckBox_Click(object sender, RoutedEventArgs e)
+ {
+ CheckBox clickedBox = (CheckBox)sender;
+
+
+
+
+ SetSelectedConsumer();
+ SetText();
+
+ }
+ #endregion
+
+
+ #region Methods
+ private void SelectNodes()
+ {
+ if(SelectedConsumer!=null && SelectedConsumer.Count > 0)
+ {
+ foreach (Consumer consumer in SelectedConsumer)
+ {
+ Node? node = _nodeList.FirstOrDefault(n => n.Consumer.ConsumerGuid == consumer.ConsumerGuid);
+ if (node != null)
+ {
+ node.IsSelected = true;
+ }
+ }
+ }
+ }
+
+ private void SetSelectedConsumer()
+ {
+ ObservableList temp = new ObservableList();
+ foreach (Node node in _nodeList)
+ {
+
+ if (node.IsSelected)
+ {
+ temp.Add(node.Consumer);
+ }
+
+ }
+ SelectedConsumer = new ObservableList(temp);
+ }
+
+ private void DisplayInConsumer()
+ {
+ _nodeList.Clear();
+
+ foreach (Consumer keyValue in this.ConsumerSource)
+ {
+ Node node = new Node(keyValue);
+ _nodeList.Add(node);
+ }
+ ConsumerCombo.ItemsSource = _nodeList;
+ }
+
+ private void SetText()
+ {
+ if (this.SelectedConsumer != null)
+ {
+ StringBuilder displayText = new StringBuilder();
+ foreach (Node s in _nodeList)
+ {
+ if (s.IsSelected)
+ {
+ displayText.Append(s.Title);
+ displayText.Append(',');
+ }
+ }
+ Text = displayText.ToString().TrimEnd(',');
+ }
+ // set DefaultText if nothing else selected
+ if (string.IsNullOrEmpty(Text))
+ {
+ Text = DefaultText;
+ }
+ }
+
+
+ #endregion
+
+ public class Node : INotifyPropertyChanged
+ {
+
+ public string Title => _consumer.Name;
+
+ private bool _isSelected;
+ public bool IsSelected
+ {
+ get
+ {
+ return _isSelected;
+ }
+ set
+ {
+ _isSelected = value;
+ NotifyPropertyChanged(nameof(IsSelected));
+ }
+ }
+
+ private Consumer _consumer;
+ public Consumer Consumer
+ {
+ get
+ {
+ return _consumer;
+ }
+ set
+ {
+ _consumer = value;
+ NotifyPropertyChanged(nameof(Consumer));
+ }
+ }
+
+ public Node(Consumer consumer)
+ {
+ _consumer = consumer;
+ }
+
+ public event PropertyChangedEventHandler? PropertyChanged;
+ protected void NotifyPropertyChanged(string propertyName)
+ {
+ if (PropertyChanged != null)
+ {
+ PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+
+ }
+ }
+}
diff --git a/Ginger/Ginger/UserControlsLib/GingerButtons/ucButton.xaml b/Ginger/Ginger/UserControlsLib/GingerButtons/ucButton.xaml
index b9ba1bab53..7952623049 100644
--- a/Ginger/Ginger/UserControlsLib/GingerButtons/ucButton.xaml
+++ b/Ginger/Ginger/UserControlsLib/GingerButtons/ucButton.xaml
@@ -10,7 +10,7 @@
-
+
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/ImageMakerControl.xaml.cs b/Ginger/Ginger/UserControlsLib/ImageMakerLib/ImageMakerControl.xaml.cs
index 16deed5eff..645456ca04 100644
--- a/Ginger/Ginger/UserControlsLib/ImageMakerLib/ImageMakerControl.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/ImageMakerLib/ImageMakerControl.xaml.cs
@@ -159,25 +159,22 @@ private void SetImage()
case eImageType.Empty:
// Do nothing and leave it empty
break;
- case eImageType.Ginger:
+ case eImageType.Ginger: //new
SetAsStaticImage("Ginger.png");
break;
- case eImageType.GingerIconWhite:
+ case eImageType.GingerIconWhite: //new
SetAsStaticImage("GingerIconWhite.png");
break;
- case eImageType.GingerIconGray:
- SetAsStaticImage("GingerIconInGrayNoBackground.png");
- break;
- case eImageType.GingerLogo:
+ case eImageType.GingerLogo: //new
SetAsStaticImage("GingerByAmdocsLogo.png");
break;
- case eImageType.GingerLogoGray:
+ case eImageType.GingerLogoGray: //new
SetAsStaticImage("GingerByAmdocsLogoGray.png");
break;
- case eImageType.GingerLogoWhiteSmall:
+ case eImageType.GingerLogoWhite: //new
SetAsStaticImage("GingerByAmdocsLogoWhiteSmall.png");
break;
- case eImageType.GingerSplash:
+ case eImageType.GingerSplash://new
SetAsStaticImage("GingerSplashImageNew.png");
break;
case eImageType.VRT:
@@ -386,6 +383,9 @@ private void SetImage()
case eImageType.Close:
SetAsFontAwesomeIcon(EFontAwesomeIcon.Regular_WindowClose);
break;
+ case eImageType.Close2:
+ SetAsFontAwesomeIcon(EFontAwesomeIcon.Solid_Times);
+ break;
case eImageType.Continue:
SetAsFontAwesomeIcon(EFontAwesomeIcon.Solid_FastForward);
break;
@@ -411,7 +411,7 @@ private void SetImage()
SetAsFontAwesomeIcon(EFontAwesomeIcon.Regular_WindowClose);
break;
case eImageType.Reset:
- SetAsFontAwesomeIcon(EFontAwesomeIcon.Solid_RedoAlt);
+ SetAsFontAwesomeIcon(EFontAwesomeIcon.Solid_Retweet);
break;
case eImageType.Undo:
SetAsFontAwesomeIcon(EFontAwesomeIcon.Solid_UndoAlt);
@@ -807,13 +807,19 @@ private void SetImage()
case eImageType.Browser:
SetAsFontAwesomeIcon(EFontAwesomeIcon.Brands_Chrome);
break;
+
case eImageType.Java:
SetAsFontAwesomeIcon(EFontAwesomeIcon.Brands_Java);
break;
+
case eImageType.KeyboardLayout:
SetAsFontAwesomeIcon(EFontAwesomeIcon.Regular_Keyboard);
break;
+ case eImageType.Smile:
+ SetAsFontAwesomeIcon(EFontAwesomeIcon.Regular_SmileWink);
+ break;
+
case eImageType.Linux:
SetAsFontAwesomeIcon(EFontAwesomeIcon.Brands_Linux);
break;
@@ -1097,7 +1103,7 @@ private void SetAsFontAwesomeIcon(EFontAwesomeIcon fontAwesomeIcon, Brush foregr
}
else if (foreground == null)
{
- foreground = (SolidColorBrush)FindResource("$BackgroundColor_DarkBlue");
+ foreground = (SolidColorBrush)FindResource("$BackgroundColor_Black");
}
xFAImage.Foreground = foreground;
if (this.ImageForeground != null)
@@ -1136,7 +1142,7 @@ private void SetAsFontAwesomeIcon(EFontAwesomeIcon fontAwesomeIcon, Brush foregr
if (SetBorder)
{
ImageMakerBorder.BorderThickness = new Thickness(1);
- ImageMakerBorder.BorderBrush = (SolidColorBrush)FindResource("$BackgroundColor_DarkBlue");
+ ImageMakerBorder.BorderBrush = (SolidColorBrush)FindResource("$BackgroundColor_Black");
}
else
{
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/ApplitoolsLogo.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/ApplitoolsLogo.png
index b62fa7f5dd..01f4e5a18c 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/ApplitoolsLogo.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/ApplitoolsLogo.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/Ginger.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/Ginger.png
index 42bc2410a7..26ad6b659d 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/Ginger.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/Ginger.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogo.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogo.png
index d025a4d601..4ec1dbcb32 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogo.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogo.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoGray.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoGray.png
index 4a907961a5..cd7cb5a2d1 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoGray.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoGray.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoWhiteSmall.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoWhiteSmall.png
index d15ecbb0d2..3d47728b26 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoWhiteSmall.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerByAmdocsLogoWhiteSmall.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerIconInGrayNoBackground.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerIconInGrayNoBackground.png
deleted file mode 100644
index ecd4ce4512..0000000000
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerIconInGrayNoBackground.png and /dev/null differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerIconWhite.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerIconWhite.png
index 7452a52c02..5de2c14e1f 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerIconWhite.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerIconWhite.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerSplashImageNew.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerSplashImageNew.png
index 91cc9431d0..836b54a909 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerSplashImageNew.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/GingerSplashImageNew.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/SealightsLogo.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/SealightsLogo.png
index d48eb57577..843f6e46df 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/SealightsLogo.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/SealightsLogo.png differ
diff --git a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/VRTLogo.png b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/VRTLogo.png
index 16cbd11cdd..b5de4908fa 100644
Binary files a/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/VRTLogo.png and b/Ginger/Ginger/UserControlsLib/ImageMakerLib/Images/VRTLogo.png differ
diff --git a/Ginger/Ginger/UserControlsLib/TextEditor/Common/FindReplacePage.xaml b/Ginger/Ginger/UserControlsLib/TextEditor/Common/FindReplacePage.xaml
index d8cdfc80b7..3cd67c72b8 100644
--- a/Ginger/Ginger/UserControlsLib/TextEditor/Common/FindReplacePage.xaml
+++ b/Ginger/Ginger/UserControlsLib/TextEditor/Common/FindReplacePage.xaml
@@ -21,7 +21,7 @@
-
+
Text to Find:
@@ -30,7 +30,7 @@
Width="80" Content="Find Next" Click="FindNextClick" />
-
+
Text to Find:
diff --git a/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/GherkinPage.xaml b/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/GherkinPage.xaml
index 7728bd364c..f4e7648e72 100644
--- a/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/GherkinPage.xaml
+++ b/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/GherkinPage.xaml
@@ -20,7 +20,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -65,14 +65,14 @@
-
+
-
+
diff --git a/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureFilePage.xaml b/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureFilePage.xaml
index 6fe080f4ef..a07064a5f1 100644
--- a/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureFilePage.xaml
+++ b/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureFilePage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="ImportGherkinFeatureFilePage">
-
+
diff --git a/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureWizard.cs b/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureWizard.cs
index 6e03e34846..7a95a054ce 100644
--- a/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureWizard.cs
+++ b/Ginger/Ginger/UserControlsLib/TextEditor/Gherkin/ImportGherkinWizard/ImportGherkinFeatureWizard.cs
@@ -142,7 +142,7 @@ private string Import()
File.Copy(mFeatureFile, targetFile);
Reporter.ToUser(eUserMsgKey.GherkinFeatureFileImportedSuccessfully, targetFile);
- ((DocumentsFolderTreeItem)featureTargetFolder).TreeView.Tree.RefresTreeNodeChildrens(featureTargetFolder);
+ ((DocumentsFolderTreeItem)featureTargetFolder).TreeView.Tree.RefreshTreeNodeChildrens(featureTargetFolder);
return targetFile;
}
diff --git a/Ginger/Ginger/UserControlsLib/TextEditor/ImportDocumentPage.xaml b/Ginger/Ginger/UserControlsLib/TextEditor/ImportDocumentPage.xaml
index 4f97ce72f4..d9f2237e72 100644
--- a/Ginger/Ginger/UserControlsLib/TextEditor/ImportDocumentPage.xaml
+++ b/Ginger/Ginger/UserControlsLib/TextEditor/ImportDocumentPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="400" d:DesignWidth="600"
Title="ImportPlugInFilePage">
-
+
diff --git a/Ginger/Ginger/UserControlsLib/TextEditor/UCTextEditor.xaml b/Ginger/Ginger/UserControlsLib/TextEditor/UCTextEditor.xaml
index a276f08ec5..8b033166dc 100644
--- a/Ginger/Ginger/UserControlsLib/TextEditor/UCTextEditor.xaml
+++ b/Ginger/Ginger/UserControlsLib/TextEditor/UCTextEditor.xaml
@@ -7,7 +7,7 @@
xmlns:Ginger="clr-namespace:Ginger" xmlns:UserControls="clr-namespace:Amdocs.Ginger.UserControls"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="600" PreviewKeyDown="UCTextEditor_PreviewKeyDown" >
-
+
@@ -18,7 +18,7 @@
-
+
Document Title
Document Editor
diff --git a/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml b/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml
index 520498da36..239a669d63 100644
--- a/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml
+++ b/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml
@@ -8,42 +8,56 @@
d:DesignHeight="450" d:DesignWidth="800"
Title="MenusPage">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml.cs b/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml.cs
index bc6dbbd4e7..514c0c039d 100644
--- a/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/TwoLevelMenuLib/TwoLevelMenuPage.xaml.cs
@@ -83,24 +83,15 @@ public void Reset()
xSelectedItemFrame.SetContent(null);
xMainNavigationListView.Items.Clear();
- foreach (TopMenuItem menu in mTwoLevelMenu.MenuList)
- {
- if (!WorkSpace.Instance.UserProfile.ShowEnterpriseFeatures)
- {
- if (menu.Name == WorkSpace.Instance.Solution.ExternalIntegrationsTabName)
- {
- continue;
- }
- }
- xMainNavigationListView.Items.Add(menu);
- }
+
+ LoadMenus();
}
private void LoadMenus()
{
foreach (TopMenuItem menu in mTwoLevelMenu.MenuList)
{
- if (!WorkSpace.Instance.UserProfile.ShowEnterpriseFeatures)
+ if (!WorkSpace.Instance.UserProfile.ShowEnterpriseFeatures && WorkSpace.Instance.Solution != null)
{
if (menu.Name == WorkSpace.Instance.Solution.ExternalIntegrationsTabName)
{
@@ -108,14 +99,19 @@ private void LoadMenus()
}
}
xMainNavigationListView.Items.Add(menu);
- }
+ }
}
- private void SelectFirstTopMenu()
+ public void SelectFirstTopMenu()
{
xMainNavigationListView.SelectedItem = xMainNavigationListView.Items[0];
}
+ public void SelectTopMenu(int menuItemID)
+ {
+ xMainNavigationListView.SelectedItem = xMainNavigationListView.Items[menuItemID];
+ }
+
private void xMainNavigationListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (SelectedMainListItem == null)
@@ -124,7 +120,7 @@ private void xMainNavigationListView_SelectionChanged(object sender, SelectionCh
return;
}
- SetSelectedListItemStyle(xMainNavigationListView, (SolidColorBrush)FindResource("$Color_DarkBlue"));
+ SetSelectedListItemStyle(xMainNavigationListView, (SolidColorBrush)FindResource("$PrimaryColor_Black"));
ObservableList subItems;
subItems = SelectedMainListItem.SubItems;
@@ -160,7 +156,7 @@ private void xMainNavigationListView_SelectionChanged(object sender, SelectionCh
{
if (subItems.Count > 1)
{
- SetSelectedListItemStyle(xSubNavigationListView, (SolidColorBrush)FindResource("$Color_DarkBlue"));
+ SetSelectedListItemStyle(xSubNavigationListView, (SolidColorBrush)FindResource("$PrimaryColor_Black"));
}
}
@@ -193,7 +189,7 @@ private void xSubNavigationListView_SelectionChanged(object sender, SelectionCha
if (xSubNavigationListView.Items.Count > 1)
{
- SetSelectedListItemStyle(xSubNavigationListView, (SolidColorBrush)FindResource("$Color_DarkBlue"));
+ SetSelectedListItemStyle(xSubNavigationListView, (SolidColorBrush)FindResource("$PrimaryColor_Black"));
}
}
@@ -231,14 +227,14 @@ private void SetSelectedListItemStyle(ListView listView, Brush defualtForeground
private void xMainNavigationListView_Loaded(object sender, RoutedEventArgs e)
{
- SetSelectedListItemStyle(xMainNavigationListView, (SolidColorBrush)FindResource("$Color_DarkBlue"));
+ SetSelectedListItemStyle(xMainNavigationListView, (SolidColorBrush)FindResource("$PrimaryColor_Black"));
}
private void xSubNavigationListView_Loaded(object sender, RoutedEventArgs e)
{
if (xSubNavigationListView.Items.Count > 1 && xSubNavigationListView.IsVisible)
{
- SetSelectedListItemStyle(xSubNavigationListView, (SolidColorBrush)FindResource("$Color_DarkBlue"));
+ SetSelectedListItemStyle(xSubNavigationListView, (SolidColorBrush)FindResource("$PrimaryColor_Black"));
}
}
}
diff --git a/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml b/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml
index dfe6621170..8a37e0986e 100644
--- a/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml
@@ -53,7 +53,7 @@
@@ -61,60 +61,60 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
+
\ No newline at end of file
diff --git a/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml.cs b/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml.cs
index 4491db8050..9aaf0fa58a 100644
--- a/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/UCElementDetails.xaml.cs
@@ -210,7 +210,7 @@ private void ElementDetailsTabs_SelectionChanged(object sender, SelectionChanged
}
else
{
- ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$Color_DarkBlue");
+ ((TextBlock)ctrl).Foreground = (SolidColorBrush)FindResource("$PrimaryColor_Black");
} ((TextBlock)ctrl).FontWeight = FontWeights.Bold;
}
}
diff --git a/Ginger/Ginger/UserControlsLib/UCEmailConfigView/UCEmailConfigView.xaml b/Ginger/Ginger/UserControlsLib/UCEmailConfigView/UCEmailConfigView.xaml
index 8baa4db226..2e712ff662 100644
--- a/Ginger/Ginger/UserControlsLib/UCEmailConfigView/UCEmailConfigView.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCEmailConfigView/UCEmailConfigView.xaml
@@ -10,7 +10,7 @@
xmlns:Ginger="clr-namespace:Ginger"
mc:Ignorable="d"
d:DesignHeight="556.717" d:DesignWidth="728.358">
-
+
180
@@ -33,12 +33,12 @@
-
-
+
+
-
+
@@ -129,7 +129,7 @@
-
+
@@ -143,18 +143,18 @@
-
+
-
+
-
+
@@ -257,11 +257,11 @@
-
+
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs b/Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs
index 67deb55818..900f1c91b4 100644
--- a/Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/UCListView/UcListView.xaml.cs
@@ -528,7 +528,7 @@ public void SetListOperations()
if (operation.ImageForeground == null)
{
- //operationBtn.ButtonImageForground = (SolidColorBrush)FindResource("$BackgroundColor_DarkBlue");
+ //operationBtn.ButtonImageForground = (SolidColorBrush)FindResource("$BackgroundColor_Black");
}
else
{
@@ -581,7 +581,7 @@ private void SetListExtraOperations()
if (operation.ImageForeground == null)
{
- //iconImage.ImageForeground = (SolidColorBrush)FindResource("$BackgroundColor_DarkBlue");
+ //iconImage.ImageForeground = (SolidColorBrush)FindResource("$BackgroundColor_Black");
}
else
{
diff --git a/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml b/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml
index 38abcd1383..5a8bfbf64a 100644
--- a/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml
@@ -13,120 +13,147 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
diff --git a/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml.cs b/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml.cs
index 72c7e96249..859003dea4 100644
--- a/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/UCListView/UcListViewItem.xaml.cs
@@ -160,6 +160,12 @@ private void SetInitViewWithHelper()
{
ExpandItem();
}
+
+ if (!ListHelper.ShowIndex)
+ {
+ xIndexCol.Width = new GridLength(0);
+ xExpandCollapseCol.Width = new GridLength(20);
+ }
}
}
@@ -218,7 +224,7 @@ private void SetItemMainView()
b.Mode = BindingMode.OneWay;
b.Converter = new ActiveBackgroundColorConverter();
b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
- xListItemGrid.SetBinding(Grid.BackgroundProperty, b);
+ xMainBorder.SetBinding(Border.BackgroundProperty, b);
}
});
}
@@ -315,6 +321,7 @@ private void SetItemUniqueIdentifier()
ListItemUniqueIdentifier identifier = ListHelper.GetItemUniqueIdentifier(Item);
if (identifier != null)
{
+ xIdentifierCol.Width = new GridLength(8);
if (!String.IsNullOrEmpty(identifier.Color))
{
BrushConverter conv = new BrushConverter();
@@ -325,6 +332,7 @@ private void SetItemUniqueIdentifier()
}
else
{
+ xIdentifierCol.Width = new GridLength(0);
xIdentifierBorder.Background = System.Windows.Media.Brushes.Transparent;
xIdentifierBorder.ToolTip = string.Empty;
xIdentifierBorder.Visibility = Visibility.Collapsed;
@@ -404,11 +412,7 @@ private void SetItemOperations()
operationBtn.ButtonFontImageSize = operation.ImageSize;
operationBtn.IsEnabled = operation.IsEnabeled;
- if (operation.ImageForeground == null)
- {
- //operationBtn.ButtonImageForground = (SolidColorBrush)FindResource("$BackgroundColor_DarkBlue");
- }
- else
+ if (operation.ImageForeground != null)
{
operationBtn.ButtonImageForground = operation.ImageForeground;
}
@@ -464,11 +468,7 @@ private void SetItemExtraOperations()
menuitem.Header = operation.Header;
menuitem.ToolTip = operation.ToolTip;
- if (operation.ImageForeground == null)
- {
- //iconImage.ImageForeground = (SolidColorBrush)FindResource("$BackgroundColor_DarkBlue");
- }
- else
+ if (operation.ImageForeground != null)
{
iconImage.ImageForeground = operation.ImageForeground;
}
@@ -561,7 +561,7 @@ private void SetItemExecutionOperations()
if (operation.ImageForeground == null)
{
- //operationBtn.ButtonImageForground = (SolidColorBrush)FindResource("$BackgroundColor_DarkBlue");
+ //operationBtn.ButtonImageForground = (SolidColorBrush)FindResource("$BackgroundColor_Black");
}
else
{
@@ -762,7 +762,7 @@ private void SetItemDescription()
{
string fullDesc = string.Empty;
bool errorWasSet = false;
- xItemDescriptionTxtBlock.Foreground = FindResource("$BackgroundColor_DarkBlue") as Brush;
+ xItemDescriptionTxtBlock.Foreground = FindResource("$BackgroundColor_Black") as Brush;
if (!string.IsNullOrEmpty(mItemErrorField))
{
Object error = Item.GetType().GetProperty(mItemErrorField).GetValue(Item);
@@ -850,7 +850,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn
}
else
{
- return System.Windows.Media.Brushes.White;
+ return System.Windows.Media.Brushes.Transparent;
}
}
diff --git a/Ginger/Ginger/UserControlsLib/UCRadioButtons.xaml b/Ginger/Ginger/UserControlsLib/UCRadioButtons.xaml
index bb21f28e95..9d6223e887 100644
--- a/Ginger/Ginger/UserControlsLib/UCRadioButtons.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCRadioButtons.xaml
@@ -6,7 +6,7 @@
xmlns:local="clr-namespace:Ginger.UserControlsLib"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
-
+
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml b/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml
index 234b530f66..87ddc3fe92 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="500" d:DesignWidth="500"
Title="SingleItemTreeViewExplorerPage">
-
+
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml.cs b/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml.cs
index b0ce84b504..56c8aba731 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewExplorerPage.xaml.cs
@@ -38,7 +38,22 @@ public TreeView1 TreeView
get { return xTreeView; }
}
- public SingleItemTreeViewExplorerPage(string itemTypeName, eImageType itemTypeIcon, ITreeViewItem itemTypeRootNode, RoutedEventHandler saveAllHandler = null, RoutedEventHandler addHandler = null, EventHandler treeItemDoubleClickHandler = null, bool isSaveButtonHidden = false)
+ public object SelectedItemObject
+ {
+ get
+ {
+ if (TreeView.Tree.CurrentSelectedTreeViewItem != null)
+ {
+ return TreeView.Tree.CurrentSelectedTreeViewItem.NodeObject();
+ }
+ else
+ {
+ return null;
+ }
+ }
+ }
+
+ public SingleItemTreeViewExplorerPage(string itemTypeName, eImageType itemTypeIcon, ITreeViewItem itemTypeRootNode, RoutedEventHandler saveAllHandler = null, RoutedEventHandler addHandler = null, EventHandler treeItemDoubleClickHandler = null, bool isSaveButtonHidden = false, bool showTitle= true)
{
InitializeComponent();
@@ -46,7 +61,7 @@ public SingleItemTreeViewExplorerPage(string itemTypeName, eImageType itemTypeIc
xTreeView.TreeTitle = itemTypeName;
xTreeView.TreeIcon = itemTypeIcon;
- xTreeView.Background = (Brush)FindResource("$BackgroundColor_LightGray");
+ xTreeView.Background = (Brush)FindResource("$BackgroundColor_White");
TreeViewItem r = xTreeView.Tree.AddItem(itemTypeRootNode);
r.IsExpanded = true;
@@ -61,6 +76,11 @@ public SingleItemTreeViewExplorerPage(string itemTypeName, eImageType itemTypeIc
xTreeView.Tree.ItemDoubleClick -= treeItemDoubleClickHandler;
xTreeView.Tree.ItemDoubleClick += treeItemDoubleClickHandler;
}
+
+ if(!showTitle)
+ {
+ TreeView.TreeTitleVisibility = Visibility.Collapsed;
+ }
}
private void MainTreeView_ItemSelected(object sender, EventArgs e)
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewSelectionPage.xaml b/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewSelectionPage.xaml
index 06fa989f6f..b436ac50fe 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewSelectionPage.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/SingleItemTreeViewSelectionPage.xaml
@@ -8,7 +8,7 @@
Height="600" Width="400"
Title="SingleItemTreeViewSelectionPage">
-
+
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml
index b9b72e4df6..f347cd27c8 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml
@@ -8,18 +8,18 @@
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
-
+
-
-
+
+
-
+
-
+
@@ -32,37 +32,17 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml.cs b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml.cs
index 37b57894a2..c377af8d16 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView1.xaml.cs
@@ -110,10 +110,21 @@ public object TreeTooltip
set { xTreeViewTree.ToolTip = value; xTreeTitle.ToolTip = value; }
}
- public Style TreeTitleStyle
+ public Visibility TreeTitleVisibility
{
- get { return xTreeTitle.Style; }
- set { xTreeTitle.Style = value; }
+ get { return xTreeTitle.Visibility; }
+ set
+ {
+ xTreeItemHeaderPnl.Visibility = value;
+ if (value == Visibility.Collapsed)
+ {
+ xTreeTitleRow.Height = new GridLength(0);
+ }
+ else
+ {
+ xTreeTitleRow.Height = new GridLength(50);
+ }
+ }
}
public eImageType AddButtonIcon
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView2.xaml b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView2.xaml
index 94188112db..1f95476abf 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView2.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeView2.xaml
@@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300">
-
+
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewExplorerPage.xaml b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewExplorerPage.xaml
index f25119cbe4..9663c41319 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewExplorerPage.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewExplorerPage.xaml
@@ -16,7 +16,7 @@
-
+
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewItemGenericBase.cs b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewItemGenericBase.cs
index 57991a5a9a..487c5af94d 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewItemGenericBase.cs
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/TreeViewItemGenericBase.cs
@@ -20,6 +20,7 @@ limitations under the License.
using Amdocs.Ginger.Common.Enums;
using Amdocs.Ginger.Repository;
using Ginger.Repository;
+using GingerCore;
using GingerCore.GeneralLib;
using GingerWPF.UserControlsLib.UCTreeView;
using System;
@@ -503,9 +504,13 @@ public RepositoryItemBase CopyTreeItemWithNewName(RepositoryItemBase itemToCopy)
string newName = ((RepositoryItemBase)itemToCopy).ItemName + "_Copy";
if (GingerCore.GeneralLib.InputBoxWindow.GetInputWithValidation("Copied/Duplicated Item Name", "New Name:", ref newName))
{
- RepositoryItemBase itemCopy = ((RepositoryItemBase)itemToCopy).CreateCopy();
- itemCopy.ItemName = newName;
- return itemCopy;
+ bool nameExit = General.IsNameAlreadyexists(itemToCopy, newName);
+ if (!nameExit)
+ {
+ RepositoryItemBase itemCopy = ((RepositoryItemBase)itemToCopy).CreateCopy();
+ itemCopy.ItemName = newName;
+ return itemCopy;
+ }
}
}
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml b/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml
index 3f1dd6837e..3d12305180 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml
@@ -7,22 +7,114 @@
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
- -->
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml.cs b/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml.cs
index 0e1d513e26..b2797bbca4 100644
--- a/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml.cs
+++ b/Ginger/Ginger/UserControlsLib/UCTreeView/UCTreeView.xaml.cs
@@ -21,12 +21,15 @@ limitations under the License.
using GingerWPF.DragDropLib;
using System;
using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
@@ -156,11 +159,15 @@ private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e
Mouse.OverrideCursor = Cursors.Wait;
try
{
- ItemDoubleClick(Tree.SelectedItem, e);
+ if (e.Source is TreeViewItem && (e.Source as TreeViewItem).IsSelected)
+ {
+ ItemDoubleClick(Tree.SelectedItem, e);
+ }
}
finally
{
Mouse.OverrideCursor = null;
+ e.Handled = true;
}
}
}
@@ -247,20 +254,26 @@ public TreeViewItem AddItem(ITreeViewItem item, TreeViewItem Parent = null)
private void TVI_Expanded(object? sender, RoutedEventArgs e)
{
- Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
-
- TreeViewItem TVI = (TreeViewItem)e.Source;
- RemoveDummyNode(TVI);
- SetRepositoryFolderIsExpanded(TVI, true);
- SetTreeNodeItemChilds(TVI);
- GingerCore.General.DoEvents();
- // remove the handler as expand data is cached now on tree
- WeakEventManager.RemoveHandler(source: TVI, eventName: nameof(TreeViewItem.Expanded), handler: TVI_Expanded);
- WeakEventManager.AddHandler(source: TVI, eventName: nameof(TreeViewItem.Expanded), handler: TVI_ExtraExpanded);
-
+ TreeViewItem treeViewItem = (TreeViewItem)e.Source;
+ Mouse.OverrideCursor = Cursors.Wait;
+ _ = LoadChildItems(treeViewItem);
Mouse.OverrideCursor = null;
}
+ private async Task LoadChildItems(TreeViewItem treeViewItem)
+ {
+ bool hadDummyNode = TryRemoveDummyNode(treeViewItem);
+ if (hadDummyNode)
+ {
+ SetRepositoryFolderIsExpanded(treeViewItem, isExpanded: true);
+ await SetTreeNodeItemChilds(treeViewItem);
+ GingerCore.General.DoEvents();
+ // remove the handler as expand data is cached now on tree
+ WeakEventManager.RemoveHandler(treeViewItem, nameof(TreeViewItem.Expanded), TVI_Expanded);
+ WeakEventManager.AddHandler(treeViewItem, nameof(TreeViewItem.Expanded), TVI_ExtraExpanded);
+ }
+ }
+
private void TVI_Collapsed(object? sender, RoutedEventArgs e)
{
TreeViewItem tvi = (TreeViewItem)e.Source;
@@ -270,7 +283,7 @@ private void TVI_Collapsed(object? sender, RoutedEventArgs e)
private void TVI_ExtraExpanded(object? sender, RoutedEventArgs e)
{
TreeViewItem tvi = (TreeViewItem)e.Source;
- SetRepositoryFolderIsExpanded(tvi, true);
+ SetRepositoryFolderIsExpanded(tvi, true);
}
private void SetRepositoryFolderIsExpanded(TreeViewItem tvi, bool isExpanded)
@@ -287,21 +300,19 @@ private void SetRepositoryFolderIsExpanded(TreeViewItem tvi, bool isExpanded)
private readonly Dictionary tviChildNodesLoadTaskMap = new();
- private void SetTreeNodeItemChilds(TreeViewItem TVI)
+ private Task SetTreeNodeItemChilds(TreeViewItem TVI)
{
// TODO: remove temp code after cleanup
+ Task setChildItemsTask = Task.CompletedTask;
- if (TVI.Tag is ITreeViewItem)
+ if (TVI.Tag is ITreeViewItem ITVI)
{
- ITreeViewItem ITVI = (ITreeViewItem)TVI.Tag;
-
- List Childs = null;
- Childs = ITVI.Childrens();
+ List Childs = ITVI.Childrens();
TVI.Items.Clear();
if (Childs != null)
{
- tviChildNodesLoadTaskMap.Add(TVI, Task.Run(() =>
+ setChildItemsTask = Task.Run(() =>
{
try
{
@@ -328,15 +339,23 @@ private void SetTreeNodeItemChilds(TreeViewItem TVI)
}
mSetTreeNodeItemChildsEvent.Set();
if (tviChildNodesLoadTaskMap.ContainsKey(TVI))
- tviChildNodesLoadTaskMap.Remove(TVI);
+ {
+ tviChildNodesLoadTaskMap[TVI] = setChildItemsTask;
+ }
+ else
+ {
+ tviChildNodesLoadTaskMap.Add(TVI, setChildItemsTask);
+ }
}
catch(Exception ex)
{
Reporter.ToLog(eLogLevel.ERROR, ex.Message, ex);
}
- }));
+ });
}
}
+
+ return setChildItemsTask;
}
private bool IsTreeItemFitsFilter(ITreeViewItem treeItemToCheck)
@@ -386,15 +405,18 @@ private bool IsTreeItemFitsFilter(ITreeViewItem treeItemToCheck)
return false;
}
- private void RemoveDummyNode(TreeViewItem node)
+ private bool TryRemoveDummyNode(TreeViewItem node)
{
if (node.Items.Count > 0)
{
- if (((TreeViewItem)node.Items[0]).Header.ToString().IndexOf("DUMMY") >= 0)
+ string? header = ((TreeViewItem)node.Items[0]).Header.ToString();
+ if (header != null && header.IndexOf("DUMMY") >= 0)
{
node.Items.Clear();
+ return true;
}
}
+ return false;
}
public void RefreshSelectedTreeNodeChildrens(object sender, System.Windows.RoutedEventArgs e)
@@ -425,13 +447,12 @@ public void RefreshTreeViewItemChildrens(TreeViewItem TVI)
TVI.IsExpanded = true;
}
- public void RefresTreeNodeChildrens(ITreeViewItem NodeItem)
+ public void RefreshTreeNodeChildrens(ITreeViewItem NodeItem)
{
TreeViewItem TVI = SearchTVIRecursive((TreeViewItem)Tree.Items[0], NodeItem);
if (TVI != null)
{
TVI.Items.Clear();
- SetTreeNodeItemChilds(TVI);
TVI.IsExpanded = true;
}
}
@@ -775,73 +796,119 @@ public ITreeViewItem AddChildItemAndSelect(ITreeViewItem Parent, ITreeViewItem C
return (ITreeViewItem)TVIChild.Tag;
}
- public TreeViewItem FindMatchingTreeItem(ITreeViewItem item)
+ public ITreeViewItem? FindMatchingTreeItem(Predicate