diff --git a/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs b/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs index 076605c8..7bdec8b1 100644 --- a/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs @@ -28,13 +28,20 @@ namespace ENI2.Controls InitializeComponent(); } + public enum LocodeMode + { + STANDARD, + NO_PORT_FLAG, + SSN + }; + protected enum LocodeState { UNKNOWN, INVALID, OK, AMBIGUOUS - } + }; /// /// used internally to load up drop down @@ -50,8 +57,16 @@ namespace ENI2.Controls get { return this.comboBoxLocode.SelectedItem as string; } set { this._locodeList.Clear(); - - string portName = this.UseSSNCodes ? LocalizedLookup.SSNPortNameFromLocode(value) : LocodeDB.PortNameFromLocode(value); + string portName = null; + switch (this.LocodeSource) + { + case LocodeMode.NO_PORT_FLAG: + portName = LocodeDB.LocationNameFromLocode(value); break; + case LocodeMode.STANDARD: + portName = LocodeDB.PortNameFromLocode(value); break; + case LocodeMode.SSN: + portName = LocalizedLookup.SSNPortNameFromLocode(value); break; + } LocodeState locodeState = portName.IsNullOrEmpty() ? LocodeState.INVALID : LocodeState.OK; this.SetLocodeStateImage(this.imageLocodeState, locodeState); @@ -74,10 +89,7 @@ namespace ENI2.Controls set { SetValue(LocodeValueProperty, value); } } - /// - /// Use alternate Locode Source (for NOA_NOD NextPort if unspecif. (888)) - /// - public bool UseSSNCodes { get; set; } + public LocodeMode LocodeSource { get; set; } #region static methods @@ -122,7 +134,17 @@ namespace ENI2.Controls if (this.comboBoxLocode.Text.Length == 5) { string directLocode = this.comboBoxLocode.Text.Trim().ToUpper(); - string portname = this.UseSSNCodes ? LocalizedLookup.SSNPortNameFromLocode(directLocode) : LocodeDB.PortNameFromLocode(directLocode); + string portname = null; + switch(this.LocodeSource) + { + case LocodeMode.NO_PORT_FLAG: + portname = LocodeDB.LocationNameFromLocode(directLocode); break; + case LocodeMode.STANDARD: + portname = LocodeDB.PortNameFromLocode(directLocode); break; + case LocodeMode.SSN: + portname = LocalizedLookup.SSNPortNameFromLocode(directLocode); break; + } + bool isLocode = !portname.IsNullOrEmpty(); if (isLocode) { @@ -138,7 +160,17 @@ namespace ENI2.Controls { // assume this is a harbour name typed out.. string lookupString = string.Format("%{0}%", this.comboBoxLocode.Text.Trim()); - List locodeEntries = this.UseSSNCodes ? LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString) : LocodeDB.AllLocodesForCityNameAsEntries(lookupString); + List locodeEntries = null; + + switch(this.LocodeSource) + { + case LocodeMode.NO_PORT_FLAG: + locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString, false); break; + case LocodeMode.STANDARD: + locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break; + case LocodeMode.SSN: + locodeEntries = LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString); break; + } locodeEntries.Sort(); foreach (LocodeDB.LocodeEntry entry in locodeEntries) diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml b/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml index 73e594be..10766ade 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml +++ b/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml @@ -65,7 +65,7 @@ - + diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml index b1e81ee3..23895d3f 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml +++ b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml @@ -48,7 +48,7 @@