示例#1
0
 /** Resets all derived attributes, based on a set of looks. */
 public void setLooks(Set<Look> looks) {
   testFixed(false);
   VisualMap newValues = Look.getVisualsFor(looks);
   Set<VisualKey> staleKeys = EnumSet.noneOf(VisualKey.class);
   for (VisualKey key : VisualKey.deriveds()) {
     if (key.getNature() == Nature.DERIVED) {
       Object newValue = newValues.map.get(key);
       boolean refresh;
       if (newValue == null) {
         Object oldValue = this.map.remove(key);
         refresh = oldValue != null;
       } else {
         Object oldValue = this.map.put(key, newValue);
         refresh = !newValue.equals(oldValue);
       }
       // tell the attribute to refresh
       // if something actually changed
       if (refresh) {
         staleKeys.add(key);
       }
     }
   }
   this.attrMap.setStale(staleKeys);
 }