예제 #1
0
        private void DocumentoSimplesOrderManager1_NewInvoked(object sender, EventArgs e)
        {
            var frm    = new frmObjetoDigitalSimples();
            var result = frm.ShowDialog();

            if (result == DialogResult.Cancel)
            {
                return;
            }

            var odSimples = new ObjDigSimples();

            odSimples.pid             = "-1";
            odSimples.gisa_id         = "";
            odSimples.titulo          = frm.Titulo;
            odSimples.publicado       = frm.Publicado;
            odSimples.fich_associados = frm.imagens;
            odSimples.state           = State.added;

            var item = AddODSimplesToList(odSimples);

            DocumentoSimplesOrderManager1.addNewItem(item);

            UpdateODCompostoStatePublicado();
            UpdateGrpODComposto();
        }
예제 #2
0
        private void UpdateODCompostoStatePublicado()
        {
            if (mViewMode != ObjetoDigitalFedoraHelper.Contexto.objetosDigitais)
            {
                return;
            }

            chkPublicar.Checked = chkKeepODComposto.Checked ? DocumentoSimplesOrderManager1.Items().Where(item => item.Tag.GetType() == typeof(ObjDigSimples) && ((ObjDigSimples)item.Tag).state != State.deleted).Select(lvItem => lvItem.Tag as ObjDigSimples).FirstOrDefault(od => od.publicado) != null : false;
        }
예제 #3
0
        private void DocumentoSimplesOrderManager1_RemoveInvoked(object sender, EventArgs e)
        {
            var result = MessageBox.Show("Tem a certeza que pretende apagar o(s) objeto(s) digital(ais) selecionado(s)?", "Apagar objeto(s) digital(ais)", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.No)
            {
                return;
            }

            // TODO: avisar se existem ods associadados a subdocumentos

            var odsSimples = new List <ObjDigSimples>();

            if (mCurrentODComp != null)
            {
                odsSimples = mCurrentODComp.objSimples;
            }
            else
            {
                odsSimples = mCurrentODSimples;
            }

            DocumentoSimplesOrderManager1.getSelectedItems().ForEach(item =>
            {
                var selectedODSimples = item.Tag as ObjDigSimples;
                var odSimples         = odsSimples.SingleOrDefault(od => od.pid.Equals(selectedODSimples.pid));
                if (odSimples != null) // se OD está com o estado "added" basta removê-lo da lista; caso contrário é necessário atualizá-lo
                {
                    odSimples.state = State.deleted;
                }

                var nRow = FedoraHelper.GetRelatedNivelDoc(selectedODSimples.pid);
                if (nRow != null)
                {
                    DocumentoSimplesOrderManager1.RefreshItem(item, "", null, "");
                    var docSimples        = new SubDocumento();
                    docSimples.nRow       = nRow;
                    docSimples.id         = nRow.ID;
                    docSimples.guiorder   = item.Index + 1;
                    docSimples.designacao = nRow.GetNivelDesignadoRows().Single().Designacao;
                    item.Tag = docSimples;
                }
                item.Remove();
            });

            UpdateODCompostoStatePublicado();
            UpdateGrpODComposto();

            if (DocumentoSimplesOrderManager1.getSelectedItems().Count == 1 && DocumentoSimplesOrderManager1.getSelectedItems()[0].Tag.GetType() == typeof(SubDocumento))
            {
                DocumentoSimplesOrderManager1.SetEditMixedMode();
            }
        }
예제 #4
0
        // o método tem que indicar se houveram alterações na ordem de objetos digitais, se foram acrescentados objetos digitais ou eliminados e se mudou a ordem de algum subdocumento
        private void UpdateObjectsList(ref List <ObjDigSimples> odsSimples, out bool hasChanges)
        {
            hasChanges = false;
            // identificar os ods simples apagados para depois serem adicionados no final da lista para permitir a re-ingestão do composto e atualizar as datarows respetivas
            var odsDeleted = new List <ObjDigSimples>();

            odsDeleted.AddRange(odsSimples.Where(od => od.state == State.deleted));

            // verificar se houve alteração na ordem somente entre os objetos digitais
            var objsDig = DocumentoSimplesOrderManager1.Items().Where(i => i.Tag.GetType() == typeof(ObjDigSimples)).Select(i => i.Tag as ObjDigSimples).ToList();

            if (objsDig.Count != odsSimples.Count || odsDeleted.Count > 0)
            {
                odsSimples.Clear();
                odsSimples.AddRange(objsDig);
                odsSimples.AddRange(odsDeleted);
                hasChanges = true;
            }
            else
            {
                for (int i = 0; i < objsDig.Count; i++)
                {
                    var objSimples = objsDig[i];
                    if (objSimples.pid != odsSimples[i].pid)
                    {
                        odsSimples[i] = objSimples as ObjDigSimples;
                        hasChanges    = true;
                    }
                }
            }

            // actualizar a ordem tendo em conta objetos digitais e subdocumentos sem objeto digital
            var odSimples = default(ObjDigSimples);
            var subDoc    = default(SubDocumento);

            foreach (var item in DocumentoSimplesOrderManager1.Items())
            {
                var newOrder = item.Index + 1;

                if (item.Tag.GetType() == typeof(ObjDigSimples))
                {
                    odSimples          = (ObjDigSimples)item.Tag;
                    odSimples.guiorder = newOrder;
                }
                else if (item.Tag.GetType() == typeof(SubDocumento))
                {
                    subDoc          = (SubDocumento)item.Tag;
                    subDoc.guiorder = newOrder;
                }
            }
        }
예제 #5
0
        private void UpdateGrpODComposto()
        {
            if (mViewMode != ObjetoDigitalFedoraHelper.Contexto.objetosDigitais)
            {
                return;
            }

            chkKeepODComposto.Checked = CurrentODComp != null;
            chkKeepODComposto.Enabled = (CurrentODComp != null && DocumentoSimplesOrderManager1.Items().Count >= 2) || (CurrentODComp == null && DocumentoSimplesOrderManager1.Items().Count >= 2);
            txtTitulo.Enabled         = chkKeepODComposto.Checked;

            if (CurrentODComp != null && DocumentoSimplesOrderManager1.Items().Count < 2)
            {
                chkKeepODComposto.Checked = false;
            }
        }
예제 #6
0
        private void DocumentoSimplesOrderManager1_EditInvoked(object sender, EventArgs e)
        {
            if (DocumentoSimplesOrderManager1.getSelectedItems().Count != 1)
            {
                return;
            }

            var item      = DocumentoSimplesOrderManager1.getSelectedItems().Single();
            var odSimples = item.Tag as ObjDigSimples;

            if (odSimples.state != State.added && odSimples.original == null)
            {
                odSimples.original = odSimples.Clone();
            }

            var frm = new frmObjetoDigitalSimples();

            frm.Titulo    = odSimples.titulo;
            frm.Publicado = odSimples.publicado;
            frm.imagens.Clear();
            frm.imagens.AddRange(odSimples.fich_associados);
            frm.objSimples = odSimples;
            var currentCursor = this.Cursor;

            this.Cursor = Cursors.WaitCursor;
            try { frm.Populate(); }
            catch (Exception ex) { Trace.WriteLine(ex.ToString()); }
            finally { this.Cursor = currentCursor; }


            var result = frm.ShowDialog();

            if (result == DialogResult.Cancel)
            {
                return;
            }

            UpdateObjSimples(mCurrentODComp, odSimples, frm.imagens, frm.Titulo, frm.Publicado);
            DocumentoSimplesOrderManager1.RefreshItem(item, odSimples.titulo, odSimples.publicado, odSimples.state == State.added ? "" : odSimples.pid);

            UpdateODCompostoStatePublicado();
            UpdateGrpODComposto();
        }
예제 #7
0
        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");
        }
예제 #8
0
        private ListViewItem AddODSimplesToList(ObjDigSimples objSimples)
        {
            var hasReadPermission = true;

            if (objSimples.state != State.added)
            {
                hasReadPermission = FedoraHelper.HasObjDigReadPermission(objSimples.pid);
            }

            var item = DocumentoSimplesOrderManager1.CreateItem(FedoraHelper.GetDesignacaoUI(objSimples.pid), objSimples.titulo, objSimples.state == State.added ? "" : objSimples.pid, objSimples.publicado, objSimples);

            // marcar os objetos simples para os quais não existe permissão de leitura
            if (!hasReadPermission)
            {
                item.ForeColor = Color.Gray;
            }

            if (objSimples.state == State.notFound)
            {
                item.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, FontStyle.Italic, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
            }

            return(item);
        }
예제 #9
0
 private void DocumentoSimplesOrderManager1_FullScreenInvoked(object sender, EventArgs e)
 {
     // Verificar o contexto, mostrar ou não full screen mode
     ShowFullScreenMode(DocumentoSimplesOrderManager1.Items(), DocumentoSimplesOrderManager1.getSelectedItems().Count > 0 ? DocumentoSimplesOrderManager1.getSelectedItems().First().Index : -1);
 }
예제 #10
0
        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;
            }
        }
예제 #11
0
 private ListViewItem AddDocSimplesToList(SubDocumento docSimples)
 {
     return(DocumentoSimplesOrderManager1.CreateItem(docSimples.designacao, "", "", null, docSimples));
 }
예제 #12
0
        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;
            }
        }