Como implementar corretamente o MVC em Java com o Swing?

Se você quiser mais detalhes, por favor me avise, ou consulte as últimas linhas desta questão. Eu já li muito e sinto que estou transformando algo simples em algo complicado e ainda fico preso aqui e ali, então talvez você possa me ajudar nesses pontos muito específicos.

Estou usando o Netbeans IDE 7 e o JDK 7 e não há estruturas. A primeira janela é um JFrame e todas as outras janelas são JDialogs com modal = true.

Questões:

Como faço para implementar corretamente o padrão MVC com swing? Das idéias abaixo Qual é o melhor: (A) ou (B)? Ou talvez outro ... Por que é melhor?

(A) principal:

MyModel model
MyView view(model)

Minha visão:

MyController(this, model)

(B)
A Principal:

MyModel model
MyView View
MyController controller(view, model)

quando eu clico em jbutton1 no MainFrame eu preciso abrir o SettingsFrame para configurações de edição. onde devo instanciar o modo de exibição, o modelo e o controlador do SettingsFrame? No Controlador MainFrame?

Em termos de organização e implementação de MVC, como devo lidar com recursos mais específicos que (aparentemente) não possuem uma ou duas das "pernas" do MVC (Modelo ou Visualização ou Controlador)? Devo criar aulas vazias para eles?

a. The implementation of a TrayIcon
b. A URL connection class (an HttpsUrlConnection which will update data in the main jframe and also upload/download files)
c. A Directory Monitor (which will update data in the main jframe and also use the urlconnection to download a file)
d. My own implementation of TableModel
e. json

Como manter e usar corretamente um objeto com configurações em todo o aplicativo? Vou precisar de informações em locais diferentes (Views, Models, Controllers), mas isso pode ser alterado pelo usuário durante o tempo de execução). É uma boa ideia tornar este modelo um singleton?

O que devo fazer quando:

a. View needs some data from the Model? 
What I'm doing: using the reference of Model which I keep in the View
b. View needs some data from the Controller?
What I'm doing: using the reference of Controller which I keep in the View
c. Model needs some data from the Controller?
Still didn't happen but I have no idea how to do correctly
d. Model needs some data from the View?
What I'm doing: pulling all my hair from my head...
e. Controller needs some data from the View?
What I'm doing: using the reference of the View which I keep in the Controller
f. Controller needs some data from the Model?
What I'm doing: using the reference of the Model which I keep in the Controller
g. One of FooModel, FooView or FooController needs data from one of BarModel, BarView or BarController?
What I'm doing: thinking of jumping from the highest building...

Alguma dica de como saber se eu implementei o MVC corretamente? Devo processar dados massivos no modelo ou no controlador?

Eu também estou usando um DAO, o que estou fazendo é: meu modelo tem um

ArrayList MyModel load ()

método que cria uma instância do DAO e retorna o ArrayList de modelos retornados pelo DAO e, em seguida, às vezes eu processo esse ArrayList de modelos no modelo e às vezes eu permito que o controlador para processá-lo. Esta é uma boa prática ou existe uma maneira melhor? Por processo, quero dizer: iterar através da ArrayList e obter os dados dos modelos.

Eu tenho um PasswordCheck jDialog para restringir o acesso a alguns modos de exibição. Como posso reutilizá-lo em termos de MVC, para que eu possa usar o mesmo diálogo PasswordCheck para permitir / restringir o acesso a diferentes modos de exibição sem fazer uma confusão no código?

Alguma outra dica, dicas, idéias, sugestões?

Contexto: Eu sou obrigado a desenvolver um software Java Swing MVC em um curto espaço de tempo, embora por padrão eu não sou um desenvolvedor Java e não tão usado para implementar o padrão MVC, especialmente em Java (eu entendo a idéia, mas às vezes falta-me conhecimento para implementar o relacionamento entre classes). Os aplicativos são basicamente um monitor para arquivos locais / online com um JTable no quadro principal para mostrar esses dados. Eu estou usando o novo WatchService API para manter o controle dos arquivos locais e salvar suas informações em um banco de dados h2 usando um DAO e recarregá-los no quadro principal jtable. Eu também devo notificar o usuário sobre novos arquivos (que estou usando o TrayIcon). Para os arquivos on-line de monitoramento / upload / download estou usando HttpsUrlConnection e json. Também pode permitir a personalização das configurações.

Agradecemos antecipadamente pelo seu tempo e ajuda.

questionAnswers(1)

yourAnswerToTheQuestion