| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2004 09:28:41
|
escordeiro
Java Ninja
Membro desde: 20/08/2003 09:31:08
Mensagens: 257
Localização: Belo Horizonte
Offline
|
Há um bug na API java.util.prefs (bug nº 4772228 no Bug Database da Sun) rodando em Windows: como os métodos Preferences.userNodeForPackage(java.lang.Class) e Preferences.systemNodeForPackage(java.lang.class) utilizam o registro do Windows para guardar e recuperar as informações de preferências, programas rodando em contas de usuários sem privilégios de administrador não conseguem ler as preferências.
Como precisamos implementar preferências de usuário persistentes em um programa, implementamos uma classe XMLPreferences que faz exatamente o que a AbstractPreferences determina, utilizando a DTD definida pela Sun para preferências; usamos DOM para armazenar e recuperar preferências em arquivos XML, e escapar assim do registro.
Se alguém precisar da Preferences funcionando, manda um e-mail que eu repasso, ok? A implementação está meio vagabunda e precisa de melhoras, mas acho que é um bom começo.
[]'s
|
Flickr |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2004 10:43:55
|
Daniel Quirino Oliveira
Moderador
![[Avatar]](/images/avatar/846c260d715e5b854ffad5f70a516c88.png)
Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline
|
Nãããããooooo!!! Não comecem mais uma feira-livre aqui no fórum. escordeiro, por favor, se for possível, disponibilize o código aqui no fórum. Ou, melhor ainda, faça um mini-tutorialzinho descrevendo sua solução.
|
Daniel Quirino Oliveira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2004 11:12:45
|
escordeiro
Java Ninja
Membro desde: 20/08/2003 09:31:08
Mensagens: 257
Localização: Belo Horizonte
Offline
|
hahahahaha
Tranquilo, hoje mais tarde eu posto o código aqui, não tenho ele comigo.
[]'s
|
Flickr |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/03/2004 20:24:38
|
escordeiro
Java Ninja
Membro desde: 20/08/2003 09:31:08
Mensagens: 257
Localização: Belo Horizonte
Offline
|
Daniel Quirino Oliveira wrote:Nãããããooooo!!! Não comecem mais uma feira-livre aqui no fórum. escordeiro, por favor, se for possível, disponibilize o código aqui no fórum. Ou, melhor ainda, faça um mini-tutorialzinho descrevendo sua solução.
Daniel, um mini-tutorial não vai dar, mas acho que pelos comentários dá pra entender. A implementação está meio ruim e tem um método que nós não implementamos, mas para o básico está funcionando.
Temos duas classes para fazer o negócio funcionar: XMLPreferences, que é a implementação de Preferences propriamente dita, e PreferencesController, que é um Singleton que mantém o documento XML e permite o uso da XMLPreferences.
A PreferencesController faz um pequeno "desvio" do preferences original: ela é implementada de forma que a árvore de preferências tenha o nodo raiz, seus filhos sejam categorias de preferências, e os filhos das categorias sejam os valores de preferências propriamente ditos; só que esses valores são guardados na forma de duas keys - uma indica o tipo do valor, e a outra o valor do valor . Fizemos esse "desvio" para podermos criar uma interface dinâmica de preferências, que cria uma lista com as categorias e, quando clica-se em uma categoria da lista, um painel é aberto para exibir os valores de preferências. Só que, como cada tipo tem uma visão mais eficiente (como checkbox para boolean, caixinha para int e String e JColorChooser para cores), precisamos avaliar o tipo do valor durante a execução...
Disclaimer:
Aqueles nomes propriedades e categorias estáticas da classe PreferencesController fazem parte do nosso programa, mas estão aí apenas para exemplificar categorias e valores que utilizamos. Além disso, nem todos os tipos suportados por Preferences estão no PreferencesController...digamos que isso é pura preguiça .
Por favor, critiquem e comentem, acho que dá pra melhorar bastante esse código.
|
Flickr |
|
|
 |
|
|
|
|