/** * Guarda el estado de un componente. Este proceso es recursivo. El estado se guarda en un array y * este array no es vaciado inicialmente. La idea es guardar en un disabled y recuperar en un * enabled y asegurarse que no puede ocurrir un disabled o un enabled dos veces. * * @param component */ private void saveComponentsStatus(JComponent component) { // Guardar estado StatusComponentStruct auxStatus = new StatusComponentStruct(); auxStatus.setEnabled(component.isEnabled()); auxStatus.setObject(component); statusList.add(auxStatus); for (int i = 0; i < component.getComponentCount(); i++) if (component.getComponent(i) instanceof JComponent) saveComponentsStatus((JComponent) component.getComponent(i)); }
/** * Recupera el estado de un componente y todos sus hijos, vaciando la pila de estados. Eso quiere * decir que no se podra volver a recuperar su estado sin haberlo guardado previamente. * * @param component */ private void restoreStatus(JComponent component) { boolean auxEnabled = false; boolean finded = false; // Buscar estado de dicho componente for (int i = 0; i < statusList.size(); i++) { StatusComponentStruct auxStatus = (StatusComponentStruct) statusList.get(i); if (auxStatus.getObject() == component) { auxEnabled = auxStatus.isEnabled(); statusList.remove(i); finded = true; break; } } // Asignar su estado if (finded) component.setEnabled(auxEnabled); for (int i = 0; i < component.getComponentCount(); i++) if (component.getComponent(i) instanceof JComponent) restoreStatus((JComponent) component.getComponent(i)); }