Prezados,
fiz uma modificação no módulo de painel do SGA, para adequá-lo às necessidades da instituição onde trabalho. Como esta modificação pode ser útil para outros e dentro do espírito do software livre, a compartilho.
Trata-se da inclusão, na parte de baixo do painel, de um histórico das últimas chamadas (aparecem cerca de três).
Tendo em vista o prazo que tinha (1 dia), que me dava pouco tempo para testes, procurei intervir o mínimo possível no código fonte original. A mudança, portanto, é básica e pode ser bastante melhorada. O que foi feito:
- alteração na forma de determinar o fator multiplicador, tomando a altura da tela como referência, em vez da largura;
- adição de um novo label para guardar o histórico de chamadas;
- mudança nas relações de tamanho, "espremendo" os elementos do painel, de forma a liberar espaço para o label de histórico.
Esclareço que a fiz a mudança para atender a necessidades específicas da instituição a qual pertenço e, seguindo os termos da Licença Pública Geral GNU, a fiz na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. Ela acompanha o código fonte do SGA.
Para aplicar a mudança, deve-se:
- fazer uma cópia do código fonte a ser alterado - o do módulo painel do SGA Livre;
- aplicar as mudanças indicadas pela saída do comando diff, transcrita abaixo;
- compilar o código alterado, gerando a versão modificada do arquivo executável painel.jar.
Abaixo, a saída do comando diff aplicado ao arquivo Web.java, do módulo painel. Minha versão é identificada por local/sgalivre-painel-colab enquanto a versão oficial é identificada por oficial/trunk/painel :
$ diff local/sgalivre-painel-colab/src/br/gov/dataprev/userinterface/Web.java oficial/trunk/painel/src/br/gov/dataprev/userinterface/Web.java 79d78 < private JLabel lHistorico = new JLabel(); 193c192 < this.setMultiplicador(height); --- > this.setMultiplicador(width); 255c254 < this.lServ.setBounds(15, 10, width, 120); --- > this.lServ.setBounds(15, 10, width, 130); 269c268 < degradeBack.setBounds(0, (int) ((double) 130 * this.multiplicador), width, (int) ((double) 250 * this.multiplicador)); --- > degradeBack.setBounds(0, (int) ((double) 140 * this.multiplicador), width, (int) ((double) 260 * this.multiplicador)); 275c274 < linha1.setBounds(0, (int) ((double) 127 * this.multiplicador), width, 4); --- > linha1.setBounds(0, (int) ((double) 137 * this.multiplicador), width, 4); 279c278 < linha2.setBounds(0, (int) ((double) 380 * this.multiplicador), width, 4); --- > linha2.setBounds(0, (int) ((double) 400 * this.multiplicador), width, 4); 283c282 < this.lMesa.setBounds(2, (int) ((double) 400 * this.multiplicador), (int) ((double) 800 * this.multiplicador), (int) ((double) 150 * this.multiplicador)); --- > this.lMesa.setBounds(2, (int) ((double) 458 * this.multiplicador), (int) ((double) 1024 * this.multiplicador), (int) ((double) 180 * this.multiplicador)); 289c288 < tamNum = 100 * this.multiplicador; --- > tamNum = 150 * this.multiplicador; 302c301 < tamLetra = (int) (54 * this.multiplicador); --- > tamLetra = (int) (74 * this.multiplicador); 304c303 < this.lNumMesa.setBounds(this.vl, (int) ((double) 400 * this.multiplicador), (int) ((double) 800 * this.multiplicador), (int) ((double) 150 * this.multiplicador)); --- > this.lNumMesa.setBounds(this.vl, (int) ((double) 438 * this.multiplicador), (int) ((double) 1024 * this.multiplicador), (int) ((double) 180 * this.multiplicador)); 306,312d304 < < // Histórico de chamados. < lHistorico = new JLabel("??"); < lHistorico.setBounds(2, (int)(520 * multiplicador), (int)(800 * multiplicador), (int)(120 * multiplicador)); < lHistorico.setFont(new Font(Web.FONT_NAME, Font.BOLD, (int)(50 * multiplicador))); < this.painel.add(lHistorico); < 428,442d419 < // Guardar senha anterior no histórico. < String history = lHistorico.getText(); < if (_numeroGuiche.equals("000")) { // nenhuma senha chamada ainda. < lHistorico.setText(".."); < } else if (history.equals("..")) { // primeira senha chamada. < lHistorico.setText(""); < } else { // senhas subsequentes chamadas. < history = lSenha.getText() + "(" + lNumMesa.getText() + ")_" + lHistorico.getText(); < if (history.length() > 23) history = history.substring(0, history.substring(0, 23).lastIndexOf(')') + 1) + "-"; < lHistorico.setText(history); < } < < LOG.fine("Exibindo senha: " + _msgEspecial + " " + _senha + " - " + _guiche + " " + _numeroGuiche); < LOG.fine("Histórico: " + lHistorico.getText()); < 561d537 < lHistorico.setForeground(confLayout.getCorSenha()); 594c570 < private void setMultiplicador(double medida) --- > private void setMultiplicador(double width) 596c572 < this.multiplicador = medida / 600.0; --- > this.multiplicador = width / 800.0;
Espero que seja útil.
Autor: Jonas de Araújo Luz Jr.
7373 comentários
Altere a linha: sig_serv = rset.getString("sig_senha").charAt(0); para: sig_serv = rset.getString("sig_senha");
Salve as mudanças Agora abra neste mesmo pacote o arquivo GerenciadorPaineis.java e vá até o método despacharSenha(int idUnidade...) Modifique o tipo do parâmetro sig-serv de char para String.
Salve as mudanças. Agora no pacote br.gov.dataprev.controladorpainel.enviados abra o arquivo SenhaMsg.java: Altere o tipo da constante _codServ de char para String.
Altere o tipo do parametro codServ de char para String.
No método writeDataTo(ByteBuffer buf), substitua a linha buf.put((byte) _codServ); por: ServerMsg.writeString(buf, _codServ);
Salve as alterações. Exporte o novo arquivo controladorpaineis.jar e substitua o original. (Por questão de segurança, faça um backup do antigo, caso seja necessário voltá-lo.). Reinicie seu controlador de paineis. Agora o controlador de paineis ja está enviando sua sigla com mais de um caracter para o painel, porém seu painel ainda não é capaz de fazer esta leitura, por isso, vamos modificar o painel: Modificando o painel. Abra o arquivo UDPListener que se encontra no pacote br.gov.dataprev.userinterface: Vá até o método leMessageSenha(...) e modifique a linha: char charServico = (char) UDPListener.leByte(buf); para String strServico = UDPListener.leString(buf);
Salve as mudanças. No mesmo pacote, abra o arquivo Web.java Vá até o construtor SenhaPainel(...) e modifique o tipo do parâmetro charServico de char para String.
Salve as mudanças. Exporte o novo arquivo painel.jar e substitua o original. (Por questão de segurança, faça um backup do antigo, caso seja necessário voltá-lo.). Reinicie o painel. Pronto, o SGA Livre já é capaz de exibir dois ou mais caracteres no painel de senhas... Espero que seja útil.
Pedro R. Junior
Analista de Sistemas/Defensoria Pública de Sergipe