[RESOLVIDO]Abrir JinternalFrame a partir de JDialog

Boa Tarde Galera, sou iniciante em java e tenho essa duvida…
possuo um JFrame principal q nela abro JInternalFrames da seguinte maneira:

public void AbrirAtendimento(String numero) { if (numero == null) { System.out.println("Cancelou"); } else if (numero.equals("")) { System.out.println("Vazio"); } else { this.addTelaDesk(new Atendimento(numero)); } }

[code]public void addTelaDesk(JInternalFrame tela) {
for (JInternalFrame jInternalFrame : this.desktop.getAllFrames()) {
// se uma janela semelhante estiver aberta
if (jInternalFrame.getClass().toString().equalsIgnoreCase(tela.getClass().toString())) {
jInternalFrame.moveToFront(); // traz janela para frente para facilitar a escolha

            Object[] opções = {"Utilizar Aberta", "Abrir Nova"};
            int qst = JOptionPane.showOptionDialog(null, "Abrir uma nova janela ou utilizar a que ja esta aberta?",
                    "Janela duplicada",
                    JOptionPane.DEFAULT_OPTION,
                    JOptionPane.QUESTION_MESSAGE,
                    null,
                    opções,
                    opções[0]
            );
            // se utilizar a aberta retorna e não abre outra,
            // caso contrário sai do for e abre outra igual
            if (qst == 0) {
                jInternalFrame.dispose(); //fecha janela aberta
                this.desktop.add(tela); //adiciona na tela
                tela.setVisible(true); // seta visivel
                return;
            } else if (qst == 1) {
                break;
            }
        }
    }

    this.desktop.add(tela); //adiciona na tela
    tela.setVisible(true); // seta visivel
    this.cascade(); //coloca em cascata para deixar "pratico"
}

private void cascade() {
    JDesktopPane desk = this.desktop; // JDesktopPane
    int separation = 25; // distancia entre as janelas

    // Pega todos os frames e organiza, o ultimo fica mais em baido e mais pra cima
    int i = desk.getAllFrames().length; // quantidade de frames
    for (JInternalFrame f : desk.getAllFrames()) {
        f.setLocation(i * separation, i * separation);
        i--; //mutiplicador
    }
}[/code]

E em certo momento da aplicação abre um JDialog que eu gostaria que executasse esse metodo na classe principal, estou fazendo da seguinte maneira, mais da erro:

[code]
public static Principal principal;

public void AbrirAtendimento2(String numero) {
    principal.AbrirAtendimento(numero);
    dispose();
}[/code]

Por um evento na própria classe principal ele funciona normalmente, mais se vor tentar abrir o JInternalFrame pelo JDialog usando o codigo acima nao funciona.
agradeço
vlw

Galera pesquisando aqui consegui resolver minha duvida com o Video Abaixo.

[youtube]https://www.youtube.com/watch?v=g6OqIK5mlcc[/youtube]

Obrigado Alex Pereira pelo video e parabens pelas aulas.