示例#1
0
  // atualiza os dados gerias do automato
  protected void refresh() {
    // modelo de combobox para os estados existentes
    DefaultComboBoxModel<Estado> modelcb = new DefaultComboBoxModel<>();
    // modelo para a tabela de estados
    Object[][] o = new Object[a.getEstados().size()][2];
    int i = 0; // variavel para indicar a posi__o da linha na matriz
    for (Estado e : a.getEstados()) {
      modelcb.addElement(e);
      // se for incinicial aparece ->, se for final aparece (F), se for ambos, (F)->
      o[i][0] = (e.isFinal() ? "(f)" : "") + "" + (e.equals(a.getInicial()) ? "->" : "");
      o[i][1] = e.getNome();
      i++;
    }
    cbEstadosDestinos.setModel(modelcb);
    tblEstados.setModel(new DefaultTableModel(o, new String[] {"", ""}));

    // modelo para combox de simbolos do alfabeto
    DefaultComboBoxModel modelsim = new DefaultComboBoxModel();
    modelsim.addElement('E');
    for (char c : a.getAlfabeto()) {
      modelsim.addElement(c);
    }
    cbAlfabeto.setModel(modelsim);

    // atualiza o modelo texto do automato
    textArea.setText(a.toString());
    // atualiza o modelo gr_fico do automato
    painelView.repaint();
  }
示例#2
0
 public void selecionaEstadoAtual(Estado e) {
   if (e == null) {
     return; // n_o executa se o novo estado for nulo
   }
   atual = e; // atualiza o estado atual
   lblNewLabel.setText("Detalhes de : " + atual.getNome()); // atualiza o seu nome
   cbisFinal.setSelected(atual.isFinal()); // atualiza se _ inicial
   refreshTrans();
 }
示例#3
0
 // chamado no evento do bot_o novo
 private void novoEstado() {
   Estado novo = new Estado(isfinal.isSelected(), ("q" + a.getEstados().size()));
   a.getEstados().add(novo);
   if (criarInicial) { // seta como inicial se for inicial
     a.setInicial(novo.getNome());
     criarInicial = false; // n_o deixa mais criar estados iniciais
   }
   JPanelEstado p = new JPanelEstado(novo, this); // cria a visualiza__o gr_fica
   // colocam o visualizador no painel
   painelView.add(p);
   painelView.repaint();
   refresh();
 }
示例#4
0
  private void removerTransicao() {
    if (atual == null) {
      return; // n_o executa se o estado atual for nulo
    }
    if (tblTrans.getSelectedRow() == -1) {
      return; // se n_o houve uma sele__o efetiva, n_o executa
    } // deleta a transi__o
    atual
        .getTransicoes()
        .remove((Character) atual.getTransicoes().keySet().toArray()[tblTrans.getSelectedRow()]);
    // pega o simbolo-chave do array de chaves conforme o indice da linha selecionada da tabela

    refreshTrans();
  }
示例#5
0
 private void turnFinal() {
   if (atual == null) {
     return; // n_o executa se o estado atual for nulo
   }
   atual.setFinal(cbisFinal.isSelected()); // torna final o estado atual
   refresh();
 }
示例#6
0
 // atualiza os dados das transi__es do estado selecionado
 protected void refreshTrans() {
   if (atual == null) {
     return; // n_o executa se o estado atual for nulo
   }
   Object[][] o = new Object[atual.transicoes.size()][2];
   int i = 0;
   for (char c : atual.getTransicoes().keySet()) {
     o[i][0] = c;
     o[i][1] = atual.getTransicoes().get(c);
     i++;
   }
   tblTrans.setModel(new DefaultTableModel(o, new String[] {"Simbolo", "Estado(s) Destino(s)"}));
   // atualiza o modelo texto do automato
   textArea.setText(a.toString());
   // atualiza o modelo gr_fico do automato
   painelView.repaint();
 }
示例#7
0
 private void excluirEstado() {
   if (a.getInicial().equals(atual)) {
     return; // n_o deixa excluir se for inicial
   }
   a.deletarEstado(atual.getNome()); // deleta estado atual
   refreshEstados();
   refresh();
   refreshTrans();
 }
示例#8
0
 private void novaTransicao() {
   if (atual == null) {
     return; // n_o executa se o estado atual for nulo
   }
   Character c = (Character) cbAlfabeto.getSelectedItem(); // pega o simbolo a ser usado
   String estadoDestino =
       ((Estado) cbEstadosDestinos.getSelectedItem())
           .getNome(); // pega o nome do estado a ser usado
   if (a.newTransicao(atual.getNome(), c + "", estadoDestino)) { // cria a nova transi__o
     refresh();
     refreshTrans();
   }
 }