Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Client

Description

Administering the client at a basic level is all done through the configuration xml file. The configuration allow multiple clients with different components depending on the userbase of the client.

Layouts

The client is made up of three main parts, the toolbar, statusbar and the main content area. The toolbar is located at the top and the statusbar at the bottom. The administrator is free to move actions and components around the interface in order to customise the environment. The main content area is known as a perspective area, views can be added to a border layout within this area.

{{^BasicClientLayout.png}}\

A border layout defines 5 regions that act as containers on the screen for views. The five areas are North (top), South (bottom), West (left), East (right) and Center (middle). Center is the only container that will dynamically resize all borders to fit within the area, all other regions only resize in one direction. For example, East and West Regions will resize their height depending on the size of the Appplication Window. North and South regions have fixed heights and will only resize their width depending on the size of the Appplication Window. This does not mean that the user does not have the ability to resize the views if allowed by the administrator, just that the initial size of the non-center panels is pre-determined.

{{^BasicLayout.png}}\

Main Views can be added to a particular region. For example you might want the TOC and Search Views to be added to the West region. When multiple views are added to a region then they are added as tabs given users the ability to move between the Views. An alternative options allows the administrator to configure the region to use an accordion type layout rather than a tab based one.

The client now also allow for nesting regions within a region, so now each region can also be sub-divided into north, south, east, west and center. Also, regions can now be named, so they can be referred to by a logical name when adding views rather than having to refer to their physical location. See the section on Layouts for more information.

Both the Statusbar and Toolbar support adding both Actions and Components to them. Toolbars can also be added to some Views, for example the Map View. See the Toolbars and Actions sections for more information. 

Client Configuration

Weave supports the ability to configure multiple clients from the one instance. Each Client needs to have a unique ID which is used in the url when opening the client.

Code Block
xml
xml
linenumberstrue
...
<client:config id="main">
  ...
</client:config>

<client:config id="police">
  ...
</client:config>
...
{code}

In

...

the

...

above

...

example

...

there

...

are

...

two

...

clients

...

defined

...

and

...

each

...

has

...

a

...

different

...

id.

...

When

...

using

...

the

...

client

...

open

...

a

...

browser

...

and

...

point

...

to

...

http://server:port/weave/main.html

...

or

http://server:port/weave/police.html

...

Additionally,

...

if

...

there

...

is

...

more

...

than

...

one

...

client

...

configuration

...

and

...

the

...

user

...

views

...


http://server:port/weave

...


they

...

will

...

be

...

presented

...

with

...

a

...

list

...

of

...

the

...

available

...

client

...

configurations.

...

Access

...

Control

...

By

...

adding

...

an

...

ACL

...

to

...

the

...

client

...

configuration

...

you

...

can

...

restrict

...

access

...

to

...

the

...

entire

...

client

...

configuration

...

based

...

on

...

the

...

access

...

level

...

of

...

the

...

user.

...

For

...

example

...

to

...

restrict

...

the

...

police

...

configuration

...

to

...

only

...

those

...

users

...

who

...

are

...

in

...

the

...

police

...

access

...

control

...

list

...

you

...

would

...

change

...

the

...

configuration

...

to:

...

Code Block
xml
xml
linenumberstrue
...
<client:config id="police">
  <acl id="acl.police">
  ...
</client:config>
...
{code}

this

...

assumes

...

that

...

elsewhere

...

in

...

your

...

configuration

...

you

...

have

...

the

...

ACL

...

for

...

acl.police

...

,

...

something

...

like:

...

Code Block
xml
xml
linenumberstrue
<acl:acl id="acl.police">
  <entry type="allow">ROLE_POLICE</entry>
  <entry type="deny">*</deny>
</acl:acl>
{code}

You

...

should

...

consult

...

the

...

section

...

on

...

Access

...

Control

...

Lists

...

for

...

more

...

information.

...

Alternatively

...

you

...

can

...

add

...

an

...

ACL

...

to

...

individual

...

items

...

within

...

the

...

client

...

configuration

...

to

...

have

...

those

...

items

...

only

...

available

...

to

...

users

...

that

...

have

...

the

...

appropriate

...

level

...

of

...

access.

...

For

...

example,

...

to

...

provide

...

a

...

generic

...

client

...

that

...

has

...

a

...

single

...

button

...

that

...

should

...

only

...

be

...

available

...

to

...

users

...

in

...

a

...

certain

...

group

...

you

...

could

...

either

...

create

...

two

...

separate

...

client

...

configurations,

...

one

...

with

...

the

...

button

...

for

...

the

...

selected

...

users

...

and

...

the

...

other

...

without

...

the

...

button

...

for

...

everyone

...

else,

...

or

...

you

...

could

...

create

...

one

...

configuration

...

with

...

the

...

button

...

but

...

attach

...

an

...

ACL

...

to

...

the

...

button.

...

Code Block
xml
xml
linenumberstrue
...
<client:config id="main">
  ...
  <toolbar>
    ...
    <item action="au.gov.police.ShowSpeedCameras">
      <acl id="acl.police"/>
    </item>
    ...
  </toolbar>
  ...
</client:config>
...
{code}

This

...

way

...

anyone

...

can

...

access

...

the

...

main client configuration,

...

but

...

only

...

those

...

users

...

that

...

login

...

and

...

pass

...

the

...

acl.police

...

ACL

...

will

...

be

...

able

...

to

...

see

...

the

...

au.gov.police.ShowSpeedCameras

...

button.

...

The

...

ACL

...

can

...

be

...

attached

...

to

...

anything

...

within

...

the

...

client

...

configuration,

...

not

...

just

...

buttons/actions.

...

When

...

a

...

user

...

does

...

not

...

pass

...

the

...

ACL

...

then

...

the

...

entire

...

content

...

of

...

the

...

tag

...

containing

...

the

...

ACL

...

tag

...

is

...

removed.

...

Additionally

...

you

...

can

...

have

...

the

...

same

...

item

...

added

...

twice,

...

each

...

with

...

a

...

mutually

...

exclusive

...

ACL

...

attached,

...

so

...

that

...

all

...

users

...

see

...

one

...

version

...

and

...

others

...

see

...

another.

...


This

...

can

...

be

...

used

...

for

...

example

...

to

...

alter

...

the

...

map

...

area

...

that

...

a

...

user

...

is

...

allowed

...

to

...

view,

...

if

...

you

...

have

...

multiple

...

groups

...

of

...

users,

...

where

...

each

...

one

...

should

...

only

...

be

...

able

...

to

...

view

...

part

...

of

...

the

...

overall

...

map

...

then

...

you

...

could

...

setup

...

multiple

...

extent

...

tags

...

for

...

the

...

map

...

view

...

and

...

attach

...

different

...

ACLs

...

to

...

each

...

one

...

so

...

that

...

in

...

the

...

end

...

each

...

user

...

only

...

receives

...

one

...

of

...

the

...

available

...

extents

...

and

...

that's

...

the

...

area

...

they're

...

limited

...

to.

...

Structure

The actual content of the client configuration should follow the same basic outline regardless of the final layout of the client.

The absolute minimum requirements for a client configuration is shown below (where CONFIGID, TITLE and LABEL are configured by you)

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  <title>TITLE</title>
  <perspective>
    <label>LABEL</label>
  </perspective>
</client:config>
{code}

Obviously

...

this

...

creates

...

a

...

pretty

...

useless

...

client

...

experience

...

as

...

it

...

creates

...

single

...

center

...

region

...

with

...

nothing

...

in

...

it.

...

So

...

the

...

next

...

this

...

we

...

could

...

do

...

would

...

be

...

to

...

add

...

content

...

to

...

the

...

default

...

center

...

region

...

that

...

was

...

created.

...

We

...

do

...

this

...

by

...

adding

...

Views

...

to

...

the

...

perspective.

...

A

...

View

...

is

...

responsible

...

for

...

presenting

...

its

...

content

...

the

...

the

...

user

...

in

...

whatever

...

way

...

is

...

appropriate,

...

it

...

could

...

be

...

a

...

map

...

image,

...

a

...

text

...

input

...

form

...

or

...

just

...

a

...

fixed

...

image.

...

What's

...

shown

...

in

...

the

...

region

...

is

...

different

...

depending

...

upon

...

the

...

id

...

of

...

the

...

view

...

that's

...

added

...

to

...

the

...

perspective,

...

so

...

for

...

now

...

we

...

won't

...

bother

...

looking

...

at

...

the

...

actual

...

content

...

of

...

the

...

view

...

tags.

...

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  <title>TITLE</title>
  <perspective>
    <label>LABEL</label>
    <view id="VIEWID">
      VIEWCONTENT
    </view>
  </perspective>
</client:config>
{code}

Once

...

we've

...

added

...

the

...

view

...

we

...

would

...

expect

...

to

...

see

...

the

...

content

...

of

...

the

...

view

...

displayed

...

in

...

the

...

center

...

region.

...

From

...

there

...

we

...

can

...

add

...

additional

...

views

...

to

...

show

...

different

...

content

...

to

...

the

...

user.

...

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  <title>TITLE</title>
  <perspective>
    <label>LABEL</label>
    <view id="VIEWID1">
      VIEW1CONTENT
    </view>
    <view id="VIEWID2">
      VIEW2CONTENT
    </view>
  </perspective>
</client:config>
{code}

The

...

user

...

will

...

then

...

be

...

able

...

to

...

switch

...

between

...

displaying

...

the

...

two

...

views,

...

because

...

by

...

default

...

views

...

are

...

added

...

to

...

the

...

center

...

region

...

and

...

that

...

region

...

is

...

configured

...

to

...

display

...

multiple

...

views

...

using

...

tabs.

...

This

...

beings

...

us

...

on

...

to

...

layouts,

...

which

...

are

...

covered

...

in

...

more

...

details

...

at

...

Layouts

...

,

...

but

...

we'll

...

cover

...

them

...

here

...

to

...

show

...

where

...

they

...

fit

...

within

...

the

...

client

...

configuration.

...

Say

...

we

...

wanted

...

to

...

move

...

one

...

of

...

our

...

views

...

to

...

be

...

to

...

the

...

left

...

of

...

the

...

other

...

one,

...

rather

...

than

...

having

...

them

...

both

...

within

...

the

...

same

...

region.

...

To

...

do

...

this

...

we'd

...

add

...

a

...

layout

...

to

...

the

...

perspective

...

and

...

then

...

configure

...

each

...

of

...

the

...

views

...

to

...

be

...

placed

...

in

...

a

...

specific

...

region

...

within

...

the

...

layout.

...

Remember

...

at

...

the

...

moment

...

there's

...

a

...

default

...

layout

...

created

...

for

...

us

...

that

...

has

...

a

...

single

...

center

...

region

...

defined.

...

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  <title>TITLE</title>
  <perspective>
    <label>LABEL</label>
    <layout>
      <west width="WIDTH">
      <center>
    </layout>
    <view id="VIEWID1" location="west">
      VIEW1CONTENT
    </view>
    <view id="VIEWID2">
      VIEW2CONTENT
    </view>
  </perspective>
</client:config>
{code}

Once

...

we

...

have

...

the

...

new

...

layout

...

in

...

place

...

the

...

first

...

view

...

will

...

appear

...

on

...

the

...

left

...

and

...

and

...

the

...

second

...

on

...

the

...

right,

...

with

...

the

...

left

...

view

...

taking

...

up

...

an

...

amount

...

of

...

room

...

determined

...

by

...

the

...

value

...

of

...

WIDTH

...

and

...

the

...

second

...

filling

...

in

...

the

...

rest.

...

The

...

second

...

view

...

will

...

still

...

go

...

into

...

the

...

center

...

region

...

since

...

that's

...

the

...

default

...

if

...

none

...

is

...

explicitly

...

set,

...

and

...

there

...

must

...

always

...

be

...

a

...

center

...

view

...

defined

...

within

...

a

...

layout.

...

From

...

there

...

we

...

can

...

fill

...

out

...

the

...

client

...

configuration

...

with

...

some

...

other

...

components.

...

We

...

can

...

add

...

a

...

toolbar

...

and

...

statusbar

...

(as

...

mentioned

...

earlier).

...

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  <title>TITLE</title>
  <toolbar>
    TOOLBARCONTENT
  </toolbar>
  <statusbar>
    STATUSBARCONTENT
  </statusbar>
  <perspective>
    <label>LABEL</label>
    <layout>
      <west width="WIDTH">
      <center>
    </layout>
    <view id="VIEWID1" location="west">
      VIEW1CONTENT
    </view>
    <view id="VIEWID2">
      VIEW2CONTENT
    </view>
  </perspective>
</client:config>
{code}

These

...

will

...

always

...

be

...

shown

...

at

...

the

...

top

...

and

...

bottom

...

of

...

the

...

page

...

irrespective

...

of

...

the

...

layout.

...

If

...

you

...

have

...

more

...

than

...

one

...

perspective

...

then

...

a

...

perspective

...

switcher

...

component

...

would

...

be

...

an

...

obvious

...

choice

...

to

...

include

...

in

...

the

...

top

...

level

...

toolbar

...

or

...

statusbar.

...


Note

...

that

...

perspectives

...

can

...

also

...

have

...

their

...

own

...

toolbar

...

and/or

...

statusbar,

...

as

...

can

...

views

...

(but

...

it's

...

up

...

to

...

the

...

implementation

...

of

...

the

...

view

...

to

...

provide

...

support

...

for

...

it).

...

We

...

can

...

also

...

include

...

a

...

set

...

of

...

default

...

values

...

at

...

the

...

same

...

level

...

as

...

perspectives

...

to

...

provide

...

defaults

...

values

...

for

...

various

...

components

...

that

...

are

...

included

...

on

...

the

...

client,

...

for

...

example

...

indicating

...

the

...

initial

...

map

...

extent

...

to

...

use

...

if

...

a

...

map

...

view

...

doesn't

...

specify

...

it

...

explicitly,

...

or

...

determining

...

of

...

a

...

report

...

should

...

be

...

opened

...

in

...

a

...

new

...

browser

...

window.

...

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  <title>TITLE</title>
  <toolbar>
    TOOLBARCONTENT
  </toolbar>
  <statusbar>
    STATUSBARCONTENT
  </statusbar>
  <perspective>
    <label>LABEL</label>
    <layout>
      <west width="WIDTH">
      <center>
    </layout>
    <view id="VIEWID1" location="west">
      VIEW1CONTENT
    </view>
    <view id="VIEWID2">
      VIEW2CONTENT
    </view>
  </perspective>
  <defaults>
    DEFAULTCONTENT
  </defaults>
</client:config>
{code}

Again

...

the

...

contents

...

of

...

the

...

default

...

section

...

are

...

determined

...

by

...

what's

...

being

...

set,

...

but

...

generally

...

there

...

could

...

be

...

a

...

report

...

section,

...

a

...

map

...

section

...

and

...

a

...

section

...

for

...

entities.

...

Aside

...

from

...

that

...

there

...

are

...

a

...

couple

...

of

...

other

...

minor

...

items

...

that

...

could

...

be

...

added,

...

one

...

is

...

a

...

description,

...

that's

...

shown

...

to

...

the

...

user

...

if

...

they

...

get

...

the

...

option

...

to

...

choose

...

between

...

multiple

...

client

...

configurations.

...

Another

...

is

...

a

...

debug

...

flag

...

that

...

indicates

...

that

...

the

...

client

...

should

...

be

...

loaded

...

in

...

debug

...

mode

...

which

...

helps

...

when

...

modifying

...

the

...

client

...

configuration.

...

And

...

finally

...

it's

...

possible

...

to

...

specify

...

a

...

theme

...

to

...

be

...

used

...

for

...

the

...

configuration.

...

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  <title>TITLE</title>
  <description>DESCRIPTION</description>
  <debug>true</debug>
  <theme>THEMENAME</theme>
  <toolbar>
    TOOLBARCONTENT
  </toolbar>
  <statusbar>
    STATUSBARCONTENT
  </statusbar>
  <perspective>
    <label>LABEL</label>
    <layout>
      <west width="WIDTH">
      <center>
    </layout>
    <view id="VIEWID1" location="west">
      VIEW1CONTENT
    </view>
    <view id="VIEWID2">
      VIEW2CONTENT
    </view>
  </perspective>
  <defaults>
    DEFAULTCONTENT
  </defaults>
</client:config>
{code}

h2. Defaults
You can set various default options in the {{defaults}} section in the client configuration. For example the default report format to generate, which entity to have active initially or which data to display when the user open a data grid.

{code:xml|linenumbers=true}

Defaults

You can set various default options in the defaults section in the client configuration. For example the default report format to generate, which entity to have active initially or which data to display when the user open a data grid.

Code Block
xml
xml
linenumberstrue
<client:config id="CONFIGID">
  ...
  <perspective>
    ..
  </perspective>
  <defaults>
    <entity id="property" isDefault="true">
      <data>data.property.detail</data>
      <search>search.property.byaddress</search>
    </entity>
    <entity id="roads">
      <data>data.road.detail</data>
      <search>search.road.byname</search>
    </entity>
    <report>
      <format>html</format>
      <openExternal>true</openExternal>
      <openWithScript>true</openWithScript>
    </report>
  </defaults>
</client:config>
{code}

In

...

the

...

above

...

example

...

we've

...

set

...

the

...

property

...

entity

...

as

...

the

...

default,

...

and

...

set

...

the

...

initial

...

search

...

for

...

properties

...

to

...

be

...

search.property.byaddress

...

and

...

the

...

initial

...

data

...

to

...

be

...

data.property.detail.

...

For

...

roads

...

we've

...

set

...

the

...

search

...

to

...

search.road.byname

...

and

...

the

...

data

...

to

...

data.road.detail.

...

We've

...

also

...

specified

...

that

...

the

...

default

...

report

...

format

...

will

...

be

...

html,

...

report

...

will

...

open

...

in

...

a

...

new

...

window

...

(or

...

tab)

...

rather

...

than

...

a

...

windows

...

embedded

...

within

...

the

...

weave

...

client

...

itself,

...

and

...

it'll

...

use

...

javascript

...

to

...

open

...

the

...

window,

...

bypassing

...

the

...

intermediate

...

'click

...

to

...

open'

...

popup

...

window.

...

Snippets

...

and

...

References

...

If

...

you're

...

running

...

version

...

1.2.0

...

or

...

later

...

of

...

the

...

com.cohga.client.weave

...

bundle

...

you'll

...

be

...

able

...

to

...

take

...

advantage

...

of

...

snippets

...

,

...

which

...

are

...

a

...

way

...

of

...

reusing

...

a

...

piece

...

of

...

client

...

configuration

...

in

...

multiple

...

client

...

configurations.

...

Previously

...

the

...

client

...

configuration

...

bundle

...

only

...

understood

...

a

...

single

...

tag,

...

which

...

was

...

config

...

,

...

and

...

was

...

used

...

to

...

define

...

separate

...

client

...

configurations.

...

Version

...

1.2.0

...

of

...

com.cohga.client.weave

...

introduces

...

support

...

for

...

other

...

tags

...

allowing

...

you

...

to

...

create

...

little

...

bits

...

of

...

configuration

...

that

...

can

...

be

...

reused

...

within

...

a

...

config

...

tag.

...

This

...

allows

...

you

...

to

...

centralize

...

common

...

configuration

...

items

...

from

...

multiple

...

client

...

configurations

...

that

...

you

...

want

...

to

...

be

...

the

...

same

...

for

...

all

...

client

...

configurations,

...

for

...

example

...

setting

...

the

...

extents

...

for

...

map

...

views,

...

or

...

ensuring

...

the

...

same

...

label

...

for

...

every

...

ToC

...

view.

...

Something

...

like

...

this

...

can

...

also

...

be

...

performed

...

using

...

the

...

set

...

processing

...

instruction,

...

but

...

this

...

method

...

makes

...

it

...

much

...

easier.

...

To

...

define

...

a

...

new

...

snippet

...

all

...

you

...

need

...

to

...

do

...

is

...

create

...

the

...

XML

...

tags

...

as

...

you

...

would

...

if

...

you

...

were

...

including

...

them

...

directly

...

in

...

the

...

client

...

configuration

...

but

...

rather

...

than

...

including

...

them

...

within

...

the

...

client

...

configuration

...

you

...

create

...

the

...

tag

...

at

...

the

...

top

...

level

...

within

...

the

...

config.xml

...

file.

...

For

...

example,

...

lets

...

assume

...

that

...

we

...

want

...

to

...

create

...

a

...

snippet

...

the

...

map

...

extents

...

set

...

for

...

a

...

map

...

view,

...

if

...

we

...

currently

...

have

...

something

...

like

...

the

...

following

...

Code Block
xml
xml
linenumberstrue
<client:config id="test">
	...
	<view id="com.cohga.html.client.map.mapView">
		...
		<extents>
			<initial minx="327098" miny="5811358" maxx="351971" maxy="5827675"/>
			<full minx="327098" miny="5811358" maxx="351971" maxy="5827675"/>
			<limit minx="320000" miny="5810000" maxx="360000" maxy="5840000"/>
		</extents>
		...
	</view>
	...
</client:config>
{code}

To

...

create

...

a

...

new

...

snippet

...

from

...

the

...

extents

...

in

...

the

...

above

...

sample

...

we

...

would

...

add

...

Code Block
xml
xml
linenumberstrue
<client:extents id="defaults">
	<initial minx="327098" miny="5811358" maxx="351971" maxy="5827675"/>
	<full minx="327098" miny="5811358" maxx="351971" maxy="5827675"/>
	<limit minx="320000" miny="5810000" maxx="360000" maxy="5840000"/>
</client:extents>
{code}

This

...

would

...

create

...

a

...

new

...

snippet,

...

called

...

defaults

...

of

...

type

...

extents

...

.

...

The

...

id,

...

defaults

...

in

...

the

...

above

...

example,

...

isn't

...

important

...

and

...

we

...

can

...

use

...

anything

...

that

...

makes

...

sense

...

here

...

(it's

...

just

...

used

...

to

...

refer

...

to

...

a

...

specific

...

snippet

...

later

...

when

...

we

...

want

...

to

...

use

...

it).

...

The

...

type,

...

extents

...

in

...

the

...

above

...

example,

...

is

...

important

...

however

...

and

...

must

...

be

...

the

...

same

...

as

...

the

...

target

...

tag

...

that

...

we're

...

actually

...

creating

...

the

...

snippet

...

for,

...

and

...

it's

...

the

...

combination

...

of

...

the

...

id

...

and

...

type

...

that's

...

used

...

later

...

on

...

to

...

include

...

the

...

snippet

...

within

...

a

...

client

...

configuration.

...

At

...

the

...

simplest

...

to

...

use

...

the

...

snippet

...

within

...

the

...

client

...

configuration

...

simply

...

requires

...

a

...

reference

...

to

...

the

...

snippet

...

to

...

be

...

added

...

in

...

place

...

of

...

the

...

original

...

tags,

...

so

...

to

...

reference

...

the

...

new

...

snippet

...

we

...

created

...

you

...

would

...

use

...

the

...

following

...

Code Block
xml
xml
linenumberstrue
<extents ref="defaults"/>
{code}

Anywhere

...

this

...

is

...

found

...

within

...

the

...

client

...

configuration

...

it

...

will

...

be

...

replaced

...

with

...

the

...

contents

...

of

...

the

...

snippet

...

we

...

defined

...

earlier.

...

So

...

to

...

complete

...

our

...

example

...

the

...

client

...

configuration

...

would

...

now

...

become

...

Code Block
xml
xml
linenumberstrue
<client:config id="test">
	...
	<view id="com.cohga.html.client.map.mapView">
		...
		<extents ref="defaults"/>
		...
	</view>
	...
</client:config>
{code}

h3. Refining snippets
Beyond just including the snippet in the client configuration you can also alter the snippet by including extra sub-tags in the reference. Assume for example that we wanted to setup a client configuration and re-use our extents snippet but in this particular client configuration we want to have a different initial extent, to do this we'd alter our client configuration as follows

{code:xml|linenumbers=true}

Refining snippets

Beyond just including the snippet in the client configuration you can also alter the snippet by including extra sub-tags in the reference. Assume for example that we wanted to setup a client configuration and re-use our extents snippet but in this particular client configuration we want to have a different initial extent, to do this we'd alter our client configuration as follows

Code Block
xml
xml
linenumberstrue
<client:config id="custom">
	...
	<view id="com.cohga.html.client.map.mapView">
		...
		<extents ref="defaults">
			<initial minx="328098" miny="5811358" maxx="331971" maxy="5817675"/>
		</extents>
		...
	</view>
	...
</client:config>
{code}

This

...

would

...

use

...

the

...

same

...

full

...

and

...

limit

...

extents

...

as

...

in

...

our

...

snippet

...

but

...

alters

...

the

...

initial

...

extent.

...

We

...

can

...

use

...

a

...

similar

...

syntax

...

to

...

add

...

new

...

sub-tags

...

to

...

our

...

snippet.

...

Any

...

sub-tag

...

that

...

is

...

added

...

to

...

the

...

reference

...

that

...

isn't

...

in

...

the

...

snippet

...

will

...

be

...

added

...

to

...

the

...

snippet

...

when

...

it's

...

included

...

in

...

the

...

client

...

configuration.

...

One

...

thing

...

you

...

can't

...

do

...

is

...

to

...

remove

...

a

...

sub-tag

...

from

...

a

...

snippet

...

via

...

the

...

reference.

...

Nested

...

snippets

...

Snippets

...

can

...

include

...

references

...

to

...

other

...

snippets

...

and

...

references

...

can

...

include

...

references

...

to

...

other

...

snippets.

...

For

...

example

...

we

...

could've

...

created

...

our

...

extents

...

snippet

...

as

...

follows

...

Code Block
xml
xml
linenumberstrue
<client:initial id="default" minx="327098" miny="5811358" maxx="351971" maxy="5827675"/>

<client:full id="default" minx="327098" miny="5811358" maxx="351971" maxy="5827675"/>

<client:limit id="default" minx="320000" miny="5810000" maxx="360000" maxy="5840000"/>

<client:extents id="defaults">
	<initial ref="default"/>
	<full ref="default"/>
	<limit ref="default"/>
</client:extents>
{code}

And

...

if

...

we

...

wanted

...

to

...

we

...

could

...

create

...

a

...

separate

...

snippet

...

for

...

our

...

"custom"

...

extent

...

Code Block
xml
xml
linenumberstrue
<client:initial id="custom" minx="328098" miny="5811358" maxx="331971" maxy="5817675"/>
{code}

Then

...

in

...

our

...

"custom"

...

client

...

configuration

...

we

...

could

...

use

...

the

...

following

...

to

...

accomplish

...

the

...

same

...

as

...

we

...

did

...

previously

...

Code Block
xml
xml
linenumberstrue
<client:config id="custom">
	...
	<view id="com.cohga.html.client.map.mapView">
		...
		<extents ref="defaults">
			<initial ref="custom"/>
		</extents>
		...
	</view>
	...
</client:config>
{code}


h2. Further Reading

 * [Toolbars|Client Toolbars]
 * [Actions|Client Actions]
 * [Views|Client Views]
 * [Layout|Client Layout]
 * [Context Menus|Client ContextMenus]
 * [Samples|Client Samples]

Further Reading