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