private void initListeners() {
        taUpdate.getDocument().addDocumentListener( new DocumentListener() {
            @Override
            public void removeUpdate(DocumentEvent e) {
                enableAction(e);
            }
            @Override
            public void insertUpdate(DocumentEvent e) {
                enableAction(e);
            }
            @Override
            public void changedUpdate(DocumentEvent e) {
                enableAction(e);
            }
            private void enableAction(DocumentEvent e) {
                boolean enabled = e.getDocument().getLength() > 0;
                getUpdateAction().setEnabled( enabled  );
            }
        });
        jtfChildName.getDocument().addDocumentListener( new DocumentListener() {
            @Override
            public void removeUpdate(DocumentEvent e) {
                System.out.println(".removeUpdate()");
                enableAction(e);
            }
            @Override
            public void insertUpdate(DocumentEvent e) {
                System.out.println(".insertUpdate()");
                enableAction(e);
            }
            @Override
            public void changedUpdate(DocumentEvent e) {
                System.out.println(".changedUpdate()");
                enableAction(e);
            }
            private void enableAction(DocumentEvent e) {
                int docLength = e.getDocument().getLength();
                boolean enabled;
                try {
                    enabled = ( docLength > 0 )
                        && !e.getDocument().getText(0, docLength).trim().equals("");
                    getAddChildAction().setEnabled( enabled  );
                } catch (BadLocationException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        });
    }