protected override void EditTrustee()
		{
			if (lstVwTrustees.SelectedItems.Count == 0)
				return;

            ((frmMain)TopLevelControl).EnterWaitMode();
			ListViewItem item = null;
			GISADataset.TrusteeRow truRow = null;
			item = lstVwTrustees.SelectedItems[0];
			truRow = (GISADataset.TrusteeRow)item.Tag;
		
			GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try
			{
				if (TrusteeRule.Current.hasRegistos(((GISADataset.TrusteeRow)(lstVwTrustees.SelectedItems[0].Tag)).ID, ho.Connection))
					MessageBox.Show("Tenha em conta que alterações no nome de utilizador terá reflexos no registos no sistema.", "Utilizador", MessageBoxButtons.OK, MessageBoxIcon.Information);
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw;
			}
			finally
			{
				ho.Dispose();
			}

			FormCreateTrustee form = new FormCreateTrustee();
			form.Text = "Editar utilizador";
			form.txtTrusteeName.Text = truRow.Name;
			switch (form.ShowDialog())
			{
				case DialogResult.OK:
		
					PersistencyHelper.EditTrusteePreConcArguments ctpca = new PersistencyHelper.EditTrusteePreConcArguments();
					ctpca.truRow = truRow;
					ctpca.username = form.txtTrusteeName.Text;

					Trace.WriteLine("A editar utilizador...");

					PersistencyHelper.save(EditTrusteeIfUsernameDoesntExist, ctpca);
					PersistencyHelper.cleanDeletedData();

					if (! ctpca.successful)
					{
						MessageBox.Show("Este nome já existe atribuído a um utilizador ou grupo, " + Environment.NewLine + "por favor escolha outro nome.", form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
						UpdateTrustees(null);
					}
					else
					{
						UpdateTrustees(truRow);
						UpdateContext();
					}
					UpdateToolBarButtons();
					break;
				case DialogResult.Cancel:
				    break;
			}
            ((frmMain)TopLevelControl).LeaveWaitMode();
		}
		protected override void EditTrustee()
		{
			if (lstVwTrustees.SelectedItems.Count == 0)
				return;

			GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try
			{
				if (TrusteeRule.Current.hasUsers(((GISADataset.TrusteeRow)(lstVwTrustees.SelectedItems[0].Tag)).ID, ho.Connection))
					MessageBox.Show("Tenha em conta que o Grupo de Utilizadores a editar já tem Utilizadores associados.", "Utilizador", MessageBoxButtons.OK, MessageBoxIcon.Warning);
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw;
			}
			finally
			{
				ho.Dispose();
			}

			ListViewItem item = null;
			GISADataset.TrusteeRow truRow = null;
			item = lstVwTrustees.SelectedItems[0];
			truRow = (GISADataset.TrusteeRow)item.Tag;
            
			FormCreateTrustee form = new FormCreateTrustee();
			form.Text = "Editar grupo de utilizadores";
			form.txtTrusteeName.Text = truRow.Name;
			switch (form.ShowDialog())
			{
				case DialogResult.OK:

					PersistencyHelper.EditTrusteePreConcArguments etpca = new PersistencyHelper.EditTrusteePreConcArguments();
					etpca.truRow = truRow;
					etpca.username = form.txtTrusteeName.Text;

					Trace.WriteLine("A editar o grupo de utilizador...");

					PersistencyHelper.save(editTrusteeIfUsernameDoesntExist, etpca);
					PersistencyHelper.cleanDeletedData();

					if (! etpca.successful)
					{
						MessageBox.Show("Este nome já existe atribuído a um utilizador ou grupo, " + Environment.NewLine + "por favor escolha outro nome.", form.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
						UpdateTrustees(null);
					}
					else
						UpdateTrustees(truRow);

					break;
				case DialogResult.Cancel:
				break;
			}
		}