I'm writing an settings admin page for editing a bunch of Boolean
settings. I'm using a custom component to edit the boolean values.
This custom component needs access to two settings objects
(masterSettings, customSettings) to determine if a custom setting is
overridden by a master setting.
some pseudocode:
public class SettingsEditPage extends WebPage {
public SettingsEditPage(Settings masterSettings, Settings
customSettings) {
Model masterModel = new CompoundPropertyModel(new
LoadableDetachableModel(masterSettings){/* load method omitted */});
Model cutomModel = new CompoundPropertyModel(new
LoadableDetachableModel(customSettings){/* load method omitted */});
//
add(new SettingsEditComponent("canDeleteWidgets", masterModel,
customModel));
add(new SettingsEditComponent("canCreateWidgets", masterModel,
customModel));
add(new SettingsEditComponent("allowsReturns", masterModel,
customModel));
}
}
I'd like to use the component id for the SettingsEditComponent as a
property expression, like in a CompoundPropertyModel. This would be
used to query the master settings first. If that returns null, use
the value from the custom settings. I also need the ability to
display to the user whether a value came from the masterSettings or
customSettings.
It's not clear to me what the best way to architect this is.
Should I make a custom model that wraps both the masterSettings and
customSettings objects? It would need a boolean method to determine
whether a given propertyExpression is taken from the master or custom
settings. If I do this, the SettingsEditComponent constructor would
need to only accept that specific model type (or an interface with
the boolean method, which is overkill).
Or, should I pass both settings objects into the
SettingsEditComponent, as pictured above? It seems like it would be
harder to have detachable models in this case (I guess I'd just need
to override detatchModels()).
Or, some other option that I'm missing...
Thanks!
--
Sam Barnum
http://www.360works.com
415.865.0952