package Editor.GUI; import Conversor.*; import Editor.GUI.Sobre.AboutThis; import Editor.GUI.Sobre.PortugolInfo; import Editor.GUI.CodeDocument.*; import Editor.GUI.Dialogo.Message; import Editor.Utils.*; import Editor.help.HelpFileName; import Editor.help.WWWHelpText; import Portugol.Language.Consola.ConsoleIO; import Portugol.Language.Criar.Intermediario; import Portugol.Language.Criar.NodeInstruction; import Portugol.Language.Analisador.Keyword; import Portugol.Language.Analisador.Simbolo; import Portugol.Language.Analisador.SymbolArray; import Portugol.Language.Analisador.SymbolComposto; import Portugol.Language.Analisador.SymbolObjeto; import Portugol.Language.Criar.BloqueClasse; import Portugol.Language.Criar.BloqueSubrutine; import Portugol.Language.Criar.InstanciaSubrutine; import Portugol.Language.Criar.SubrutinePlayer; import Portugol.Language.Utilitario.LanguageException; import Portugol.Language.Utilitario.RunListener; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.net.URL; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.JTextPane; import javax.swing.SwingUtilities; import javax.swing.Timer; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.text.Element; import javax.swing.text.SimpleAttributeSet; import javax.swing.UIManager; import javax.swing.plaf.basic.BasicTreeUI; /** * @author Augusto Bilabila(2011-2012) */ public class EditorCAlg extends javax.swing.JFrame implements Runnable, RunListener { public static String TITLE = "Compilador de Algoritmos"; public static String DATE = "22-01-2015"; public static String VERSION = "Versão:2.0 \t(c)Augusto Bilabila e David Silva Barrera"; //texto modificado private boolean textChanged = false; private static JFrame frameBusca = null; private static JFrame frameLine = null; private static JTextField texto_busca; private static JRadioButton desdeInicio, desdeAgora; private static JButton botao_buscaProximo; private static boolean verificaDesdeInicio = false; private static String previous = ""; // Variavel que sera acedida no envio de email public static String codigo = ""; // MetodoBusca busca = new MetodoBusca(); public ConsoleIO console; private ConsoleIO info; // gestor de ficheiros public FileManager fileManager; private ExemploAlgoritmo fileManager2; // propriedades do editor private EditorProperties editorProperties; private AlgoSyntaxHighlight txtCode; //ajuda da linguagem private WWWHelpText helpLang; // undo manager private MyUndoRedoManager urManager; //public RedoAction redoAction; //---------------------------- EXecucao do programa --------- private Thread autoExecute = null; private NodeInstruction currentDebugInstruction; private BloqueSubrutine bloque; //private SubrutinePlayer Player; private Intermediario intermediario; //----------------------------------------------------------- private UIManager.LookAndFeelInfo[] look; private String[] lookNome; private JMenu inserir = new JMenu("Auxílio de código"); private JMenu tipos = new JMenu("Tipo de dado"); private JMenu ed = new JMenu("Estrutura de dado"); private JMenu EC = new JMenu("Estrutura de controlo"); private JMenu ES = new JMenu("Estrutura de controlo"); private JMenu Edecisao = new JMenu("Decisão"); private JMenuItem se = new JMenuItem("Se"); private JMenuItem escolha = new JMenuItem("Escolha"); private JMenu Erepeticao = new JMenu("Repetição (Ciclos)"); private JMenuItem para = new JMenuItem("Para"); private JMenuItem enquanto = new JMenuItem("Enquanto"); private JMenuItem faca = new JMenuItem("Faça"); private JMenuItem repita = new JMenuItem("Repita"); private JMenu MT = new JMenu("Métodos"); private JMenuItem proc = new JMenuItem("Procedimento"); private JMenuItem func = new JMenuItem("Função"); private JMenuItem atrib = new JMenuItem("Atribuição"); private JMenuItem nlinha = new JMenuItem("Mudar de linha"); private JMenuItem tabul = new JMenuItem("Tabulação"); private JMenuItem selecionar, copiar, colar, cortar, ajuda, propriedade = new JMenuItem("Propriedade"); private JMenuItem escreva = new JMenuItem("Escreva"); private JMenuItem leia = new JMenuItem("Leia"); private JMenuItem mostre = new JMenuItem("Mostre"); private JMenuItem inteiro = new JMenuItem("Inteiro"); private JMenuItem real = new JMenuItem("Real"); private JMenuItem logico = new JMenuItem("Logico"); private JMenuItem literal = new JMenuItem("Literal"); private JMenuItem caracter = new JMenuItem("Caracter"); private JMenuItem registo = new JMenuItem("Registo"); private JMenu matriz = new JMenu("Matriz"); private JMenuItem matrizU = new JMenuItem("Uni-dimencional"); private JMenuItem matrizB = new JMenuItem("Bi-dimencional"); private JMenuItem matrizM = new JMenuItem("Multi-dimencional"); private JMenuItem exemplo1 = new JMenuItem("Exemplo de Algoritmos"); construirProgramaJava progJava; construirProgramaC progC; Calendario calend; DicasdoDia dica; private String descAlgo = ""; FormPropriedadeAlgol objeto_propriedade; private int ProgState; public EditorCAlg() { initComponents(); initMyComponents(); // ler o ficheiro por defeito //this.LerFicheiro(fileManager.getFileName()); InstanciaSubrutine.ClassSubrutineIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage( getClass().getResource("ClassSubrutineIcon.png"))); InstanciaSubrutine.GlobalSubrutineIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage( getClass().getResource("GlobalSubrutineIcon.png"))); SymbolObjeto.SymbolObjetoIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage( getClass().getResource("SymbolObjetoIcon.png"))); SymbolComposto.SymbolCompostoIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage( getClass().getResource("SymbolCompostoIcon.png"))); SymbolArray.SymbolArrayIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage( getClass().getResource("SymbolArrayIcon.png"))); Simbolo.SimboloIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage( getClass().getResource("SimboloIcon.png"))); } public EditorCAlg(String fileName) { initComponents(); initMyComponents(); // ler o ficheiro por defeito this.LerFicheiro(fileName); } private void initMyComponents() { ProgState = -1; new SubrutinePlayer(this); //Cria o player e assina o adapter btConverteC.setVisible(false); btConverteJava.setVisible(false); btEmail.setVisible(false); //maximizar a janela this.setExtendedState(MAXIMIZED_BOTH); //---------------- consola ------------------------ console = new ConsoleIO(); scrollMonitor.add(console); scrollMonitor.setViewportView(console); //-------------------------------------------------- fileManager = new FileManager(); fileManager2 = new ExemploAlgoritmo(); //----------- Propriedades do Editor -------------------- SetEditorProperties(); //------------------------ UNDO MANAGER ---------?????????????????? urManager = new MyUndoRedoManager(); TextPaneCode.getDocument().addUndoableEditListener(urManager); obj_RA = new Botoes_nav(); // classe com os metodos de avançar e retroceder obj_RA.tempo.start(); //------------------------------------------------------------------------- //---------------------------------------- info.setForeground(Color.BLUE); info.write(PortugolInfo.getInformation()); //--------------------------------------- MenuEditorCheckSyntax.setSelected(true); String txt = TextPaneCode.getText(); if (MenuEditorCheckSyntax.isSelected()) { txtCode = new AlgoCodeStyle(); } else { txtCode = new AlgoCodeBlank(); } editorProperties.SetProperty("sintax", MenuEditorCheckSyntax.isSelected() + ""); TextPaneCode.setStyledDocument(txtCode); // colorir sintaxe TextPaneCode.setText(txt); txtCode.clearTextBackground(); MenuEditorCheckSyntax.setVisible(false); menuMudarConsola.setVisible(false); //--------------------------------------- data_hora(); TextPaneCode.setText(descAlgo); ButtonProgramaRunOneStep.setVisible(false); ButtonProgramaParar.setVisible(false); TextPaneCode.addMouseListener( new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { jPopupMenu1.show(e.getComponent(), e.getX(), e.getY()); } } }); // cria o JPopupMenu jPopupMenu1 = new JPopupMenu(); selecionar = new JMenuItem("Selecionar Tudo"); selecionar.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { TextPaneCode.requestFocus(); TextPaneCode.selectAll(); } }); atrib.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe(" <- "); } }); //----------------------------------------------------------------------- nlinha.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe(" \\n "); } }); //----------------------------------------------------------------------- tabul.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("\\t"); } }); //--------------------------------------------------------------------- copiar = new JMenuItem("Copiar"); copiar.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { TextPaneCode.copy(); } }); //--------------------------------------------------------------------- colar = new JMenuItem("Colar"); colar.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { TextPaneCode.paste(); } }); //--------------------------------------------------------------------- cortar = new JMenuItem("Cortar"); cortar.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { TextPaneCode.cut(); } }); //--------------------------------------------------------------------- cortar = new JMenuItem("Cortar"); cortar.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { TextPaneCode.cut(); } }); //--------------------------------------------------------------------- escreva.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("escreva ( \" \" )"); } }); //--------------------------------------------------------------------- leia.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("leia variavel"); } }); //--------------------------------------------------------------------- mostre.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("mostre (\" \")"); } }); jButton3.setVisible(false); //-----------------------TIPOS----------------------------------------- inteiro.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent ev) { insereSintaxe("inteiro varI1, varI2"); } }); //--------------------------------------------------------------------- real.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("real varR1, varR2"); } }); //--------------------------------------------------------------------- logico.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("logico varL1, varL2"); } }); //--------------------------------------------------------------------- literal.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("literal varL <- \"\""); } }); caracter.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("caracter varC"); } }); //--------------------------------------------------------------------- registo.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("registo nome_registo\n //variaveis\nfimregisto"); } }); //--------------------------------------------------------------------- matrizU.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("tipo_dado nome_vector[dimensao] "); } }); //--------------------------------------------------------------------- matrizB.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("tipo_dado nome_matriz[linhas][colunas] "); } }); //--------------------------------------------------------------------- matrizM.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("tipo_dado nome_matriz[dimensao1][dimensao2][dimensao3][dimensao4][dimensaoN] "); } }); //========================= E.C ============================================ se.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("\tse ( condição ) entao\n" + "\t//instrucoes caso a condição seja verdadeira\n" + "\tsenao\n" + "\t//instrucoes caso a condição seja falsa\n" + "\tfimse "); } }); //------------------------------------------------------------------------- escolha.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("\tescolha ( expressão )\n" + "\t caso expressão1:\n" + "\t //comando1\n" + "\t caso expressão2:\n" + "\t //comando2\n" + "\t caso expressão3:\n" + "\t //comando3\n" + "\t caso expressãoN:\n" + "\t //comandoN\n" + "\t defeito:\n" + "\t //comando executado quando a expressão avaliada não se verifica nos casos acima\n" + "\tfimescolha "); } }); //------------------------------------------------------------------------- para.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("\tinteiro var \n" + "\tpara var de inic ate fim passo inc|dec\n" + "\t //comando\n" + "\tfimpara "); } }); //------------------------------------------------------------------------- enquanto.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("" + "\tenquanto ( condição ) faça\n" + "\t //comando\n" + "\tfimenquanto "); } }); //------------------------------------------------------------------------- faca.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("" + "\tfaça \n" + "\t //comando, executado enquanto a condição for verdadeira\n" + "\tenquanto ( condição )"); } }); //---------------------------------------------------------------------- repita.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("" + "\trepita \n" + "\t //comando, executado sempre que a condição for falsa\n" + "\tate ( condição )"); } }); //---------------------------------------------------------------------- proc.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("" + "procedimento nome ( tipo args ) \n" + " //comando\n" + "fimprocedimento"); } }); //---------------------------------------------------------------------- func.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { insereSintaxe("" + "funcao tipo nome ( tipo args ) \n" + " //comando\n" + "fimfuncao"); } }); //---------------------------------------------------------------------- exemplo1.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { menuExemploAlgoritmoActionPerformed(null); } }); //---------------------------------------------------------------------- propriedade.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { FormPropriedadeAlgol dialog = new FormPropriedadeAlgol(new javax.swing.JFrame(), true, fileManager.getFileName(), TextPaneCode.getHeight()); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { //System.exit(0); } }); dialog.setVisible(true); } }); //---------------------------------------------------------------------- jPopupMenu1.add(selecionar); jPopupMenu1.addSeparator(); jPopupMenu1.add(copiar); jPopupMenu1.add(colar); jPopupMenu1.add(cortar); jPopupMenu1.addSeparator(); Edecisao.add(se); Edecisao.add(escolha); Erepeticao.add(para); Erepeticao.add(enquanto); Erepeticao.add(faca); Erepeticao.add(repita); EC.add(Edecisao); EC.add(Erepeticao); MT.add(proc); MT.add(func); inserir.add(atrib); inserir.add(escreva); inserir.add(leia); inserir.add(mostre); inserir.add(nlinha); inserir.add(tabul); tipos.add(inteiro); tipos.add(real); tipos.add(logico); tipos.add(caracter); tipos.add(literal); inserir.add(tipos); // adiciona o menu com os tipos primitivos ed.add(matriz); ed.add(registo); matriz.add(matrizU); matriz.add(matrizB); matriz.add(matrizM); inserir.add(ed); // adiciona o menu de Estrutura de dados inserir.add(EC); // adiciona o menu de Estrutura de controlo inserir.add(MT); jPopupMenu1.add(inserir); jPopupMenu1.addSeparator(); jPopupMenu1.add(exemplo1); jPopupMenu1.addSeparator(); jPopupMenu1.add(propriedade); // fim menu // coloca uma figura na barra de título da janela URL url = this.getClass().getResource("logoCompAlg48.png"); Image imagemTitulo = Toolkit.getDefaultToolkit().getImage(url); this.setIconImage(imagemTitulo); // Aparencia por defeito aparencias(3); } public void insereSintaxe(String sintaxe) { int posicaoAtual = TextPaneCode.getCaret().getMark(); StringBuffer novoTexto = new StringBuffer(); novoTexto.append(TextPaneCode.getText().substring(0, posicaoAtual)); novoTexto.append(sintaxe); novoTexto.append(TextPaneCode.getText().substring(posicaoAtual)); TextPaneCode.setText(novoTexto.toString()); } public void aparencias(int valor) { try { look = UIManager.getInstalledLookAndFeels(); UIManager.setLookAndFeel(look[valor].getClassName()); SwingUtilities.updateComponentTreeUI(this); } catch (ClassNotFoundException ex) { Logger.getLogger(EditorCAlg.class.getName()).log(Level.SEVERE, null, ex); } catch (InstantiationException ex) { Logger.getLogger(EditorCAlg.class.getName()).log(Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { Logger.getLogger(EditorCAlg.class.getName()).log(Level.SEVERE, null, ex); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(EditorCAlg.class.getName()).log(Level.SEVERE, null, ex); } } public void SetEditorProperties() { editorProperties = new EditorProperties(); //-----------------------------MENU FICHEIRO -------------------- MenuFicheiroAberto1.setText(editorProperties.GetProperty("file1")); MenuFicheiroAberto2.setText(editorProperties.GetProperty("file2")); MenuFicheiroAberto3.setText(editorProperties.GetProperty("file3")); //----------------------------FONTE ---------------------------------- String fontName = editorProperties.GetProperty("fontName"); int size = Integer.parseInt(editorProperties.GetProperty("fontSize")); int style = 0; if (editorProperties.GetProperty("fontItalic").equalsIgnoreCase("true")) { style += Font.ITALIC; } if (editorProperties.GetProperty("fontBold").equalsIgnoreCase("true")) { style += Font.BOLD; } TextPaneCode.setFont(new Font(fontName, style, size)); //------------------------------------COR ------------------------------- int R = Integer.parseInt(editorProperties.GetProperty("backColorR")); int G = Integer.parseInt(editorProperties.GetProperty("backColorG")); int B = Integer.parseInt(editorProperties.GetProperty("backColorB")); txtCode.defaultBackGround = new Color(R, G, B); TextPaneCode.setBackground(new Color(R, G, B)); //------------------------ SISTEMA DE COR DO EDITOR --------- MenuEditorCheckSyntax.setState(editorProperties.GetProperty("sintax").equalsIgnoreCase("true")); MenuEditorCheckSyntaxActionPerformed(null); } public void SelectErrorLine(int numChar) { txtCode.esDebug = false; txtCode.selectErrorLine(numChar); TextPaneCode.setCaretPosition(numChar); } public void SelectDebugLine(int numChar) { txtCode.esDebug = true; txtCode.selectErrorLine(numChar); TextPaneCode.setCaretPosition(numChar); txtCode.esDebug = false; } // public void SelectCodeLine(int numChar) { // txtCode.selectCodeLine(numChar); // TextPaneCode.setCaretPosition(numChar); // } public void DeSelectLine(int numChar) { txtCode.deSelectCodeLine(numChar); } /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// public void SelectTabUnderEditor(int index) { this.tpUnderCodeEditor.setSelectedIndex(index); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { popupMenu1 = new java.awt.PopupMenu(); jPopupMenu1 = new javax.swing.JPopupMenu(); ToolBarPrincipal = new javax.swing.JToolBar(); ToolBarFicheiro = new javax.swing.JToolBar(); ButtonFicheiroNovo = new javax.swing.JButton(); jLabel14 = new javax.swing.JLabel(); ButtonFicheiroAbrir = new javax.swing.JButton(); jLabel13 = new javax.swing.JLabel(); ButtonFicheiroGuardar = new javax.swing.JButton(); jLabel8 = new javax.swing.JLabel(); TooBarEditar = new javax.swing.JToolBar(); ButtonEditarReformatar = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); ButtonEditarRecuar = new javax.swing.JButton(); jLabel12 = new javax.swing.JLabel(); ButtonEditarAvancar = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); ButtonEditarCopiar = new javax.swing.JButton(); jLabel11 = new javax.swing.JLabel(); ButtonEditarColar = new javax.swing.JButton(); jLabel10 = new javax.swing.JLabel(); ButtonEditarCortar = new javax.swing.JButton(); jLabel9 = new javax.swing.JLabel(); ToolBarPrograma = new javax.swing.JToolBar(); jLabel6 = new javax.swing.JLabel(); ButtonProgramaVerificar = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); ButtonProgramaCorrer = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel(); ButtonProgramaDebug = new javax.swing.JButton(); ButtonProgramaRunOneStep = new javax.swing.JButton(); ButtonProgramaParar = new javax.swing.JButton(); jLabel7 = new javax.swing.JLabel(); jToolBarConversao = new javax.swing.JToolBar(); btConverteC = new javax.swing.JButton(); jLabel16 = new javax.swing.JLabel(); btConverteJava = new javax.swing.JButton(); jLabel15 = new javax.swing.JLabel(); jButton3 = new javax.swing.JButton(); jLabel5 = new javax.swing.JLabel(); btEmail = new javax.swing.JButton(); jLabel18 = new javax.swing.JLabel(); btDica = new javax.swing.JButton(); jLabel17 = new javax.swing.JLabel(); jButtonSairToobar = new javax.swing.JButton(); jSplitPane2 = new javax.swing.JSplitPane(); tpUnderCodeEditor = new javax.swing.JTabbedPane(); spOutput = new javax.swing.JScrollPane(); scrollMonitor = new javax.swing.JScrollPane(); spInfo = new javax.swing.JScrollPane(); scrollInfo = new javax.swing.JScrollPane(); jSplitPane1 = new javax.swing.JSplitPane(); scrollCodeEditor = new javax.swing.JScrollPane(); TextPaneCode = new javax.swing.JTextPane(); jMenuBar2 = new javax.swing.JMenuBar(); MenuFicheiro1 = new javax.swing.JMenu(); MenuFicheiroNovo1 = new javax.swing.JMenuItem(); MenuFicheiroAbrir1 = new javax.swing.JMenuItem(); MenuFicheiroGuardar = new javax.swing.JMenuItem(); MenuFicheiroGuardarComo = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JSeparator(); MenuFicheiroAberto1 = new javax.swing.JMenuItem(); MenuFicheiroAberto2 = new javax.swing.JMenuItem(); MenuFicheiroAberto3 = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JSeparator(); MenuFicheiroSair1 = new javax.swing.JMenuItem(); MenuEditar1 = new javax.swing.JMenu(); MenuEditarUndo = new javax.swing.JMenuItem(); MenuEditarRedo = new javax.swing.JMenuItem(); jSeparator3 = new javax.swing.JSeparator(); MenuEditarCopiar = new javax.swing.JMenuItem(); MenuEditarColar = new javax.swing.JMenuItem(); MenuEditarCortar = new javax.swing.JMenuItem(); MenuSelecionarTudo = new javax.swing.JMenuItem(); jSeparator4 = new javax.swing.JSeparator(); MenuEditarReformatar = new javax.swing.JMenuItem(); jMenuItem1 = new javax.swing.JMenuItem(); jMenuItem2 = new javax.swing.JMenuItem(); MenuAlgoritmo = new javax.swing.JMenu(); MenuAlgoritmoVerificar = new javax.swing.JMenuItem(); jSeparator5 = new javax.swing.JSeparator(); MenuAlgoritmoCorrer = new javax.swing.JMenuItem(); jSeparator6 = new javax.swing.JSeparator(); MenuProgramaParar = new javax.swing.JMenuItem(); MenuEditor = new javax.swing.JMenu(); MenuEditorCheckSyntax = new javax.swing.JCheckBoxMenuItem(); jSeparator10 = new javax.swing.JSeparator(); MenuEditorFonte = new javax.swing.JMenuItem(); jMenu1 = new javax.swing.JMenu(); menuItemNimbus = new javax.swing.JMenuItem(); menuItemWindows = new javax.swing.JMenuItem(); menuItemMetal = new javax.swing.JMenuItem(); menuMudarConsola = new javax.swing.JMenuItem(); MenuAjuda = new javax.swing.JMenu(); MenuAjudaAcerca = new javax.swing.JMenuItem(); jMenuItem3 = new javax.swing.JMenuItem(); menuExemploAlgoritmo = new javax.swing.JMenuItem(); popupMenu1.setLabel("popupMenu1"); popupMenu1.getAccessibleContext().setAccessibleParent(TextPaneCode); jPopupMenu1.setBackground(new java.awt.Color(0, 153, 255)); jPopupMenu1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 51, 255))); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); setTitle("CompAlg - Versão 2.0 (01/2015)"); ToolBarPrincipal.setBackground(new java.awt.Color(255, 255, 255)); ToolBarPrincipal.setBorder(javax.swing.BorderFactory.createEtchedBorder()); ToolBarPrincipal.setMaximumSize(new java.awt.Dimension(667, 45)); ToolBarPrincipal.setMinimumSize(new java.awt.Dimension(667, 45)); ToolBarPrincipal.setPreferredSize(new java.awt.Dimension(667, 50)); ToolBarFicheiro.setBackground(new java.awt.Color(255, 255, 255)); ToolBarFicheiro.setMaximumSize(new java.awt.Dimension(145, 40)); ToolBarFicheiro.setMinimumSize(new java.awt.Dimension(145, 40)); ToolBarFicheiro.setPreferredSize(new java.awt.Dimension(145, 45)); ButtonFicheiroNovo.setBackground(new java.awt.Color(255, 255, 255)); ButtonFicheiroNovo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/novo (2).png"))); // NOI18N ButtonFicheiroNovo.setToolTipText("Novo"); ButtonFicheiroNovo.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonFicheiroNovo.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonFicheiroNovo.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonFicheiroNovo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonFicheiroNovoActionPerformed(evt); } }); ToolBarFicheiro.add(ButtonFicheiroNovo); jLabel14.setText(" "); ToolBarFicheiro.add(jLabel14); ButtonFicheiroAbrir.setBackground(new java.awt.Color(255, 255, 255)); ButtonFicheiroAbrir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/abrir.png"))); // NOI18N ButtonFicheiroAbrir.setToolTipText("Abrir"); ButtonFicheiroAbrir.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonFicheiroAbrir.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonFicheiroAbrir.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonFicheiroAbrir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonFicheiroAbrirActionPerformed(evt); } }); ToolBarFicheiro.add(ButtonFicheiroAbrir); jLabel13.setText(" "); ToolBarFicheiro.add(jLabel13); ButtonFicheiroGuardar.setBackground(new java.awt.Color(255, 255, 255)); ButtonFicheiroGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/salvar.png"))); // NOI18N ButtonFicheiroGuardar.setToolTipText("Guardar"); ButtonFicheiroGuardar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonFicheiroGuardar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonFicheiroGuardar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonFicheiroGuardar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonFicheiroGuardarActionPerformed(evt); } }); ToolBarFicheiro.add(ButtonFicheiroGuardar); jLabel8.setText(" "); ToolBarFicheiro.add(jLabel8); ToolBarPrincipal.add(ToolBarFicheiro); TooBarEditar.setBackground(new java.awt.Color(255, 255, 255)); TooBarEditar.setMaximumSize(new java.awt.Dimension(260, 45)); TooBarEditar.setMinimumSize(new java.awt.Dimension(260, 45)); TooBarEditar.setPreferredSize(new java.awt.Dimension(260, 45)); ButtonEditarReformatar.setBackground(new java.awt.Color(255, 255, 255)); ButtonEditarReformatar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/corretor.png"))); // NOI18N ButtonEditarReformatar.setToolTipText("Correção automática do código"); ButtonEditarReformatar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonEditarReformatar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonEditarReformatar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonEditarReformatar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonEditarReformatarActionPerformed(evt); } }); TooBarEditar.add(ButtonEditarReformatar); jLabel1.setText(" "); TooBarEditar.add(jLabel1); ButtonEditarRecuar.setBackground(new java.awt.Color(255, 255, 255)); ButtonEditarRecuar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/left_32.png"))); // NOI18N ButtonEditarRecuar.setToolTipText("Anterior"); ButtonEditarRecuar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonEditarRecuar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonEditarRecuar.setName(""); // NOI18N ButtonEditarRecuar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonEditarRecuar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonEditarRecuarActionPerformed(evt); } }); TooBarEditar.add(ButtonEditarRecuar); ButtonEditarRecuar.getAccessibleContext().setAccessibleName("retroceder"); jLabel12.setText(" "); TooBarEditar.add(jLabel12); ButtonEditarAvancar.setBackground(new java.awt.Color(255, 255, 255)); ButtonEditarAvancar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/right_32.png"))); // NOI18N ButtonEditarAvancar.setToolTipText("Posterior"); ButtonEditarAvancar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonEditarAvancar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonEditarAvancar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonEditarAvancar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonEditarAvancarActionPerformed(evt); } }); TooBarEditar.add(ButtonEditarAvancar); ButtonEditarAvancar.getAccessibleContext().setAccessibleName("avancar"); jLabel2.setText(" "); TooBarEditar.add(jLabel2); ButtonEditarCopiar.setBackground(new java.awt.Color(255, 255, 255)); ButtonEditarCopiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/copiar.png"))); // NOI18N ButtonEditarCopiar.setToolTipText("Copiar"); ButtonEditarCopiar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonEditarCopiar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonEditarCopiar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonEditarCopiar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonEditarCopiarActionPerformed(evt); } }); TooBarEditar.add(ButtonEditarCopiar); jLabel11.setText(" "); TooBarEditar.add(jLabel11); ButtonEditarColar.setBackground(new java.awt.Color(255, 255, 255)); ButtonEditarColar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/colar.png"))); // NOI18N ButtonEditarColar.setToolTipText("Colar"); ButtonEditarColar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonEditarColar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonEditarColar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonEditarColar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonEditarColarActionPerformed(evt); } }); TooBarEditar.add(ButtonEditarColar); jLabel10.setText(" "); TooBarEditar.add(jLabel10); ButtonEditarCortar.setBackground(new java.awt.Color(255, 255, 255)); ButtonEditarCortar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/cut.png"))); // NOI18N ButtonEditarCortar.setToolTipText("Cortar"); ButtonEditarCortar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonEditarCortar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonEditarCortar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonEditarCortar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonEditarCortarActionPerformed(evt); } }); TooBarEditar.add(ButtonEditarCortar); jLabel9.setText(" "); TooBarEditar.add(jLabel9); ToolBarPrincipal.add(TooBarEditar); ToolBarPrograma.setBackground(new java.awt.Color(255, 255, 255)); ToolBarPrograma.setMaximumSize(new java.awt.Dimension(220, 40)); ToolBarPrograma.setMinimumSize(new java.awt.Dimension(220, 40)); ToolBarPrograma.setPreferredSize(new java.awt.Dimension(220, 40)); ToolBarPrograma.add(jLabel6); ButtonProgramaVerificar.setBackground(new java.awt.Color(255, 255, 255)); ButtonProgramaVerificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/Compile.png"))); // NOI18N ButtonProgramaVerificar.setToolTipText("Compilar o algoritmo"); ButtonProgramaVerificar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonProgramaVerificar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonProgramaVerificar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonProgramaVerificar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonProgramaVerificarActionPerformed(evt); } }); ToolBarPrograma.add(ButtonProgramaVerificar); jLabel3.setText(" "); ToolBarPrograma.add(jLabel3); ButtonProgramaCorrer.setBackground(new java.awt.Color(255, 255, 255)); ButtonProgramaCorrer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/start.png"))); // NOI18N ButtonProgramaCorrer.setToolTipText("Compila e Executar o algoritmo"); ButtonProgramaCorrer.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonProgramaCorrer.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonProgramaCorrer.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonProgramaCorrer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonProgramaCorrerActionPerformed(evt); } }); ToolBarPrograma.add(ButtonProgramaCorrer); jLabel4.setText(" "); ToolBarPrograma.add(jLabel4); ButtonProgramaDebug.setBackground(new java.awt.Color(255, 255, 255)); ButtonProgramaDebug.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/Debug.png"))); // NOI18N ButtonProgramaDebug.setToolTipText("Executar passo a passo"); ButtonProgramaDebug.setFocusable(false); ButtonProgramaDebug.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); ButtonProgramaDebug.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); ButtonProgramaDebug.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonProgramaDebugActionPerformed(evt); } }); ToolBarPrograma.add(ButtonProgramaDebug); ButtonProgramaRunOneStep.setBackground(new java.awt.Color(250, 250, 250)); ButtonProgramaRunOneStep.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/RunOneStep.png"))); // NOI18N ButtonProgramaRunOneStep.setFocusable(false); ButtonProgramaRunOneStep.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); ButtonProgramaRunOneStep.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); ButtonProgramaRunOneStep.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonProgramaRunOneStepActionPerformed(evt); } }); ToolBarPrograma.add(ButtonProgramaRunOneStep); ButtonProgramaParar.setBackground(new java.awt.Color(255, 255, 255)); ButtonProgramaParar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/stop.jpg"))); // NOI18N ButtonProgramaParar.setToolTipText("Parar o algoritmo"); ButtonProgramaParar.setMaximumSize(new java.awt.Dimension(33, 36)); ButtonProgramaParar.setMinimumSize(new java.awt.Dimension(33, 36)); ButtonProgramaParar.setPreferredSize(new java.awt.Dimension(33, 36)); ButtonProgramaParar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonProgramaPararActionPerformed(evt); } }); ToolBarPrograma.add(ButtonProgramaParar); jLabel7.setText(" "); ToolBarPrograma.add(jLabel7); ToolBarPrincipal.add(ToolBarPrograma); jToolBarConversao.setBackground(new java.awt.Color(255, 255, 255)); jToolBarConversao.setToolTipText(""); jToolBarConversao.setMaximumSize(new java.awt.Dimension(400, 40)); jToolBarConversao.setMinimumSize(new java.awt.Dimension(400, 40)); jToolBarConversao.setName(""); // NOI18N jToolBarConversao.setPreferredSize(new java.awt.Dimension(370, 45)); btConverteC.setBackground(new java.awt.Color(255, 255, 255)); btConverteC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/C.png"))); // NOI18N btConverteC.setToolTipText("Converter na Linguagem C"); btConverteC.setFocusable(false); btConverteC.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btConverteC.setMaximumSize(new java.awt.Dimension(33, 36)); btConverteC.setMinimumSize(new java.awt.Dimension(33, 36)); btConverteC.setPreferredSize(new java.awt.Dimension(33, 36)); btConverteC.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); btConverteC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btConverteCActionPerformed(evt); } }); jToolBarConversao.add(btConverteC); btConverteC.getAccessibleContext().setAccessibleParent(jToolBarConversao); jLabel16.setText(" "); jToolBarConversao.add(jLabel16); btConverteJava.setBackground(new java.awt.Color(255, 255, 255)); btConverteJava.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/Java-icon.png"))); // NOI18N btConverteJava.setToolTipText("Converter na Linguagem JAVA"); btConverteJava.setFocusable(false); btConverteJava.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btConverteJava.setMaximumSize(new java.awt.Dimension(33, 36)); btConverteJava.setMinimumSize(new java.awt.Dimension(33, 36)); btConverteJava.setPreferredSize(new java.awt.Dimension(33, 36)); btConverteJava.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); btConverteJava.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btConverteJavaActionPerformed(evt); } }); jToolBarConversao.add(btConverteJava); jLabel15.setText(" "); jToolBarConversao.add(jLabel15); jButton3.setBackground(new java.awt.Color(255, 255, 255)); jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/ajuda.png"))); // NOI18N jButton3.setToolTipText("Ajuda da linguagem"); jButton3.setFocusable(false); jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton3.setMaximumSize(new java.awt.Dimension(33, 36)); jButton3.setMinimumSize(new java.awt.Dimension(33, 36)); jButton3.setPreferredSize(new java.awt.Dimension(33, 36)); jButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jToolBarConversao.add(jButton3); jLabel5.setText(" "); jLabel5.setToolTipText(""); jToolBarConversao.add(jLabel5); btEmail.setBackground(new java.awt.Color(255, 255, 255)); btEmail.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/Email-Atmark.png"))); // NOI18N btEmail.setToolTipText("Envia uma sugestão/dúvida sobre o compilador"); btEmail.setFocusable(false); btEmail.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btEmail.setMaximumSize(new java.awt.Dimension(33, 36)); btEmail.setMinimumSize(new java.awt.Dimension(33, 36)); btEmail.setPreferredSize(new java.awt.Dimension(33, 36)); btEmail.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); btEmail.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btEmailActionPerformed(evt); } }); jToolBarConversao.add(btEmail); jLabel18.setText(" "); jToolBarConversao.add(jLabel18); btDica.setBackground(new java.awt.Color(255, 255, 255)); btDica.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/bubble_32.png"))); // NOI18N btDica.setToolTipText("Ver a Dica do dia"); btDica.setFocusable(false); btDica.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btDica.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); btDica.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btDicaActionPerformed(evt); } }); jToolBarConversao.add(btDica); jLabel17.setText(" "); jLabel17.setToolTipText(""); jToolBarConversao.add(jLabel17); jButtonSairToobar.setBackground(new java.awt.Color(255, 255, 255)); jButtonSairToobar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/Exit.png"))); // NOI18N jButtonSairToobar.setToolTipText("Sair do compilador"); jButtonSairToobar.setFocusable(false); jButtonSairToobar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButtonSairToobar.setMaximumSize(new java.awt.Dimension(33, 36)); jButtonSairToobar.setMinimumSize(new java.awt.Dimension(33, 36)); jButtonSairToobar.setPreferredSize(new java.awt.Dimension(33, 36)); jButtonSairToobar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jButtonSairToobar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSairToobarActionPerformed(evt); } }); jToolBarConversao.add(jButtonSairToobar); ToolBarPrincipal.add(jToolBarConversao); getContentPane().add(ToolBarPrincipal, java.awt.BorderLayout.NORTH); jSplitPane2.setBackground(new java.awt.Color(153, 180, 209)); jSplitPane2.setDividerSize(20); jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); jSplitPane2.setMinimumSize(new java.awt.Dimension(402, 280)); jSplitPane2.setPreferredSize(new java.awt.Dimension(409, 202)); tpUnderCodeEditor.setBackground(new java.awt.Color(102, 102, 102)); tpUnderCodeEditor.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(185, 209, 234))); tpUnderCodeEditor.setForeground(new java.awt.Color(255, 255, 255)); tpUnderCodeEditor.setAutoscrolls(true); tpUnderCodeEditor.setPreferredSize(new java.awt.Dimension(407, 80)); spOutput.setBackground(new java.awt.Color(255, 255, 255)); spOutput.setAutoscrolls(true); spOutput.setPreferredSize(new java.awt.Dimension(400, 200)); scrollMonitor.setBackground(new java.awt.Color(255, 255, 255)); scrollMonitor.setForeground(new java.awt.Color(0, 0, 255)); scrollMonitor.setToolTipText("Execução do Algoritmo na Consola"); scrollMonitor.setFont(new java.awt.Font("Courier New", 0, 14)); // NOI18N spOutput.setViewportView(scrollMonitor); tpUnderCodeEditor.addTab("Consola", new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/consola (2).png")), spOutput, "Esta \"tab\" apresenta a saida por defeito do interpretador..."); // NOI18N spInfo.setBackground(new java.awt.Color(255, 255, 255)); spInfo.setAutoscrolls(true); spInfo.setPreferredSize(new java.awt.Dimension(400, 200)); scrollInfo.setBackground(new java.awt.Color(0, 0, 0)); scrollInfo.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 180, 209))); scrollInfo.setForeground(new java.awt.Color(255, 255, 255)); scrollInfo.setToolTipText("Execução do Algoritmo na Consola"); scrollInfo.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N info = new ConsoleIO(); info.setColor(Color.WHITE,Color.BLACK); scrollInfo.add(info); scrollInfo.setViewportView(info); spInfo.setViewportView(scrollInfo); tpUnderCodeEditor.addTab("Informação", new javax.swing.ImageIcon(getClass().getResource("/Icons/toolbar/info.png")), spInfo, "Esta \"tab\" apresenta informação da execução do compilador."); // NOI18N jSplitPane2.setBottomComponent(tpUnderCodeEditor); jSplitPane1.setAutoscrolls(true); jSplitPane1.setLastDividerLocation(-1); scrollCodeEditor.setMinimumSize(new java.awt.Dimension(400, 300)); scrollCodeEditor.setPreferredSize(new java.awt.Dimension(400, 900)); TextPaneCode.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 180, 209), 2)); TextPaneCode.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N TextPaneCode.setToolTipText("Área de densenvolvimento de Algoritmo"); TextPaneCode.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); TextPaneCode.setMinimumSize(new java.awt.Dimension(4, 280)); TextPaneCode.setPreferredSize(new java.awt.Dimension(4, 280)); TextPaneCode.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { TextPaneCodeKeyPressed(evt); } public void keyTyped(java.awt.event.KeyEvent evt) { TextPaneCodeKeyTyped(evt); } }); scrollCodeEditor.setViewportView(TextPaneCode); jSplitPane1.setLeftComponent(scrollCodeEditor); jSplitPane2.setLeftComponent(jSplitPane1); getContentPane().add(jSplitPane2, java.awt.BorderLayout.CENTER); jMenuBar2.setBackground(new java.awt.Color(51, 153, 255)); jMenuBar2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); MenuFicheiro1.setBackground(new java.awt.Color(51, 153, 255)); MenuFicheiro1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); MenuFicheiro1.setForeground(new java.awt.Color(255, 255, 255)); MenuFicheiro1.setMnemonic('F'); MenuFicheiro1.setText("Ficheiro"); MenuFicheiro1.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N MenuFicheiro1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiro1ActionPerformed(evt); } }); MenuFicheiroNovo1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); MenuFicheiroNovo1.setBackground(new java.awt.Color(255, 255, 255)); MenuFicheiroNovo1.setForeground(new java.awt.Color(0, 51, 255)); MenuFicheiroNovo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/novo.png"))); // NOI18N MenuFicheiroNovo1.setText("Novo"); MenuFicheiroNovo1.setToolTipText("novo Algoritmo"); MenuFicheiroNovo1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroNovo1ActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroNovo1); MenuFicheiroAbrir1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK)); MenuFicheiroAbrir1.setBackground(new java.awt.Color(255, 255, 255)); MenuFicheiroAbrir1.setForeground(new java.awt.Color(0, 51, 255)); MenuFicheiroAbrir1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/abrir.png"))); // NOI18N MenuFicheiroAbrir1.setText("Abrir"); MenuFicheiroAbrir1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroAbrir1ActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroAbrir1); MenuFicheiroGuardar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK)); MenuFicheiroGuardar.setBackground(new java.awt.Color(255, 255, 255)); MenuFicheiroGuardar.setForeground(new java.awt.Color(0, 51, 255)); MenuFicheiroGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/salvar.png"))); // NOI18N MenuFicheiroGuardar.setText("Guardar"); MenuFicheiroGuardar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroGuardarActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroGuardar); MenuFicheiroGuardarComo.setBackground(new java.awt.Color(255, 255, 255)); MenuFicheiroGuardarComo.setForeground(new java.awt.Color(0, 51, 255)); MenuFicheiroGuardarComo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/guardarComo.png"))); // NOI18N MenuFicheiroGuardarComo.setText("Guardar Como . . ."); MenuFicheiroGuardarComo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroGuardarComoActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroGuardarComo); MenuFicheiro1.add(jSeparator2); MenuFicheiroAberto1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/file_document.png"))); // NOI18N MenuFicheiroAberto1.setText("ficheiro_sem_nome"); MenuFicheiroAberto1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroAberto1ActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroAberto1); MenuFicheiroAberto2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/file_document.png"))); // NOI18N MenuFicheiroAberto2.setText("ficheiro_sem_nome"); MenuFicheiroAberto2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroAberto2ActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroAberto2); MenuFicheiroAberto3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/file_document.png"))); // NOI18N MenuFicheiroAberto3.setText("ficheiro_sem_nome"); MenuFicheiroAberto3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroAberto3ActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroAberto3); MenuFicheiro1.add(jSeparator1); MenuFicheiroSair1.setBackground(new java.awt.Color(255, 255, 255)); MenuFicheiroSair1.setForeground(new java.awt.Color(204, 0, 0)); MenuFicheiroSair1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/sairG.png"))); // NOI18N MenuFicheiroSair1.setText("Sair"); MenuFicheiroSair1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuFicheiroSair1ActionPerformed(evt); } }); MenuFicheiro1.add(MenuFicheiroSair1); jMenuBar2.add(MenuFicheiro1); MenuEditar1.setBackground(new java.awt.Color(51, 153, 255)); MenuEditar1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); MenuEditar1.setForeground(new java.awt.Color(255, 255, 255)); MenuEditar1.setMnemonic('E'); MenuEditar1.setText("Editar"); MenuEditar1.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N MenuEditarUndo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); MenuEditarUndo.setBackground(new java.awt.Color(255, 255, 255)); MenuEditarUndo.setForeground(new java.awt.Color(0, 51, 255)); MenuEditarUndo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/left_32.png"))); // NOI18N MenuEditarUndo.setText("Anterior"); MenuEditarUndo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditarUndoActionPerformed(evt); } }); MenuEditar1.add(MenuEditarUndo); MenuEditarRedo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, java.awt.event.InputEvent.CTRL_MASK)); MenuEditarRedo.setBackground(new java.awt.Color(255, 255, 255)); MenuEditarRedo.setForeground(new java.awt.Color(0, 51, 255)); MenuEditarRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/right_32.png"))); // NOI18N MenuEditarRedo.setText("Avançar"); MenuEditarRedo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditarRedoActionPerformed(evt); } }); MenuEditar1.add(MenuEditarRedo); MenuEditar1.add(jSeparator3); MenuEditarCopiar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); MenuEditarCopiar.setBackground(new java.awt.Color(255, 255, 255)); MenuEditarCopiar.setForeground(new java.awt.Color(0, 51, 255)); MenuEditarCopiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/copiar.png"))); // NOI18N MenuEditarCopiar.setText("Copiar"); MenuEditarCopiar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditarCopiarActionPerformed(evt); } }); MenuEditar1.add(MenuEditarCopiar); MenuEditarColar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK)); MenuEditarColar.setBackground(new java.awt.Color(255, 255, 255)); MenuEditarColar.setForeground(new java.awt.Color(0, 51, 255)); MenuEditarColar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/colar.png"))); // NOI18N MenuEditarColar.setText("Colar"); MenuEditarColar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditarColarActionPerformed(evt); } }); MenuEditar1.add(MenuEditarColar); MenuEditarCortar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); MenuEditarCortar.setBackground(new java.awt.Color(255, 255, 255)); MenuEditarCortar.setForeground(new java.awt.Color(0, 51, 255)); MenuEditarCortar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/cut.png"))); // NOI18N MenuEditarCortar.setText("Cortar"); MenuEditarCortar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditarCortarActionPerformed(evt); } }); MenuEditar1.add(MenuEditarCortar); MenuSelecionarTudo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.ALT_MASK)); MenuSelecionarTudo.setBackground(new java.awt.Color(255, 255, 255)); MenuSelecionarTudo.setForeground(new java.awt.Color(0, 51, 255)); MenuSelecionarTudo.setText("Seleccionar tudo"); MenuSelecionarTudo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuSelecionarTudoActionPerformed(evt); } }); MenuEditar1.add(MenuSelecionarTudo); MenuEditar1.add(jSeparator4); MenuEditarReformatar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK)); MenuEditarReformatar.setBackground(new java.awt.Color(255, 255, 255)); MenuEditarReformatar.setForeground(new java.awt.Color(0, 51, 255)); MenuEditarReformatar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/corretor.png"))); // NOI18N MenuEditarReformatar.setText("Correcção automático"); MenuEditarReformatar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditarReformatarActionPerformed(evt); } }); MenuEditar1.add(MenuEditarReformatar); jMenuItem1.setBackground(new java.awt.Color(255, 255, 255)); jMenuItem1.setForeground(new java.awt.Color(0, 51, 255)); jMenuItem1.setMnemonic('l'); jMenuItem1.setText("Ir para linha"); jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } }); MenuEditar1.add(jMenuItem1); jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK)); jMenuItem2.setBackground(new java.awt.Color(255, 255, 255)); jMenuItem2.setForeground(new java.awt.Color(0, 51, 255)); jMenuItem2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/search_32.png"))); // NOI18N jMenuItem2.setText("Busca por palavra"); jMenuItem2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem2ActionPerformed(evt); } }); MenuEditar1.add(jMenuItem2); jMenuBar2.add(MenuEditar1); MenuAlgoritmo.setBackground(new java.awt.Color(51, 153, 255)); MenuAlgoritmo.setBorder(javax.swing.BorderFactory.createEtchedBorder()); MenuAlgoritmo.setForeground(new java.awt.Color(255, 255, 255)); MenuAlgoritmo.setMnemonic('A'); MenuAlgoritmo.setText("Algoritmo"); MenuAlgoritmo.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N MenuAlgoritmo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuAlgoritmoActionPerformed(evt); } }); MenuAlgoritmoVerificar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F8, 0)); MenuAlgoritmoVerificar.setBackground(new java.awt.Color(255, 255, 255)); MenuAlgoritmoVerificar.setForeground(new java.awt.Color(0, 51, 255)); MenuAlgoritmoVerificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/Compile.png"))); // NOI18N MenuAlgoritmoVerificar.setText("Compilar o algoritmo"); MenuAlgoritmoVerificar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuAlgoritmoVerificarActionPerformed(evt); } }); MenuAlgoritmo.add(MenuAlgoritmoVerificar); MenuAlgoritmo.add(jSeparator5); MenuAlgoritmoCorrer.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F9, 0)); MenuAlgoritmoCorrer.setBackground(new java.awt.Color(255, 255, 255)); MenuAlgoritmoCorrer.setForeground(new java.awt.Color(0, 51, 255)); MenuAlgoritmoCorrer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/executar.png"))); // NOI18N MenuAlgoritmoCorrer.setText("Executar"); MenuAlgoritmoCorrer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuAlgoritmoCorrerActionPerformed(evt); } }); MenuAlgoritmo.add(MenuAlgoritmoCorrer); MenuAlgoritmo.add(jSeparator6); MenuProgramaParar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F10, 0)); MenuProgramaParar.setBackground(new java.awt.Color(255, 255, 255)); MenuProgramaParar.setForeground(new java.awt.Color(0, 51, 255)); MenuProgramaParar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/parar.png"))); // NOI18N MenuProgramaParar.setText("Parar a Execução"); MenuProgramaParar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuProgramaPararActionPerformed(evt); } }); MenuAlgoritmo.add(MenuProgramaParar); jMenuBar2.add(MenuAlgoritmo); MenuEditor.setBackground(new java.awt.Color(51, 153, 255)); MenuEditor.setBorder(javax.swing.BorderFactory.createEtchedBorder()); MenuEditor.setForeground(new java.awt.Color(255, 255, 255)); MenuEditor.setMnemonic('d'); MenuEditor.setText("Editor"); MenuEditor.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N MenuEditor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditorActionPerformed(evt); } }); MenuEditorCheckSyntax.setBackground(new java.awt.Color(255, 255, 255)); MenuEditorCheckSyntax.setForeground(new java.awt.Color(0, 51, 255)); MenuEditorCheckSyntax.setSelected(true); MenuEditorCheckSyntax.setText("Colorir Programa"); MenuEditorCheckSyntax.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditorCheckSyntaxActionPerformed(evt); } }); MenuEditor.add(MenuEditorCheckSyntax); MenuEditor.add(jSeparator10); MenuEditorFonte.setBackground(new java.awt.Color(255, 255, 255)); MenuEditorFonte.setForeground(new java.awt.Color(0, 51, 255)); MenuEditorFonte.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/editor_font.png"))); // NOI18N MenuEditorFonte.setMnemonic('o'); MenuEditorFonte.setText("Fonte"); MenuEditorFonte.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuEditorFonteActionPerformed(evt); } }); MenuEditor.add(MenuEditorFonte); jMenu1.setBackground(new java.awt.Color(255, 255, 255)); jMenu1.setForeground(new java.awt.Color(0, 51, 255)); jMenu1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/looknfeelsuportados.png"))); // NOI18N jMenu1.setMnemonic('A'); jMenu1.setText("Aparência"); menuItemNimbus.setBackground(new java.awt.Color(255, 255, 255)); menuItemNimbus.setForeground(new java.awt.Color(0, 51, 255)); menuItemNimbus.setText("CDE/Motif"); menuItemNimbus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { menuItemNimbusActionPerformed(evt); } }); jMenu1.add(menuItemNimbus); menuItemWindows.setBackground(new java.awt.Color(255, 255, 255)); menuItemWindows.setForeground(new java.awt.Color(0, 51, 255)); menuItemWindows.setText("Windows"); menuItemWindows.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { menuItemWindowsActionPerformed(evt); } }); jMenu1.add(menuItemWindows); menuItemMetal.setBackground(new java.awt.Color(255, 255, 255)); menuItemMetal.setForeground(new java.awt.Color(0, 51, 255)); menuItemMetal.setText("Metal"); menuItemMetal.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { menuItemMetalActionPerformed(evt); } }); jMenu1.add(menuItemMetal); MenuEditor.add(jMenu1); menuMudarConsola.setBackground(new java.awt.Color(255, 255, 255)); menuMudarConsola.setForeground(new java.awt.Color(0, 51, 255)); menuMudarConsola.setText("Mudar a Cor da Consola"); MenuEditor.add(menuMudarConsola); jMenuBar2.add(MenuEditor); MenuAjuda.setBackground(new java.awt.Color(51, 153, 255)); MenuAjuda.setBorder(javax.swing.BorderFactory.createEtchedBorder()); MenuAjuda.setForeground(new java.awt.Color(255, 255, 255)); MenuAjuda.setMnemonic('u'); MenuAjuda.setText("Ajuda"); MenuAjuda.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N MenuAjudaAcerca.setBackground(new java.awt.Color(255, 255, 255)); MenuAjudaAcerca.setForeground(new java.awt.Color(0, 51, 255)); MenuAjudaAcerca.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/info_32.png"))); // NOI18N MenuAjudaAcerca.setText("Informaçoes sobre o autor"); MenuAjudaAcerca.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MenuAjudaAcercaActionPerformed(evt); } }); MenuAjuda.add(MenuAjudaAcerca); jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0)); jMenuItem3.setBackground(new java.awt.Color(255, 255, 255)); jMenuItem3.setForeground(new java.awt.Color(0, 51, 255)); jMenuItem3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/ajuda.png"))); // NOI18N jMenuItem3.setText("Ajuda da linguagem"); jMenuItem3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem3ActionPerformed(evt); } }); MenuAjuda.add(jMenuItem3); jMenuItem3.getAccessibleContext().setAccessibleDescription(""); menuExemploAlgoritmo.setBackground(new java.awt.Color(255, 255, 255)); menuExemploAlgoritmo.setForeground(new java.awt.Color(0, 51, 255)); menuExemploAlgoritmo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Icons/menu/exemplo2.png"))); // NOI18N menuExemploAlgoritmo.setText("Exemplos de Algoritmos"); menuExemploAlgoritmo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { menuExemploAlgoritmoActionPerformed(evt); } }); MenuAjuda.add(menuExemploAlgoritmo); jMenuBar2.add(MenuAjuda); setJMenuBar(jMenuBar2); pack(); }// </editor-fold>//GEN-END:initComponents private void MenuEditorFonteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditorFonteActionPerformed FontChooser f = new FontChooser(this, TextPaneCode.getFont(), TextPaneCode.getBackground()); f.setVisible(true); if (f.fontSelected) { Font fnt = f.getNewFont(); System.out.println("FONTE :" + fnt.getFontName()); System.out.println("TAMANHO :" + fnt.getSize()); TextPaneCode.setFont(f.getNewFont()); TextPaneCode.setBackground(f.getNewColor()); txtCode.defaultBackGround = f.getNewColor(); editorProperties.SetProperty("fontName", fnt.getName()); editorProperties.SetProperty("fontSize", fnt.getSize() + ""); editorProperties.SetProperty("fontBold", fnt.isBold() + ""); editorProperties.SetProperty("fontItalic", fnt.isItalic() + ""); editorProperties.SetProperty("backColorR", "" + f.getNewColor().getRed()); editorProperties.SetProperty("backColorG", "" + f.getNewColor().getGreen()); editorProperties.SetProperty("backColorB", "" + f.getNewColor().getBlue()); //recolorir this.MenuEditorCheckSyntaxActionPerformed(evt); } }//GEN-LAST:event_MenuEditorFonteActionPerformed private void MenuEditorCheckSyntaxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditorCheckSyntaxActionPerformed }//GEN-LAST:event_MenuEditorCheckSyntaxActionPerformed private void MenuAjudaAcercaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuAjudaAcercaActionPerformed tpUnderCodeEditor.setSelectedIndex(1); info.Clear(); info.write(PortugolInfo.getInformation()); AboutThis about = new AboutThis(); about.setAlwaysOnTop(true); about.setVisible(true); about.requestFocus(); }//GEN-LAST:event_MenuAjudaAcercaActionPerformed private void MenuProgramaPararActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuProgramaPararActionPerformed ButtonProgramaParar.setVisible(false); ButtonProgramaRunOneStep.setVisible(false); ButtonProgramaDebug.setVisible(true); ButtonProgramaDebug.setEnabled(true); ButtonProgramaVerificar.setEnabled(true); jSplitPane1.getBottomComponent().setVisible(false); ProgState = -1; autoExecute = null; if (currentDebugInstruction != null) { DeSelectLine(currentDebugInstruction.GetCharNum()); } this.tpUnderCodeEditor.setSelectedIndex(1); info.write("\n" + System.getProperty("user.name") + ", VOCÊ PAROU O ALGORITMO..."); console.setText("Nenhum algoritmo está sendo executado"); }//GEN-LAST:event_MenuProgramaPararActionPerformed private void ButtonProgramaPararActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonProgramaPararActionPerformed MenuProgramaPararActionPerformed(evt); }//GEN-LAST:event_ButtonProgramaPararActionPerformed private void ButtonProgramaCorrerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonProgramaCorrerActionPerformed if (ProgState == SubrutinePlayer.ProgStateDEBUG) { ButtonProgramaParar.setVisible(false); ButtonProgramaRunOneStep.setVisible(false); ButtonProgramaDebug.setVisible(true); ButtonProgramaDebug.setEnabled(true); ButtonProgramaVerificar.setEnabled(true); if (currentDebugInstruction != null) { DeSelectLine(currentDebugInstruction.GetCharNum()); } SubrutinePlayer.Player.RunState = SubrutinePlayer.ProgStateRUN; SubrutinePlayer.Player.ResumePlay(); return; } else if (ProgState == SubrutinePlayer.ProgStateRUN) { return; } ProgState = SubrutinePlayer.ProgStateRUN; MenuAlgoritmoCorrerActionPerformed(evt); }//GEN-LAST:event_ButtonProgramaCorrerActionPerformed private void MenuAlgoritmoCorrerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuAlgoritmoCorrerActionPerformed if (ProgState == SubrutinePlayer.ProgStateDEBUG) { ButtonProgramaRunOneStep.setVisible(true); ButtonProgramaDebug.setEnabled(false); } else if (ProgState == SubrutinePlayer.ProgStateRUN) { ButtonProgramaRunOneStep.setVisible(false); ButtonProgramaDebug.setVisible(false); } else { ButtonProgramaParar.setVisible(false); ButtonProgramaRunOneStep.setVisible(false); ButtonProgramaDebug.setVisible(true); return; } ButtonProgramaParar.setVisible(true); ButtonProgramaVerificar.setEnabled(false); MenuEditarReformatarActionPerformed(null); NodeInstruction instruction = null; //se estiver a ser executado nao faz nada if (autoExecute != null) { return; } //verificar o programa e construir o fluxograma MenuAlgoritmoVerificarActionPerformed(null); if (bloque == null) { return; } instruction = bloque.getStartNode(); //------------------- fazer uma thread ------------------------- if (instruction == null) { ButtonProgramaParar.setVisible(false); ButtonProgramaRunOneStep.setVisible(false); ButtonProgramaDebug.setVisible(true); ButtonProgramaDebug.setEnabled(true); ButtonProgramaVerificar.setEnabled(true); return; } try { calend = new Calendario(); this.autoExecute = new Thread(this); this.autoExecute.start(); } catch (Exception e) { Message.Error("ERRO DE EXECUÇÃO:\n" + instruction.GetText() + "\n" + e.getMessage()); this.tpUnderCodeEditor.setSelectedIndex(1); info.write("\n\nO algoritmo foi abortado"); } }//GEN-LAST:event_MenuAlgoritmoCorrerActionPerformed private void ButtonProgramaVerificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonProgramaVerificarActionPerformed MenuAlgoritmoVerificarActionPerformed(null); }//GEN-LAST:event_ButtonProgramaVerificarActionPerformed private void MenuAlgoritmoVerificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuAlgoritmoVerificarActionPerformed MenuEditarReformatarActionPerformed(null); veriricarAlgoritmo(); }//GEN-LAST:event_MenuAlgoritmoVerificarActionPerformed private void MenuAlgoritmoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuAlgoritmoActionPerformed // TODO add your handling code here: }//GEN-LAST:event_MenuAlgoritmoActionPerformed private void ButtonEditarReformatarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonEditarReformatarActionPerformed MenuEditarReformatarActionPerformed(null); }//GEN-LAST:event_ButtonEditarReformatarActionPerformed private void ButtonEditarCortarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonEditarCortarActionPerformed this.MenuEditarCortarActionPerformed(null); }//GEN-LAST:event_ButtonEditarCortarActionPerformed private void ButtonEditarColarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonEditarColarActionPerformed this.MenuEditarColarActionPerformed(null); }//GEN-LAST:event_ButtonEditarColarActionPerformed private void ButtonEditarCopiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonEditarCopiarActionPerformed this.MenuEditarCopiarActionPerformed(null); }//GEN-LAST:event_ButtonEditarCopiarActionPerformed private void ButtonEditarAvancarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonEditarAvancarActionPerformed obj_RA.eventoAvancar(); }//GEN-LAST:event_ButtonEditarAvancarActionPerformed private void ButtonEditarRecuarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonEditarRecuarActionPerformed obj_RA.eventoRetroceder(); }//GEN-LAST:event_ButtonEditarRecuarActionPerformed private void TextPaneCodeKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TextPaneCodeKeyPressed try { if (evt.VK_F1 == evt.getKeyCode()) { tpUnderCodeEditor.setSelectedIndex(2); int caretPosition = TextPaneCode.getCaretPosition(); int startIndex = javax.swing.text.Utilities.getWordStart(TextPaneCode, caretPosition); int endIndex = javax.swing.text.Utilities.getWordEnd(TextPaneCode, caretPosition); String keyword = TextPaneCode.getDocument().getText(startIndex, endIndex - startIndex).trim(); helpLang.setPage(HelpFileName.getHelpFile(keyword)); } if (evt.VK_TAB == evt.getKeyCode()) { // introduzir a TAB int caretPosition = TextPaneCode.getCaretPosition(); txtCode.insertString(caretPosition, BeautifyCode.TAB_SPACES, new SimpleAttributeSet()); // consumir o enter evt.consume(); } else if (evt.VK_ENTER == evt.getKeyCode()) { // ir buscar o paragrafo actual int caretPosition = TextPaneCode.getCaretPosition(); Element element = txtCode.getParagraphElement(caretPosition); int start = element.getStartOffset(); int end = element.getEndOffset(); String old = txtCode.getText(start, end - start); int spaces = 0; String tab = "\n"; while (old.charAt(spaces) == ' ') { spaces++; tab += " "; } // introduzir a nova string txtCode.insertString(caretPosition, tab, new SimpleAttributeSet()); // consumir o enter evt.consume(); } } catch (Exception e) { } }//GEN-LAST:event_TextPaneCodeKeyPressed private void ButtonFicheiroGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFicheiroGuardarActionPerformed this.MenuFicheiroGuardarActionPerformed(null); }//GEN-LAST:event_ButtonFicheiroGuardarActionPerformed private void ButtonFicheiroAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFicheiroAbrirActionPerformed this.MenuFicheiroAbrir1ActionPerformed(null); // ajudaWWW.add(new WWWHelpText) }//GEN-LAST:event_ButtonFicheiroAbrirActionPerformed private void ButtonFicheiroNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFicheiroNovoActionPerformed this.MenuFicheiroNovo1ActionPerformed(null); }//GEN-LAST:event_ButtonFicheiroNovoActionPerformed private void MenuFicheiroGuardarComoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroGuardarComoActionPerformed GuardarFicheiroComo(fileManager.getFileName()); }//GEN-LAST:event_MenuFicheiroGuardarComoActionPerformed private void MenuFicheiroGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroGuardarActionPerformed info.write("\nGuardar o Algoritmo :" + fileManager.getFileName()); if (!fileManager.isFileOpened()) { GuardarFicheiroComo(fileManager.getFileName()); } else { GuardarFicheiro(fileManager.getFileName()); } }//GEN-LAST:event_MenuFicheiroGuardarActionPerformed private void MenuFicheiroAberto3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroAberto3ActionPerformed LerFicheiro(MenuFicheiroAberto3.getText()); }//GEN-LAST:event_MenuFicheiroAberto3ActionPerformed private void MenuFicheiroAberto2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroAberto2ActionPerformed LerFicheiro(MenuFicheiroAberto2.getText()); }//GEN-LAST:event_MenuFicheiroAberto2ActionPerformed private void MenuFicheiroAberto1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroAberto1ActionPerformed LerFicheiro(MenuFicheiroAberto1.getText()); }//GEN-LAST:event_MenuFicheiroAberto1ActionPerformed private void TextPaneCodeKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TextPaneCodeKeyTyped if (!this.getTextChanged()) { setTextChanged(true); } }//GEN-LAST:event_TextPaneCodeKeyTyped private void MenuFicheiroNovo1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroNovo1ActionPerformed NovoFicheiro(); }//GEN-LAST:event_MenuFicheiroNovo1ActionPerformed private void MenuFicheiroSair1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroSair1ActionPerformed confirmarSaidaNoAlgoritmo(); }//GEN-LAST:event_MenuFicheiroSair1ActionPerformed private void MenuFicheiroAbrir1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiroAbrir1ActionPerformed if (fileManager.openFileWindow(this) != null) { LerFicheiro(fileManager.getFileName()); } }//GEN-LAST:event_MenuFicheiroAbrir1ActionPerformed private void MenuEditorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditorActionPerformed // TODO add your handling code here: }//GEN-LAST:event_MenuEditorActionPerformed private void MenuEditarCortarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditarCortarActionPerformed TextPaneCode.cut(); }//GEN-LAST:event_MenuEditarCortarActionPerformed private void MenuEditarColarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditarColarActionPerformed TextPaneCode.paste(); }//GEN-LAST:event_MenuEditarColarActionPerformed private void MenuEditarCopiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditarCopiarActionPerformed TextPaneCode.copy(); }//GEN-LAST:event_MenuEditarCopiarActionPerformed private void MenuEditarRedoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditarRedoActionPerformed urManager.redo(); }//GEN-LAST:event_MenuEditarRedoActionPerformed private void MenuEditarUndoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditarUndoActionPerformed urManager.undo(); }//GEN-LAST:event_MenuEditarUndoActionPerformed private void MenuEditarReformatarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuEditarReformatarActionPerformed int initPosCaret = TextPaneCode.getCaretPosition(); String newCode = BeautifyCode.IndentCode(TextPaneCode.getText()); TextPaneCode.setText(newCode); txtCode.clearTextBackground(); TextPaneCode.setCaretPosition(initPosCaret); }//GEN-LAST:event_MenuEditarReformatarActionPerformed private void menuItemNimbusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemNimbusActionPerformed // Muda a aparencia para Nimbus aparencias(2); }//GEN-LAST:event_menuItemNimbusActionPerformed private void menuItemWindowsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemWindowsActionPerformed // Muda a aparencia para Windows aparencias(3); }//GEN-LAST:event_menuItemWindowsActionPerformed private void menuItemMetalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemMetalActionPerformed // Muda a aparencia para Windows aparencias(0); }//GEN-LAST:event_menuItemMetalActionPerformed private void jButtonSairToobarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSairToobarActionPerformed confirmarSaidaNoAlgoritmo(); }//GEN-LAST:event_jButtonSairToobarActionPerformed private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed irParaLinha(); }//GEN-LAST:event_jMenuItem1ActionPerformed private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed buscaPalavra(); }//GEN-LAST:event_jMenuItem2ActionPerformed private void btConverteCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btConverteCActionPerformed veriricarAlgoritmo(); progC.construirC(); // constroi o programa C ConversorParaLC dialog = new ConversorParaLC(new javax.swing.JFrame(), true, progC.getProgramaC()); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { //System.exit(0); } }); dialog.setVisible(true); }//GEN-LAST:event_btConverteCActionPerformed private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed // TODO add your handling code here: FormAjuda dialog = new FormAjuda(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { //System.exit(0); } }); dialog.setVisible(true); }//GEN-LAST:event_jMenuItem3ActionPerformed private void MenuSelecionarTudoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuSelecionarTudoActionPerformed // TODO add your handling code here: TextPaneCode.requestFocus(); TextPaneCode.selectAll(); }//GEN-LAST:event_MenuSelecionarTudoActionPerformed private void btConverteJavaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btConverteJavaActionPerformed // TODO add your handling code here: veriricarAlgoritmo(); progJava.construirJava(); // constroi o programa JAVA ConversorParaLJava dialog = new ConversorParaLJava(new javax.swing.JFrame(), true, progJava.getProgramaJava()); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { //System.exit(0); } }); dialog.setVisible(true); //JOptionPane.showMessageDialog(null, progJava.getProgramaJava()); }//GEN-LAST:event_btConverteJavaActionPerformed private void btEmailActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btEmailActionPerformed codigo = TextPaneCode.getText(); java.awt.EventQueue.invokeLater(new Runnable() { public void run() { // new Envio_Email().setVisible(true); } }); }//GEN-LAST:event_btEmailActionPerformed private void menuExemploAlgoritmoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuExemploAlgoritmoActionPerformed // TODO add your handling code here: if (fileManager2.openFileWindow(this) != null) { LerExemploAlgol(fileManager2.getFileName()); } }//GEN-LAST:event_menuExemploAlgoritmoActionPerformed private void MenuFicheiro1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFicheiro1ActionPerformed // TODO add your handling code here: }//GEN-LAST:event_MenuFicheiro1ActionPerformed private void btDicaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDicaActionPerformed // TODO add your handling code here: dica = new DicasdoDia(); JOptionPane.showMessageDialog(null, dica.dicaDia(), "Dica do dia...", WIDTH); }//GEN-LAST:event_btDicaActionPerformed private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed // TODO add your handling code here: jMenuItem3ActionPerformed(null); // executa o form de ajuda }//GEN-LAST:event_jButton3ActionPerformed private void ButtonProgramaDebugActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonProgramaDebugActionPerformed // TODO add your handling code here: ProgState = SubrutinePlayer.ProgStateDEBUG; MenuAlgoritmoCorrerActionPerformed(evt); }//GEN-LAST:event_ButtonProgramaDebugActionPerformed private void ButtonProgramaRunOneStepActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonProgramaRunOneStepActionPerformed SubrutinePlayer.Player.ResumePlay(); }//GEN-LAST:event_ButtonProgramaRunOneStepActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new EditorCAlg().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton ButtonEditarAvancar; private javax.swing.JButton ButtonEditarColar; private javax.swing.JButton ButtonEditarCopiar; private javax.swing.JButton ButtonEditarCortar; private javax.swing.JButton ButtonEditarRecuar; private javax.swing.JButton ButtonEditarReformatar; private javax.swing.JButton ButtonFicheiroAbrir; private javax.swing.JButton ButtonFicheiroGuardar; private javax.swing.JButton ButtonFicheiroNovo; private javax.swing.JButton ButtonProgramaCorrer; private javax.swing.JButton ButtonProgramaDebug; private javax.swing.JButton ButtonProgramaParar; private javax.swing.JButton ButtonProgramaRunOneStep; private javax.swing.JButton ButtonProgramaVerificar; private javax.swing.JMenu MenuAjuda; private javax.swing.JMenuItem MenuAjudaAcerca; private javax.swing.JMenu MenuAlgoritmo; private javax.swing.JMenuItem MenuAlgoritmoCorrer; private javax.swing.JMenuItem MenuAlgoritmoVerificar; private javax.swing.JMenu MenuEditar1; private javax.swing.JMenuItem MenuEditarColar; private javax.swing.JMenuItem MenuEditarCopiar; private javax.swing.JMenuItem MenuEditarCortar; private javax.swing.JMenuItem MenuEditarRedo; private javax.swing.JMenuItem MenuEditarReformatar; private javax.swing.JMenuItem MenuEditarUndo; private javax.swing.JMenu MenuEditor; private javax.swing.JCheckBoxMenuItem MenuEditorCheckSyntax; private javax.swing.JMenuItem MenuEditorFonte; private javax.swing.JMenu MenuFicheiro1; private javax.swing.JMenuItem MenuFicheiroAberto1; private javax.swing.JMenuItem MenuFicheiroAberto2; private javax.swing.JMenuItem MenuFicheiroAberto3; private javax.swing.JMenuItem MenuFicheiroAbrir1; private javax.swing.JMenuItem MenuFicheiroGuardar; private javax.swing.JMenuItem MenuFicheiroGuardarComo; private javax.swing.JMenuItem MenuFicheiroNovo1; private javax.swing.JMenuItem MenuFicheiroSair1; private javax.swing.JMenuItem MenuProgramaParar; private javax.swing.JMenuItem MenuSelecionarTudo; public javax.swing.JTextPane TextPaneCode; private javax.swing.JToolBar TooBarEditar; private javax.swing.JToolBar ToolBarFicheiro; private javax.swing.JToolBar ToolBarPrincipal; private javax.swing.JToolBar ToolBarPrograma; private javax.swing.JButton btConverteC; private javax.swing.JButton btConverteJava; private javax.swing.JButton btDica; private javax.swing.JButton btEmail; private javax.swing.JButton jButton3; private javax.swing.JButton jButtonSairToobar; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JMenu jMenu1; private javax.swing.JMenuBar jMenuBar2; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JPopupMenu jPopupMenu1; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator10; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; private javax.swing.JSeparator jSeparator4; private javax.swing.JSeparator jSeparator5; private javax.swing.JSeparator jSeparator6; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JSplitPane jSplitPane2; private javax.swing.JToolBar jToolBarConversao; private javax.swing.JMenuItem menuExemploAlgoritmo; private javax.swing.JMenuItem menuItemMetal; private javax.swing.JMenuItem menuItemNimbus; private javax.swing.JMenuItem menuItemWindows; private javax.swing.JMenuItem menuMudarConsola; private java.awt.PopupMenu popupMenu1; private javax.swing.JScrollPane scrollCodeEditor; private javax.swing.JScrollPane scrollInfo; private javax.swing.JScrollPane scrollMonitor; private javax.swing.JScrollPane spInfo; private javax.swing.JScrollPane spOutput; private javax.swing.JTabbedPane tpUnderCodeEditor; // End of variables declaration//GEN-END:variables ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// private void setTextChanged(boolean flag) { textChanged = flag; if (flag) { this.setTitle(this.getTitle() + "*"); } } private boolean getTextChanged() { return textChanged; } private void ActualizarMenuFicheiro(String newFile) { this.editorProperties.SetLoadFileName(newFile); MenuFicheiroAberto1.setText(editorProperties.GetProperty("file1")); MenuFicheiroAberto2.setText(editorProperties.GetProperty("file2")); MenuFicheiroAberto3.setText(editorProperties.GetProperty("file3")); editorProperties.Save(); } private void NovoFicheiro() { if (getTextChanged()) // verifica se o texto foi alterado { int action = Message.Confirm("DESEJA SALVAR O ALGORITMO ACTUAL\n" + fileManager.getFileName()); if (action == JOptionPane.CANCEL_OPTION) { return; } if (action == JOptionPane.YES_OPTION) { this.MenuFicheiroGuardarActionPerformed(null); } } fileManager.clearFileName(); textChanged = false; data_hora(); TextPaneCode.setText(descAlgo); this.setTitle(this.TITLE + " - " + fileManager.getFileName()); } //--------------------------------------------------------------------------- public void LerFicheiro(String fileName) { if (fileManager.FileExists(fileName)) { TextPaneCode.setText(fileManager.ReadFile(fileName)); //colocar o cursor no inicio do texto TextPaneCode.setCaretPosition(1); // actualizar o menu ActualizarMenuFicheiro(fileName); textChanged = false; this.setTitle(this.TITLE + " - " + fileManager.getFileName()); } } //--------------------------------------------------------------------------- public void LerExemploAlgol(String fileName) { if (fileManager.FileExists(fileName)) { TextPaneCode.setText(fileManager.ReadFile(fileName)); //colocar o cursor no inicio do texto TextPaneCode.setCaretPosition(1); // actualizar o menu ActualizarMenuFicheiro(fileName); textChanged = false; this.setTitle(this.TITLE + " - " + fileManager.getFileName()); objeto_propriedade.buscaNome_linha(fileManager.getFileName(), TextPaneCode.getSelectionEnd()); } } //--------------------------------------------------------------------------- public void GuardarFicheiro(String fileName) { //se conseguir salvar if (fileManager.saveFileUpdate(TextPaneCode.getText())) { textChanged = false; this.setTitle(this.TITLE + " - " + fileManager.getFileName()); objeto_propriedade.buscaNome_linha(fileManager.getFileName(), TextPaneCode.getSelectionEnd()); } } //--------------------------------------------------------------------------- public void GuardarFicheiroComo(String fileName) { //se conseguir salvar if (fileManager.saveFile(this, fileManager.getFileName(), TextPaneCode.getText())) { textChanged = false; this.setTitle(this.TITLE + " - " + fileManager.getFileName()); ActualizarMenuFicheiro(fileName); objeto_propriedade.buscaNome_linha(fileManager.getFileName(), TextPaneCode.getSelectionEnd()); } } /////////////////////////////////////////////////////////////////////////////// public void veriricarAlgoritmo() { try { calend = new Calendario(); this.tpUnderCodeEditor.setSelectedIndex(1); info.Clear(); info.write("\n" + calend.dataAtual()); info.write("\nAlgoritmo: " + fileManager.getFileName()); info.write("\n\nA compilar o algoritmo..."); Intermediario.console = null; //David: Isto é preciso, não tirar BloqueClasse.ClaseActualParaExpandir = null; intermediario = new Intermediario(TextPaneCode.getText()); bloque = intermediario.getInicio(); info.write("\nO algoritmo não tem erros da compilação...\n"); progJava = new construirProgramaJava(TextPaneCode.getText()); progC = new construirProgramaC(TextPaneCode.getText()); } catch (LanguageException e) { SelectErrorLine(e.line); Message.CompileError(e); info.write("\n\n---------------------\nERRO DE COMPILAÇÃO: \n" //+ " LINHA:\n" + e.line + "\n" + " INSTRUÇÃO:\n\t" + e.codeLine + "\n" + " ERRO:\n\t" + e.error + "\n" + " SOLUÇÃO:\n\t" + e.solution + "\n"); bloque = null; ProgState = -1; } } /////////////////////////////////////////////////////////////////////////////// public void run() { try { //this.MenuFicheiroGuardarActionPerformed(null); console.Clear(); //mostrar a consola tpUnderCodeEditor.setSelectedIndex(0); Intermediario.console = console; //David: Isto é preciso, não tirar //prog = intermediario.getInicio(); currentDebugInstruction = null; //David: Ejecutar el llamado a la instruccion falsa temporal info.write("\nO Algoritmo está sendo executado. . . "); SubrutinePlayer.Player.RunState = ProgState; SubrutinePlayer.Player.LimparPilhaExecucao(); SubrutinePlayer.Player.ExecuteSubrutine(bloque, new Vector<String>(), null); Intermediario.console = null; //David: Isto é preciso, não tirar BloqueClasse.ClaseActualParaExpandir = null; calend = new Calendario(); info.write("\nO programa terminou com sucesso... "); info.write("\n" + calend.dataAtual()); } catch (LanguageException e) { SelectErrorLine(e.line); Message.ExecutionError("ERRO DE EXECUÇÃO", e); info.write("\n\n---------------------\nERRO DE EXECUÇÃO: \n" //+ " LINHA:\n\t" + (e.line == 0 ? instruction.GetCharNum() : e.line) + "\n" //DAVID: o valor da linha não é real + " INSTRUÇÃO:\n\t" + e.codeLine + "\n" + " ERRO:\n\t" + e.error + "\n" + " SOLUÇÃO:\n\t" + e.solution + "\n"); bloque = null; } catch (InterruptedException e) { bloque = null; } autoExecute = null; ButtonProgramaParar.setVisible(false); ButtonProgramaRunOneStep.setVisible(false); ButtonProgramaDebug.setVisible(true); ButtonProgramaDebug.setEnabled(true); ButtonProgramaVerificar.setEnabled(true); jSplitPane1.getBottomComponent().setVisible(false); ProgState = -1; } public void RunPerformed(InstanciaSubrutine prog) { JTreeTable treeTable = new JTreeTable(new SymbolsModel(prog)); jSplitPane1.setBottomComponent(treeTable); jSplitPane1.setDividerLocation(800); if (prog != null && prog.NodeActual != null && prog.NodeActual.EsReferencia == false) { SelectDebugLine(prog.NodeActual.GetCharNum()); currentDebugInstruction = prog.NodeActual; } if (prog != null && prog.NodePrevio != null && prog.NodePrevio.EsReferencia == false) { DeSelectLine(prog.NodePrevio.GetCharNum()); } } public void ExecutarDebug() { } public void confirmarSaidaNoAlgoritmo() { if (getTextChanged()) // verifica se o texto foi alterado { int action = Message.Confirm("DESEJA SALVAR O ALGORITMO ACTUAL\n" + fileManager.getFileName()); if (action == JOptionPane.CANCEL_OPTION) { return; } if (action == JOptionPane.YES_OPTION) { this.MenuFicheiroGuardarActionPerformed(null); //guardar as propriedades editorProperties.Save(); //libertar os recursos this.dispose(); System.exit(0); } if (action == JOptionPane.NO_OPTION) { //guardar as propriedades editorProperties.Save(); //libertar os recursos this.dispose(); System.exit(0); } } else { //guardar as propriedades editorProperties.Save(); this.dispose(); System.exit(0); } } /////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //--------------- Retornar componentes ------------------------------------ public JTextPane getEditorTexto() { return TextPaneCode; } //--------------- Retornar componentes ------------------------------------ public void getEditorTextoFocus() { TextPaneCode.requestFocus(); } //------------------------------------------------------------------------ public JScrollPane getScrolEditorTexto() { return scrollCodeEditor; } // Linhas //------------------------Mudar a component ------------------------------ public void setScrolEditorTexto(JScrollPane scroll) { jSplitPane1.setTopComponent(scroll); jSplitPane1.getRightComponent().setVisible(false); } //------------------------Mudar a component ------------------------------ public void setEditorTexto(JTextPane texto) { TextPaneCode = texto; } /** * Retorna o numero total de linhas do TextPane */ public int getTotalLinhas() { int numeroLinhas = 0; for (int i = 0; i < TextPaneCode.getText().length(); i++) { if (TextPaneCode.getText().charAt(i) == '\n') { numeroLinhas++; } } return numeroLinhas + 1; } //========================================================================== private void irParaLinha() { if ((frameLine == null) || (!frameLine.isShowing())) { // bool que verifica se a pessoa quer fazer a busca desde o inicio frameLine = new JFrame("Ir para a linha..."); Container Lexcontainer = new Container(); texto_busca = new JTextField(15); botao_buscaProximo = new JButton("Ir"); Lexcontainer = frameLine.getContentPane(); Lexcontainer.setLayout(new FlowLayout()); Lexcontainer.add(texto_busca); Lexcontainer.add(botao_buscaProximo); botao_buscaProximo.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { int contadorDeLinhas = 0; int caretPos = 0; if (verificaDesdeInicio == true) { TextPaneCode.setCaretPosition(0); verificaDesdeInicio = false; desdeInicio.setSelected(false); desdeAgora.setSelected(true); } // int k = 0; if (texto_busca.getText().length() == 0) { JOptionPane.showMessageDialog(frameLine, "O CAMPO NÃO PODE ESTAR VAZIO!", VERSION, JOptionPane.ERROR_MESSAGE); } else { try { int pos = Integer.parseInt(texto_busca.getText().toString()); int Total = getTotalLinhas(); if ((pos <= Total) && (pos > 0)) { for (int i = 0; i < TextPaneCode.getText().length(); i++) { if (TextPaneCode.getText().charAt(i) == '\n') { contadorDeLinhas++; if (contadorDeLinhas == pos) { break; } } else { caretPos++; } } if (pos == 1) { TextPaneCode.setCaretPosition(0); } else if (pos == Total) { TextPaneCode.setCaretPosition(caretPos); } else { TextPaneCode.setCaretPosition(caretPos + contadorDeLinhas - 1); } frameLine.setVisible(false); TextPaneCode.requestFocus(); } else { JOptionPane.showMessageDialog(frameLine, "A linha da busca nao existe!", VERSION, JOptionPane.ERROR_MESSAGE); } } catch (NumberFormatException numero) { JOptionPane.showMessageDialog(frameLine, "Formato de numero invalido!", VERSION, JOptionPane.ERROR_MESSAGE); } }//fim else } }); frameLine.setSize(270, 70); Lexcontainer.setVisible(true); frameLine.setResizable(false); frameLine.setLocationRelativeTo(frameLine); frameLine.setAlwaysOnTop(true); frameLine.setVisible(true); //setando o botao como submit do formulario de busca texto_busca.getRootPane().setDefaultButton(botao_buscaProximo); } else { frameLine.requestFocus(); } } //-------------------------------------------------------------------------- /** * Classe que realiza busca de palavras */ public void buscaPalavra() { if ((frameBusca == null) || (!frameBusca.isShowing())) { //bool que verifica se a pessoa quer fazer a busca desde o inicio frameBusca = new JFrame("Procurar..."); Container Lexcontainer = new Container(); texto_busca = new JTextField(20); final JLabel labelPesquisa = new JLabel(""); labelPesquisa.setForeground(Color.red); botao_buscaProximo = new JButton(" Buscar "); desdeAgora = new JRadioButton("A partir deste ponto "); desdeInicio = new JRadioButton("Desde o inicio "); desdeAgora.setToolTipText("Realiza a busca a partir da posicao actual do cursor"); desdeInicio.setToolTipText("Realiza a busca desde o inicio do codigo"); desdeInicio.setSelected(true); verificaDesdeInicio = true; Lexcontainer = frameBusca.getContentPane(); JPanel painel_head = new JPanel(); painel_head.setLayout(new FlowLayout()); painel_head.setBackground(Color.DARK_GRAY); JLabel lb = new JLabel("Encontrar"); lb.setForeground(Color.white); painel_head.add(lb); painel_head.add(texto_busca); //153,180,209 JPanel painel_body = new JPanel(); painel_body.setLayout(new BorderLayout()); painel_body.add(desdeAgora, BorderLayout.NORTH); painel_body.add(desdeInicio, BorderLayout.SOUTH); JPanel painel_butao = new JPanel(); painel_butao.setLayout(new BorderLayout()); painel_butao.add(botao_buscaProximo, BorderLayout.CENTER); JPanel painel_feedback = new JPanel(); painel_feedback.setLayout(new FlowLayout()); painel_feedback.add(labelPesquisa); Lexcontainer.setLayout(new FlowLayout()); Lexcontainer.setBackground(Color.white); Lexcontainer.add(painel_head); Lexcontainer.add(painel_body); Lexcontainer.add(painel_feedback); Lexcontainer.add(painel_butao); Box.createGlue(); botao_buscaProximo.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { labelPesquisa.setText(""); if (verificaDesdeInicio == true) { TextPaneCode.setCaretPosition(0); verificaDesdeInicio = false; desdeInicio.setSelected(false); desdeAgora.setSelected(true); } int k = 0; if (texto_busca.getText().length() == 0) { JOptionPane.showMessageDialog(frameBusca, "O campo de busca está vazio!", VERSION, JOptionPane.WARNING_MESSAGE); } else { int posAtual = TextPaneCode.getCaretPosition(), posInicial = 0; String palavra = texto_busca.getText().toString(); for (int i = posAtual; i < TextPaneCode.getText().length(); i++) { if (palavra.charAt(0) == TextPaneCode.getText().charAt(i)) { posInicial = i; k = i; for (int j = 0; j < palavra.length(); j++) { if (palavra.charAt(j) == TextPaneCode.getText().charAt(k)) { k++; } else { k = -1; labelPesquisa.setText("String nao encontrada"); break; } } if (k != -1) { if (previous.equals(TextPaneCode.getSelectedText())) { labelPesquisa.setText("String nao encontrada"); } else { labelPesquisa.setText(""); } TextPaneCode.select(posInicial, k); previous = TextPaneCode.getSelectedText(); break; } } else { labelPesquisa.setText("String nao encontrada"); } } }//fim else } }); desdeAgora.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { verificaDesdeInicio = false; desdeInicio.setSelected(false); desdeAgora.setSelected(true); } }); desdeInicio.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { verificaDesdeInicio = true; desdeInicio.setSelected(true); desdeAgora.setSelected(false); } }); frameBusca.setSize(350, 160); Lexcontainer.setVisible(true); frameBusca.setResizable(false); frameBusca.setLocationRelativeTo(frameBusca); frameBusca.setAlwaysOnTop(true); frameBusca.setVisible(true); texto_busca.getRootPane().setDefaultButton(botao_buscaProximo); } else { frameBusca.requestFocus(); } } public void procuraPalavra() { /* Alterada no dia 11 de Março de 2014 int k = 0; if( txtbuscador.getText().length() == 0 ){ JOptionPane.showMessageDialog(null,"O campo de busca está vazio!", VERSION,JOptionPane.WARNING_MESSAGE); } else{ TextPaneCode.setCaretPosition(0); TextPaneCode.requestFocus(); int posAtual = TextPaneCode.getCaretPosition(), posInicial = 0; String palavra = txtbuscador.getText().toString(); for(int i = posAtual; i < TextPaneCode.getText().length(); i++){ if(palavra.charAt(0) == TextPaneCode.getText().charAt(i)){ posInicial = i; k = i; for(int j=0; j<palavra.length(); j++){ if(palavra.charAt(j) == TextPaneCode.getText().charAt(k)){ k++; } else{ k = -1; break; } } if( k != -1){ TextPaneCode.select( posInicial, k); previous = TextPaneCode.getSelectedText(); break; } } } }//fim else if( k == -1){ JOptionPane.showMessageDialog(null,"A palavra não foi encontrada!", VERSION,JOptionPane.WARNING_MESSAGE); } */ } private void data_hora() { calend = new Calendario(); //David:inicio descAlgo = "" //+ não utilizar, da erro com o depurador. David ->//"/*ALGORITMO: \"Nome do algoritmo\"" //+ não utilizar, da erro com o depurador. David -->//"\n--AUTOR: "+System.getProperty("user.name")+"" //+ não utilizar, da erro com o depurador. David --->//"\n--DATA E HORA:"+calend.dataAtual() //+ não utilizar, da erro com o depurador. David ---->//" */ \n" //+ "classe pessoa\n" //+ " literal nome\n" //+ " inteiro idade\n" //+ "fimclasse\n" //+ "procedimento idade(inteiro a[3])  \n" //+ " mostre \"idade \\n\"\n" //+ " inteiro a\n" //+ " escreva a\n" //+ " a[0] <- 10 \n" //+ " escreva a[0]+a[1]+a[2]\n" //+ "fimprocedimento\n" //+ "\n" + "inicio\n" + " //Instruções\n" + "fimalgoritmo \n"; } //----------------------AVANCAR E RETROCEDER --------------------------------- Botoes_nav obj_RA; public class Botoes_nav { Botoes_nav() { // evento de gravação conteudo[0] = TextPaneCode.getText(); ActionListener gravar = new ActionListener() { public void actionPerformed(ActionEvent e) { if (!TextPaneCode.getText().equals(conteudo[cont])) { if (cont == limite) { cont = 0; girou = true; } // se estamos no limite de armazenamento retorna apangando os ultimos valores graudados cont++; // dou uma nova posicão de armazenamento inicio = cont; fim = cont; ButtonEditarRecuar.setEnabled(true); ButtonEditarAvancar.setEnabled(false); conteudo[cont] = TextPaneCode.getText(); // quardo novo conteudo } } }; tempo = new Timer(750, gravar); } public void eventoRetroceder() { tempo.stop(); if ((cont == 1) && (girou == true)) { cont = limite + 1; // +1 ajuste porque logo abaixo sera descrementado } cont--; TextPaneCode.setText(conteudo[cont]); // System.out.println(cont+" retroceder "+ inicio); desabilitarInicio(inicio); // controlo no retrov tempo.start(); } public void desabilitarInicio(int param) { if (girou == false) { param = 0; inicio = 0; } if (param == limite) //(cont==param+1)|| { param = 1; inicio = 1; } if ((cont == param) || (girou == true) && (cont == param + 1)) // +1 para no ultimo alteração possivel e a apenas = caso param é o limite { ButtonEditarRecuar.setEnabled(false); //girou=false; } else { ButtonEditarRecuar.setEnabled(true); } ButtonEditarAvancar.setEnabled(true); } public void eventoAvancar() { tempo.stop(); if ((cont == limite) && (girou == true)) { cont = 0; } cont++; TextPaneCode.setText(conteudo[cont]); // System.out.println(cont+ " avanco "+ fim); desabilitarFim(fim); ButtonEditarRecuar.setEnabled(true); tempo.start(); } private void desabilitarFim(int param) { if (cont == param) { ButtonEditarAvancar.setEnabled(false); } } private int cont = 0, inicio = 0, fim = 0, critical = -1; private final int limite = 1000; // quantidade de palavras que vai armazenar por vez private boolean girou = false; private String[] conteudo = new String[limite + 2]; // mais dois porque começamos o vecto com 0 e a primeira posicão ñ utilizamos porque consideramos o estado inicial private Timer tempo; } }