private void LoadVersion(int version)
        {
            this.Cursor = Cursors.WaitCursor;
            var objSimples = mCurrentODSimples[0];

            if (version > 0)
            {
                // Mostrar versão historica (e bloquear alterações)
                ObjDigSimples VersaoObjectoDigital = (ObjDigSimples)SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(objSimples.pid, objSimples.historico[version].timestamp);
                FicheirosOrderManager1.Deactivate();
                ObjectToView(VersaoObjectoDigital);
                grpODTitleAndPub.Enabled = false;
                FicheirosOrderManager1.ActivateReadOnlyMode();
            }
            else
            {
                // Mostar versão original (desbloquear alterações)
                FicheirosOrderManager1.Deactivate();
                ObjectToView(objSimples);
                grpODTitleAndPub.Enabled = true;
                if (FedoraHelper.HasObjDigWritePermission(objSimples.pid))
                {
                    FicheirosOrderManager1.DeactivateReadOnlyMode();
                }
            }

            this.Cursor = Cursors.Default;
        }
        private void ObjectToView(ObjDigSimples objDigital)
        {
            txtTitulo.Text      = objDigital.titulo;
            chkPublicar.Checked = objDigital.publicado;

            var itemsToBeAdded = new List <ListViewItem>();

            objDigital.fich_associados.ForEach(f =>
            {
                var datastream = f as Anexo;
                var item       = FicheirosOrderManager1.CreateItem(datastream.url, datastream);
                itemsToBeAdded.Add(item);
            });

            if (itemsToBeAdded.Count > 0)
            {
                FicheirosOrderManager1.populateItems(itemsToBeAdded);
                FicheirosOrderManager1.selectFirst();
            }
        }
        public void Deactivate()
        {
            DocumentoSimplesOrderManager1.Deactivate();
            DocumentoSimplesOrderManager1.Visible = false;
            FicheirosOrderManager1.Deactivate();
            FicheirosOrderManager1.Visible = false;
            versionControl.Visible         = false;
            mViewMode         = ObjetoDigitalFedoraHelper.Contexto.nenhum;
            mCurrentODComp    = null;
            mCurrentODSimples = null;
            previewControl.Clear();
            newObjects.Clear();
            GUIHelper.GUIHelper.clearField(txtTitulo);
            GUIHelper.GUIHelper.clearField(chkPublicar);

            disableSave = false;

            // Garantir que apagamos os JPGs e PDFs (e TMPs) todos que possam ter sido descarregados durante este contexto
            ImageHelper.DeleteFilteredFiles("*.jpg");
            ImageHelper.DeleteFilteredFiles("*.tmp");
            ImageHelper.DeleteFilteredFiles("*.pdf");
        }
 private void FicheirosOrderManager1_AttachedFileAdded(object sender, System.EventArgs e)
 {
     grpODTitleAndPub.Enabled = FicheirosOrderManager1.Items().Count > 0;
 }
 private void FicheirosOrderManager1_AttachedFileDeleted(object sender, EventArgs e)
 {
     previewControl.Clear();
     grpODTitleAndPub.Enabled = FicheirosOrderManager1.Items().Count > 0;
 }
 private void FicheirosOrderManager1_FullScreenInvoked(object sender, EventArgs e)
 {
     // Verificar o contexto, mostrar ou não full screen mode
     ShowFullScreenMode(FicheirosOrderManager1.Items(), FicheirosOrderManager1.getSelectedItems().Count > 0 ? FicheirosOrderManager1.getSelectedItems().First().Index : -1);
 }
        private void OrderManagerSelectedIndexChangedEvent(object sender, BeforeNewSelectionEventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            try
            {
                if (sender == DocumentoSimplesOrderManager1)
                {
                    var item       = e.ItemToBeSelected;
                    var selectedOD = default(ObjDigital);
                    if (item != null && item.Tag != null)
                    {
                        selectedOD = item.Tag as ObjDigital;
                    }
                    else
                    {
                        // Limpar browser se nada estiver seleccionado
                        var items = DocumentoSimplesOrderManager1.getTrulySelectedItems();
                        if (items.Count != 1)
                        {
                            previewControl.Clear(true); DocumentoSimplesOrderManager1.updateToolBarButtons(); return;
                        }
                        selectedOD = items[0].Tag as ObjDigital;
                    }

                    if (selectedOD == null || (selectedOD != null && selectedOD.state == State.added))
                    {
                        previewControl.Clear(); DocumentoSimplesOrderManager1.updateToolBarButtons(); return;
                    }

                    if (!FedoraHelper.HasObjDigWritePermission(selectedOD.pid))
                    {
                        DocumentoSimplesOrderManager1.ActivateReadOnlyMode();
                    }
                    else
                    {
                        DocumentoSimplesOrderManager1.DeactivateReadOnlyMode();
                    }

                    if (FedoraHelper.HasObjDigReadPermission(selectedOD.pid))
                    {
                        previewControl.Clear(true);
                        previewControl.ShowPDF(selectedOD.pid);
                    }
                    else
                    {
                        previewControl.Clear(true);
                    }

                    if (disableSave)
                    {
                        DocumentoSimplesOrderManager1.DisableToolBar();
                    }
                }
                else if (sender == FicheirosOrderManager1)
                {
                    var item = e.ItemToBeSelected;
                    if (item != null && item.Tag != null)
                    {
                        previewControl.ShowAnexo(item.Tag as Anexo);
                    }
                    else
                    {
                        var items = FicheirosOrderManager1.getTrulySelectedItems();
                        if (items.Count != 1)
                        {
                            previewControl.Clear(true); return;
                        }

                        previewControl.ShowAnexo(items[0].Tag as Anexo);
                    }
                    FicheirosOrderManager1.updateToolBarButtons();
                }
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }
        public void ViewToModel()
        {
            if (mViewMode == ObjetoDigitalFedoraHelper.Contexto.objetosDigitais)
            {
                // neste modo não deveria haver qualquer mudança neste ponto
                if (disableSave)
                {
                    return;
                }

                if (mCurrentODComp == null)
                {
                    var hasChanges = false;
                    UpdateObjectsList(ref mCurrentODSimples, out hasChanges);

                    if (chkKeepODComposto.Checked && mCurrentODSimples.Count > 0)
                    {
                        mCurrentODComp       = new ObjDigComposto();
                        mCurrentODComp.state = State.added;
                        mCurrentODComp.pid   = "-1";
                        mCurrentODComp.objSimples.AddRange(mCurrentODSimples);
                        mCurrentODComp.titulo = mTitulo;
                        UpdateODSimplesParentTitle(mTitulo);
                        mCurrentODComp.publicado = chkPublicar.Checked;
                    }
                }
                else
                {
                    // actualizar ODs simples sem se considerar o OD Composto
                    var hasChanges = false;
                    UpdateObjectsList(ref mCurrentODComp.objSimples, out hasChanges);
                    if (hasChanges)
                    {
                        mCurrentODComp.state = State.modified;
                    }

                    mCurrentODComp.publicado = chkPublicar.Checked;

                    if (!chkKeepODComposto.Checked)
                    {
                        // foi decidido não manter o OD Composto
                        mCurrentODComp.state = State.deleted;
                        UpdateODSimplesParentTitle("");
                    }
                    else if (!mCurrentODComp.titulo.Equals(txtTitulo.Text))
                    {
                        mCurrentODComp.titulo = txtTitulo.Text;
                        mCurrentODComp.state  = State.modified;
                    }
                }
            }
            else if (mViewMode == ObjetoDigitalFedoraHelper.Contexto.imagens)
            {
                var items = FicheirosOrderManager1.Items();
                if (mCurrentODSimples.Count == 0)
                {
                    if (items.Count == 0)
                    {
                        return;
                    }
                    else
                    {
                        var odSimples = new ObjDigSimples();
                        odSimples.state = State.added;
                        odSimples.pid   = "-1";
                        odSimples.fich_associados.AddRange(items.Select(i => i.Tag as Anexo));
                        odSimples.nextDatastreamId = 1;
                        odSimples.gisa_id          = "-1";
                        odSimples.titulo           = txtTitulo.Text.Trim().Length == 0 ? mTitulo : txtTitulo.Text.Trim();
                        odSimples.publicado        = chkPublicar.Checked;

                        if (mCurrentODComp != null)
                        {
                            mCurrentODComp.state = State.modified;
                            // o objeto digital será adicionado ao composto no ModelToView do SlavePanelFedora
                            //mCurrentODComp.objSimples.Add(odSimples);
                        }

                        mCurrentODSimples = new List <ObjDigSimples>()
                        {
                            odSimples
                        };
                    }
                }
                else
                {
                    var odSimples = mCurrentODSimples[0];

                    if (items.Count == 0)
                    {
                        // objeto simples sem ficheiros
                        odSimples.state = State.deleted;
                        if (mCurrentODComp != null)
                        {
                            mCurrentODComp.state = ((ObjDigComposto)mCurrentODComp).objSimples.Count(od => od.state != State.deleted) > 1 ? State.modified : State.deleted;
                        }
                    }
                    else
                    {
                        // actualizar a ordem dos ficheiros dentro do objeto digital simples
                        var anexos = items.Select(i => i.Tag as Anexo).ToList();
                        UpdateObjSimples(mCurrentODComp, odSimples, anexos, txtTitulo.Text, chkPublicar.Checked);
                        // actualizar estado publicado do documento composto caso exista

                        if (mCurrentODComp != null)
                        {
                            mCurrentODComp.publicado = mCurrentODComp.objSimples.FirstOrDefault(od => od.publicado) != null;
                        }
                    }
                }
            }
        }
        public void ModelToView()
        {
            grpNiveisOrObjFed.Visible = true;

            if (mViewMode == ObjetoDigitalFedoraHelper.Contexto.objetosDigitais)
            {
                grpODTitleAndPub.Enabled = true;
                // configurar check que permite criar ou não um OD composto
                chkKeepODComposto.Visible = true;
                chkPublicar.Enabled       = false;

                txtTitulo.Text = mTitulo;

                // configurar lista de ODs
                DocumentoSimplesOrderManager1.Visible = true;

                var itemsToBeAdded = new List <ListViewItem>();
                if (mCurrentODComp != null)
                {
                    chkPublicar.Checked = mCurrentODComp.publicado;
                    mCurrentODComp.objSimples.ForEach(objSimples => itemsToBeAdded.Add(AddODSimplesToList(objSimples)));
                }
                else
                {
                    mCurrentODSimples.ForEach(objSimples => itemsToBeAdded.Add(AddODSimplesToList(objSimples)));
                }

                // adicionar os subdocumentos sem objeto digital à lista
                docSimplesSemOD.ForEach(docSimples =>
                {
                    if ((int)docSimples.guiorder - 1 < itemsToBeAdded.Count)
                    {
                        itemsToBeAdded.Insert((int)docSimples.guiorder - 1, AddDocSimplesToList(docSimples));
                    }
                    else
                    {
                        itemsToBeAdded.Add(AddDocSimplesToList(docSimples));
                    }
                });


                if (itemsToBeAdded.Count > 0)
                {
                    DocumentoSimplesOrderManager1.populateItems(itemsToBeAdded);
                    DocumentoSimplesOrderManager1.selectFirst();
                }

                if (itemsToBeAdded.Count(lvi => lvi.Tag.GetType() == typeof(ObjDigital) && ((ObjDigital)lvi.Tag).state == State.notFound) > 0)
                {
                    disableSave = true;
                    DocumentoSimplesOrderManager1.DisableToolBar();
                    grpODTitleAndPub.Enabled  = false;
                    chkKeepODComposto.Enabled = false;
                    MessageBox.Show("A unidade informacional selecionada tem associado(s) objeto(s) " + System.Environment.NewLine +
                                    "digital(ais) o(s) qual(ais) não foi possivel obter do repositório. " + System.Environment.NewLine +
                                    "Por esse motivo não será possível efetuar qualquer alteração nesta área. " + System.Environment.NewLine +
                                    "Contacte o administrador de sistemas.", "Objeto(s) digital(ais) não encontrado(s)", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else if (itemsToBeAdded.Count > 0 && itemsToBeAdded[0].Tag.GetType() == typeof(SubDocumento))
                {
                    DocumentoSimplesOrderManager1.SetEditMixedMode();
                }
                else
                {
                    DocumentoSimplesOrderManager1.updateToolBarButtons();
                }

                UpdateGrpODComposto();
            }
            else if (mViewMode == ObjetoDigitalFedoraHelper.Contexto.imagens)
            {
                chkKeepODComposto.Visible      = false;
                FicheirosOrderManager1.Visible = true;
                FicheirosOrderManager1.updateToolBarButtons();
                grpNiveisOrObjFed.Visible      = true;
                versionControl.Visible         = true;
                chkPublicar.Enabled            = true;
                txtTitulo.Enabled              = true;
                txtTitulo.Text                 = mTitulo;
                FicheirosOrderManager1.Enabled = true;
                versionControl.Enabled         = true;

                if (mCurrentODSimples.Count == 0)
                {
                    grpODTitleAndPub.Enabled = false;
                    versionControl.Reset();
                    versionControl.Enabled = false;
                    return;
                }

                var odSimples = mCurrentODSimples[0];
                txtTitulo.Text      = odSimples.titulo;
                chkPublicar.Checked = odSimples.publicado;

                if (!FedoraHelper.HasObjDigReadPermission(odSimples.pid))
                {
                    FicheirosOrderManager1.Enabled = false; return;
                }

                var itemsToBeAdded = new List <ListViewItem>();
                odSimples.fich_associados.ForEach(f =>
                {
                    var datastream = f as Anexo;
                    var item       = FicheirosOrderManager1.CreateItem(datastream.url, datastream);
                    itemsToBeAdded.Add(item);
                });

                versionControl.Load(odSimples);

                if (!FedoraHelper.HasObjDigWritePermission(odSimples.pid))
                {
                    FicheirosOrderManager1.ActivateReadOnlyMode();
                }
            }
            else
            {
                grpNiveisOrObjFed.Visible = false;
            }
        }