@Override
            public void actionPerformed(ActionEvent e) {
                PolinomeBuilder builder = new PolinomeBuilder();
                Polinome polinom1 = new Polinome();
                Polinome polinom2 = new Polinome();
                String pol1 = firstPolinome.getText();
                String pol2 = secondPolinome.getText();

                Boolean arePolinomesValid = true;
                if (!builder.isPolinomeRepresentationValid(pol1)) {
                    // afisez mesaj pentru 1 polinom
                    firstPolinome.setForeground(Color.red);
                    arePolinomesValid = false;
                }
                if (!builder.isPolinomeRepresentationValid(pol2)) {
                    // afisez mesaj pentru 2 polinom
                    secondPolinome.setForeground(Color.red);
                    arePolinomesValid = false;
                }
                if (!arePolinomesValid) {
                    label.setText("Polinomul este reprezentat gresit");
                    return;
                }

                polinom1 = builder.parsePolinome(pol1);
                polinom2 = builder.parsePolinome(pol2);

                String polinom_rezultant = new String();
                if ((JButton) e.getSource() == buttonSum) {
                    polinom_rezultant = polinom1.add(polinom2).toString();
                } else if ((JButton) e.getSource() == buttonSubtract) {
                    polinom_rezultant = polinom1.subtract(polinom2).toString();
                } else if ((JButton) e.getSource() == buttonMultiply) {
                    polinom_rezultant = polinom1.multiply(polinom2).toString();
                } else if ((JButton) e.getSource() == buttonDerivate) {
                    polinom_rezultant = polinom1.derivate().toString();
                }

                label.setText(polinom_rezultant);
            }