Laurent Longuevergne
email: laurent.longuevergne@beg.utexas.edu

J P Boy

Nicolas Florsch

Daniel Viville

Gilbert Ferhat

Patrice Ulrich

Bernard Luck

Jacques Hinderer

Local and global hydrological contributions to gravity variations observed in Strasbourg

Keywords: superconducting gravimeter, local hydrology, global hydrology, soil moisture, water storage, Newtonian attraction . 1

We investigate the contribution of local and global hydrology to the superconducting gravimeter installed in the Strasbourg observatory. A deterministic approach is presented to account for the contribution of the soils in the vicinity of the gravimeter: both amount and distribution of water masses are determined before calculating Newtonian attraction.

No calibration is performed on geodetic time series.

Two multi-depth frequency-domain reflectometer (FDR) probes have been installed to monitor the amount of water stored in the soil layer above the gravimeter. Since August 2005, they have been monitoring the variation of the water content of the entire soil thickness. Several investigations have been undertaken in order to estimate the distribution of water masses: a precise local DEM has been established using differential GPS. The geometry and heterogeneity of the soil layer have been evaluated thanks to geophysical and geomechanical prospections. The comparison between observed and modelled gravity variations shows that daily up to seasonal variations are in good agreement. For long term variations, deep water storage and other processes have to be modelled to explain recorded gravity variations.

Introduction

Once the Earth tide is removed, hydrology accounts for a major part of the signal recorded by gravimeters and might hide delicate internal dynamical phenomena. Dal [START_REF] Dal Moro | Subsurface deformations induced by rainfall atmospheric pressure: tilt/strain measurements in the NE Italy seismic area[END_REF] concluded that hydrological effects should be removed before studying signals of geodynamical interest. Moreover, in the quest to validate satellitederived gravity observations with ground observations, one should take into account the difference between ground instrument-scale hydrological contribution and satellite-scale contribution (e.g. Hinderer et al., this issue).

Two methodologies have arisen to investigate hydrological effects. While both of them provide relatively good results, they are very different in terms of modelled processes and investigated spatial extent. The first methodology focused on local effects driven by Newtonian attraction. It is generally based on correlations studies between local hydrological measurements or models with gravity time series (e.g. [START_REF] Bower | Precipitation effects on gravity measurements at the Canadian absolute gravity site[END_REF]Crossley et al., 1998;Van Camp et al. 2006). Kroner andJahr (2004, 2006) wanted to better understand the water fluxes around the gravimeter and so focused on isolated hydrological processes thanks to controlled man-made hydrological experiments.

Recently, some authors switched to a deterministic approach to evaluate Newtonian attraction (i.e. without calibrating on gravity data), leading to promising results [START_REF] Hasan | Modeling the hydrological effect on local gravity at Moxa, Germany[END_REF][START_REF] Meurers | Correcting superconducting gravity time-series using rainfall modelling at the Vienna and Membach station and application to earth tide analysis[END_REF].

The second methodology, a somewhat different deterministic approach considers the physical modelling of the hydrological contribution [START_REF] Crossley | Status of the GGP satellite project[END_REF]. Both surface loading and Newtonian attraction effects are calculated using global hydrological models (e.g. GLDAS [START_REF] Rodell | The global land data assimilation system[END_REF]). No calibration is performed on gravity data, so this process-oriented approach is likely to be more robust. However, this methodology is limited by the spatial sampling of global models (at best 0.25°) as well as their temporal resolution (3 hours). Note that [START_REF] Virtanen | Comparison of superconducting gravimeter observations with hydrological models of various spatial extents[END_REF] have set up hydrological models of several spatial extents in order to improve this approach.

.

3.

This work follows [START_REF] Crossley | Status of the GGP satellite project[END_REF]. We have set up a local hydrological monitoring system to better estimate water redistribution in the unsaturated zone at the scale of several hundred of meters around the gravimeter. Two main questions need to be answered before calculating the Newtonian attraction effect: what is the amount of water and where are these water masses? The first question will be tackled using soil moisture measurements. For the second question, we have positioned the gravimeter mass test inside its environment.

Methodological approach

Local hydrology vs. global hydrology

Two deformation processes forced by local and remote hydrological surface loads generate a measurable gravity effect (see [START_REF] Llubes | Local hydrology, the global geodynamics project CHAMP/GRACE perspective : some case studies[END_REF]: Newtonian attraction and surface loading, i.e. the elastic deformation of the earth crust due to the weight of water.

Traditionally, the hydrological problem has been separated into a 'local' and a 'global' contribution. This separation is more pragmatic than physical since Newtonian attraction has to be modelled for both local and global water distributions.

Figure 1 shows monthly gravity residuals (after correction of tides, polar motion and atmospheric contribution) for 6 stations of the GGP network, classified with respect to the relative position of the gravimeter with the local soil layer. In one case, storing water in the local soil layer increases gravity; in the other case, gravity decreases. For stations above ground, the residuals show a clear annual signal with large amplitude (200 nm.s -2 ).

Conversely, gravity residuals of stations below ground are two times lower and no clear annual variations may be extracted from the time series. This means that local hydrology and global hydrology create constructive and destructive interferences. As a consequence, both local and global hydrological effects are correlated and have the same order of magnitude, and both have to be modelled.

.

4.

The real difficulty of the hydrological contribution to gravity observations can be stated as follows: all local and global hydrological contributions are driven by climate and thus have a correlated behaviour at seasonal time scales. These contributions mix in gravity data so a robust estimation of the hydrological contribution should not calibrate local hydrological computations on gravity data. This has to be done on complementary information.

Calculating Newtonian attraction

One question remains: where is the spatial limit between local and global hydrology?

This question is important to precisely calculate the Newtonian attraction contribution but also to set up an adequate local hydrological monitoring system. In practical terms, when . 5.

calculating the Newtonian attraction, all water masses should be taken into account but they should not be included in both local and global zones.

The mechanical part of our problem was studied by [START_REF] Farrell | Deformation of the Earth by surface load[END_REF] among others. The gravity effect due to surface loads can be written as an infinite sum of Legendre polynomials. The effect of a unit point mass (or Green function) for a SNREI earth may also be determined by calculating this infinite sum in the sense of distribution. The Green function of Newtonian attraction for an instrument above the surface can be written as follows:

GN ( ) ⎪ ⎩ ⎪ ⎨ ⎧ = > = 0 2 0 2 / sin 4 ) ( 2 ψ π ψ ψ ψ if G if a G GN
where is the universal constant of Gravitation, the mean radius of the Earth,

G a
ψ the angular distance between the observation point and the point mass (see [START_REF] Boy | Global atmospheric loading and gravity[END_REF].

This way of writing the Newtonian attraction effect reflects that the Bouguer plate is Local hydrology is described here as a Dirac function, but this expression is valid for a spherical earth only. On the real Earth, topography quickly breaks spherical symmetry when getting closer to the instrument and becomes the major contributor of Newtonian attraction. The calculation of Newtonian attraction created by a uniform layer distributed on topography should be sufficient to determine the limit between local and global hydrology. This limit can be as far as several kilometres as shown by [START_REF] Meurers | Correcting superconducting gravity time-series using rainfall modelling at the Vienna and Membach station and application to earth tide analysis[END_REF].

. 6.

Local hydrology in J9 observatory

The gravimeter has been installed in an old German fort built in the 1870s, located on top of a loessic hill. A geological cut of the site may be found in [START_REF] Llubes | Local hydrology, the global geodynamics project CHAMP/GRACE perspective : some case studies[END_REF]. Two hydrological units deserve to be studied:

-The small perched sand aquifer located below the gravimeter. The income of water is filtrated by the soils above, so it has little effect on gravity variations [START_REF] Amalvict | Long-term and seasonal gravity changes at the Strasbourg station and their relation to crustal deformation and hydrology[END_REF].

-

The loessic soils around the gravimeter. On a geological point of view, loess are very special soils. They are a homogeneous, nonstratified, porous, aeolian sediment (e.g. [START_REF] Bittler | Banque régionale de l'aquifère rhénan -programme 2003-2006[END_REF]. They have a high water retention capacity and can store a 200-mm full water layer per meter of soil. As a consequence, they could potentially induce a non-negligible gravity contribution. In situ tests have shown a porosity greater than 50% for most of the soil loess soil layer above the gravimeter.

A first-order estimation of the hydrological signal induced by the top soil layer underlined its non-negligible contribution [START_REF] Llubes | Local hydrology, the global geodynamics project CHAMP/GRACE perspective : some case studies[END_REF]). We have equipped J9

observatory with a local hydrological monitoring system. According to [START_REF] Wilson | Identifying and quantifying sources of variability in temporal and spatial soil moisture observations[END_REF], the temporal soil moisture variability at plot scale is five time more important than the spatial variability. As a consequence, the calculation of the local hydrological contribution (and Newtonian attraction) is split into two steps: first the estimation of the amount of water, and second the distribution of the water masses around the gravimeter.

Amount of water

We probes have multiple sensors installed along a vertical profile; they therefore allow the monitoring of soil moisture changes in the entire soil thickness. These probes have been chosen because they are set up in a borehole access-tube, which has several advantages:

(1) it minimizes soil and root disturbance so that the natural water flow is kept unchanged and ( 2) it makes maintenance easier, sensors are easily replaced. We have installed a 90cm probe in the 1-m thick loess layer covering the fort at 10, 20, 30, 50 and 80 cm depth and a second 2-m probe in front of the fort to evaluate spatial variations.

Time series show that most of the high-frequency contributions of water storage in the soil layer occur in the top 20 cm. The soil then behaves as a non-linear filter and the deepest probes record essentially seasonal variations.

The calibration factor of gravimeters is determined with an uncertainty lower than 1% (e.g. [START_REF] Francis | Evaluation of the precision of using absolute gravimeters to calibrate superconducting gravimeters[END_REF]). As we do not want to use gravity data to calibrate the sensors, the soil moisture probes calibration has been undertaken on laboratory measurements, as follows:

-First, all the sensors are referenced with respect to a measure in air ( ). Sentek probes give a measurement of soil moisture between 0 and 1, which is not calibrated yet. -An important step lies in converting the Sentek measure into relative permittivity N r ε following [START_REF] Schwank | Laboratory characterization of a commercial capacitance sensor for estimating permittivity and inferring soil water content[END_REF]. This nonlinear transformation determines the electronic behaviour of the probes and is independent to the soil.

-Finally, a second order polynomial is used to link the relative permittivity of the used to transform TDR measurements into soil moisture values. This is due to the particularities of loess soils

Figure 2 shows that this non-linear calibration is absolutely necessary in order to avoid an over-estimation of annual variations. For some sensors, the amplitude of the annual variation is divided by a factor 3. The error on the volumetric soil moisture estimation, determined on the calibration curves, has been reduced from 25% to 5% error thanks to this calibration process.

Distribution of water masses

The calculation of Newtonian attraction needs to position the mass-test of the gravimeter inside its environment, i.e. to determine the relative position of the water masses.

A great attention was given to the geometry of the soil layer located above the gravimeter. Applied geophysics prospections have been carried out to evaluate the geometry of this layer. We have also performed a geomechanical investigation using a . 9.

dynamical penetrometer called Panda (see http://www.sol-solution.com). The soil thickness is determined by knocking a series of metal rods. Moreover, the qualitative interpretation of the soil stiffness is used to evaluate the heterogeneities of the soil. The relative height between the gravimeter and the soil layer is finally determined using a topographic survey, putting in obvious the 3-m concrete roof on top of the fort (see figure 3a). Note that this roof is a zeros flux limit condition for water that cannot be taken into account by global hydrological models.

A 25-cm vertical precision DTM has also been determined thanks to a RTK (Real-Time Kinematic) survey. Note that the precision is estimated thanks to the nugget effect of the variogram. It has been connected to a regional DTM from the French Geographic Institute (IGN) to map a 2-km area around the gravimeter. The topographic map around the gravimeter is plotted on Figure 3b.

We calculate a realistic 'admittance' for the hydrological effect and the integration radius of the gravimeter by distributing uniformly a 1-mm water layer on the topography. Note that the integration radius and the calculated admittance are highly dependent on the topography around the gravimeter [START_REF] Meurers | Correcting superconducting gravity time-series using rainfall modelling at the Vienna and Membach station and application to earth tide analysis[END_REF]. In J9 observatory, this integration radius is of the order of 100m (see figure 3c). The final gravity effect of a 1mm water layer is -0.305 nm.s -2 .mm -1 . This admittance only varies by 1.5% when the soil layer is shifted vertically by 1 m. This is due to the fact that the distribution of the soil reservoir around the gravimeter is close to a half-plan. As a consequence, a single coefficient is used for the whole soil thickness.

. 10. . 11.

Results

Gravity and hydrological time series

The processing of the superconducting gravimeter data is conducted as follows: Minute raw gravity and pressure data are first corrected from major perturbations [START_REF] Crossley | A slewrate detection criterion applied to SG data processing[END_REF] and then filtered to hourly samples. Gravity are then corrected from polar motion and length-of-day induced effects [START_REF] Wahr | Deformation induced by polar motion[END_REF], using EOPC04 series from the International Earth Rotation Service (IERS), assuming an elastic Earth and an equilibrium pole tide, including self-attraction and loading terms [START_REF] Agnew | Self-consistent equilibrium ocean tides[END_REF].

Atmospheric and induced non-tidal oceanic loading have been modelled using global surface pressure field provided by ECMWF (European Centre for Medium-range

Weather Forecasts) and sea surface height variations from the HUGO-m [START_REF] Carrère | Modeling the barotropic response of the global ocean to atmospheric wind and pressure forcing -Comparisons with observations[END_REF] batropic ocean model, following Boy et al. (2002), [START_REF] Boy | High-frequency non-tidal ocean loading effects on surface gravity measurements[END_REF] and Boy et al. (this issue). The loading time series will also contain some atmospheric residuals since the full 3-D atmospheric structure is not taken into account. This may lead to remaining effects at short term periods (especially linked to front movements) and a potential annual effect, below 10nm.s -2 for gravity [START_REF] Neumeyer | Gravity reduction with three-dimensional atmospheric pressure data for precise ground gravity measurements[END_REF]. Finally, tidal analyses are performed using the ETERNA package [START_REF] Wenzel | The nanogal software: Earth tide data processing package ETERNA 3.30[END_REF].

The 5-minute soil moisture measures are summed using weights representing the thickness integration of each sensor. These soil moisture variations, representative of the whole soil thickness are multiplied by the determined -0.305 nm.s -2 .mm -1 coefficient. The results are finally decimated to hourly values.

The redistribution of water masses at continental scale is determined using GLDAS/Noah (Global Land Data Assimilation System) [START_REF] Rodell | The global land data assimilation system[END_REF], which is available on a 0.25° grid with a 3h temporal resolution. Green's function formalism (Farrell, 1972) is . 12.

used to convolve water loads and calculate the associated gravity effect, assuming a SNREI earth.

Finally, a "deep hydrological contribution" is calculated. As stated previously, the local perched aquifer has been pointed out to induce gravity variations. One difficulty is that the water masses are creating a gravity signal below the gravimeter before reaching the aquifer 35m below ground. As a first order estimation, we have here multiplied the observed well variations by a 0.2 nm.s -2 .mm -1 coefficient calculated by Llubes et al.

(2004) using a realistic geometry and porosity of the sand aquifer. This estimation is not exact but gives the shape of the long-term variations induced by deep water storage below the gravimeter.

Conclusion

In this work, we have modelled the different hydrological contributions in J9 observatory using a deterministic approach, i.e. without calibrating on gravity data. Both water redistribution at the scale of several hundred of meters around the gravimeter and water redistribution at continental scale induce a non negligible gravity effect of several microgals. Moreover, both are driven by climate and so are anti correlated and partly compensate each other at seasonal time scales in J9 observatory. This last remark is an aposteriori justification of the necessity to physically model the hydrological effect. Future improvement will focus on the estimation of stored water variations below the . 14.

gravimeter. This deep contribution induces especially long-term variations and cannot be simply constrained using piezometric head time series alone. . 18.

Figure 1 :

 1 Figure 1: monthly gravity residuals observed at several GGP stations after correction of tides, polar motion and atmospheric contribution. Stations are classified with respect to the relative position of the gravimeter with the local soil layer, above ground or below ground. Adapted from Crossley et al. (2006).

  infinite layer of unit density.

N-

  Three soil cores per depth are extracted to determine their volumetric water content θ in laboratory. These cores of known volume are weighted before and after drying during 24 hours at 105°C. No clear calibration function may be extracted from the relation between the Sentek measure and the laboratory determined soil moisture N θ . A third step is needed.

  probes r ε to the water content θ determined in laboratory. The determined calibration curve is quite different from Topp et al. (1980) polynomial generally.8.

Figure 2 :

 2 Figure 2: Stored water variations of the entire soil thickness above the gravimeter before (blue) and after (red) calibration of the probes on soil cores. Note the highly nonlinear calibration.

Figure 3 :

 3 Figure 3: a) Fort and top soil layer geometry around the gravimeter mass test. The colours indicate the soil stiffness determined by the geomechical prospection. In grey, the geometry of the fort. b) Local DTM determined with RTK prospection around the gravimeter. c) Determination of the gravity effect generated by a 1-mm water layer uniformly distributed on the topography. The integration radius of the gravimeter is of the order of 100 m, the final admittance is -0.305 nm.s

Figure 4 :

 4 Figure 4: 1-year comparison between observed gravity signal and the modelled hydrological contributions. a) Gravity residuals (blue), modelled global contribution (green), modelled local contribution (red). b) Gravity residuals corrected from global hydrology (blue) superimposed with modelled local hydrology (red). c) Gravity residuals after correction of global and local hydrological signals (black) and estimated deep contribution (magenta). Note that the vertical axis direction is drawn opposite to model rainfall inflows as a positive effect on gravity variations.

Figure 1 :

 1 Figure 1: monthly gravity residuals observed at several GGP stations after correction of tides, polar motion and atmospheric contribution. Stations are classified with respect to the relative position of the gravimeter with the local soil layer, above ground or below ground. Adapted from Crossley et al. (2006).

Figure 2 :

 2 Figure 2: Stored water variations of the entire soil thickness above the gravimeter before (blue) and after (red) calibration of the probes on soil cores. Note the highly nonlinear calibration.

Figure 3 :

 3 Figure 3: a) Fort and top soil layer geometry around the gravimeter mass test. The colours indicate the soil stiffness determined by the geomechical prospection. In grey, the geometry of the fort. b) Local DTM determined with RTK prospection around the gravimeter. c) Determination of the gravity effect generated by a 1-mm water layeruniformly distributed on the topography. The integration radius of the gravimeter is of the order of 100 m, the final admittance is -0.305 nm.s -2 .mm -1 .

Figure 4 :

 4 Figure 4: 1-year comparison between observed gravity signal and the modelled hydrological contributions. a) Gravity residuals (blue), modelled global contribution (green), modelled local contribution (red). b) Gravity residuals corrected from global hydrology (blue) superimposed with modelled local hydrology (red). c) Gravity residuals after correction of global and local hydrological signals (black) and estimated deep contribution (magenta). Note that the vertical axis direction is drawn opposite to model rainfall inflows as a positive effect on gravity variations.

  have installed two Sentek Environsmart probes to monitor volumetric soil moisture variations

θ (see http://www.sentek.com.au). They are based on FDR (Frequency Domain Reflectometer) principle, i.e. the relative permittivity r ε of a soil volume (a capacitance) is measured determining the resonance frequency of an oscillator. These

.

7.

  of the local hydrological signal is twice as important as the amplitude of the global hydrological effect.On figure4b, gravity residuals are corrected from global hydrology to better evaluate the quality of the local soil contribution. Every rainfall event is associated with a gravity effect; these are correctly described by our soil moisture probes. One interesting event happened in April 2007. This period was warm and dry is Strasbourg, which enabled a quick development of the vegetation and thus, the root pumping of a non negligible amount of water. The agreement for this 1-month event is very encouraging and allows us to validate our approach. Note that this period was warm and dry for the Europe as a whole. As a consequence, the global and local hydrological contributions are correlated, even at a monthly time scale.

The gravity time-series corrected from both global and local hydrological signals are plotted on figure

4c

. Short period variations are especially due to unmodelled atmospheric effects. We confirm here that the water masses variations below the gravimeter only generate long-term variations. The estimated deep contribution partly explains the residuals; however, as stated previously, more work is needed to better constraint the vertical fluxes before water can reach the sand aquifer.

Acknowledgments

This study has been carried out within the framework of the ANR/ECCO/PNRH Project ''Hydrology and Geodesy''. Jean-Paul Boy is currently visiting NASA Goddard Space Flight Center, with a Marie Curie International Outgoing Fellowship (N° PIOF-GA-2008-221753). Nicolas Florsch is currently welcomed at the Department of Mathematics and Applied Mathematics at Cape Town University, South Africa, and is granted by the French Organization "Institut de Recherche pour le Développement".


Benjamin Van

Introduction

This paper presents the basic use of Spec by showing an example of how to build a Spec UI, how to reuse one and how to specify sub-widgets. This paper also provides the full public API of the basic widgets.

Example

The most important point of Spec is the reuse and the possibility of composition at two levels, UI and models. This section shows how to build an abstract method browser (similar to the senders/implementor ) and how to reuse this browser to build an extended class browser (similar to the code browser).

Here comes a simple example to quickly introduce to the use Specs. For now do not try to understand all the details but focus on the results. We will provide detailed insights right after the example.

Methods Browser

Firstly, let's think about how the visual structure of a method browser GUI. It is basically composed of two areas: a list and a text zone. Moreover there is an entry point which is the list of methods to be browsed.

So let's define a MethodBrowser class

ComposableModel subclass: #MethodBrowser instanceVariableNames: 'listModel textModel' classVariableNames: '' poolDictionaries: '' category: 'Spec-Examples'

Class 1: MethodBrowser class

We omit here the getter for a matter of space. Nevertheless they will be needed by the SpecLayout. It's still miss the entry point. By the way the entry point of the method browser could also be the list model's entry point. Now that links are created, we have to specify the spec on the class side: spec <spec: #default> ↑ SpecLayout composed add: #listModel origin: 0@0 corner: 1@0.5; add: #textModel origin: 0@0.5 corner: 1@1; yourself.

We specify the layout to be a column with submorphs added from top to bottom. And then for each model we add its spec recursively.

The below code produce the window shown in the Figure 1. The list should automatically be updated, and looks like Figure 2.

Classes and method browser

Now, we want to build a class and method browser. To do that we need a list for class and a method browser. As previously the entry point is a list but this time a list of methods.

ComposableModel subclass: #ClassMethodBrowser instanceVariableNames: 'listModel methodModel' classVariableNames: '' poolDictionaries: '' category: 'Spec-Examples'

Class 2: ClassMethodBrowser class

As previously, we omit here the getters.

For the entry point, it's deja vu:

classes: aList self listHolder contents: aList

Now we have to create the link. It's simpler here than before because there is only one link to create between the list of classes and the method browser: So now, let's do the spec.

initializeWidgetsinitializeWidgets self instantiateModels: { #listModel --> #ListComposableModel. #methodModel --> #MethodBrowser. } methodModel displayBlock: [:method | method selector ].

defaultSpec <spec>

↑ SpecLayout composed add: #listModel origin: 0@0 corner: 0.5@0.5; add: #(methodModel listModel)origin: 0.5@0 corner: 1@0.5 add: #(methodModel textModel) origin:0@0.5 corner:1@1; yourself.

In each spec we call the spec of our internal models. Lastly, we can specify a title for the window:

ClassMethodBrowser class>>#title ↑ 'Class Method Browser'
Then if the following code is evaluated the result looks like in Figure 6.

| browser | browser := ClassMethodBrowser new. browser openWithSpec. browser classes: (Smalltalk allClasses).

Figure 6: Our classes and method browser with a method selected

Conclusion

Here ends this example which present how to implement basic widget and how to compose Spec widgets together to get new powerful widgets.

Those examples (with few improvements) and few others are provided in the package Spec-Example, feel free to have a look.

ComposableModel API

ComposableModel is an abstract class which is the superclass of all widget models used with specs. The two main goals of ComposableModel are to link the current instance of the model with its specLayout via the interpreter, and to provide convenience methods used among a lot of widgets.

The Table 1 provides the full public API of ComposableModel.

Basic widgets API

Selector Result buildWithSpec Build the widget using the default spec buildWithSpec:

Build the widget using the spec name provided as argument isDisplayed Return true if the widget is currently displayed on screen openWithSpec Build the widget using the default spec and display it into a window openWithSpec:

Build the widget using the spec name provided as argument and display it into a window specSelectors Return all the spec names title

Return the window's title updateTitle Update the window title eventStringForNextFocus String describing the keystroke to perform to jump to the next widget eventStringForPreviousFocus String describing the keystroke to perform to jump to the previous widget isEventForNextFocus:

Return true if the event provided as argument corresponds to the shortcut used to switch to the next sub-widget isEventForPreviousFocus:

Return true if the event provided as argument corresponds to the shortcut used to switch to the previous sub-widget set the block performed when the button is clicked enabled:

set if the button is enabled (clickable) label:

set the label of the button state:

set if the button is highlighted whenActionPerformedDo: set a block to perform after that the button has been aclicked, and its action performed This method is used to set the action to perform when I am activated click Simulate a click on the checkbox Used when the checkboc is a list item desactivationAction:

This method is used to set the action to perform when I am desactivated enabled:

Set if the button is enabled (clickable) label:

Set the label of the checkbox labelClickable

Return true if the label can be clicked to select the checkbox labelClickable:

Set if the label can be clicked to select the checkbox state:

Set if the checkbox is activated or not toggleState Toogle the current state of the checkbox whenActivatedDo:

This method is used to propagate the event that I have been activated whenDesactivatedDo: This method is used to propagate the event that I have been desactivated Force the selection of the item at index anIndex setSelectedItem:

Force the selection of the item anItem whenSelectedItemChanged:

Set a block to perform when the selected item is changed whenSelectionChanged:

Set a block to perform when the selection is changed whenSelectionIndexChanged: Set a block to perform when the selected index is changed Return the index of the selected item In the case of a multiple selection list, it returns the last selected item selectedIndexes Return the indexes of selected items on the case of a multiple selection list selectedItem Return the selected item. In the case of a multiple selection list, it returns the last selected item selectedItems Return all the selected items in the case of a multiple selection list setSelectedIndex:

Set the index of the item you want to be selected setSelectedItem:

Set the item you want to be selected shortcuts:

Set the block used to defined the shortcuts sortingBlock:

To set the ordering of the items updateList Refresh the list whenListChanged:

Specify a block to value after the contents of the list has changed whenSelectedItemChanged:

Set a block to value when the select item is changed whenSelectionChanged:

Set a block to value when the selection of the list has changed whenSelectionIndexChanged: Set a block to value when the selection index has changed Return the index of the selected item In the case of a multiple selection list, it returns the last selected item selectedIndexes Return the indexes of selected items on the case of a multiple selection list selectedItem Return the selected item. In the case of a multiple selection list, it returns the last selected item selectedItems Return all the selected items in the case of a multiple selection list setSelectedIndex:

Set the index of the item you want to be selected setSelectedItem:

Set the item you want to be selected shortcuts:

Set the block used to defined the shortcuts sortingBlock:

To set the ordering of the items updateList Refresh the list whenListChanged:

Specify a block to value after the contents of the list has changed whenSelectedItemChanged:

Set a block to value when the select item is changed whenSelectionChanged:

Set a block to value when the selection of the list has changed whenSelectionIndexChanged: Set a block to value when the selection index has changed Return the index of the selected item In the case of a multiple selection list, it returns the last selected item selectedIndexes Return the indexes of selected items on the case of a multiple selection list selectedItem Return the selected item. In the case of a multiple selection list, it returns the last selected item selectedItems Return all the selected items in the case of a multiple selection list setSelectedIndex:

Set the index of the item you want to be selected setSelectedItem:

Set the item you want to be selected shortcuts:

Set the block used to defined the shortcuts sortingBlock:

To set the ordering of the items updateList Refresh the list whenListChanged:

Specify a block to value after the contents of the list has changed whenSelectedItemChanged:

Set a block to value when the select item is changed whenSelectionChanged:

Set a block to value when the selection of the list has changed whenSelectionIndexChanged: Set a block to value when the selection index has changed This method is used to set the action to perform when I am activated click Simulate a click on the radioButton. Used when the checkboc is a list item desactivationAction:

This method is used to set the action to perform when I am desactivated enabled:

Set if the button is enabled (clickable) label:

Set the label of the radioButton labelClickable Return true if the label can be clicked to select the radioButton labelClickable:

Set if the label can be clicked to select the radioButton state:

Set if the checkbox is activated or not Toogle the current state of the radioButton whenActivatedDo:

This method is used to propagate the event that I have been activated whenDesactivatedDo: This method is used to propagate the event that I have been desactivated

Table 9: RadioButtonModel public API

  reroute my entry point to the list model's entry point" self listModel items: aList So now we have the entry point and the models. So lets make the connections between them.

Figure 1 :

 1 Figure 1: Our browser with an empty list

Figure 2 :Figure 3 :

 23 Figure 2: Our browser with list of methods

Figure 4 :Figure

 4 Figure 4: Now with a nice title

  initializePresenter listModel whenSelectedItemChanges: [:selection | selection ifNotNil: [:class | methodModel methods: (class methodDict values sort: [:a :b | a selector < b selector]). methodModel listModel resetSelection ]].

Table 1 :

 1 ComposableModel public API

	Selector	Result
	action:

Table 2 :

 2 ButtonModel public API

	Selector	Result
	activationAction:

Table 3 :

 3 CheckBoxModel public API

	Selector	Result
	items:	Populate the drop list with a list of DropItems
	listItems	Return the list of DropItems used to populate the drop list
	resetSelection	Reset the current selection state
	selectedIndex	Useless method but it provides a better and more consistent API
	selectedItem	Return the selected item
	setSelectedIndex:

Table 4 :

 4 DropListModel public API

	Selector	Result
	allowToSelect	Return whether the list items can be selected or not
	allowToSelect:	Set if the list items can be selected or not
	beMultipleSelection	Make list selection multiple
	beSingleSelection	Make list selection single
	displayBlock:	Set the one argument block used to wrap your domain specific
		items. The block should return something that can be displayed in a list -
		like a String or a Text
	filteringBlock:	To set the filtering of the items
	icons:	Set a block which takes an item as argument and returns the icon to
		display in the list
	items:	Set the items of the list. aList is a collection of your domain
		specific items
	listItems	Return the items of the list. They are your domain specific items
	menu:	Set the block used to defined the menu
	multiSelection	Return true if the list has a multiple selection. False if the list
		has a single selection
	multiSelection:	Make the list seelction become multiple if aBoolean is
		true. Otherwise set the selection as single
	resetFilteringBlock	Reset the filtering block with the default value which consists in
		showing everything
	resetSelection	Unselect every items
	resetSortingBlock	Reset the sortering block with the default value which consists in
		not sorting
	selectedIndex

Table 5 :

 5 IconListModel public API

	Selector	Result
	allowToSelect	Return whether the list items can be selected or not
	allowToSelect:	Set if the list items can be selected or not
	beMultipleSelection	Make list selection multiple
	beSingleSelection	Make list selection single
	displayBlock:	Set the one argument block used to wrap your domain specific
		items. The block should return something that can be displayed in a list -
		like a String or a Text
	filteringBlock:	To set the filtering of the items
	items:	Set the items of the list. aList is a collection of your domain
		specific items
	listItems	Return the items of the list. They are your domain specific items
	menu:	Set the block used to defined the menu
	multiSelection	Return true if the list has a multiple selection. False if the list
		has a single selection
	multiSelection:	Make the list seelction become multiple if aBoolean is
		true. Otherwise set the selection as single
	resetFilteringBlock	Reset the filtering block with the default value which consists in
		showing everything
	resetSelection	Unselect every items
	resetSortingBlock	Reset the sortering block with the default value which consists in
		not sorting
	selectedIndex

Table 7 :

 7 ListComposableModel public API

	Selector	Result
	allowToSelect	Return whether the list items can be selected or not
	allowToSelect:	Set if the list items can be selected or not
	beMultipleSelection	Make list selection multiple
	beSingleSelection	Make list selection single
	displayBlock:	Set the one argument block used to wrap your domain specific
		items. The block should return something that can be displayed in a list -
		like a String or a Text
	filteringBlock:	To set the filtering of the items
	items:	Set the items of the list. aList is a collection of your domain
		specific items
	listItems	Return the items of the list. They are your domain specific items
	menu:	Set the block used to defined the menu
	multiSelection	Return true if the list has a multiple selection. False if the list
		has a single selection
	multiSelection:	Make the list seelction become multiple if aBoolean is
		true. Otherwise set the selection as single
	resetFilteringBlock	Reset the filtering block with the default value which consists in
		showing everything
	resetSelection	Unselect every items
	resetSortingBlock	Reset the sortering block with the default value which consists in
		not sorting
	selectedIndex

Table 8 :

 8 MultiColumnListModel public API

	Selector	Result
	activationAction:

Selector

Result disable

Disable the label enable Enable the label enabled:

Set the state of the label text:

Set the text of the label whenTextChanged: Set a block to performed when the text is changed Set the block used to calculate the text selection setSelection:

Set the text selection without changing the readSelectionBlock text:

Set the text of the text zone whenTextAccepted:

Set a block to perform when the text is accepted whenTextChanged:

Set a block to perform when the text changed aboutToStyle:

Set if the text zone must be styled aboutToStyleBlock Return the block used to know if the text must be styled aboutToStyleBlock:

Set the block used to know if the text must be styled. Set the block used to retrieve the children of a node. The optioanl block arguments are: -the node -the tree displayBlock:

Set the block used to generate the display of the items. The optioanl block arguments are: -the item -the tree menu:

Set the block used to generate the tree menu roots:

Set the tree roots selectedItem Return the selected item updateTree Force the tree to refresh whenSelectedItemChanged: Set a block to perform when a new item is selected