public static void updateComponents( Component[] comp, Map<String, MField> fields, boolean checkContextForAccess, boolean checkContextForDisplayed) { for (int i = 0; i < comp.length; i++) { String columnName = comp[i].getName(); if (columnName != null) { MField mField = fields.get(columnName); if (mField != null) { if (mField.isDisplayed(checkContextForDisplayed)) // check context { if (!comp[i].isVisible()) { comp[i].setVisible(true); // visibility } if (comp[i] instanceof VEditor) { VEditor ve = (VEditor) comp[i]; boolean rw = mField.isEditable(checkContextForAccess); // r/w - check Context ve.setReadWrite(rw); // Log.trace(7, "GridController.dynamicDisplay RW=" + rw, mField); boolean manMissing = false; // least expensive operations first // missing mandatory if (rw && (mField.getValue() == null) && mField.isMandatory(true)) { // check context manMissing = true; } ve.setBackground(manMissing || mField.isError()); } } else if (comp[i].isVisible()) { comp[i].setVisible(false); } } } } // all components }
/** * Descripción de Método * * @param col */ public void dynamicDisplay(int col) { // log.config( "GridController.dynamicDisplay (" + m_mTab.toString() + ") SingleRow=" + // isSingleRow() + ", OnlyMultiRow=" + m_onlyMultiRow); // Don't update if multi-row if (!isSingleRow() || m_onlyMultiRow) { return; } if (!m_mTab.isOpen()) { return; } // Selective if (col != 0) { MField changedField = m_mTab.getField(col); String columnName = changedField.getColumnName(); ArrayList dependants = m_mTab.getDependantList(columnName); log.config( "(" + m_mTab.toString() + ") " + columnName + " - Dependents=" + dependants.size()); // No Dependents and no Callout - Set just Background if ((dependants.size() == 0) && (changedField.getCallout().length() > 0)) { Component[] comp = vPanel.getComponents(); for (int i = 0; i < comp.length; i++) { if (columnName.equals(comp[i].getName()) && (comp[i] instanceof VEditor)) { VEditor ve = (VEditor) comp[i]; boolean manMissing = false; boolean noValue = (changedField.getValue() == null) || (changedField.getValue().toString().length() == 0); if (noValue && changedField.isEditable(true) && changedField.isMandatory(true)) { // check context manMissing = true; } ve.setBackground(manMissing || changedField.isError()); break; } } return; } } // selective // complete single row re-display log.config("(" + m_mTab.toString() + ")"); // All Components in vPanel (Single Row) updateComponents(vPanel.getComponents(), m_mTab.getMapFields(), true, true); log.config("(" + m_mTab.toString() + ") - fini - " + ((col == 0) ? "complete" : "seletive")); } // dynamicDisplay