• No results found

Rich Interfaces with jQuery UI: jy Part I: Setup and Basic Widgets

N/A
N/A
Protected

Academic year: 2019

Share "Rich Interfaces with jQuery UI: jy Part I: Setup and Basic Widgets"

Copied!
32
0
0

Loading.... (view fulltext now)

Full text

(1)

© 2010 Marty Hall

Rich Interfaces with jQuery UI:

j

y

Part I: Setup and Basic Widgets

(jQuery UI 1.8, jQuery 1.4)

(j y , j y )

Originals of Slides and Source Code for Examples: http://courses.coreservlets.com/Course-Materials/jquery.html

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

p jq y

© 2010 Marty Hall

For live Ajax & GWT training, see training

t htt //

l t

/

courses at http://courses.coreservlets.com/.

Taught by the author of Core Servlets and JSP,

More Servlets and JSP and this tutorial Available at

More Servlets and JSP, and this tutorial. Available at

public venues, or customized versions can be held on-site at your organization.

C d l d d t ht b M t H ll

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation. •Courses developed and taught by Marty Hall

–Java 6, servlets/JSP (intermediate and advanced), Struts, JSF 1.x, JSF 2.0, Ajax, GWT 2.0 (with GXT), custom mix of topics

–Ajax courses can concentrate on 1 library (jQuery, Prototype/Scriptaculous, Ext-JS, Dojo, Google Closure) or survey several

•Courses developed and taught by coreservlets.com experts (edited by Marty)

–Spring, Hibernate/JPA, EJB3, Web Services, Ruby/Rails

(2)

Topics in This Section

Overview

Installation and setup

Widgets

– Buttons that adapt to current theme (skin)

– Dialogs (basics)

– Static tabbed panels

– Ajax tabbed panels Accordion panels

– Accordion panels

– Date picker

– SliderSlider

– Progress bar

5

© 2010 Marty Hall

Introduction

Customized Java EE Training: http://courses.coreservlets.com/

(3)

Overview

Set of rich GUI elements and effects

– Tabbed panels, slider, etc

– Effects similar to Scriptaculous

d d A

– Drag and drop API

Pros

Offi i l t f jQ

– Official part of jQuery

– Well tested

– Very clean designVery clean design

– Many still show meaningful results if JavaScript disabled

– Theming frameworkg

Cons

– Not nearlyas extensive as Ext/JS, Dojo, or YUI

7

Downloading

Download custom bundle

htt //j i /d l d

– http://jqueryui.com/download

– Select widgets and effects you want

– Press “Download” to download ZIP file of result

Unzip

– Unzip result into location of your choice

Bookmark the documentation

Bookmark the documentation

– http://docs.jquery.com/UI/

– http://jqueryui.com/demos/

Optional: Download additional themes

Optional: Download additional themes

– Deselect all widgets and options, choose different theme

• You can also interactively build a customized theme More on themes in next tutorial section

• More on themes in next tutorial section

– Unzip and copy entries in “css” folder to “css” folder of original download

(4)

Planning Ahead for Updates

General principle

– It is easier to replace many files on a Web site than to edit many files on a Web site.

• So avoid specific version numbers in names of JavaScriptSo, avoid specific version numbers in names of JavaScript and CSS files

• Rename CSS “theme” (skin) folders to generic name

Specific practice

Specific practice

– Rename jquery-1.4.x.min.js to jquery.js

– Rename jquery-ui-1.8.Rename jquery ui 1.8.xx.custom.min.js to.custom.min.js to jquery-ui.jsjquery ui.js – Rename theme (skin) folder from ui-lightness (or sunny,

or blitzer or whatever you chose) to jquery-ui – Rename CSS file inside theme (skin) folder from

jquery-ui-1.8.x.custom.css to jquery-ui.css 9

Files and Folders Needed

js/jquery-1.4.

x

.min.js

– Copy this to WebContent/scripts in your Eclipse project. For ease of later updates, rename it to jquery.js.

js/jquery ui 1 8

x

custom min js

js/jquery-ui-1.8.

x

.custom.min.js

– Copy this to WebContent/scripts in your Eclipse project. For ease of later updates, rename it to p jquery-ui.jsjq y j .

css/ui-lightness/

– Copy ui-lightness folder to WebContent/css in your

E li j F f l d f ld

Eclipse project. For ease of later updates, rename folder to jquery-ui.

css/ui-lightness/jquery-ui-1 8

css/ui lightness/jquery ui 1.8.

x

x

.custom.css

custom css

– For ease of later updates, rename file to jquery-ui.css

• So now it is WebContent/css/jquery-ui/jquery-ui.css

(5)

Setting Up Page: Overview

Load required jQuery UI files

– <link rel="stylesheet" type="text/css" href="…/jquery-ui/jquery-ui.css"/>

• Folder renamed from ui-lightness or other skin nameFolder renamed from ui lightness or other skin name

• File renamed from jquery-ui-1.8.x.custom.css

– <script src="…/jquery.js" …></script>

Fil d f j 1 4 i j

• File renamed from jquery-1.4.x.min.js

– <script src="…/jquery-ui.js" …></script>

• File renamed from jquery-ui-1.8.x.custom.min.jsjq y j

Load your files that use jQuery UI

– Any custom CSS files your app uses

– Any custom JavaScript files your app uses

11

Setting Up Page: Example

<head><title>jQuery UI</title>

<li k l " t l h t" Folder was called ui-lightness (one of the theme names) in original download <link rel="stylesheet"

href="./css/jquery-ui/jquery-ui.css" type="text/css"/>

File was called jquery-ui-1.8.x.custom.css in original download

<link rel="stylesheet"

href="./css/extra-styles.css" type="text/css"/>

My CSS file that styles non-jQuery-UI elements. Limit custom styles so you can adapt to custom themes more easily.

File was called jquery 1 4xmin js in original download type text/css />

<script src="./scripts/jquery.js"

type="text/javascript"></script> < i t " / i t /j i j "

File was called jquery-1.4.x.min.js in original download

File was called jquery-ui-1.8.x.custom.min.js <script src="./scripts/jquery-ui.js"

type="text/javascript"></script>

<script src="./scripts/jquery-ui-examples.js" jq y 8 s js in original download

type="text/javascript"></script> </head>

12

(6)

© 2010 Marty Hall

Buttons

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Overview

Idea

– A button whose look and feel will automatically adapt to current theme (skin).

HTML

HTML

– Make any type of button or anchor

• <input type="submit" class="some-class"…/>input type submit class some class …/

• <input type="button" class="some-class"…/>

• <button class="some-class">…</button>

• <a href class="some class" href="#"> </a>

• <a href class= some-class href= # >…</a>

Basic JavaScript

– Call “button()” on each elementCall button() on each element

• $(".some-class").button();

(7)

Example: HTML

<div id="button-div">

<input type="submit" class="style-test" <input type= submit class= style-test

value="&lt;input type='submit'...&gt;"/> <input type="button" class="style-test"

value "&lt;input type 'button' &gt;"/> value="&lt;input type='button'...&gt;"/> <button class="style-test">

The &lt;button&gt; element </b tt >

</button>

<a href="#" class="style-test">Hypertext link</a>

</div> / <hr/>

<input type="button" id="button-styler-button" value="Style the Buttons"/>

</fieldset>

15

Example: JavaScript

var uiDemo = {}; // To avoid name conflicts

uiDemo.styleButtons = function() {

$("#button-div .style-test").button(); };

};

$(f ti () {

You normally style the buttons when DOM is loaded, so you would directly call this code from the on-load function below. However, I wanted to interactively show the change, so the page will load with the buttons unstyled, and then they will become styled when the button mentioned below is pressed.

$(function() {

$("#button-styler-button").click(uiDemo.styleButtons);

}) });

(8)

Example: Results

17

Options for jQuery UI Widgets

You can supply anonymous object

– Object has optional fields

– Fields specify configuration and operational options

Examples

Examples

– $("some-selector").button();

– $("some-selector") button({ option1: "foo"$( some selector ).button({ option1: foo , option2: "bar", option3: "baz" })

No trailing comma

(9)

Button Options

Options to button function

– disabled

• Is button initially grayed out? icons text

– icons, text

• icons lets you set primary and secondary icon.

• text is boolean (false if you want icons only)

– label

• Main text of button; usually set in HTML instead of here

Other elements

Other elements

– Radio buttons and checkboxes can also become buttons

• These turn into text with indents/outdents to show which are selected. Depending on the theme, it may be hard to see which is selected.

19

© 2010 Marty Hall

Dialog

Customized Java EE Training: http://courses.coreservlets.com/

(10)

Overview

Idea

– A popup window (really a div with absolute positioning) that contains arbitrary HTML. One of the single most common rich elements in modern applications.pp

HTML

– Make an initially-hidden div with content inside. Use the titl tt ib t f di f titl f di l

title attribute of div for title of dialog.

• <div id="some-id" title="Title" style="display:none"> …

</div> </div>

Basic JavaScript

– Call “dialog()” on elementC d og() o e e e

• $("#some-id").dialog();

– Many options

21

Example: HTML

<div id="button-div"> ...

</div> <hr/>

<input type="button" id="button-styler-button" value="Style the Buttons"/>

</fieldset>/ e dset

<div id="button-dialog" title="A jQuery UI Dialog" style="display:none">

<p><i>Hey!</i> You clicked a button!</p> <p><i>Hey!</i> You clicked a button!</p> </div>

(11)

Example: JavaScript

var uiDemo = {}; // To avoid name conflicts

uiDemo.styleButtons = function() {

$("#button-div .style-test").button()

click(uiDemo showDialog); .click(uiDemo.showDialog); };

iD h Di l f ti () {

When you click one of the styled buttons, it will pop up a dialog box.

uiDemo.showDialog = function() { $("#button-dialog").dialog(); };

$(function() {

$("#button-styler-button").click(uiDemo.styleButtons);

});

23

Example: Results

(12)

Dialog Options

Dialog type

– modal: gray out window, make controls disabled

• $("#some-id").dialog({ modal: true }) simulates modal dialog in classical GUI systemg y

– buttons: lets you specify buttons for dialog

– draggable, resizable: (default true for both)

Sizing and positioning

– Size

• height width minHeight minWidth maxHeight maxWidth

• height, width, minHeight, minWidth, maxHeight, maxWidth

– Position

• position, zIndex

Many more

– Dialog is very customizable with many more options

25

© 2010 Marty Hall

Tabbed Panels with

Tabbed Panels with

Static Content

Customized Java EE Training: http://courses.coreservlets.com/

(13)

Overview

Idea

T bb d l h li ki t b h t t i id

– Tabbed panel where clicking tabs changes content inside

HTML

– Make a div container to hold the tabs

• <div id="main-tabbed-panel-div">…</div>

– Include a ul list containing internal hyperlinks

• <ul>

<li><a href="#panel1">Go to Panel 1</a></li> <li><a href="#panel2">Go to Panel 2</a></li> </ul>

Include divs whose ids match the href values (minus “#”)

– Include divs whose ids match the href values (minus # )

• <div id="panel1">Content for panel 1</div> <div id="panel2">Content for panel 2</div>

Basic JavaScript

Basic JavaScript

– Call “tabs()” on the div container

• $("#main-tabbed-panel-div").tabs(); 27

Example: HTML

<div id="static-tabbed-panel-div"> <ul> <ul>

<li><a href="#panel1">Panel 1</a></li> <li><a href="#panel2">Panel 2</a></li> <li><a href="#panel3">Panel 3</a></li> </ul>

<div id="panel1">

<p>Content for first panel.</p>

<p>Foo bar baz </p><p>Yadda yadda yadda </p> <p>Foo, bar, baz.</p><p>Yadda, yadda, yadda.</p> </div>

<div id="panel2">

<p>Content for second panel.</p>

<p>Foo, bar, baz.</p><p>Yadda, yadda, yadda.</p> </div>

<div id="panel3">

< >C t t f thi d l </ > <p>Content for third panel.</p>

<p>Foo, bar, baz.</p><p>Yadda, yadda, yadda.</p> </div>

</div>

(14)

Example: JavaScript

$(function() {

$("# t ti t bb d l di ") t b ()

$("#static-tabbed-panel-div").tabs();

}); })

29

Example: Results

(15)

Main Options for tabs({…}) for

Static Content

Static Content

selected (default: 0)

T b b l d i i i ll

– Tab to be selected initially

collapsible (default: false)

– Can you click selected tab to hide it (and thusCan you click selected tab to hide it (and thus allall panels)?panels)?

• $("#main-id").tabs({ collapsible: true });

disabled (default: empty array)

A f t b b (0 b d) th t h ld b di bl d

– An array of tab numbers (0-based) that should be disabled on startup

event (default: click)

(

)

– The type of event that should initiate tab selection

• $("#main-id").tabs({ event: "mouseover" });

fx

fx

– Many options for specifying animation when tabs are selected. See docs for details.

31

© 2010 Marty Hall

Tabbed Panels with

Tabbed Panels with

Dynamic (Ajax) Content

y

( j )

Customized Java EE Training: http://courses.coreservlets.com/

(16)

Overview

Idea

T bb d l h li ki t b t t t

– Tabbed panel where clicking tabs gets server content

HTML

– Make a div container to hold the tabs

• <div id="main-tabbed-panel-div">…</div>

– Include a ul list containing external relative hyperlinks

• <ul>

<li><a href="url1">Get Content for Panel 1</a></li> <li><a href="url2">Get Content for Panel 2</a></li> </ul>

– That’s all!That s all!

• Possibly simplest/best Ajax tabbed panel method of any of the major JavaScript libaries.

Basic JavaScript

Basic JavaScript

– Call “tabs()” on the div container

• $("#main-tabbed-panel-div").tabs(); 33

Example: HTML

<div id="ajax-tabbed-panel-div"> < l>

<ul>

<li><a href="time-panel.jsp">Show Time</a></li> <li><a href="list-panel.jsp?range=5">

Show Small Numbers</a></li>

<li><a href="list-panel.jsp?range=500"> Show Big Numbers</a></li>

Show Big Numbers</a></li> </ul>

</div>

(17)

Example: JavaScript

$(function() {

$("#ajax-tabbed-panel-div") tabs({ collapsible: true }); $( #ajax tabbed panel div ).tabs({ collapsible: true });

});

35

Example: JSP

time-panel.jsp

<h3>It is now <%= new java.util.Date() %></h3> Do you know what your closures are doing?

list-panel.jsp

p

j p

<% double range = 10.0;

try {

String r = request.getParameter("range");

I t I t( )

range = Integer.parseInt(r); } catch(Exception e) {} %>

<h3>Numbers from 0 to <%= range %></h3> <ul>

<ul>

<li><%= Math.random() * range %></li> <li><%= Math.random() * range %></li> <li><%= Math.random() * range %></li> <li><%= Math.random() * range %></li> <li><%= Math.random() * range %></li> </ul>

(18)

Example: Results

37

Main Options for tabs({…}) for

Ajax Content

Ajax Content

ajaxOptions (default: {})

– Any of the options used for $.ajax in first jQuery section

• $("#main-id").tabs({ ajaxOptions: { error: errorHandler }});

h (d f

lt f l )

cache (default: false)

– Should jQuery remember content for previously-selected tabs?

tabs?

• Using $("#main-id").tabs({ cache: true }) is very helpful if result is always the same for a given URL.

i

(d f

lt “

L

di

/

”)

spinner (default “<em>Loading…</em>”)

– Text to show in tab title after tab is selected but before content is received from server

content is received from server

(19)

© 2010 Marty Hall

Accordion Panels

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Overview

Idea

– Horizontally stacked panels with wide tabs

HTML

– Make a div container to hold the tabs

• <div id="main-accordion-panel-div">…</div>

– IncludeInclude alternatingalternating pairs of text with links and contentpairs of text with links and content

• <h2><a href="#">Panel 1</a></h2>

• <div>Content for Panel 1</div> <h2>< h f "#">P l 2</ ></h2>

• <h2><a href="#">Panel 2</a></h2>

• <div>Content for Panel 2</div>

Basic JavaScript

as c Ja aSc pt

– Call “accordion()” on the div container

• $("#main-accordion-panel-div").accordion();

(20)

Example: HTML

<div id="accordion-panel-div"> <h2><a href="#">Panel 1</a></h2> <h2><a href= # >Panel 1</a></h2> <div>

<p>Content for first panel.</p>

<p>Foo, bar, baz.</p><p>Yadda, yadda, yadda.</p> <p>Foo, bar, baz.</p><p>Yadda, yadda, yadda.</p> </div>

<h2><a href="#">Panel 2</a></h2> <div>

<p>Content for second panel.</p>

<p>Foo, bar, baz.</p><p>Yadda, yadda, yadda.</p> </div>

<h2><a href="#">Panel 3</a></h2> <div>

<p>Content for third panel.</p>

<p>Foo, bar, baz.</p><p>Yadda, yadda, yadda.</p> </div>

</div>

41

Example: JavaScript

$(function() {

$("# di l di ") di ()

$("#accordion-panel-div").accordion();

}); })

(21)

Example: Results

43

Main Options for accordion({…})

active (default: 0)

– Index or selector for initially-selected item

collapsible

– Can you click to hide?

event

– Event to trigger selection.

• Same as with tabs()

animated (default: true)

animated (default: true)

– Name of jQuery animation to use when showing content

• $("#main-id").accordion({ animated: "fadeIn" });$( ) ({ });

(22)

© 2010 Marty Hall

Date Picker

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Overview

Idea

– Click in textfield to pop up calendar. Choosing day from calendar puts date string into textfield

HTML

HTML

– Make an input field

• <input type="text" id="date-field"/>p yp

Basic JavaScript

– Call “datepicker()” on the textfield

• $("#date-field").datepicker();

(23)

Example: HTML

<table>

<tr><td align="right"> <tr><td align="right">

From: <input type="text"/></td></tr> <tr><td align="right">

Departure Date: Departure Date:

<input type="text" id="start-date"/></td></tr> <tr><td align="right">

T <i t t "t t"/></td></t > To: <input type="text"/></td></tr> <tr><td align="right">

Return Date:

i t t "t t" id " d d t "/ /td /t <input type="text" id="end-date"/></td></tr> <tr><td align="center">

<input type="button" value="Show Flights"/> / <input type="button" value="Show Hotels"/> </td></tr>

</table>

47

Example: JavaScript

$(function() {

$("#start date") datepicker(); $("#start-date").datepicker();

$("#end-date").datepicker({ changeMonth: true, numberOfMonths: 2 });

});

(24)

Example: Results

49

Main Options for

datepicker({ })

datepicker({…})

defaultDate (default: today)

– Initially selected date

changeMonth, changeYear (default: false)

Sh ld jQ i l d d d li l h

– Should jQuery include a dropdown list to let you choose the month or year?

dayNames (default Sunday…Saturday)

dayNames (default Sunday…Saturday)

monthNames (default January…December)

– Names to use for the days and months. For other languages. There are also various options for short versions of days.

numberOfMonths (default: 1)

numberOfMonths (default: 1)

– How many months to show at a time

(25)

© 2010 Marty Hall

Slider

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Overview

Idea

– Interactive slider to let user choose numeric values

• Also supports double-handled sliders for choosing ranges

HTML

HTML

– Make a placeholder div

• <div id="div-for-slider"></div>

Basic JavaScript

– Call “slider()” on the div, supply function to be called when slider moves

• $("#div-for-slider").slider({ slide: sliderEventHandler });

– Look up value later

– Look up value later

• Event handler takes two arguments: event and ui. Use ui.value to get current slider value

(26)

Example: HTML

<table>

<tr><td align="right">Temperature:</td> <td align="left" width="300">

<div id="slider-div" style="margin-left: 10px"></div> <div id slider div style margin left: 10px ></div> <div id="temp-display" align="center">32</div>

</td></tr>

<tr><td align="center" colspan="2">g p

<input type="button" value="Order Coffee"/> </td></tr>

</table>

53

Example: JavaScript

var uiDemo = {}; // To avoid name conflicts

uiDemo.showTemp = function(event, ui) { $("#temp-display").html(ui.value); };

};

$(function() {

$("# lid di ") lid ({ i 32 212 $("#slider-div").slider({ min: 32, max: 212,

slide: uiDemo.showTemp });

}) });

(27)

Example: Results

55

Main Options for slider({…})

min (default: 0)

V l di t l ft t

– Value corresponding to left or top

max (default 100)

– Value corresponding to right or bottom

slide

– Function to call every time value changes. Function takes two arguments: event and ui object. Use ui.value to get currently g j g y selected value.

step (default: 1)

– Granularity of changesGranularity of changes

value (default: min)

– The initial value

i

t ti

(d f

lt "h i

t l")

orientation (default: "horizontal")

(28)

© 2010 Marty Hall

Progress Bar

Customized Java EE Training: http://courses.coreservlets.com/

Servlets, JSP, JSF 2.0, Struts, Ajax, GWT 2.0, Spring, Hibernate, SOAP & RESTful Web Services, Java 6. Developed and taught by well-known author and developer. At public venues or onsite at yourlocation.

Overview

Idea

– Shows progress from 0% to 100%

HTML

– Make a placeholder div

• <div id="div-for-progress-bar"></div>

Basic JavaScript

Basic JavaScript

– Call “progressbar()” on the div

• $("#div-for-progress").progressbar();

– Have another event that changes values of bar

• Look up value with

$("#div-for-progress") progressbar("option" "value"); $( #div for progress ).progressbar( option , value );

• Change value with

$("#div-for-progress").progressbar("option", "value", num);

(29)

Example: HTML

<di id " b di "></di > <div id="progressbar-div"></div>

<input type="button" value="Click 10 Times" id="progressbar-button"/>

59

Example: JavaScript

uiDemo.upDateProgressBar = function() { var currentVal =

var currentVal =

$("#progressbar-div").progressbar("option", "value"); if (currentVal < 100) {

currentVal += 10; currentVal + 10;

$("#progressbar-div").progressbar("option", "value", currentVal);

} } };

$(function() {

$("#progressbar-div").progressbar();

$("#progressbar-button").click(uiDemo.updateProgressBar);

});

(30)

Example: Results

61

© 2010 Marty Hall

Wrap-up

Customized Java EE Training: http://courses.coreservlets.com/

(31)

Summary

Setup

– Load jquery-ui/jquery-ui.css, jquery.js, and jquery-ui.js

• These are renamed to omit specific version numbers

Ajax tabbed panels

Ajax tabbed panels

– HTML

• <div id="main">

l li h f " l ti l 1" P l 1 /1 /li <ul><li><a href="relative-url-1">Panel 1</1></li>

<li><a href="relative-url-2">Panel 2</1></li>… </ul></div>

J S i t

– JavaScript

• $(function() { $("#main").tabs(); … });

Others

Others

– Styled buttons, dialog box, static tabbed panels, accordion panel, date picker, slider, progress bar

63

Preview: Next Tutorial Section

Autocompleter

– Local data

– Remote data

– Custom matcherCustom matcher

– Custom menu styles

– Display values vs. values to be inserted

– Performing side effects upon selection

Animation effects

Highlight animated appear/disappear

– Highlight, animated appear/disappear

Changing themes

– Using ThemeRollerg

– Design strategies for theming

(32)

© 2010 Marty Hall

Questions?

Customized Java EE Training: http://courses.coreservlets.com/

References

Related documents

The four pyridine molecules are coordinated to the copper ion through their N atoms in the equatorial plane and display a right- handed screw arrangement around the Cu II ion.

dinuclear complex has unique coordination sites at the apical positions, which can trap ions hardly to coordinate..

The cell esds are taken into account individually in the estimation of esds in distances, angles and torsion angles; correlations between esds in cell parameters are only used

located on a twofold rotation axis and is coordinated by carboxylate O atoms of two chlorobenzoate (CB) anions, N atoms of two N , N -diethylnicotinamide (DENA) ligands and by

In previous reports containing BNPP anions the most similar deviations for P—O ester bond length in the phosphate group has been observed for these four examples (Sax et al. ,

In the molecule, weak C—H O hydrogen bonds occur between the pyridine ring and carboxylate groups; the dihedral angles between the carboxylate groups and adjacent benzene rings

Forest stand profile of a capercaillie lek in the Fageto- -Aceretum forest type (a virgin forest in the state of disintegra- tion; mean age of the overstorey trees – over

nium molecules are contained within the bowl of the macrocycle via extensive N—H O hydrogen bonds and the complex molecules are linked via N—H S hydrogen bonds, forming