• Nenhum resultado encontrado

3.1.1 Implementação em forma de tabela

Após estudo e análise sobre a criação de uma tabela num módulo Eclipse, foi decidido usar a Interface de Programação de Aplicações (API) SWT/JFace (SWT, Standard Widget Toolkit) para a criação deste módulo. Entre outras API estudadas estavam a Swing e a AWT (Abstract Window Toolkit), no entanto, a SWT/JFace vem integrada com o IDE Eclipse, apresenta estabilidade e contém as ferramentas necessárias para o objetivo pretendido. Exemplos dessas ferramentas são a existência de ferramentas para a criação de tabelas, com diferentes tipos de edição de células na mesma tabela, permite a formatação das células, a ordenação, a configuração de navegabilidade pela tabela, entre outras. Como referido, na perspetiva do Eclipse existem dois tipos de módulos: módulos do tipo visual e módulos do tipo editor. Para a criação deste plug-in optou-se por um módulo do tipo visual. Esta escolha deve-se a vários fatores: o módulo visual permitir uma edição gráfica mais versátil; esse tipo de módulo permitir uma separação mais simples dos módulos dos editores (que é um objetivo referido na introdução deste capítulo); e também, porque não se pretende que o Editor de Variáveis tenha uma versão temporária de edição antes de ser gravada (denominada em inglês por “dirty state”), isto é, pretende-se que as alterações nas variáveis sejam imediatamente gravadas. Desta forma, o tipo de módulo visual é o que mais se enquadra neste desenvolvimento.

Para a criação do módulo do Editor de Variáveis foi criado o plug-in VarTableEditor. Neste plug-in foram desenvolvidas classes para criarem a tabela, as variáveis, e permitirem os comportamentos e funcionalidades que são pretendidos.

Para permitir que outros plug-ins possam chamar o Editor de Variáveis foi criada a extensão com a identificação (id) “pt.up.fe.iec61131.views.VarTableEditor”, que quando é ativada chama a classe VarTableEditor, existente no plug-in. Esta classe é responsável pela criação de um módulo visual do Eclipse, pelo que estende a classe abstrata ViewPart, que é uma base para a implementação dos módulos visuais do Workbench.

Uma das diferenças entre o módulo tipo visual e o módulo tipo editor é que neste último o módulo fica associado a um ficheiro. No módulo optado essa associação não é feita, pelo que a classe VarTableEditor é responsável por obter a informação relativa ao ficheiro que é passada na extensão. Com esta informação, a classe usa o nome do ficheiro para editar o texto que aparece no separador do módulo, para uma identificação visual dessa associação.

Editor de Variáveis 41

Por fim, a classe VarTableEditor chama a classe VarTable, passando-lhe também a informação do ficheiro.

A classe VarTable é responsável pela criação da parte gráfica do módulo, pela criação da tabela, pela criação dos botões de interação para adicionar e apagar variáveis e pela interligação com todas as funcionalidades e ações do módulo.

Decidiu-se criar uma tabela com o número de colunas correspondentes ao número de elementos e atributos possíveis de uma variável. Foram assim criadas treze colunas: as cinco primeiras colunas correspondem respetivamente ao nome, endereço, tipo de dado, valor inicial e tipo de variável; da sexta à décima segunda são colunas em que a informação corresponde aos atributos que a variável poderá ter (ser retentiva, não retentiva, constante, ser detetada na subida de flanco, ser detetada na descida de flanco, ser apenas de leitura ou ser de leitura e de escrita); por fim, a última coluna permite a inserção de um comentário ou observação à variável. De todas as colunas apenas três são de inserção obrigatória, sendo estas as respeitantes ao nome7, tipo de dado e tipo de variável; todas as restantes são

opcionais e podem ser desabilitadas consoante a situação, seguindo assim a definição da norma. Todas as colunas têm uma largura pré-definida, porém o utilizador poderá ajustá-la de forma livre. É também nesta classe que é definido que cada linha é uma variável, como já referido na apresentação da interface.

Uma decisão que foi tomada também na criação desta classe é se a tabela teria um comportamento “preguiçoso” (do inglês lazy), isto é, se a informação da tabela seria apenas carregada em memória, quando fosse necessária para apresentar no ecrã; ou se teria um comportamento direto e assim que seja aberta uma tabela carregaria toda a informação. Uma vez que o Editor de Variáveis, de forma geral, será usado para um número reduzido de variáveis, quando comparado com a capacidade de processamento e memória dos sistemas atuais, foi decidido usar o comportamento direto. Esta decisão poderá influenciar o tempo de abertura e o tempo de edição e de adição ou remoção de variáveis. No entanto, permite uma navegabilidade mais rápida por todos os elementos da tabela, mesmo que haja muitos elementos que estejam fora da área visível, uma vez que já tem a informação carregada em memória, não necessita de carregar informação sempre que a tabela pretende mostrar informação que está fora da área visível.

Figura 3.6 - Ajuste da largura da coluna

7 A coluna respeitante ao nome pode não ter inserção, nos casos excecionais em que a variável em questão seja do tipo variável de acesso direto. Terá, assim, de ter inserção na coluna respeitante ao endereço e o tipo de variável tem de estar selecionado o tipo “VAR”.

42 Desenvolvimento

Nesta classe são também definidos os botões existentes no módulo de interação com a tabela. Foram criados dois botões: um primeiro botão com o objetivo de inserir na tabela uma nova linha com uma variável pré-editada contendo os dados obrigatórios; o segundo botão para apagar a linha selecionada.

Documentos relacionados