private void RefreshPreview(GISADataset.SFRDImagemRow imgRow)
        {
            Image  imagem          = null;
            string caminhoFicheiro = string.Empty;
            string outroParametro  = string.Empty;
            var    tipo            = TranslationHelper.FormatTipoAcessoTextToTipoAcessoEnum(imgRow.Tipo);

            try
            {
                switch (tipo)
                {
                case ResourceAccessType.Smb:
                    caminhoFicheiro = imgRow.SFRDImagemVolumeRow.Mount + imgRow.Identificador;
                    imagem          = ImageHelper.GetSmbImageResource(caminhoFicheiro);
                    ImageViewerControl1.UpdatePreviewImage(imagem, caminhoFicheiro, tipo);
                    break;

                case ResourceAccessType.Web:
                    caminhoFicheiro = imgRow.SFRDImagemVolumeRow.Mount + imgRow.Identificador;
                    imagem          = ImageHelper.GetWebImageResource(caminhoFicheiro);
                    ImageViewerControl1.UpdatePreviewImage(imagem, caminhoFicheiro, tipo);
                    break;

                case ResourceAccessType.DICAnexo:
                case ResourceAccessType.DICConteudo:
                    imagem = ImageHelper.GetDICImageResource(imgRow.Identificador, imgRow.SFRDImagemVolumeRow.Mount, tipo);
                    ImageViewerControl1.UpdatePreviewImage(imagem, imgRow.Identificador, imgRow.SFRDImagemVolumeRow.Mount, tipo);
                    break;
                }
            }
            catch (ImageHelper.UnretrievableResourceException ex) { Trace.WriteLine(ex.ToString()); }

            ImagemEscolhida             = imagem;
            ImageViewerControl1.Visible = true;
        }
        private void ViewToModel(ListViewItem item, string localizacao)
        {
            GISADataset.SFRDImagemRow imgRow = null;
            imgRow = (GISADataset.SFRDImagemRow)item.Tag;

            if (!(imgRow.Descricao.Equals(item.Text)))
            {
                imgRow.Descricao = item.Text;
            }

            if (localizacao != null)
            {
                imgRow.Tipo = localizacao;
            }

            if (!imgRow.IsIDSFDImagemVolumeNull())
            {
                // if the volume was changed then other volume entry should be used
                if (!(imgRow.SFRDImagemVolumeRow.Mount.Equals(item.SubItems[1].Text)))
                {
                    // find the intended volume or create one if it does not yet exist
                    // change imgRow.SFRDImagemVolumeRow to use it
                    imgRow.SFRDImagemVolumeRow = getImagemVolume(item.SubItems[1].Text);
                }
            }

            // if the filename was changed update it
            if (!(imgRow.Identificador.Equals(item.SubItems[2].Text)))
            {
                imgRow.Identificador = item.SubItems[2].Text;
            }
        }
 private void OpenFormImageViewer_action(object sender)
 {
     if (lstVwIndiceDocumento.SelectedItems.Count != 0)
     {
         GISADataset.SFRDImagemRow sfrdimg = (GISADataset.SFRDImagemRow)(lstVwIndiceDocumento.SelectedItems[0].Tag);
         if (ImagemEscolhida != null)
         {
             frmImgViewer                = new FormImageViewer();
             frmImgViewer.NextImage     += FormImageViewer_NextImage;
             frmImgViewer.PreviousImage += FormImageViewer_PreviousImage;
             frmImgViewer.Imagem         = ImagemEscolhida;
             frmImgViewer.Descricao      = sfrdimg.Descricao;
             if (lstVwIndiceDocumento.SelectedIndices.Count > 0)
             {
                 frmImgViewer.ToolBarButtonPreviousImage.Enabled = lstVwIndiceDocumento.SelectedIndices[0] > 0;
                 frmImgViewer.ToolBarButtonNextImage.Enabled     = lstVwIndiceDocumento.SelectedIndices[0] < lstVwIndiceDocumento.Items.Count - 1;
             }
             else
             {
                 frmImgViewer.ToolBarButtonPreviousImage.Enabled = false;
                 frmImgViewer.ToolBarButtonNextImage.Enabled     = false;
             }
             frmImgViewer.ShowDialog();
             frmImgViewer.NextImage     -= FormImageViewer_NextImage;
             frmImgViewer.PreviousImage -= FormImageViewer_PreviousImage;
             frmImgViewer.Dispose();
             frmImgViewer = null;
         }
     }
 }
        private void AddIndiceDocumento(string descricao, string caminhoFicheiro, string nomeFicheiro, ResourceAccessType tipoAcessoRecurso)
        {
            if ((tipoAcessoRecurso == ResourceAccessType.Smb || tipoAcessoRecurso == ResourceAccessType.Web) && !(ImageHelper.isValidImageResource(caminhoFicheiro + nomeFicheiro, tipoAcessoRecurso)))
            {
                return;
            }

            if ((tipoAcessoRecurso == ResourceAccessType.DICAnexo || tipoAcessoRecurso == ResourceAccessType.DICConteudo) && !(ImageHelper.isValidImageResource(caminhoFicheiro, nomeFicheiro, tipoAcessoRecurso)))
            {
                return;
            }

            GISADataset.SFRDImagemVolumeRow imgVolRow = getImagemVolume(caminhoFicheiro);

            long maxOrdem = GetImgMaxOrdem();

            GISADataset.SFRDImagemRow imgRow = null;
            imgRow = GisaDataSetHelper.GetInstance().SFRDImagem.AddSFRDImagemRow(CurrentFRDBase, maxOrdem + 1, TranslationHelper.FormatTipoAcessoEnumToTipoAcessoText(tipoAcessoRecurso), descricao, imgVolRow, nomeFicheiro, new byte[] { }, 0);

            ListViewItem item = null;

            item = lstVwIndiceDocumento.Items.Add(descricao);
            item.SubItems.Add(caminhoFicheiro);
            item.SubItems.Add(nomeFicheiro);
            item.Tag = imgRow;
        }
        public override void ViewToModel()
        {
            if (CurrentFRDBase == null || CurrentFRDBase.RowState == DataRowState.Detached || !IsLoaded)
            {
                return;
            }

            GisaDataSetHelper.ManageDatasetConstraints(false);

            // actualizar as "ordens"
            GISADataset.SFRDImagemRow imgRow = null;
            int ordem = 1;

            foreach (ListViewItem item in lstVwIndiceDocumento.Items)
            {
                imgRow = (GISADataset.SFRDImagemRow)item.Tag;

                imgRow.GUIOrder = ordem;
                ordem           = ordem + 1;
            }
            try
            {
                GisaDataSetHelper.ManageDatasetConstraints(true);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw ex;
            }
        }
        private void RefreshDetails()
        {
            ImageViewerControl1.BringToFront();
            if (lstVwIndiceDocumento.SelectedItems.Count != 1)
            {
                ClearPreview();
                return;
            }

            GISADataset.SFRDImagemRow imgRow = (GISADataset.SFRDImagemRow)(lstVwIndiceDocumento.SelectedItems[0].Tag);
            RefreshPreview(imgRow);
        }
        private void ControlerResize_action(object sender)
        {
            if (ImagemEscolhida == null || lstVwIndiceDocumento.SelectedItems.Count == 0)
            {
                return;
            }

            GISADataset.SFRDImagemRow imgRow = (GISADataset.SFRDImagemRow)(lstVwIndiceDocumento.SelectedItems[0].Tag);
            string caminhoFicheiro           = imgRow.SFRDImagemVolumeRow.Mount + imgRow.Identificador;

            ImageViewerControl1.UpdatePreviewImage(ImagemEscolhida, caminhoFicheiro, TranslationHelper.FormatTipoAcessoTextToTipoAcessoEnum(imgRow.Tipo));
        }
        private void FormImageViewer_NextImage(object sender, FormImageViewer.ImageViewerEventArgs e)
        {
            // make sure an item is seleted and that there is a next item to select
            if (lstVwIndiceDocumento.SelectedIndices.Count != 0 && lstVwIndiceDocumento.SelectedIndices[0] < lstVwIndiceDocumento.Items.Count - 1)
            {
                ListViewItem selItem = lstVwIndiceDocumento.Items[lstVwIndiceDocumento.SelectedIndices[0] + 1];
                GISADataset.SFRDImagemRow sfrdimg = (GISADataset.SFRDImagemRow)selItem.Tag;
                selItem.Selected = true;

                e.Imagem         = ImagemEscolhida;
                e.Descricao      = sfrdimg.Descricao;
                e.ExistsPrevious = true;
                e.ExistsNext     = (lstVwIndiceDocumento.SelectedIndices[0] < lstVwIndiceDocumento.Items.Count - 1);
            }
        }
        private void btnEdit_Click(object sender, EventArgs e)
        {
            if (lstVwIndiceDocumento.SelectedItems.Count == 1)
            {
                GISADataset.SFRDImagemRow imgRow = null;
                imgRow = (GISADataset.SFRDImagemRow)(lstVwIndiceDocumento.SelectedItems[0].Tag);

                FormImagem form = new FormImagem(CurrentFRDBase.IDNivel.ToString());
                form.Text      = "Alterar Imagem / Objeto Digital";
                form.Descricao = imgRow.Descricao;
                form.cbTipoAcessoRecurso.SelectedItem = imgRow.Tipo;
                if (imgRow.Tipo.Equals(TranslationHelper.FormatTipoAcessoEnumToTipoAcessoText(ResourceAccessType.DICAnexo)))
                {
                    form.NomeFicheiroDIP     = imgRow.Identificador;
                    form.NUDDIP              = imgRow.SFRDImagemVolumeRow.Mount;
                    form.ValidLocation       = form.NomeFicheiroDIP;
                    form.ValidLocationParams = form.NUDDIP;
                }
                else if (imgRow.Tipo.Equals(TranslationHelper.FormatTipoAcessoEnumToTipoAcessoText(ResourceAccessType.DICConteudo)))
                {
                    form.NUDDIP        = imgRow.Identificador;
                    form.ValidLocation = form.NUDDIP;
                }
                else
                {
                    form.Identificador = imgRow.SFRDImagemVolumeRow.Mount + imgRow.Identificador;
                    form.ValidLocation = form.Identificador;
                }

                Image currentImage     = null;
                Size  currentImageSize = new Size();
                Size  viewportSize     = new Size();
                currentImage = ImageViewerControl1.pictImagem.Image;

                if (currentImage != null)
                {
                    currentImageSize = currentImage.Size;
                    viewportSize     = form.ImageViewerControl1.grpImagem.Size;

                    Size  newSize = ImageHelper.getSizeSameAspectRatio(currentImageSize, viewportSize);
                    Image newImg  = FormImageViewer.resizeImage(currentImage, newSize);

                    form.ImageViewerControl1.pictImagem.Image = newImg;
                    form.ImageViewerControl1.pictImagem.Size  = form.ImageViewerControl1.grpImagem.Size;
                }

                if (form.ShowDialog() == DialogResult.OK)
                {
                    string identificador, descricao, caminho;
                    identificador = form.Identificador;
                    descricao     = form.Descricao;
                    caminho       = form.Identificador;

                    ListViewItem item = null;
                    item = lstVwIndiceDocumento.SelectedItems[0];
                    item.SubItems[0].Text = descricao;
                    item.SubItems[1].Text = getPathFromFullPath(caminho, form.TipoAcessoRecurso);
                    item.SubItems[2].Text = getFilenameFromFullPath(identificador, form.TipoAcessoRecurso);
                    ViewToModel(item, TranslationHelper.FormatTipoAcessoEnumToTipoAcessoText(form.TipoAcessoRecurso));
                    RefreshDetails();
                    RefreshButtonsState();
                }
            }
        }