00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 using System;
00013 using System.Collections.Generic;
00014 using System.Windows.Forms;
00015 using Mcs.Epm.MicrosoftProject.mpFx.LookupTablesWebService;
00016
00017 namespace Mcs.Epm.MicrosoftProject.mpFx.WinForms
00018 {
00019
00020
00021
00022 public partial class EditCustomFieldLookupFieldForm : Form
00023 {
00024 #region Instance Data
00025
00026 private readonly ProjectServer _ProjectServer;
00027 private readonly CustomFieldDefinition _CustomFieldDefinition;
00028 private LookupTableMultiLangDataSet _LookupTables;
00029
00030 #endregion
00031
00032 #region Public Properties
00033
00034
00035
00036
00037 public Guid LookupTableGUID
00038 {
00039 get
00040 {
00041 if (lookupTablesList.SelectedValue != null)
00042 {
00043 return new Guid(lookupTablesList.SelectedValue.ToString());
00044 }
00045 return Guid.Empty;
00046 }
00047 }
00048
00049
00050
00051
00052 public bool UseDefaultValue
00053 {
00054 get { return useDefaultValueCheckbox.Checked; }
00055 }
00056
00057
00058
00059
00060 public Guid DefaultValueGUID
00061 {
00062 get
00063 {
00064 if (UseDefaultValue && defaultValueTextBox.Tag != null)
00065 {
00066 return new Guid(defaultValueTextBox.Tag.ToString());
00067 }
00068 return Guid.Empty;
00069 }
00070 }
00071
00072
00073
00074
00075 public bool AllowOnlyLeafNode
00076 {
00077 get { return leafNodeOnlyCheckbox.Checked; }
00078 }
00079
00080
00081
00082
00083 public bool AllowMultiSelect
00084 {
00085 get { return multipleValuesCheckbox.Checked; }
00086 }
00087
00088 #endregion
00089
00090 #region Constructor
00091
00092
00093
00094
00095
00096
00097 public EditCustomFieldLookupFieldForm(CustomFieldDefinition customFieldDefinition,
00098 ProjectServer projectServer)
00099 {
00100 InitializeComponent();
00101
00102 _CustomFieldDefinition = customFieldDefinition;
00103
00104 _ProjectServer = projectServer;
00105 }
00106
00107 #endregion
00108
00109 #region Private Methods
00110
00111 private void LoadLookupTables()
00112 {
00113 _LookupTables = _ProjectServer.LookupTables.MultiLangGetLookupTables(string.Empty, false);
00114
00115 lookupTablesList.DataSource = _LookupTables.LookupTables;
00116
00117 lookupTablesList.DisplayMember = "LT_NAME";
00118 lookupTablesList.ValueMember = "LT_UID";
00119
00120 if (_CustomFieldDefinition.Guid != Guid.Empty)
00121 {
00122 lookupTablesList.Enabled = false;
00123 multipleValuesCheckbox.Enabled = false;
00124
00125 LookupTableMultiLangDataSet.LookupTablesRow row = _LookupTables.LookupTables.FindByLT_UID(_CustomFieldDefinition.Guid);
00126
00127 if (row != null)
00128 {
00129 lookupTablesList.SelectedValue = _CustomFieldDefinition.Guid;
00130 }
00131 }
00132 }
00133
00134 private void LoadCustomFieldSettings()
00135 {
00136 if (_CustomFieldDefinition.Guid == Guid.Empty || _CustomFieldDefinition.DefaultValueGuid == Guid.Empty)
00137 {
00138 useDefaultValueCheckbox.Checked = false;
00139 EnableDefaultValueUI(false);
00140 }
00141 }
00142
00143 private bool ValidateForm()
00144 {
00145 if (useDefaultValueCheckbox.Checked && defaultValueTextBox.Text == string.Empty)
00146 {
00147 if (MessageBox.Show("Please select a default value.", "Custom Fields", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.Cancel)
00148 {
00149 useDefaultValueCheckbox.Checked = false;
00150 return true;
00151 }
00152 return false;
00153 }
00154 return true;
00155 }
00156
00157 private void EnableDefaultValueUI(bool enabled)
00158 {
00159 defaultValueLabel.Enabled = enabled;
00160 defaultValueTextBox.Enabled = enabled;
00161 selectDefaulValueButton.Enabled = enabled;
00162 }
00163
00164 private void Cleanup()
00165 {
00166 if (_LookupTables != null)
00167 {
00168 _LookupTables.Dispose();
00169 }
00170 }
00171
00172 #endregion
00173
00174 #region Event Handlers
00175
00176 private void useDefaultValueCheckbox_CheckedChanged(object sender,
00177 EventArgs e)
00178 {
00179 EnableDefaultValueUI(useDefaultValueCheckbox.Checked);
00180 }
00181
00182 private void cancelButton_Click(object sender,
00183 EventArgs e)
00184 {
00185 Close();
00186 }
00187
00188 private void okButton_Click(object sender,
00189 EventArgs e)
00190 {
00191 if (ValidateForm())
00192 {
00193 DialogResult = DialogResult.OK;
00194 Close();
00195 }
00196 }
00197
00198 private void EdiCustomFieldLookupFieldForm_Load(object sender,
00199 EventArgs e)
00200 {
00201 Cursor = Cursors.WaitCursor;
00202
00203 LoadLookupTables();
00204 LoadCustomFieldSettings();
00205
00206 Cursor = Cursors.Default;
00207 }
00208
00209 private void EditCustomFieldLookupFieldForm_FormClosing(object sender,
00210 FormClosingEventArgs e)
00211 {
00212 Cleanup();
00213 }
00214
00215 private void selectDefaulValueButton_Click(object sender,
00216 EventArgs e)
00217 {
00218 SelectLookupTableValueForm form = new SelectLookupTableValueForm(lookupTablesList.SelectedValue.ToString(),
00219 _ProjectServer,
00220 false,
00221 new List<string>());
00222 Cursor = Cursors.WaitCursor;
00223 if (form.ShowDialog(this) == DialogResult.OK)
00224 {
00225 string[] key = new string[1];
00226
00227 if (form.SelectedValues.Count > 0)
00228 {
00229 form.SelectedValues.Keys.CopyTo(key, 0);
00230 defaultValueTextBox.Text = form.SelectedValues[key[0]];
00231 defaultValueTextBox.Tag = key[0];
00232 }
00233 }
00234
00235 Cursor = Cursors.Default;
00236 }
00237
00238 private void lookupTablesList_SelectedIndexChanged(object sender,
00239 EventArgs e)
00240 {
00241 defaultValueTextBox.Text = string.Empty;
00242 defaultValueTextBox.Tag = null;
00243 }
00244
00245 #endregion
00246 }
00247 }