Package com.sevenrtc.aas.ui

Source Code of com.sevenrtc.aas.ui.PrincipalFrame

package com.sevenrtc.aas.ui;

import com.sevenrtc.aas.db.DAO;
import com.sevenrtc.aas.shared.Constantes;
import com.sevenrtc.aas.shared.Contas;
import com.sevenrtc.aas.shared.Contextos;
import com.sevenrtc.aas.shared.Relatorios;
import com.sevenrtc.aas.entidades.Contexto;
import com.jgoodies.looks.plastic.PlasticXPLookAndFeel;
import com.sevenrtc.aas.ui.helper.ImageLoader;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyVetoException;
import java.text.ParseException;
import javax.swing.*;
import javax.swing.table.TableColumnModel;

/**
* Janela principal do programa com uma barra lateral e um menu que garantem
* acesso a toda funcionalidade do programa
* <p>
* Janelas de relatorio foram implementadas como
* {@link javax.swing.JInternalFrame} e sao chamadas dentro do desktop. Janelas
* de funcionalidade como Plano de contas e lancamentos foram implementadas como
* {@link javax.swing.JDialog}.
*
* @author Anthony Accioly
*
*/
public class PrincipalFrame extends JFrame {

  private static JDesktopPane desktop = new JDesktopPane();

  private static final long serialVersionUID = 8190651983388786307L;

  /**
   * @return the desktop
   */
  public static Dimension getDesktopSize() {
    return desktop.getSize();
  }

  /**
   * Metodo principal da classe
   *
   * @param args
   *            o conjunto de argumentos passados como parametro
   */
  public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {
      public void run() {
        try {
          UIManager.setLookAndFeel(new PlasticXPLookAndFeel());
          new PrincipalFrame().setVisible(true);

        } catch (Exception e) {
          e.printStackTrace();
        }

      }
    });

  }

  private JMenuBar barraDeMenu = new JMenuBar();

  private BorderLayout borderLayout2 = new BorderLayout();

  private JButton botaoBalancete = new JButton();

  private JButton botaoBalanco = new JButton();

  private JButton botaoDiario = new JButton();

  private JButton botaoDRE = new JButton();

  private JButton botaoLancamento = new JButton();

  private JButton botaoPlanoDeContas = new JButton();

  private JButton botaoRazao = new JButton();

  private GridLayout gridLayout1 = new GridLayout();

  private ButtonGroup grupoMenuEmpresas = new ButtonGroup();

  private JMenu menuAbrirEmpresa = new JMenu();

  private JMenu menuAcoes = new JMenu();

  private JMenu menuAjuda = new JMenu();

  private JMenu menuArquivo = new JMenu();

  private JMenuItem menuBalancete = new JMenuItem();

  private JMenuItem menuBalanco = new JMenuItem();

  private JMenuItem menuDiario = new JMenuItem();

  private JMenuItem menuDRE = new JMenuItem();

  private JMenuItem menuItemSair = new JMenuItem();

  private JMenuItem menuItemSobre = new JMenuItem();

  private JMenuItem menuLancamento = new JMenuItem();

  private JMenuItem menuNovaEmpresa = new JMenuItem();

  private JMenuItem menuOrganizarEmpresas = new JMenuItem();

  private JMenuItem menuPlanoDeContas = new JMenuItem();

  private JMenuItem menuRazao = new JMenuItem();

  private JMenu menuRelatorios = new JMenu();

  private JPanel painelEsquerdo = new JPanel();

  private JScrollPane scrollMenu = new JScrollPane();

  /**
   * Construtor principal da classe
   *
   */
  public PrincipalFrame() {
    try {
      jbInit();
      this.setLocationRelativeTo(null);
      this.setIconImage(ImageLoader.abrirImagem("/images/aas.png", "Icone AAS")
          .getImage());
      this.setFuncoesDisponiveis(false);
      updateMenuAbrirEmpresas();
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  /** Abre a janela de about */
  private void abrirAbout() {
    new AboutDialog(this);
  }

  /** Abre o relatorio de balancete dentro de uma frame interna */
  private void abrirBalancete() {
    // Cria o titulo da janela de relatorio
    String titulo = "BALANCETE DE VERIFICAÇÃO EM ";
    try {
      titulo += Constantes.getFormatterData().valueToString(
          Constantes.getDataDeHoje());
    } catch (ParseException e1) {
      e1.printStackTrace();
    }
    // Cria a janela de relatorio com titulo e subtitulo
    RelatorioTableTituloDialog b = new RelatorioTableTituloDialog(titulo, Contextos
        .getNomeEmpresa(), Relatorios.BALANCETE);
    // Chama o relatorio de balancete
    b.getTabelaResultados().setModel(Relatorios.balancete());

    // Seta o tamanho e os formatadores (renderes) das colunas
    {
      TableColumnModel cm = b.getTabelaResultados().getColumnModel();
      cm.getColumn(0).setPreferredWidth(100);
      cm.getColumn(1).setPreferredWidth(250);
      cm.getColumn(2).setPreferredWidth(100);
      cm.getColumn(2).setCellRenderer(Constantes.getRendererValor());
      cm.getColumn(3).setPreferredWidth(100);
      cm.getColumn(3).setCellRenderer(Constantes.getRendererValor());
    }

    // Cria frame interna
    JInternalFrame jan = b.createInternalFrame("Balancete de Verificação ("
        + Contextos.getNomeEmpresa() + ")");

    // Adiciona-a ao desktop
    desktop.add(jan);
    try {
      // Maxima e seleciona a frase atual
      jan.setMaximum(true);
      jan.setSelected(true);
    } catch (PropertyVetoException e1) {
      e1.printStackTrace();
    }
  }

  /** Abre o relatorio de balanco dentro de uma frame interna */
  private void abrirBalanco() {
    // Cria o titulo da janela de relatorio
    String titulo = "BALANÇO PATRIMONIAL EM  ";
    try {
      titulo += Constantes.getFormatterData().valueToString(
          Constantes.getDataDeHoje());
    } catch (ParseException e1) {
      e1.printStackTrace();
    }

    // Cria a janela de relatorio com titulo e subtitulo
    RelatorioTableTituloDialog b = new RelatorioTableTituloDialog(titulo, Contextos
        .getNomeEmpresa(), Relatorios.BALANCO);
    // Chama o relatorio do balanco
    b.getTabelaResultados().setModel(Relatorios.balanco());

    // Seta o tamanho e os formatadores (renderes) das colunas
    {
      TableColumnModel cm = b.getTabelaResultados().getColumnModel();
      cm.getColumn(0).setPreferredWidth(350);
      cm.getColumn(1).setPreferredWidth(100);
      cm.getColumn(1).setCellRenderer(Constantes.getRendererValor());
    }
    JInternalFrame jan = b.createInternalFrame("Balanço Patrimonial ("
        + Contextos.getNomeEmpresa() + ")");
    desktop.add(jan);
    try {
      jan.setMaximum(true);
      jan.setSelected(true);
    } catch (PropertyVetoException e1) {

    }
  }

  /** Abre o Livro Diario dentro de uma frame interna */
  private void abrirDiario() {
    RelatorioTableTituloDialog d = new RelatorioTableTituloDialog("LIVRO DIÁRIO", "",
        Relatorios.LIVRO_DIARIO);
    d.getTabelaResultados().setModel(Relatorios.livroDiario());
    // Seta o tamanho e os formatadores (renderes) das colunas
    {
      TableColumnModel cm = d.getTabelaResultados().getColumnModel();

      cm.getColumn(0).setCellRenderer(
          Constantes.getRendererCentralizado());
      cm.getColumn(1).setCellRenderer(Constantes.getRendererData());
      cm.getColumn(3).setCellRenderer(
          Constantes.getRendererCentralizado());
      cm.getColumn(4).setCellRenderer(Constantes.getRendererValor());
      cm.getColumn(5).setCellRenderer(Constantes.getRendererValor());

      cm.getColumn(0).setPreferredWidth(50);
      cm.getColumn(1).setPreferredWidth(80);
      cm.getColumn(2).setPreferredWidth(200);
      cm.getColumn(3).setPreferredWidth(85);
      cm.getColumn(4).setPreferredWidth(100);
      cm.getColumn(5).setPreferredWidth(100);

    }
    JInternalFrame jan = d.createInternalFrame("Livro Diário ("
        + Contextos.getNomeEmpresa() + ")");
    desktop.add(jan);
    try {
      jan.setMaximum(true);
      jan.setSelected(true);
    } catch (PropertyVetoException e1) {

    }
  }

  /** Abre o DRE dentro de uma frame interna */
  private void abrirDRE() {
    // Cria o titulo da janela de relatório
    String titulo = "DEMONSTRAÇÃO DE RESULTADO DO EXERCÍCIO EM ";
    try {
      titulo += Constantes.getFormatterData().valueToString(
          Constantes.getDataDeHoje());
    } catch (ParseException e1) {
      e1.printStackTrace();
    }
    // Cria a janela de relatorio com titulo e subtitulo
    RelatorioTableTituloDialog d = new RelatorioTableTituloDialog(titulo, Contextos
        .getNomeEmpresa(), Relatorios.DRE);
    // Chama o relatório de balancete
    d.getTabelaResultados().setModel(Relatorios.DRE());

    // Seta o tamanho e os formatadores (renderes) das colunas
    {
      TableColumnModel cm = d.getTabelaResultados().getColumnModel();
      cm.getColumn(0).setPreferredWidth(300);
      cm.getColumn(1).setCellRenderer(Constantes.getRendererRightAlign());
      cm.getColumn(1).setPreferredWidth(100);
    }

    // Cria frame interna
    JInternalFrame jan = d.createInternalFrame("DRE ("
        + Contextos.getNomeEmpresa() + ")");
    ;
    // Adiciona-a ao desktop
    desktop.add(jan);
    try {
      // Maxima e seleciona a frase atual
      jan.setMaximum(true);
      jan.setSelected(true);
    } catch (PropertyVetoException e1) {
      e1.printStackTrace();
    }
  }

  /** Abre a janela de lançamentos */
  private void abrirLancamento() {
    new LancamentosFrame(this);
  }

  /** Abre a janela do plano de contas */
  private void abrirPlanoDeContas() {
    new PlanoDeContasDialog(this);
  }

  /** Abre o livro razao dentro de uma frame interna */
  private void abrirRazao() {
    JInternalFrame jan = new RazaoDialog().createInternalFrame();
    desktop.add(jan);
    try {
      jan.setMaximum(true);
      jan.setSelected(true);
    } catch (PropertyVetoException e1) {

    }
  }

  /**
   * Adiciona uma empresa ao menu abrirEmpresas
   *
   * @param c
   *            empresa a ser adicionada
   * @param checked
   *            se a empresa deve comecar selecionada ou nao
   */
  private void adicionarMenu(final Contexto c, boolean checked) {
    final String nomeMenu = c.getId() + " - " + c.getEmpresa();
    JRadioButtonMenuItem menuItem = new JRadioButtonMenuItem(nomeMenu);
    menuItem.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        Contextos.setContextoAtual(c.getId());
        Contextos.setNomeEmpresa(c.getEmpresa());
        Contas.updateContas();
        setFuncoesDisponiveis(true);
      }

    });
    grupoMenuEmpresas.add(menuItem);
    menuAbrirEmpresa.add(menuItem);
    menuItem.setSelected(checked);

  }

  /**
   * Metodo que inicializa os componentes da janela principal
   *
   * @throws Exception
   *             Caso a GUI não possa ser inicializada
   */
  private void jbInit() throws Exception {
    this.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        sair();
      }

    });

    {
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      this.setSize((int) (screenSize.width * 0.8),
          (int) (screenSize.height * 0.8));

    }

    this.getContentPane().setLayout(borderLayout2);
    this.setTitle("Alliance Accounting System ");
    this.setJMenuBar(barraDeMenu);
    menuArquivo.setText("Arquivo");
    menuArquivo.setMnemonic('q');
    menuItemSair.setText("Sair");
    menuItemSair.setMnemonic('S');
    menuItemSair.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        sair();
      }
    });
    painelEsquerdo.setLayout(gridLayout1);
    painelEsquerdo.setActionMap(new ActionMap());
    painelEsquerdo.setBounds(new Rectangle(0, 0, 91, 300));
    painelEsquerdo.setAlignmentX((float) 0.0);
    painelEsquerdo.setAlignmentY((float) 0.0);
    botaoLancamento.setText("Lançamentos");
    botaoLancamento.setMargin(new Insets(1, 10, 1, 10));
    botaoLancamento.setToolTipText("Abrir Janela de Lancamento");
    botaoLancamento.setMnemonic('L');
    botaoLancamento.setAlignmentY((float) 0.0);
    botaoLancamento.setHorizontalTextPosition(SwingConstants.CENTER);
    botaoLancamento.setVerticalTextPosition(SwingConstants.BOTTOM);
    botaoLancamento.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirLancamento();
      }
    });
    botaoPlanoDeContas.setText("Plano de Contas");
    botaoPlanoDeContas.setToolTipText("Editar Plano de Contas");
    botaoPlanoDeContas.setMnemonic('c');
    botaoPlanoDeContas.setMargin(new Insets(1, 10, 1, 10));
    botaoPlanoDeContas.setVerticalTextPosition(SwingConstants.BOTTOM);
    botaoPlanoDeContas.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirPlanoDeContas();
      }
    });
    desktop.setLayout(null);
    menuAjuda.setText("Ajuda");
    menuAjuda.setMnemonic('J');
    menuItemSobre.setText("Sobre...");

    menuItemSobre.setMnemonic('s');
    menuItemSobre.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirAbout();
      }
    });

    menuOrganizarEmpresas.setText("Organizar Empresas...");
    menuOrganizarEmpresas.setMnemonic('o');
    menuOrganizarEmpresas.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        menuOrganizarEmpresas_actionPerformed();
      }
    });
    menuBalancete.setText("Balancete de Verificação");
    menuBalancete.setMnemonic('v');
    menuBalancete.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirBalancete();
      }
    });
    menuBalanco.setText("Balanço Patrimonial");
    menuBalanco.setMnemonic('b');
    menuBalanco.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirBalanco();
      }
    });
    menuDRE.setText("Demonstração de Resultado");
    menuDRE.setMnemonic('e');
    menuDRE.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirDRE();
      }
    });
    menuDiario.setText("Livro Diário");
    menuDiario.setMnemonic('d');
    menuDiario.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirDiario();
      }
    });
    menuRazao.setText("Livro Razão");
    menuRazao.setMnemonic('r');
    menuRazao.setDisplayedMnemonicIndex(6);
    menuRazao.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirRazao();
      }
    });
    menuRelatorios.setText("Relatórios");
    menuRelatorios.setMnemonic('r');
    menuLancamento.setText("Efetuar Lancamento...");
    menuLancamento.setMnemonic('l');
    menuLancamento.setToolTipText("null");
    menuLancamento.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirLancamento();
      }
    });
    menuPlanoDeContas.setText("Editar Plano de Contas...");
    menuPlanoDeContas.setMnemonic('c');
    menuPlanoDeContas.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirPlanoDeContas();
      }
    });
    menuAcoes.setText("Ações");
    menuAcoes.setMnemonic('A');
    menuNovaEmpresa.setText("Nova Empresa...");
    menuNovaEmpresa.setMnemonic('n');
    menuNovaEmpresa.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        novaEmpresa();
      }
    });
    menuAbrirEmpresa.setText("Abrir Empresa");
    menuAbrirEmpresa.setMnemonic('A');
    botaoDRE.setText("DRE");
    botaoDRE.setToolTipText("Abrir Demonstração de Resultado do Exercício");
    botaoDRE.setMnemonic('e');
    botaoDRE.setVerticalTextPosition(SwingConstants.BOTTOM);
    botaoDRE.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirDRE();
      }
    });
    gridLayout1.setRows(7);
    gridLayout1.setColumns(1);
    botaoBalanco.setText("Balanço Patrimonial");
    botaoBalanco.setToolTipText("Abrir Balanço Patrimonial");
    botaoBalanco.setVerticalTextPosition(SwingConstants.BOTTOM);
    botaoBalanco.setMnemonic('p');
    botaoBalanco.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirBalanco();
      }
    });
    botaoDiario.setText("Livro Diário");
    botaoDiario.setToolTipText("Abrir o Livro Diário");
    botaoDiario.setVerticalTextPosition(SwingConstants.BOTTOM);
    botaoDiario.setMnemonic('D');
    botaoDiario.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirDiario();
      }
    });
    botaoBalancete.setText("Balancete");
    botaoBalancete.setMargin(new Insets(1, 10, 1, 10));
    botaoBalancete.setVerticalTextPosition(SwingConstants.BOTTOM);
    botaoBalancete.setMnemonic('b');
    botaoBalancete.setToolTipText("Abrir o Balancete de Verificação");
    botaoBalancete.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirBalancete();
      }
    });
    botaoRazao.setText("Livro Razão");
    botaoRazao.setToolTipText("Abrir o Livro Razão");
    botaoRazao.setVerticalTextPosition(SwingConstants.BOTTOM);
    botaoRazao.setMnemonic('z');
    botaoRazao.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        abrirRazao();
      }
    });

    menuArquivo.add(menuNovaEmpresa);
    menuArquivo.add(menuAbrirEmpresa);
    menuArquivo.add(menuOrganizarEmpresas);
    menuArquivo.addSeparator();
    menuArquivo.add(menuItemSair);

    barraDeMenu.add(menuArquivo);
    menuAjuda.add(menuItemSobre);
    menuAcoes.add(menuLancamento);
    menuAcoes.add(menuPlanoDeContas);
    barraDeMenu.add(menuAcoes);
    menuRelatorios.add(menuBalancete);
    menuRelatorios.add(menuBalanco);
    menuRelatorios.add(menuDRE);
    menuRelatorios.add(menuDiario);
    menuRelatorios.add(menuRazao);
    barraDeMenu.add(menuRelatorios);
    barraDeMenu.add(menuAjuda);
    painelEsquerdo.add(botaoLancamento, null);
    painelEsquerdo.add(botaoPlanoDeContas, null);
    painelEsquerdo.add(botaoBalancete, null);
    painelEsquerdo.add(botaoBalanco, null);
    painelEsquerdo.add(botaoDRE, null);
    painelEsquerdo.add(botaoDiario, null);
    painelEsquerdo.add(botaoRazao, null);
    scrollMenu.add(painelEsquerdo);
    scrollMenu.setViewportView(painelEsquerdo);
    this.getContentPane().add(scrollMenu, BorderLayout.WEST);
    this.getContentPane().add(desktop, BorderLayout.CENTER);

  }

  /** Metodo acionado quando o usuario deseja organizar as empresas do banco */
  private void menuOrganizarEmpresas_actionPerformed() {
    EdicaoContextosDialog cx = new EdicaoContextosDialog(this);
    if (cx.beenModified()) {
      // update nos menus
      this.updateMenuAbrirEmpresas();
      // Se contextos foram excluidos
      if (!cx.getExcluded().isEmpty()) {
        // Desativa funcoes de frames dinamicas
        for (JInternalFrame f : desktop.getAllFrames()) {
          String ti = f.getTitle();
          // Percorre os contextos excluidos
          for (Contexto c : cx.getExcluded()) {
            // E desativa funcoes das janelas dinamicas
            if (ti.equals("Livro Razão (" + c.getEmpresa() + ")")) {
              f.getContentPane().getComponent(5)
                  .setVisible(false);
              f.getContentPane().getComponent(6)
                  .setEnabled(false);

            } // fim do if
            // Seta o titulo das janelas
            if (ti.endsWith("(" + c.getEmpresa() + ")"))
              f.setTitle("[Excluído] " + ti);
          } // fim do for interno
        } // fim do for externo
      } // fim do if excluded

      // Se o contexto atual foi excluido
      if (cx.atualBeenExcluded()) {
        // Desabilita funcionalidades
        this.setFuncoesDisponiveis(false);
        Contextos.setContextoAtual(-1);
      }
      // Caso contrario
      else if (Contextos.getContextoAtual() != -1) {
        // Seta como selecionada a empresa aberta anteriormente
        for (Component c : menuAbrirEmpresa.getMenuComponents()) {
          JRadioButtonMenuItem r = (JRadioButtonMenuItem) c;
          if (r.getText().startsWith(
              "" + Contextos.getContextoAtual())) {
            r.setSelected(true);
            Contextos.setNomeEmpresa(r.getText().substring(
                r.getText().indexOf('-') + 2));

          } // fim do if interno
        } // fim do for
      } // fim do else
    } // fim do if modified

  } // fim do metodo

  /** Método acionado quando deseja-se criar uma nova empresa */
  private void novaEmpresa() {
    String nomeEmpresa = JOptionPane.showInputDialog(this,
        "Entre com o nome da empresa:", "Nova empresa",
        JOptionPane.PLAIN_MESSAGE);
    if (nomeEmpresa != null && !nomeEmpresa.equals("")) {
      Contexto empresa = new Contexto(0, nomeEmpresa);

      Contexto.store(empresa);
      Contextos.add(empresa);
      Contextos.setContextoAtual(empresa.getId());
      Contextos.setNomeEmpresa(empresa.getEmpresa());
      Contas.updateContas();
      adicionarMenu(empresa, true);
      this.setFuncoesDisponiveis(true);
    }
  }

  /** Método executado quando o usuário sai do programa * */
  private void sair() {
    DAO.shutdown();
    System.exit(0);
  }

  /**
   * Dita se os relatórios, plano de contas e lançamentos podem ou não ser
   * acessados (não podem ser acessados quando nenhuma empresa está aberta)
   *
   * @param disponivel
   *            verdadeiro para ativar as funções para o usuario
   */
  private void setFuncoesDisponiveis(boolean disponivel) {
    botaoBalancete.setEnabled(disponivel);
    botaoRazao.setEnabled(disponivel);
    botaoDiario.setEnabled(disponivel);
    botaoBalanco.setEnabled(disponivel);
    botaoDRE.setEnabled(disponivel);
    botaoLancamento.setEnabled(disponivel);
    botaoPlanoDeContas.setEnabled(disponivel);
    menuAcoes.setEnabled(disponivel);
    menuRelatorios.setEnabled(disponivel);
  }

  /** Faz o update do menu de Empresas * */
  private void updateMenuAbrirEmpresas() {
    Contextos.update();
    menuAbrirEmpresa.removeAll();
    for (Contexto c : Contextos.getContextos())
      adicionarMenu(c, false);

  }

}
TOP

Related Classes of com.sevenrtc.aas.ui.PrincipalFrame

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.