public override void UpdateToolBarButtons(ListViewItem item)
 {
     if (this.nivelNavigator1.PanelToggleState == NivelNavigator.ToggleState.Estrutural)
     {
         //vista estrutural
         GISADataset.NivelRow nRow = null;
         GISADataset.TipoNivelRelacionadoRow tnrRow = null;
         if (this.nivelNavigator1.EPFilterMode) // modo filtro
         {
             if (item != null && item.ListView != null && !(((GISADataset.NivelRow)item.Tag).RowState == DataRowState.Detached))
             {
                 //contexto da listview
                 nRow = (GISADataset.NivelRow)item.Tag;
             }
             if (nRow != null && !(nRow.RowState == DataRowState.Detached))
             {
                 tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().FirstOrDefault());
             }
         }
         this.ToolBarButtonToggleEstruturaSeries.Enabled = this.nivelNavigator1.isTogglable(nRow, tnrRow) && PermissoesHelper.AllowExpand;
     }
     else
     {
         this.ToolBarButtonToggleEstruturaSeries.Enabled = true;
     }
     SetButtonFiltroState();
 }
Exemple #2
0
        private void GetExtraResources()
        {
            btnRemove.Image = SharedResourcesOld.CurrentSharedResources.Apagar;
            lstVwNiveisAssoc.SmallImageList = TipoNivelRelacionado.GetImageList();

            base.ParentChanged += PanelIdentificacao_ParentChanged;
        }
        protected virtual void updateContextStatusBar(GISATreeNode node)
        {
            if (!(MasterPanel.isContextPanel(this)))
            {
                return;
            }
            if (node == null || node.NivelRow.RowState == DataRowState.Detached)
            {
                ((frmMain)TopLevelControl).StatusBarPanelHint.Text = string.Empty;
            }
            else
            {
                GISADataset.RelacaoHierarquicaRow   rhRow  = ((GISATreeNode)node).RelacaoHierarquicaRow;
                GISADataset.TipoNivelRelacionadoRow tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);

                ArrayList pathEstrut = ControloNivelList.GetCodigoCompletoCaminhoUnico(node);
                if (pathEstrut.Count == 0)
                {
                    ((frmMain)TopLevelControl).StatusBarPanelHint.Text = string.Format("  {0}: {1}", tnrRow.Designacao, node.NivelRow.Codigo);
                }
                else
                {
                    ((frmMain)TopLevelControl).StatusBarPanelHint.Text = string.Format("  {0}: {1}", tnrRow.Designacao, Nivel.buildPath(pathEstrut));
                }
            }
        }
        private void ConfigureContextMenu(GISADataset.NivelRow NivelRow, GISADataset.NivelRow NivelUpperRow, GISADataset.TipoNivelRelacionadoRow tnrRow, GISADataset.TipoNivelRelacionadoRow tnrRowBC)
        {
            ContextMenu CurrentMenu = new ContextMenu();

            ToolBarButtonCreateAny.DropDownMenu = CurrentMenu;

            // force an update to the button's icon
            int i = ToolBarButtonCreateAny.ImageIndex;

            ToolBarButtonCreateAny.ImageIndex = -1;
            ImageList toolbarImageList = ToolBar.ImageList;
            ImageList niveisImageList  = TipoNivelRelacionado.GetImageList();

            toolbarImageList.Images[2]        = niveisImageList.Images[SharedResourcesOld.CurrentSharedResources.NivelImageEditar(System.Convert.ToInt32(tnrRow.GUIOrder))];
            toolbarImageList.Images[3]        = niveisImageList.Images[SharedResourcesOld.CurrentSharedResources.NivelImageEliminar(System.Convert.ToInt32(tnrRow.GUIOrder))];
            ToolBarButtonCreateAny.ImageIndex = i;
            if (tnrRowBC == null)
            {
                TipoNivelRelacionado.ConfigureMenu(GisaDataSetHelper.GetInstance(), tnrRow, ref ToolBarButtonCreateAny, ToolBarButtonCreateMenuItemClick); // IsDocumentView)
            }
            else
            {
                TipoNivelRelacionado.ConfigureMenu(GisaDataSetHelper.GetInstance(), tnrRowBC, ref ToolBarButtonCreateAny, ToolBarButtonCreateMenuItemClick); // IsDocumentView)
            }
        }
Exemple #5
0
        private void GetExtraResources()
        {
            lstVwEstruturaDocs.SmallImageList = TipoNivelRelacionado.GetImageList();
            ToolBar.ImageList = SharedResourcesOld.CurrentSharedResources.PesquisaUFsImageList;

            ToolBarButton2.ToolTipText       = "Resultados";
            ToolBarButton3.ToolTipText       = "Detalhes";
            ToolBarButton5.ToolTipText       = "Níveis associados";
            ToolBarButtonReports.ToolTipText = "Relatórios";
        }
Exemple #6
0
        public bool isTogglable(GISADataset.NivelRow nivelRow, GISADataset.TipoNivelRelacionadoRow tnrRow)
        {
            if (this.nivelDocumentalListNavigator1.Visible)
            {
                return(true);
            }

            if (nivelRow == null && tnrRow == null)
            {
                SeleccaoActual(out nivelRow, out tnrRow);

                if (nivelRow == null || nivelRow.IDTipoNivel == TipoNivel.LOGICO)
                {
                    return(false);
                }
            }

            bool result = false;

            // Determinar se existe pelo menos 1 nível documental
            // pendurado no nível selecionado
            foreach (GISADataset.RelacaoHierarquicaRow rhRow in GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("IDUpper={0}", nivelRow.ID)))
            {
                if (rhRow.NivelRowByNivelRelacaoHierarquica.TipoNivelRow.IsDocument)
                {
                    result = true;
                    break;
                }
            }

            // No caso de não existirem níveis documentais pendurados no
            // nível selecionado verificamos se é possível faze-lo. Caso
            // seja podemos da mesma forma passar à vista documental onde
            // poderemos criar novos níveis.

            if (!result)
            {
                if (TipoNivelRelacionado.GetSubTipoNivelRelacionado(GisaDataSetHelper.GetInstance(), tnrRow).Length == 0)
                {
                    return(result);
                }

                foreach (GISADataset.TipoNivelRelacionadoRow subtnrRow in TipoNivelRelacionado.GetSubTipoNivelRelacionado(GisaDataSetHelper.GetInstance(), tnrRow))
                {
                    if (subtnrRow.TipoNivelRow.IsDocument)
                    {
                        result = true;
                        break;
                    }
                }
            }
            return(result);
        }
Exemple #7
0
//INSTANT C# NOTE: C# does not support optional parameters. Overloaded method(s) are created above.
//ORIGINAL LINE: Public Sub LoadContents(Optional ByVal EditMode As Boolean = false)
		public void LoadContents(bool EditMode)
		{
			trVwLocalizacao.ImageList = TipoNivelRelacionado.GetImageList();
			if (EditMode)
			{
				this.Enabled = false;
			}
			else
			{
				this.Enabled = true;
				LoadNivelRoot(trVwLocalizacao);
				//LoadTimeLine()
				trVwLocalizacao.BeforeExpand += trvwEstrutura_BeforeExpand;
			}
		}
Exemple #8
0
		protected override string GetDependenciesReport(DataRow[] rows)
		{
			string report = null;
			foreach (DataRow dependentRow in rows)
			{
				if (report == null)
				{
					report = "";
				}
				report += "  " + TipoNivelRelacionado.GetTipoNivelRelacionadoDaPrimeiraRelacaoEncontrada(((GISADataset.SFRDUFDescricaoFisicaRow)dependentRow).FRDBaseRow.NivelRow).Designacao + ": " + Nivel.GetDesignacao(((GISADataset.SFRDUFDescricaoFisicaRow)dependentRow).FRDBaseRow.NivelRow) + Environment.NewLine;
			}
			if (report != null)
			{
				report = "Remover este material fará com que todas as suas referências passem a \"" + ((GISADataset.TipoSuporteRow)(GisaDataSetHelper.GetInstance().TipoSuporte.Select("ID = 1")[0])).Designacao + "\"" + Environment.NewLine + "Foram encontrados os seguintes níveis associados a " + "este material:" + Environment.NewLine + Environment.NewLine + report;
			}
			return report;
		}
Exemple #9
0
        private string GetCodigoCompleto(object element)
        {
            MasterPanelPermissoesPlanoClassificacao mpPPC = (MasterPanelPermissoesPlanoClassificacao)(((frmMain)this.TopLevelControl).MasterPanel);
            string nCod = null;

            if (element is GISATreeNode)
            {
                GISATreeNode node       = (GISATreeNode)element;
                ArrayList    pathEstrut = ControloNivelList.GetCodigoCompletoCaminhoUnico(node);
                if (pathEstrut.Count == 0)
                {
                    nCod = node.NivelRow.Codigo;
                }
                else
                {
                    nCod = Nivel.buildPath(pathEstrut);
                }
            }
            else if (element is ListViewItem)
            {
                ListViewItem item = (ListViewItem)element;
                GISADataset.RelacaoHierarquicaRow rhRow = (GISADataset.RelacaoHierarquicaRow)(GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", ((GISADataset.NivelRow)item.Tag).ID, mpPPC.nivelNavigator1.ContextBreadCrumbsPathID))[0]);

                GISADataset.TipoNivelRelacionadoRow tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);

                ArrayList pathEstrut = ControloNivelList.GetCodigoCompletoCaminhoUnico(mpPPC.nivelNavigator1.SelectedNode);

                ArrayList pathDoc = mpPPC.nivelNavigator1.GetCodigoCompletoCaminhoUnico(item);
                if (pathDoc.Count == 0 && pathEstrut.Count == 0)
                {
                    nCod = tnrRow.Designacao;
                }
                else
                {
                    nCod = string.Format("{0}/{1}", Nivel.buildPath(pathEstrut), Nivel.buildPath(pathDoc));
                }
            }
            return(nCod);
        }
        public NivelDocumentalListNavigator()
        {
            InitializeComponent();

            this.GrpResultadosLabel = "Descrições encontradas";
            this.showItemsCount     = true;

            lstVwPaginated.DeeperLevelSelection += paginatedList_DeeperLevelSelection;

            BreadCrumbsPath1.NewBreadCrumbSelected += NewBreadCrumbSelected_Action;
            BreadCrumbsPath.mImgList = TipoNivelRelacionado.GetImageList();

            if (!SessionHelper.AppConfiguration.GetCurrentAppconfiguration().IsReqEnable())
            {
                this.lstVwPaginated.Columns.Remove(this.colRequisitado);
            }

            // Esta chamada é necessária para permitir a inserção dos ícones de ordenação da listview. A inserção
            // está dependente das colunas associadas na listview, que, na class parent onde este método é chamado,
            // essas colunas ainda não foram adicionadas á listview
            base.GetExtraResources();
        }
        protected virtual void updateContextStatusBar(ListViewItem listViewItem)
        {
            if (!(MasterPanel.isContextPanel(this)))
            {
                return;
            }

            if (listViewItem == null || (listViewItem != null && listViewItem.ListView == null) || ((GISADataset.NivelRow)listViewItem.Tag).RowState == DataRowState.Detached)
            {
                ((frmMain)TopLevelControl).StatusBarPanelHint.Text = string.Empty;
            }
            else
            {
                // prever a situação onde, concorrentemente, outro utilizador fez cut/paste do nível em(questão)
                // mudando assim, o caminho actual do mesmo
                if (GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", ((GISADataset.NivelRow)listViewItem.Tag).ID, this.nivelNavigator1.ContextBreadCrumbsPathID)).Length > 0)
                {
                    GISADataset.RelacaoHierarquicaRow rhRow = (GISADataset.RelacaoHierarquicaRow)(GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", ((GISADataset.NivelRow)listViewItem.Tag).ID, this.nivelNavigator1.ContextBreadCrumbsPathID))[0]);

                    GISADataset.TipoNivelRelacionadoRow tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);

                    ArrayList pathEstrut = ControloNivelList.GetCodigoCompletoCaminhoUnico(this.nivelNavigator1.SelectedNode);
                    ArrayList pathDoc    = this.nivelNavigator1.GetCodigoCompletoCaminhoUnico(listViewItem);
                    if (pathDoc.Count == 0 && pathEstrut.Count == 0)
                    {
                        ((frmMain)TopLevelControl).StatusBarPanelHint.Text = string.Format("  {0}", tnrRow.Designacao);
                    }
                    else
                    {
                        ((frmMain)TopLevelControl).StatusBarPanelHint.Text = string.Format("  {0}: {1}/{2}", tnrRow.Designacao, Nivel.buildPath(pathEstrut), Nivel.buildPath(pathDoc));
                    }
                }
                else
                {
                    ((frmMain)TopLevelControl).StatusBarPanelHint.Text = string.Empty;
                }
            }
        }
Exemple #12
0
        //Filtro
        public void PopulateFiltro()
        {
            GISADataset.TipoNivelRelacionadoRow emptyRow = GisaDataSetHelper.GetInstance().TipoNivelRelacionado.NewTipoNivelRelacionadoRow();
            emptyRow.ID         = 0;
            emptyRow.Designacao = "<Todos>";
            ArrayList ds = new ArrayList();

            ds.Add(emptyRow);
            ds.AddRange(GisaDataSetHelper.GetInstance().TipoNivelRelacionado.Select("ID < 11"));
            cbTipoNivelRelacionado.DataSource    = ds;
            cbTipoNivelRelacionado.DisplayMember = "Designacao";
            cbTipoNivelRelacionado.ValueMember   = "ID";
            SelectFirstTipo();

            cbTipoNivelRelacionado.ImageList = TipoNivelRelacionado.GetImageList();
            cbTipoNivelRelacionado.ImageIndexes.Clear();
            cbTipoNivelRelacionado.ImageIndexes.Add(-1);

            foreach (GISADataset.TipoNivelRelacionadoRow tnrRow in GisaDataSetHelper.GetInstance().TipoNivelRelacionado.Select("ID < 11"))
            {
                cbTipoNivelRelacionado.ImageIndexes.Add(SharedResourcesOld.CurrentSharedResources.NivelImageBase(System.Convert.ToInt32(tnrRow.GUIOrder)));
            }
        }
Exemple #13
0
        public void ActivateEstruturaDocs()
        {
            if (PesquisaUFList1.GetSelectedRows.Count() == 1)
            {
                long ticks = DateTime.Now.Ticks;
                List <PesquisaRule.DocAssociado> docsAssociados = new List <PesquisaRule.DocAssociado>();
                var    nivelRow = (GISADataset.NivelRow)PesquisaUFList1.SelectedRow;
                string ID       = nivelRow.ID.ToString();

                // Conta como consulta de detalhe da Unidade Física
                GisaDataSetHelper.RecordEstatisticaPesquisa(nivelRow.ID, "UF");


                GisaDataSetHelper.ManageDatasetConstraints(false);

                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    docsAssociados = PesquisaRule.Current.LoadEstruturaDocsData(GisaDataSetHelper.GetInstance(), ID, ho.Connection);
                    GisaDataSetHelper.ManageDatasetConstraints(true);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }

                panelInfoEPs1.ClearAll();

                lstVwEstruturaDocs.BeginUpdate();
                lstVwEstruturaDocs.Items.Clear();
                lstVwEstruturaDocs.SmallImageList = TipoNivelRelacionado.GetImageList();

                List <ListViewItem> items = new List <ListViewItem>();
                foreach (var dAssoc in docsAssociados)
                {
                    ListViewItem item = new ListViewItem(new string[] { string.Empty, string.Empty, string.Empty, string.Empty });
                    item.SubItems[chCodigo.Index].Text     = dAssoc.Codigo;
                    item.SubItems[chTipoNivel.Index].Text  = dAssoc.RelDesignacao;
                    item.SubItems[chDesignacao.Index].Text = dAssoc.NivelDesignacao;
                    if (this.lstVwEstruturaDocs.Columns.Contains(this.chRequisitado))
                    {
                        if (dAssoc.Requisitado)
                        {
                            item.SubItems[chRequisitado.Index].Text = "Sim";
                        }
                        else
                        {
                            item.SubItems[chRequisitado.Index].Text = "Não";
                        }
                    }
                    item.ImageIndex      = SharedResourcesOld.CurrentSharedResources.NivelImageBase(dAssoc.GUIOrder);
                    item.StateImageIndex = item.ImageIndex;
                    item.Tag             = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + dAssoc.IDNivel.ToString())[0]);
                    items.Add(item);
                }
                lstVwEstruturaDocs.Items.AddRange(items.ToArray());

                lstVwEstruturaDocs.EndUpdate();
                pnlEstruturaDocs.BringToFront();
                Debug.WriteLine("<<ActivateEstruturaDocs>>: " + new TimeSpan(DateTime.Now.Ticks - ticks).ToString());
            }
            else
            {
                ToolBar_ButtonClick(this, new ToolBarButtonClickEventArgs(ToolBarButton2));
            }
        }
Exemple #14
0
        private string GetFRDBaseAsRTF(GISADataset.NivelRow NivelRow)
        {
            GISADataset.FRDBaseRow FRDBaseRow = null;

            GisaDataSetHelper.ManageDatasetConstraints(false);
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                PesquisaRule.Current.LoadFRDBaseUFData(GisaDataSetHelper.GetInstance(), NivelRow.ID, ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw ex;
            }
            finally
            {
                ho.Dispose();
            }

            GisaDataSetHelper.ManageDatasetConstraints(true);

            StringBuilder Result = new StringBuilder();

            if (GisaDataSetHelper.GetInstance().FRDBase.Select("IDNivel=" + NivelRow.ID.ToString()).Length > 0)
            {
                FRDBaseRow = (GISADataset.FRDBaseRow)(GisaDataSetHelper.GetInstance().FRDBase.Select("IDNivel=" + NivelRow.ID.ToString())[0]);

                // --Identificação--
                Result.Append("\\fs36\\b{}Identificação\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}");
                // Entidade Detentora
                if (FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Length == 1)
                {
                    Result.Append(GetConditionalText("\\i{}Entidade detentora: \\i0{}", FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].NivelRowByNivelRelacaoHierarquicaUpper.GetNivelDesignadoRows()[0].Designacao, "\\par{}"));
                }
                // Codigo de Referência
                Result.Append(GetConditionalText("\\i{}Número de recenseamento: \\i0{}", FRDBaseRow.NivelRow.Codigo, "\\par{}"));
                // Cota
                if (FRDBaseRow.GetSFRDUFCotaRows().Length == 1)
                {
                    if (!(FRDBaseRow.GetSFRDUFCotaRows()[0].IsCotaNull()))
                    {
                        Result.Append(GetConditionalText("\\i{}Cota: \\i0{}", FRDBaseRow.GetSFRDUFCotaRows()[0].Cota, "\\par{}"));
                    }
                    else
                    {
                        Result.Append(GetConditionalText("\\i{}Cota: \\i0{}", "", "\\par{}"));
                    }
                }
                // Título
                Result.Append("\\i{}" + TipoNivelRelacionado.GetTipoNivelRelacionadoDaPrimeiraRelacaoEncontrada(FRDBaseRow.NivelRow).Designacao + ": \\i0{}" + Nivel.GetDesignacao(FRDBaseRow.NivelRow) + "\\par{}");
                // Datas
                if (FRDBaseRow.GetSFRDDatasProducaoRows().Length == 1)
                {
                    Result.Append("\\i{}Datas: \\i0{}" + GUIHelper.GUIHelper.FormatDateInterval(FRDBaseRow.GetSFRDDatasProducaoRows()[0]) + "\\par{}");
                }
                // Tipo e dimensões
                if (FRDBaseRow.GetSFRDUFDescricaoFisicaRows().Length == 1)
                {
                    GISADataset.SFRDUFDescricaoFisicaRow sfrdufRow = null;
                    string tipoMedida = null;
                    sfrdufRow = FRDBaseRow.GetSFRDUFDescricaoFisicaRows()[0];
                    Result.Append("\\i{}Tipo: \\i0{}" + sfrdufRow.TipoAcondicionamentoRow.Designacao + "\\par{}");
                    if (sfrdufRow.TipoMedidaRow == null)
                    {
                        tipoMedida = string.Empty;
                    }
                    else
                    {
                        tipoMedida = sfrdufRow.TipoMedidaRow.Designacao;
                    }

                    Result.Append("\\i{}Dimensões: \\i0{}" + string.Format("{0} x {1} x {2} ({3})", GISA.Utils.GUIHelper.getStringifiedDecimal(sfrdufRow["MedidaLargura"]), GISA.Utils.GUIHelper.getStringifiedDecimal(sfrdufRow["MedidaAltura"]), GISA.Utils.GUIHelper.getStringifiedDecimal(sfrdufRow["MedidaProfundidade"]), tipoMedida) + "\\par{}");
                }

                // --ConteudoEstrutura--
                string ConteudoEstrutura = "";
                if (FRDBaseRow.GetSFRDConteudoEEstruturaRows().Length == 1)
                {
                    GISADataset.SFRDConteudoEEstruturaRow ceRow = (GISADataset.SFRDConteudoEEstruturaRow)FRDBaseRow.GetSFRDConteudoEEstruturaRows()[0];

                    if (ceRow.IsConteudoInformacionalNull())
                    {
                        ConteudoEstrutura = GetConditionalText("\\i{}Conteúdo informacional: \\i0{}\\par{}", "", "\\li128\\par\\li0{}");
                    }
                    else
                    {
                        ConteudoEstrutura = GetConditionalText("\\i{}Conteúdo informacional: \\i0{}\\par{}", ceRow.ConteudoInformacional, "\\li128\\par\\li0{}");
                    }
                }

                Result.Append(Section("\\fs36\\b{}Conteúdo e estrutura\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Tipologia informacional: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.TipologiaInformacional), ""), ConteudoEstrutura));

                // --Documentação associada--

                if (FRDBaseRow.GetSFRDDocumentacaoAssociadaRows().Length > 0)
                {
                    Result.Append(Section("\\fs36\\b{}Documentação associada\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Existência e localização de originais: \\i0{}\\par{}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0].ExistenciaDeOriginais, "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Existência e localização de cópias: \\i0{}\\par{}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0].ExistenciaDeCopias, "\\li128\\par\\li0{}")));
                }

                // --Indexação--
                Result.Append(Section("\\fs36\\b{}Indexação\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Conteúdos: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.Ideografico, TipoNoticiaAut.Onomastico, TipoNoticiaAut.ToponimicoGeografico), "")));
            }
            return(Result.ToString());
        }
Exemple #15
0
		protected virtual ArrayList GetPossibleSubItems(GISADataset.NivelRow nRow)
		{
			return TipoNivelRelacionado.GetPossibleSubItems(nRow);
		}
        public override void UpdateToolBarButtons(ListViewItem item)
        {
            base.UpdateToolBarButtons(item);

            //Obter selecção actual
            GISATreeNode selectedNode = null;

            GISADataset.NivelRow nRow                  = null;
            GISADataset.NivelRow nUpperRow             = null;
            GISADataset.RelacaoHierarquicaRow   rhRow  = null;
            GISADataset.TipoNivelRelacionadoRow tnrRow = null;
            // Estas variaveis identificam o contexto definido pelo breadcrumbspath da vista documental
            // (só são usadas quando a vista actual é a documental)
            GISADataset.NivelRow nRowBC                  = null;
            GISADataset.NivelRow nUpperRowBC             = null;
            GISADataset.RelacaoHierarquicaRow   rhRowBC  = null;
            GISADataset.TipoNivelRelacionadoRow tnrRowBC = null;

            if (this.nivelNavigator1.PanelToggleState == NivelNavigator.ToggleState.Estrutural)
            {
                //vista estrutural
                if (this.nivelNavigator1.EPFilterMode) // modo filtro
                {
                    if (item != null && item.ListView != null && !(((GISADataset.NivelRow)item.Tag).RowState == DataRowState.Detached))
                    {
                        //contexto da listview
                        nRow = (GISADataset.NivelRow)item.Tag;
                    }
                }
                else //modo árvore
                {
                    //vista estrutural
                    selectedNode = (GISATreeNode)this.nivelNavigator1.SelectedNode;
                    if (selectedNode != null && !(selectedNode.NivelRow.RowState == DataRowState.Detached))
                    {
                        nRow      = selectedNode.NivelRow;
                        nUpperRow = selectedNode.NivelUpperRow;
                    }
                }
            }
            else
            {
                //vista documental
                if (item != null && item.ListView != null && !(((GISADataset.NivelRow)item.Tag).RowState == DataRowState.Detached))
                {
                    //contexto da listview
                    nRow      = (GISADataset.NivelRow)item.Tag;
                    nUpperRow = nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].NivelRowByNivelRelacaoHierarquicaUpper;
                }

                //contexto do breadcrumbspath
                nRowBC      = GisaDataSetHelper.GetInstance().Nivel.Cast <GISADataset.NivelRow>().SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.ID == this.nivelNavigator1.ContextBreadCrumbsPathID);
                nUpperRowBC = GisaDataSetHelper.GetInstance().Nivel.Cast <GISADataset.NivelRow>().SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.ID == this.nivelNavigator1.ContextBreadCrumbsPathIDUpper);
            }

            if (nRow != null && !(nRow.RowState == DataRowState.Detached) && nUpperRow == null)
            {
                tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(null);
            }
            else if (nUpperRow != null && !(nUpperRow.RowState == DataRowState.Detached) && nRow != null && !(nRow.RowState == DataRowState.Detached))
            {
                if (this.nivelNavigator1.PanelToggleState == NivelNavigator.ToggleState.Estrutural)
                {
                    rhRow = selectedNode.RelacaoHierarquicaRow;
                    // excluimos desta forma as relacoes hirarquicas entretanto eliminadas (as que seriam NULL mas cujo nó respectivo teria um NivelUpper)
                    if (selectedNode.NivelUpperRow != null && rhRow != null)
                    {
                        tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);
                    }
                }
                else
                {
                    if (item != null && item.ListView != null)
                    {
                        DataRow[] rhRows = GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", nRow.ID.ToString(), nUpperRow.ID.ToString()));
                        // A relação pode ter desaparecido por algum motivo (ie, concorrencia).
                        if (rhRows.Length > 0)
                        {
                            rhRow  = (GISADataset.RelacaoHierarquicaRow)(rhRows[0]);
                            tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);
                        }
                    }
                    if (nRowBC != null && nUpperRowBC != null)
                    {
                        DataRow[] rhRowBCs = GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", nRowBC.ID.ToString(), nUpperRowBC.ID.ToString()));
                        // A relação pode ter desaparecido por algum motivo (ie, concorrencia).
                        if (rhRowBCs.Length > 0)
                        {
                            rhRowBC  = (GISADataset.RelacaoHierarquicaRow)(rhRowBCs[0]);
                            tnrRowBC = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRowBC);
                        }
                    }
                }
            }

            if (nRow == null && this.nivelNavigator1.PanelToggleState == NivelNavigator.ToggleState.Documental && nRowBC != null && nUpperRowBC != null)
            {
                GISADataset.RelacaoHierarquicaRow[] bcRHRow = (GISADataset.RelacaoHierarquicaRow[])(GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", nRowBC.ID.ToString(), nUpperRowBC.ID.ToString())));
                if (bcRHRow.Length > 0)
                {
                    if (bcRHRow[0].IDTipoNivelRelacionado < TipoNivelRelacionado.SD)
                    {
                        ToolBarButtonCreateAny.Enabled = AllowCreate && PermissoesHelper.AllowCreate;
                    }
                    else
                    {
                        ToolBarButtonCreateAny.Enabled = false;
                    }
                    rhRowBC  = (GISADataset.RelacaoHierarquicaRow)(GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", nRowBC.ID.ToString(), nUpperRowBC.ID.ToString()))[0]);
                    tnrRowBC = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRowBC);
                    ConfigureContextMenu(nRowBC, nUpperRowBC, tnrRowBC, tnrRowBC);
                    ToolBarButtonEdit.Enabled   = false;
                    ToolBarButtonRemove.Enabled = false;
                }
                else
                {
                    ToolBarButtonCreateAny.Enabled = false;
                    ToolBarButtonPaste.Enabled     = false;
                }
            }
            else if (TipoNivel.isNivelDocumental(nRow))
            {
                ToolBarButtonCreateAny.Enabled = AllowCreate && PermissoesHelper.AllowCreate;
                ConfigureContextMenu(nRowBC, nUpperRowBC, tnrRow, tnrRowBC);
                if (rhRow.IDTipoNivelRelacionado == TipoNivelRelacionado.D)
                {
                    ToolBarButtonEdit.Enabled   = AllowEdit && PermissoesHelper.AllowEdit;
                    ToolBarButtonRemove.Enabled = NiveisHelper.isRemovable(nRow, nUpperRow, false) && AllowDelete && PermissoesHelper.AllowDelete;
                }
                else if (rhRow.IDTipoNivelRelacionado == TipoNivelRelacionado.SD)
                {
                    ToolBarButtonEdit.Enabled   = AllowEdit && PermissoesHelper.AllowEdit;
                    ToolBarButtonRemove.Enabled = NiveisHelper.isRemovable(nRow, nUpperRow, false) && AllowDelete && PermissoesHelper.AllowDelete && PermissoesHelper.ObjDigAllowWrite;
                }
                else
                {
                    ToolBarButtonEdit.Enabled   = false;
                    ToolBarButtonRemove.Enabled = false;
                }
            }
            else
            {
                ToolBarButtonCreateAny.Enabled = false;
                ToolBarButtonEdit.Enabled      = false;
                ToolBarButtonRemove.Enabled    = false;
            }
        }
Exemple #17
0
		protected override void AcceptContents(object Value)
		{
			GISADataset.ControloAutRow ControloAutRow = (GISADataset.ControloAutRow)Value;

			if (FRDBase != null)
			{
				// Carregar nivel do CA largado

				IDbConnection conn = GisaDataSetHelper.GetConnection();
				try
				{
					conn.Open();
					DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelByControloAut(ControloAutRow.ID, GisaDataSetHelper.GetInstance(), conn);
				}
				finally
				{
					conn.Close();
				}

				if (IsValidRelacaoHierarquica(ControloAutRow))
				{
					// Apresentar form que permita escolher a data da relação
					FormRelacaoHierarquica frmRh = new FormRelacaoHierarquica();
					// Pode-se obter a primeira relação encontrada para efeitos de determinação 
					// do tipo de nível uma vez que o tipo de nível dos níveis documentais nunca se alterará
					frmRh.relacaoNvl.TipoNivelRelacionadoRow = TipoNivelRelacionado.GetPrimeiraRelacaoEncontrada(this.FRDBase.NivelRow).TipoNivelRelacionadoRow;
					frmRh.relacaoNvl.ContextNivelRow = ControloAutRow.GetNivelControloAutRows()[0].NivelRow;
					if (frmRh.ShowDialog() == DialogResult.Cancel)
					{
						return;
					}

					if (GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", this.FRDBase.NivelRow.ID, ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID), "", DataViewRowState.Deleted).Length > 0)
					{

						GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", this.FRDBase.NivelRow.ID, ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID), "", DataViewRowState.Deleted)[0].AcceptChanges();
					}

					GISADataset.RelacaoHierarquicaRow rhRow = null;
					rhRow = GisaDataSetHelper.GetInstance().RelacaoHierarquica.NewRelacaoHierarquicaRow();
					TempRelacaoHierarquica = rhRow;

					rhRow.ID = this.FRDBase.NivelRow.ID;
					rhRow.IDUpper = ControloAutRow.GetNivelControloAutRows()[0].NivelRow.ID;
					rhRow.IDTipoNivelRelacionado = TipoNivelRelacionado.GetTipoNivelRelacionadoDaPrimeiraRelacaoEncontrada(this.FRDBase.NivelRow).ID;
					rhRow.Descricao = frmRh.relacaoNvl.txtDescricao.Text;
					rhRow.InicioAno = frmRh.relacaoNvl.dtRelacaoInicio.ValueYear;
					rhRow.InicioMes = frmRh.relacaoNvl.dtRelacaoInicio.ValueMonth;
					rhRow.InicioDia = frmRh.relacaoNvl.dtRelacaoInicio.ValueDay;
					rhRow.FimAno = frmRh.relacaoNvl.dtRelacaoFim.ValueYear;
					rhRow.FimMes = frmRh.relacaoNvl.dtRelacaoFim.ValueMonth;
					rhRow.FimDia = frmRh.relacaoNvl.dtRelacaoFim.ValueDay;
					GisaDataSetHelper.GetInstance().RelacaoHierarquica.AddRelacaoHierarquicaRow(rhRow);

                    // no caso de se tratar de uma entidade produtora é necessário validar o código de referência do nivel documental do contexto
                    if (ControloAutRow.IDTipoNoticiaAut == (long)TipoNoticiaAut.EntidadeProdutora)
                    {
                        var argsPC = new PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments();
                        argsPC.rhRowID = rhRow.ID;
                        argsPC.rhRowIDUpper = rhRow.IDUpper;

                        var postSaveAction = new PostSaveAction();
                        PersistencyHelper.UpdatePermissionsPostSaveArguments args = new PersistencyHelper.UpdatePermissionsPostSaveArguments();
                        postSaveAction.args = args;

                        postSaveAction.postSaveDelegate = delegate(PersistencyHelper.PostSaveArguments postSaveArgs)
                        {
                            if (argsPC.successful)
                            {
                                if (this.parent == null)
                                    Debug.Assert(false, "CONTEXTO PARENT DEVE ESTAR DEFINIDO.");

                                if (this.parent.GetType() == typeof(MasterPanelSeries))
                                {
                                    ((MasterPanelSeries)this.parent).CurrentContext.RaiseRegisterModificationEvent(this.FRDBase);
                                    PersistencyHelperRule.Current.saveRows(GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao,
                                        GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Cast<GISADataset.FRDBaseDataDeDescricaoRow>().Where(r => r.RowState == DataRowState.Added).ToArray(), postSaveArgs.tran);
                                }
                            }
                        };

                        var result = PersistencyHelper.save(DelegatesHelper.verificaCodigosRepetidos, argsPC, postSaveAction, true);

                        if (result == PersistencyHelper.SaveResult.successful)
                        {
                            PersistencyHelper.cleanDeletedData();
                            GisaDataSetHelper.VisitControloAutDicionario(ControloAutRow, DisplayFormaAutorizada);
                            GISA.Search.Updater.updateNivelDocumental(this.FRDBase.NivelRow.ID);
                        }
                        else
                        {
                            if (argsPC.message.Length > 0)
                                MessageBox.Show(argsPC.message, "Adição", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }

					
				}
				else
				{
					MessageBox.Show("Não é possível a existência de items repetidos.", "Adição", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				}
			}
			else if (this.ControloAut != null)
			{
				Debug.Assert(false, "ORGANIC RELATIONS BETWEEN CAS NOT IMPLEMENTED. SHOULDN'T BE NEEDED");
			}
		}
        private void EditNivel()
        {
            var nRow   = this.nivelNavigator1.SelectedNivel;
            var frdRow = nRow.GetFRDBaseRows().Single();
            var rhRow  = nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First();
            var tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);

            var frm = new FormNivelDocumentalFedora();

            frm.IDTipoNivelRelacionado = tnrRow.ID;

            string WindowTitle = string.Format("Editar {0}", tnrRow.Designacao);


            frm.Text               = WindowTitle;
            frm.txtCodigo.Text     = nRow.Codigo;
            frm.txtDesignacao.Text = Nivel.GetDesignacao(nRow);
            frm.FRDBaseRow         = nRow.GetFRDBaseRows().Single();
            frm.LoadData();

            var idxFRDCARow = frdRow.GetIndexFRDCARows().SingleOrDefault(r => r["Selector"] != DBNull.Value && r.Selector == -1);

            // show form and receive user feedback
            if (frm.ShowDialog() == DialogResult.OK)
            {
                Trace.WriteLine("A editar nível...");
                GISADataset.NivelDesignadoRow ndRow = null;
                nRow.Codigo = frm.txtCodigo.Text;


                // Um Nivel documental deve ter obrigatoriamente um NivelDesignado.
                Debug.Assert(nRow.GetNivelDesignadoRows().Length > 0);
                ndRow            = nRow.GetNivelDesignadoRows()[0];
                ndRow.Designacao = frm.txtDesignacao.Text;

                var tipologiaSelected = ((FormNivelDocumentalFedora)frm).Tipologia;

                if (tipologiaSelected == null && idxFRDCARow != null)
                {
                    idxFRDCARow.Delete();
                }
                else if (tipologiaSelected != null && idxFRDCARow == null)
                {
                    idxFRDCARow = GisaDataSetHelper.GetInstance().IndexFRDCA.AddIndexFRDCARow(frdRow, ((FormNivelDocumentalFedora)frm).Tipologia.ControloAutRow, -1, new byte[] { }, 0);
                }
                else if (tipologiaSelected != null && idxFRDCARow != null && idxFRDCARow.IDControloAut != tipologiaSelected.IDControloAut)
                {
                    idxFRDCARow.Delete();
                    idxFRDCARow = GisaDataSetHelper.GetInstance().IndexFRDCA.AddIndexFRDCARow(frdRow, ((FormNivelDocumentalFedora)frm).Tipologia.ControloAutRow, -1, new byte[] { }, 0);
                }

                string termoToCompare = frm.Tipologia == null ? null : ((FormNivelDocumentalFedora)frm).Tipologia.DicionarioRow.Termo;
                if (objetoDigital != null && objetoDigital.tipologia != termoToCompare)
                {
                    objetoDigital.tipologia = tipologiaSelected != null ? tipologiaSelected.DicionarioRow.Termo : "";
                    objetoDigital.state     = State.modified;
                }

                // registar a edição do item selecionado
                CurrentContext.RaiseRegisterModificationEvent(nRow.GetFRDBaseRows()[0]);

                PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments pcArgs = new PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments();
                pcArgs.nRowID  = nRow.ID;
                pcArgs.ndRowID = ndRow.ID;
                // Se se tratar de uma entidade detentora não passar os Ids de uma relação
                // hierárquica para um nível superior pois não existe nenhum.
                if (nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Length > 0)
                {
                    pcArgs.rhRowID      = nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].ID;
                    pcArgs.rhRowIDUpper = nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].IDUpper;
                }
                pcArgs.testOnlyWithinNivel = true;

                // actualizar objecto digital caso exista
                var preTransactionAction = new PreTransactionAction();
                var args = new PersistencyHelper.FedoraIngestPreTransactionArguments();
                preTransactionAction.args = args;

                preTransactionAction.preTransactionDelegate = delegate(PersistencyHelper.PreTransactionArguments preTransactionArgs)
                {
                    string msg = null;
                    if (objetoDigital != null)
                    {
                        preTransactionArgs.cancelAction = !SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.Ingest(objetoDigital, out msg);
                    }
                    preTransactionArgs.message = msg;
                };

                PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(DelegatesHelper.ensureUniqueCodigo, pcArgs, preTransactionAction);
                if (!pcArgs.successful)
                {
                    MessageBox.Show(pcArgs.message, "Edição da unidade de descrição", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if (successfulSave == PersistencyHelper.SaveResult.successful)
                {
                    GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                    try
                    {
                        List <string> IDNiveis = new List <string>();
                        IDNiveis.Add(nRow.ID.ToString());
                        GISA.Search.Updater.updateNivelDocumental(IDNiveis);
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine(ex.ToString());
                        throw;
                    }
                    finally
                    {
                        ho.Dispose();
                    }
                }

                PersistencyHelper.cleanDeletedData();

                // Actualizar a interface com os novos valores. Se editarmos a
                // raiz (estrutural) da vista documental é necessário actualizar
                // automaticamente também a vista estrutural.

                if (!(nRow.RowState == DataRowState.Detached))
                {
                    if (this.nivelNavigator1.PanelToggleState == NivelNavigator.ToggleState.Estrutural)
                    {
                        this.nivelNavigator1.UpdateSelectedNodeName(Nivel.GetDesignacao(nRow));
                    }
                    else
                    {
                        this.nivelNavigator1.UpdateSelectedListItemName(Nivel.GetDesignacao(nRow));
                    }
                }

                // Forçar a gravação do documento
                CurrentContext.SetNivelEstrututalDocumental(null);
                CurrentContext.SetNivelEstrututalDocumental(nRow);
            }
        }
Exemple #19
0
		private void GetExtraResources()
		{
			trVwLocalizacao.ImageList = TipoNivelRelacionado.GetImageList();
		}
Exemple #20
0
		public ArrayList AddNivel(TreeView trvw, GISADataset.NivelRow nRow, GISADataset.NivelRow nUpperRow, IDbConnection connection)
		{
			ArrayList result = new ArrayList();
			GISATreeNode node = null;
			// Para as EDs (em relação às quais não existem níveis superiores)
			if (nUpperRow == null)
			{
				node = FindTreeNodeByNivelRow(trvw.Nodes, nRow);
				if (node == null)
				{
					node = new GISATreeNode(Nivel.GetDesignacao(nRow));
					//Node.Tag = rhRow
					node.NivelRow = nRow;
					node.NivelUpperRow = null;

					GISADataset.TipoNivelRelacionadoRow tnrRow = null;
					int iconIndex = 0;
					tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(node.NivelRow, node.NivelUpperRow);
					iconIndex = -1;

					if (tnrRow != null)
					{
						iconIndex = System.Convert.ToInt32(tnrRow.GUIOrder);
					}
					if (nRow.CatCode.Trim().Equals("CA"))
					{
						if (iconIndex == -1)
						{
							node.ImageIndex = SharedResourcesOld.CurrentSharedResources.NivelImageIncognitoControloAut();
						}
						else
						{
							node.ImageIndex = SharedResourcesOld.CurrentSharedResources.NivelImageControloAut(iconIndex);
						}
					}
					else
					{
						if (iconIndex == -1)
						{
							node.ImageIndex = SharedResourcesOld.CurrentSharedResources.NivelImageIncognito();
						}
						else
						{
							node.ImageIndex = SharedResourcesOld.CurrentSharedResources.NivelImageBase(iconIndex);
						}
					}
					node.SelectedImageIndex = node.ImageIndex;
					trvw.Nodes.Add(node);
				}
				result.Add(node);
			}
			else
			{
				ArrayList ParentNodes = new ArrayList();
				GISADataset.RelacaoHierarquicaRow[] TempParentRelations = Nivel.GetParentRelations(nRow, nUpperRow, connection);

				//Obter os nós pai com base nas rows pai
				if (TempParentRelations.Length == 0)
				{
					ArrayList nodes = null;
					nodes = AddNivel(trvw, nUpperRow, null, connection);
					ParentNodes.AddRange(nodes);
				}
				foreach (GISADataset.RelacaoHierarquicaRow parentRhRow in TempParentRelations)
				{
					ArrayList nodes = null;
					nodes = AddNivel(trvw, parentRhRow.NivelRowByNivelRelacaoHierarquica, parentRhRow.NivelRowByNivelRelacaoHierarquicaUpper, connection);
					ParentNodes.AddRange(nodes);
				}

				// Neste ponto ParentNodes contém todos os nós a que um nó de nRow deverá ser adicionado
				foreach (TreeNode parentNode in ParentNodes)
				{
					node = FindTreeNodeByNivelRow(parentNode.Nodes, nRow);
					if (node == null)
					{
						node = new GISATreeNode(Nivel.GetDesignacao(nRow));
						//node.Tag = rhRow
						node.NivelRow = nRow;
						node.NivelUpperRow = nUpperRow;
						string data = FormatYearsInterval(node.RelacaoHierarquicaRow);
						if (data.Length > 0)
						{
							node.Text = string.Format("{0}   {1}", node.Text, data);
						}
						if (nRow.CatCode.Trim().Equals("CA"))
						{
							node.ImageIndex = SharedResourcesOld.CurrentSharedResources.NivelImageControloAut(System.Convert.ToInt32(TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(node.RelacaoHierarquicaRow).GUIOrder));
						}
						else
						{
							node.ImageIndex = SharedResourcesOld.CurrentSharedResources.NivelImageBase(System.Convert.ToInt32(TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(node.RelacaoHierarquicaRow).GUIOrder));
						}
						node.SelectedImageIndex = node.ImageIndex;
						parentNode.Nodes.Add(node);
					}
					result.Add(node);
				}
			}
			return result;
		}
Exemple #21
0
        private void SeleccaoActual(out GISADataset.NivelRow NivelRow, out GISADataset.TipoNivelRelacionadoRow TnrRow)
        {
            //Obter selecção actual
            GISATreeNode selectedNode = null;

            GISADataset.NivelRow nRow                  = null;
            GISADataset.NivelRow nUpperRow             = null;
            GISADataset.RelacaoHierarquicaRow   rhRow  = null;
            GISADataset.TipoNivelRelacionadoRow tnrRow = null;

            // Estas variaveis identificam o contexto definido pelo breadcrumbspath da vista documental
            // (só são usadas quando a vista actual é a documental)
            GISADataset.NivelRow nRowBC                  = null;
            GISADataset.NivelRow nUpperRowBC             = null;
            GISADataset.RelacaoHierarquicaRow   rhRowBC  = null;
            GISADataset.TipoNivelRelacionadoRow tnrRowBC = null;

            if (this.mPanelToggleState == ToggleState.Estrutural)
            {
                //vista estrutural
                if (mEPFilterMode)
                {
                    var selItem = this.nivelEstruturalList1.SelectedItems.FirstOrDefault();
                    if (selItem != null)
                    {
                        nRow = selItem.Tag as GISADataset.NivelRow;
                    }
                }
                else
                {
                    selectedNode = (GISATreeNode)this.controloNivelListEstrutural1.SelectedNode;
                    if (selectedNode != null && !(selectedNode.NivelRow.RowState == DataRowState.Detached))
                    {
                        nRow      = selectedNode.NivelRow;
                        nUpperRow = selectedNode.NivelUpperRow;
                    }
                }
            }
            else
            {
                //vista documental
                if (!(this.nivelDocumentalListNavigator1.SelectedItems.Count == 0))
                {
                    nRow = (GISADataset.NivelRow)(this.nivelDocumentalListNavigator1.SelectedItems[0].Tag);
                }

                if (nRow != null && !(nRow.RowState == DataRowState.Detached))
                {
                    nUpperRow = nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].NivelRowByNivelRelacaoHierarquicaUpper;
                }
            }

            if (nRow != null && !(nRow.RowState == DataRowState.Detached) && nUpperRow == null)
            {
                if (this.mPanelToggleState == ToggleState.Estrutural && this.mEPFilterMode)
                {
                    rhRow  = nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().FirstOrDefault();
                    tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);
                }
                else
                {
                    tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(null);
                }
            }
            else if (nUpperRow != null && !(nUpperRow.RowState == DataRowState.Detached) && nRow != null && !(nRow.RowState == DataRowState.Detached))
            {
                if (this.mPanelToggleState == ToggleState.Estrutural)
                {
                    rhRow = selectedNode.RelacaoHierarquicaRow;
                    // excluimos desta forma as relacoes hirarquicas entretanto eliminadas (as que seriam NULL mas cujo nó respectivo teria um NivelUpper)
                    if (selectedNode.NivelUpperRow != null && rhRow != null)
                    {
                        tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);
                    }
                }
                else
                {
                    //Documental
                    if (nRow != null)
                    {
                        DataRow[] rhRows = GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", nRow.ID.ToString(), nUpperRow.ID.ToString()));
                        // A relação pode ter desaparecido por algum motivo (ie, concorrencia).
                        if (rhRows.Length > 0)
                        {
                            rhRow  = (GISADataset.RelacaoHierarquicaRow)(rhRows[0]);
                            tnrRow = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow);
                        }
                    }
                    if (nRowBC != null && nUpperRowBC != null)
                    {
                        DataRow[] rhRowBCs = GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", nRowBC.ID.ToString(), nUpperRowBC.ID.ToString()));
                        // A relação pode ter desaparecido por algum motivo (ie, concorrencia).
                        if (rhRowBCs.Length > 0)
                        {
                            rhRowBC  = (GISADataset.RelacaoHierarquicaRow)(rhRowBCs[0]);
                            tnrRowBC = TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRowBC);
                        }
                    }
                }
            }

            NivelRow = nRow;
            TnrRow   = tnrRow;
        }