Commit 25ef43892ed984c1f8eba8ff7e1b1558a12802b8

Authored by bernard
1 parent 4dd5e233

Restructuring repo to match branches/tags/trunk.

Showing 100 changed files with 3645 additions and 0 deletions

Too many changes to show.

To preserve performance only 100 of 100+ files are displayed.

  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4 + <parent>
  5 + <groupId>org.richfaces.sandbox.bernard</groupId>
  6 + <artifactId>parent</artifactId>
  7 + <version>3.3.4-SNAPSHOT</version>
  8 + <relativePath>../pom.xml</relativePath>
  9 + </parent>
  10 + <modelVersion>4.0.0</modelVersion>
  11 + <groupId>org.richfaces.sandbox.ui</groupId>
  12 + <artifactId>coordinatesGrid-sample</artifactId>
  13 + <packaging>war</packaging>
  14 + <name>coordinatesGrid-sample Maven Webapp</name>
  15 + <build>
  16 + <finalName>${project.artifactId}</finalName>
  17 + </build>
  18 + <dependencies>
  19 + <dependency>
  20 + <groupId>org.richfaces.ui</groupId>
  21 + <artifactId>richfaces-ui</artifactId>
  22 + </dependency>
  23 + <dependency>
  24 + <groupId>org.richfaces.sandbox.ui</groupId>
  25 + <artifactId>coordinatesGrid</artifactId>
  26 + <version>${project.version}</version>
  27 + </dependency>
  28 + <dependency>
  29 + <groupId>com.uwyn</groupId>
  30 + <artifactId>jhighlight</artifactId>
  31 + <version>1.0</version>
  32 + </dependency>
  33 + </dependencies>
  34 +</project>
... ...
  1 +package org.richfaces.sandbox.coordinatesGrid;
  2 +
  3 +import java.io.Serializable;
  4 +
  5 +/**
  6 + * @author a180963
  7 + */
  8 +public class Seat implements Serializable {
  9 +
  10 + private int row;
  11 + private int seatNr;
  12 + private boolean enabled;
  13 +
  14 + public int getRow() {
  15 + return row;
  16 + }
  17 +
  18 + public void setRow(int row) {
  19 + this.row = row;
  20 + }
  21 +
  22 + public int getSeatNr() {
  23 + return seatNr;
  24 + }
  25 +
  26 + public void setSeatNr(int seatNr) {
  27 + this.seatNr = seatNr;
  28 + }
  29 +
  30 + public boolean isEnabled() {
  31 + return enabled;
  32 + }
  33 +
  34 + public void setEnabled(boolean enabled) {
  35 + this.enabled = enabled;
  36 + }
  37 +}
... ...
  1 +package org.richfaces.sandbox.coordinatesGrid;
  2 +
  3 +import org.ajax4jsf.model.DataVisitor;
  4 +import org.ajax4jsf.model.Range;
  5 +import org.ajax4jsf.model.SequenceDataModel;
  6 +import org.ajax4jsf.model.SequenceRange;
  7 +import org.richfaces.component.event.CoordinatesSelectionEvent;
  8 +import org.richfaces.component.model.SquareRange;
  9 +
  10 +import javax.faces.application.FacesMessage;
  11 +import javax.faces.context.FacesContext;
  12 +import javax.faces.model.DataModel;
  13 +import javax.faces.model.ListDataModel;
  14 +import java.io.IOException;
  15 +import java.util.AbstractList;
  16 +
  17 +public class SeatSelector {
  18 +
  19 + private Integer rows = 10;
  20 + private Integer cols = 20;
  21 + private Integer firstRow = 0;
  22 + private Integer firstCol = 0;
  23 + private Seat[][] seats = new Seat[rows][cols];
  24 + private DataModel dataModel = new CustomDataModel();
  25 +
  26 + public SeatSelector() {
  27 +
  28 + final Seat seat = new Seat();
  29 + seat.setEnabled(true);
  30 + seat.setRow(3);
  31 + seat.setSeatNr(5);
  32 + seats[3][4] = seat;
  33 + }
  34 +
  35 + public Integer getRows() {
  36 + return rows;
  37 + }
  38 +
  39 + public void setRows(Integer rows) {
  40 + this.rows = rows;
  41 + resizeSeats();
  42 + }
  43 +
  44 + public Integer getCols() {
  45 + return cols;
  46 + }
  47 +
  48 + public void setCols(Integer cols) {
  49 + this.cols = cols;
  50 + resizeSeats();
  51 + }
  52 +
  53 + public Integer getFirstRow() {
  54 + return firstRow;
  55 + }
  56 +
  57 + public void setFirstRow(Integer row) {
  58 + this.firstRow = row;
  59 + }
  60 +
  61 + public Integer getFirstCol() {
  62 + return firstCol;
  63 + }
  64 +
  65 + public void setFirstCol(Integer col) {
  66 + this.firstCol = col;
  67 + }
  68 +
  69 + public DataModel getDataModel() {
  70 + return dataModel;
  71 + }
  72 +
  73 + public void itemsSelected(CoordinatesSelectionEvent e) {
  74 + for (int y = e.getStartY(); y <= e.getEndY(); y++) {
  75 + for (int x = e.getStartX(); x <= e.getEndX(); x++) {
  76 + if (seats[y][x] == null) {
  77 + Seat seat = new Seat();
  78 + seat.setRow(y);
  79 + seat.setSeatNr(x);
  80 + seat.setEnabled(true);
  81 + seats[y][x] = seat;
  82 + } else {
  83 + seats[y][x] = null;
  84 + }
  85 + }
  86 + }
  87 + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.toString()));
  88 + }
  89 +
  90 + public void itemsReserved(CoordinatesSelectionEvent e) {
  91 + for (int y = e.getStartY(); y <= e.getEndY(); y++) {
  92 + for (int x = e.getStartX(); x <= e.getEndX(); x++) {
  93 + if (seats[y][x] != null) {
  94 + seats[y][x].setEnabled(!seats[y][x].isEnabled());
  95 + }
  96 + }
  97 + }
  98 + }
  99 +
  100 + private void resizeSeats() {
  101 + Seat[][] newSeats = new Seat[rows][cols];
  102 + for (int y = 0; y < Math.min(seats.length, newSeats.length); y++) {
  103 + System.arraycopy(seats[y], 0, newSeats[y], 0, Math.min(seats[y].length, newSeats[y].length));
  104 + }
  105 + seats = newSeats;
  106 + }
  107 +
  108 + private class CustomDataModel extends SequenceDataModel {
  109 +
  110 + public CustomDataModel() {
  111 + super(new ListDataModel(new AbstractList<Seat>() {
  112 +
  113 + @Override
  114 + public Seat get(int index) {
  115 + int y = index / cols;
  116 + int x = index % cols;
  117 + return seats[y][x];
  118 + }
  119 +
  120 + @Override
  121 + public int size() {
  122 + return cols * rows;
  123 + }
  124 + }));
  125 + }
  126 +
  127 + @Override
  128 + public boolean isRowAvailable() {
  129 + return super.isRowAvailable() && getRowData() != null;
  130 + }
  131 +
  132 + @Override
  133 + public void walk(FacesContext context, DataVisitor visitor, Range range, Object argument) throws IOException {
  134 + SquareRange squareRange = null;
  135 + if (range instanceof SquareRange) {
  136 + squareRange = (SquareRange) range;
  137 + }
  138 + if (squareRange == null) {
  139 + super.walk(context, visitor, new SequenceRange(0, -1), argument);
  140 + } else {
  141 + for (int y = squareRange.getStartY(); y <= squareRange.getEndY(); y++) {
  142 + for (int x = squareRange.getStartX(); x <= squareRange.getEndX(); x++) {
  143 + if (0 <= y && y < seats.length && 0 <= x && x < seats[y].length && seats[y][x] != null) {
  144 + visitor.process(context, y * cols + x, argument);
  145 + }
  146 + }
  147 + }
  148 + }
  149 + }
  150 + }
  151 +}
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Context antiJARLocking="true" path="/coordinatesGrid-sample"/>
... ...
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  3 + "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  4 +<faces-config>
  5 + <managed-bean>
  6 + <managed-bean-name>seatSelector</managed-bean-name>
  7 + <managed-bean-class>org.richfaces.sandbox.coordinatesGrid.SeatSelector</managed-bean-class>
  8 + <managed-bean-scope>session</managed-bean-scope>
  9 + </managed-bean>
  10 +</faces-config>
  11 +
... ...
  1 +<jboss-deployment-structure>
  2 + <deployment>
  3 + <exclusions>
  4 + <module name="javax.faces.api" slot="main"/>
  5 + <module name="com.sun.jsf-impl" slot="main"/>
  6 + </exclusions>
  7 + <dependencies>
  8 + <module name="org.apache.commons.logging"/>
  9 + <module name="org.apache.commons.collections"/>
  10 + <module name="org.apache.commons.beanutils"/>
  11 + <module name="javax.faces.api" slot="1.2"/>
  12 + <module name="com.sun.jsf-impl" slot="1.2"/>
  13 + </dependencies>
  14 + </deployment>
  15 +</jboss-deployment-structure>
  16 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  4 + <description>Richfaces coordinatesGrid-sm Sample</description>
  5 + <display-name>coordinatesGrid-sm-sample</display-name>
  6 + <context-param>
  7 + <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  8 + <param-value>.xhtml</param-value>
  9 + </context-param>
  10 + <context-param>
  11 + <param-name>facelets.REFRESH_PERIOD</param-name>
  12 + <param-value>2</param-value>
  13 + </context-param>
  14 + <context-param>
  15 + <param-name>facelets.DEVELOPMENT</param-name>
  16 + <param-value>true</param-value>
  17 + </context-param>
  18 + <context-param>
  19 + <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  20 + <param-value>server</param-value>
  21 + </context-param>
  22 + <context-param>
  23 + <param-name>com.sun.faces.validateXml</param-name>
  24 + <param-value>true</param-value>
  25 + </context-param>
  26 + <context-param>
  27 + <param-name>com.sun.faces.verifyObjects</param-name>
  28 + <param-value>false</param-value>
  29 + </context-param>
  30 + <context-param>
  31 + <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  32 + <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  33 + </context-param>
  34 + <context-param>
  35 + <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
  36 + <param-value>false</param-value>
  37 + </context-param>
  38 + <context-param>
  39 + <param-name>org.richfaces.SKIN</param-name>
  40 + <param-value>blueSky</param-value>
  41 + </context-param>
  42 + <context-param>
  43 + <param-name>org.richfaces.CONTROL_SKINNING_LEVEL</param-name>
  44 + <param-value>extended</param-value>
  45 + </context-param>
  46 + <filter>
  47 + <display-name>Ajax4jsf Filter</display-name>
  48 + <filter-name>ajax4jsf</filter-name>
  49 + <filter-class>org.ajax4jsf.Filter</filter-class>
  50 + <init-param>
  51 + <param-name>enable-cache</param-name>
  52 + <param-value>false</param-value>
  53 + </init-param>
  54 + </filter>
  55 + <filter-mapping>
  56 + <filter-name>ajax4jsf</filter-name>
  57 + <servlet-name>Faces Servlet</servlet-name>
  58 + <dispatcher>FORWARD</dispatcher>
  59 + <dispatcher>REQUEST</dispatcher>
  60 + <dispatcher>INCLUDE</dispatcher>
  61 + </filter-mapping>
  62 + <servlet>
  63 + <servlet-name>Faces Servlet</servlet-name>
  64 + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  65 + <load-on-startup>1</load-on-startup>
  66 + </servlet>
  67 + <servlet-mapping>
  68 + <servlet-name>Faces Servlet</servlet-name>
  69 + <url-pattern>*.jsf</url-pattern>
  70 + </servlet-mapping>
  71 + <login-config>
  72 + <auth-method>BASIC</auth-method>
  73 + </login-config>
  74 +</web-app>
... ...
  1 +<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  2 +<html>
  3 +<head></head>
  4 +<body>
  5 +<jsp:forward page="index.jsf"/>
  6 +</body>
  7 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
  4 + xmlns:f="http://java.sun.com/jsf/core"
  5 + xmlns:h="http://java.sun.com/jsf/html" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"
  6 + xmlns:coordinatesGrid="http://richfaces.org/sandbox/coordinatesGrid"
  7 + xmlns:notify="http://richfaces.org/sandbox/notify">
  8 +<head>
  9 + <title>CoordinatesGrid sample</title>
  10 + <style type="text/css">
  11 + .rf-cg td.enabled {
  12 + background-color: #aaa;
  13 + }
  14 +
  15 + .rf-cg td.disabled {
  16 + background-color: inherit;
  17 + }
  18 +
  19 + .booker td.enabled {
  20 + background-color: #dfd;
  21 + }
  22 +
  23 + .booker td.disabled {
  24 + background-color: #ddd;
  25 + }
  26 +
  27 + .rf-cg td.highlight {
  28 + background-color: #{a4jSkin.headerBackgroundColor};
  29 + }
  30 + </style>
  31 + <script type="text/javascript">
  32 + function selectHandler(startX, startY, endX, endY) {
  33 + jQuery("#status").html(startX + ";" + startY + ";" + endX + ";" + endY);
  34 + }
  35 + function clickHandler(x, y) {
  36 + jQuery("#status").html("click:" + x + ";" + y);
  37 + }
  38 + </script>
  39 +</head>
  40 +
  41 +<body class="rich-container">
  42 +<ui:include src="menu.xhtml"/>
  43 +
  44 +<p>
  45 +
  46 +</p>
  47 +<notify:notifyMessages ajaxRendered="true"/>
  48 +<h:panelGrid columns="3">
  49 + <h:panelGroup>
  50 + <h:form>
  51 + <h:panelGrid columns="2">
  52 + <h:outputLabel value="rows" for="rows"/>
  53 + <h:inputText value="#{seatSelector.rows}" id="rows"/>
  54 + <h:outputLabel value="cols" for="cols"/>
  55 + <h:inputText value="#{seatSelector.cols}" id="cols"/>
  56 + </h:panelGrid>
  57 + <h:commandButton value="Submit"/>
  58 + </h:form>
  59 +
  60 + </h:panelGroup>
  61 +
  62 +</h:panelGrid>
  63 +<h:form>
  64 + <h:panelGrid columns="2">
  65 + <coordinatesGrid:coordinatesGrid
  66 + selectable="true"
  67 + value="#{seatSelector.dataModel}"
  68 + var="seat"
  69 + rows="#{seatSelector.rows}"
  70 + cols="#{seatSelector.cols}"
  71 + onselect="selectHandler(startX,startY,endX,endY);"
  72 + onclick="clickHandler(x,y);"
  73 + selectionListener="#{seatSelector.itemsSelected}"
  74 + rowIndexVar="rowIndex"
  75 + rowHeaderText="#{rowIndex+1}"
  76 + rowHeaderPosition="both"
  77 + colIndexVar="colIndex"
  78 + colHeaderText="#{colIndex+1}"
  79 + colHeaderPosition="both"
  80 + reRender="booker"
  81 + >
  82 + <coordinatesGrid:coordinatesGridItem x="#{seat.seatNr}" y="#{seat.row}" text="#{seat.row}x#{seat.seatNr}"
  83 + styleClass="enabled"/>
  84 + </coordinatesGrid:coordinatesGrid>
  85 + <coordinatesGrid:coordinatesGrid id="booker" styleClass="booker"
  86 + value="#{seatSelector.dataModel}"
  87 + var="seat"
  88 + rows="#{seatSelector.rows}"
  89 + cols="#{seatSelector.cols}"
  90 + onselect="selectHandler(startX,startY,endX,endY);"
  91 + onclick="clickHandler(x,y);"
  92 + selectionListener="#{seatSelector.itemsReserved}"
  93 + rowIndexVar="rowIndex"
  94 + rowHeaderText="#{rowIndex+1}"
  95 + rowHeaderPosition="both"
  96 + colIndexVar="colIndex"
  97 + colHeaderText="#{colIndex+1}"
  98 + colHeaderPosition="both"
  99 + >
  100 + <coordinatesGrid:coordinatesGridItem x="#{seat.seatNr}" y="#{seat.row}" text="#{seat.row}x#{seat.seatNr}"
  101 + styleClass="#{seat.enabled ? 'enabled' : 'disabled'}"/>
  102 + </coordinatesGrid:coordinatesGrid>
  103 + </h:panelGrid>
  104 +</h:form>
  105 +
  106 +<div id="status"></div>
  107 +<rich:insert src="/index.xhtml" highlight="xhtml" rendered="#{showSource!=false}"/>
  108 +
  109 +</body>
  110 +</html>
... ...
  1 +<ui:component xmlns="http://www.w3.org/1999/xhtml"
  2 + xmlns:ui="http://java.sun.com/jsf/facelets"
  3 + xmlns:f="http://java.sun.com/jsf/core"
  4 + xmlns:h="http://java.sun.com/jsf/html">
  5 + <h:panelGrid colsumns="3">
  6 + <h:outputLink value="#{facesContext.externalContext.requestContextPath}/index.jsf">Example 1</h:outputLink>
  7 + </h:panelGrid>
  8 +</ui:component>
... ...
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3 + <parent>
  4 + <groupId>org.richfaces.sandbox.bernard</groupId>
  5 + <artifactId>parent</artifactId>
  6 + <version>3.3.4-SNAPSHOT</version>
  7 + <relativePath>../pom.xml</relativePath>
  8 + </parent>
  9 + <modelVersion>4.0.0</modelVersion>
  10 + <groupId>org.richfaces.sandbox.ui</groupId>
  11 + <artifactId>dock-sample</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>dock-sample Maven Webapp</name>
  14 + <build>
  15 + <finalName>${project.artifactId}</finalName>
  16 + </build>
  17 + <dependencies>
  18 + <dependency>
  19 + <groupId>org.richfaces.ui</groupId>
  20 + <artifactId>richfaces-ui</artifactId>
  21 + </dependency>
  22 + <dependency>
  23 + <groupId>org.richfaces.sandbox.ui</groupId>
  24 + <artifactId>dock</artifactId>
  25 + <version>${project.version}</version>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>org.richfaces.sandbox.ui</groupId>
  29 + <artifactId>notify</artifactId>
  30 + <version>${project.version}</version>
  31 + </dependency>
  32 + <dependency>
  33 + <groupId>com.uwyn</groupId>
  34 + <artifactId>jhighlight</artifactId>
  35 + <version>1.0</version>
  36 + </dependency>
  37 + </dependencies>
  38 +</project>
  39 +
... ...
  1 +package org.richfaces.sandbox.dock;
  2 +
  3 +import javax.faces.application.FacesMessage;
  4 +import javax.faces.context.FacesContext;
  5 +
  6 +public class Greeter {
  7 +
  8 + public String sayHello() {
  9 + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Hello",
  10 + "You've just made JSF postback. Isn't this great!"));
  11 + return "hello";
  12 + }
  13 +
  14 + public String sayHelloAjax() {
  15 + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Hello",
  16 + "This is AJAX request. Isn't this even greater!"));
  17 + return "helloAjax";
  18 + }
  19 +
  20 +}
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Context antiJARLocking="true" path="/notify-sample"/>
... ...
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  3 + "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  4 +<faces-config>
  5 + <managed-bean>
  6 + <managed-bean-name>greeter</managed-bean-name>
  7 + <managed-bean-class>org.richfaces.sandbox.dock.Greeter</managed-bean-class>
  8 + <managed-bean-scope>request</managed-bean-scope>
  9 + </managed-bean>
  10 +</faces-config>
  11 +
... ...
  1 +<jboss-deployment-structure>
  2 + <deployment>
  3 + <exclusions>
  4 + <module name="javax.faces.api" slot="main"/>
  5 + <module name="com.sun.jsf-impl" slot="main"/>
  6 + </exclusions>
  7 + <dependencies>
  8 + <module name="org.apache.commons.logging"/>
  9 + <module name="org.apache.commons.collections"/>
  10 + <module name="org.apache.commons.beanutils"/>
  11 + <module name="javax.faces.api" slot="1.2"/>
  12 + <module name="com.sun.jsf-impl" slot="1.2"/>
  13 + </dependencies>
  14 + </deployment>
  15 +</jboss-deployment-structure>
  16 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  4 + <description>Richfaces Notify Sample</description>
  5 + <display-name>notify-sample</display-name>
  6 + <context-param>
  7 + <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  8 + <param-value>.xhtml</param-value>
  9 + </context-param>
  10 + <context-param>
  11 + <param-name>facelets.REFRESH_PERIOD</param-name>
  12 + <param-value>2</param-value>
  13 + </context-param>
  14 + <context-param>
  15 + <param-name>facelets.DEVELOPMENT</param-name>
  16 + <param-value>true</param-value>
  17 + </context-param>
  18 + <context-param>
  19 + <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  20 + <param-value>server</param-value>
  21 + </context-param>
  22 + <context-param>
  23 + <param-name>com.sun.faces.validateXml</param-name>
  24 + <param-value>true</param-value>
  25 + </context-param>
  26 + <context-param>
  27 + <param-name>com.sun.faces.verifyObjects</param-name>
  28 + <param-value>false</param-value>
  29 + </context-param>
  30 + <context-param>
  31 + <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  32 + <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  33 + </context-param>
  34 + <context-param>
  35 + <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
  36 + <param-value>false</param-value>
  37 + </context-param>
  38 + <context-param>
  39 + <param-name>org.richfaces.SKIN</param-name>
  40 + <param-value>blueSky</param-value>
  41 + </context-param>
  42 + <context-param>
  43 + <param-name>org.richfaces.CONTROL_SKINNING_LEVEL</param-name>
  44 + <param-value>extended</param-value>
  45 + </context-param>
  46 + <filter>
  47 + <display-name>Ajax4jsf Filter</display-name>
  48 + <filter-name>ajax4jsf</filter-name>
  49 + <filter-class>org.ajax4jsf.Filter</filter-class>
  50 + <init-param>
  51 + <param-name>enable-cache</param-name>
  52 + <param-value>false</param-value>
  53 + </init-param>
  54 + </filter>
  55 + <filter-mapping>
  56 + <filter-name>ajax4jsf</filter-name>
  57 + <servlet-name>Faces Servlet</servlet-name>
  58 + <dispatcher>FORWARD</dispatcher>
  59 + <dispatcher>REQUEST</dispatcher>
  60 + <dispatcher>INCLUDE</dispatcher>
  61 + </filter-mapping>
  62 + <servlet>
  63 + <servlet-name>Faces Servlet</servlet-name>
  64 + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  65 + <load-on-startup>1</load-on-startup>
  66 + </servlet>
  67 + <servlet-mapping>
  68 + <servlet-name>Faces Servlet</servlet-name>
  69 + <url-pattern>*.jsf</url-pattern>
  70 + </servlet-mapping>
  71 + <login-config>
  72 + <auth-method>BASIC</auth-method>
  73 + </login-config>
  74 +</web-app>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml"
  4 + xmlns:ui="http://java.sun.com/jsf/facelets"
  5 + xmlns:f="http://java.sun.com/jsf/core"
  6 + xmlns:h="http://java.sun.com/jsf/html"
  7 + xmlns:a4j="http://richfaces.org/a4j"
  8 + xmlns:rich="http://richfaces.org/rich"
  9 + xmlns:dock="http://richfaces.org/sandbox/dock"
  10 + xmlns:notify="http://richfaces.org/sandbox/notify"
  11 + >
  12 +<head>
  13 + <title>Dock sample</title>
  14 + <style type="text/css">
  15 + .rf-dk .jqDockLabelText {
  16 + font-size: 16px;
  17 + }
  18 +
  19 + .bottom {
  20 + position: fixed;
  21 + bottom: 0;
  22 + width:100%;
  23 + }
  24 + .bottom .jqDockWrap {
  25 + margin: 0 auto;
  26 + }
  27 +
  28 + </style>
  29 +</head>
  30 +<body class="rich-container">
  31 +<ui:include src="menu.xhtml"/>
  32 +<notify:notifyMessages ajaxRendered="true" showDetail="true"/>
  33 +
  34 +<p>
  35 + Here we have notify displaying all messages (not only global).
  36 + Severity is reflected in overriden style classes.
  37 +</p>
  38 +<h:form>
  39 +
  40 + <dock:dock>
  41 + <h:outputLink title="Output link">
  42 + <h:graphicImage value="images/next.png"/>
  43 + </h:outputLink>
  44 +
  45 + <h:commandLink title="Command link" action="#{greeter.sayHello}">
  46 + <h:graphicImage value="images/pause.png"/>
  47 + </h:commandLink>
  48 +
  49 + <h:graphicImage value="images/play.png" title="Image without link but with a4j:support">
  50 + <a4j:support event="onclick" action="#{greeter.sayHelloAjax}" ajaxSingle="true"/>
  51 + </h:graphicImage>
  52 +
  53 + <h:outputLink title="Link defined on link">
  54 + <h:graphicImage value="images/previous.png"/>
  55 + </h:outputLink>
  56 +
  57 + <a title="Regular link with regular image" onclick="alert('I\'m so static')">
  58 + <img src="images/stop.png" alt=""/>
  59 + </a>
  60 + </dock:dock>
  61 +
  62 + <dock:dock align="bottom" labels="tc" styleClass="bottom">
  63 + <h:outputLink title="Output link">
  64 + <h:graphicImage value="images/next.png"/>
  65 + </h:outputLink>
  66 +
  67 + <h:commandLink title="Command link" action="#{greeter.sayHello}">
  68 + <h:graphicImage value="images/pause.png"/>
  69 + </h:commandLink>
  70 +
  71 + <h:graphicImage value="images/play.png" title="Image without link but with a4j:support">
  72 + <a4j:support event="onclick" action="#{greeter.sayHelloAjax}" ajaxSingle="true"/>
  73 + </h:graphicImage>
  74 +
  75 + <h:outputLink title="Link defined on link">
  76 + <h:graphicImage value="images/previous.png"/>
  77 + </h:outputLink>
  78 +
  79 + <a title="Regular link with regular image" onclick="alert('I\'m so static')">
  80 + <img src="images/stop.png" alt=""/>
  81 + </a>
  82 + </dock:dock>
  83 +
  84 + <dock:dock align="left" labels="mr" style="position:absolute;left:0;">
  85 + <h:outputLink title="Output link">
  86 + <h:graphicImage value="images/next.png"/>
  87 + </h:outputLink>
  88 +
  89 + <h:commandLink title="Command link" action="#{greeter.sayHello}">
  90 + <h:graphicImage value="images/pause.png"/>
  91 + </h:commandLink>
  92 +
  93 + <h:graphicImage value="images/play.png" title="Image without link but with a4j:support">
  94 + <a4j:support event="onclick" action="#{greeter.sayHelloAjax}" ajaxSingle="true"/>
  95 + </h:graphicImage>
  96 +
  97 + <h:outputLink title="Link defined on link">
  98 + <h:graphicImage value="images/previous.png"/>
  99 + </h:outputLink>
  100 +
  101 + <a title="Regular link with regular image" onclick="alert('I\'m so static')">
  102 + <img src="images/stop.png" alt=""/>
  103 + </a>
  104 + </dock:dock>
  105 +
  106 +</h:form>
  107 +
  108 +<rich:insert src="/dock.xhtml" highlight="xhtml"/>
  109 +
  110 +</body>
  111 +</html>
... ...
  1 +<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  2 +<html>
  3 +<head></head>
  4 +<body>
  5 +<jsp:forward page="dock.jsf"/>
  6 +</body>
  7 +</html>
... ...
  1 +<ui:component xmlns="http://www.w3.org/1999/xhtml"
  2 + xmlns:ui="http://java.sun.com/jsf/facelets"
  3 + xmlns:f="http://java.sun.com/jsf/core"
  4 + xmlns:h="http://java.sun.com/jsf/html">
  5 + <h:panelGrid columns="3">
  6 + <h:outputLink value="#{facesContext.externalContext.requestContextPath}/dock.jsf">Example 1</h:outputLink>
  7 + </h:panelGrid>
  8 +</ui:component>
... ...
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3 + <parent>
  4 + <groupId>org.richfaces.sandbox.bernard</groupId>
  5 + <artifactId>parent</artifactId>
  6 + <version>3.3.4-SNAPSHOT</version>
  7 + <relativePath>../pom.xml</relativePath>
  8 + </parent>
  9 + <modelVersion>4.0.0</modelVersion>
  10 + <groupId>org.richfaces</groupId>
  11 + <artifactId>focus-sample</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>focus-sample Maven Webapp</name>
  14 + <build>
  15 + <finalName>${project.artifactId}</finalName>
  16 + </build>
  17 + <dependencies>
  18 + <dependency>
  19 + <groupId>org.richfaces.ui</groupId>
  20 + <artifactId>core</artifactId>
  21 + <version>${project.version}</version>
  22 + </dependency>
  23 + <dependency>
  24 + <groupId>org.richfaces.ui</groupId>
  25 + <artifactId>richfaces-ui</artifactId>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>com.uwyn</groupId>
  29 + <artifactId>jhighlight</artifactId>
  30 + <version>1.0</version>
  31 + </dependency>
  32 + <dependency>
  33 + <groupId>org.richfaces.sandbox.ui</groupId>
  34 + <artifactId>focus</artifactId>
  35 + <version>${project.version}</version>
  36 + </dependency>
  37 + </dependencies>
  38 +</project>
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Context antiJARLocking="true" path="/focus-sample"/>
... ...
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  3 + "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  4 +<faces-config>
  5 +
  6 +</faces-config>
  7 +
... ...
  1 +<jboss-deployment-structure>
  2 + <deployment>
  3 + <exclusions>
  4 + <module name="javax.faces.api" slot="main"/>
  5 + <module name="com.sun.jsf-impl" slot="main"/>
  6 + </exclusions>
  7 + <dependencies>
  8 + <module name="org.apache.commons.logging"/>
  9 + <module name="org.apache.commons.collections"/>
  10 + <module name="org.apache.commons.beanutils"/>
  11 + <module name="javax.faces.api" slot="1.2"/>
  12 + <module name="com.sun.jsf-impl" slot="1.2"/>
  13 + </dependencies>
  14 + </deployment>
  15 +</jboss-deployment-structure>
  16 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  5 + <description>Richfaces Focus Sample</description>
  6 + <display-name>focus-sample</display-name>
  7 + <context-param>
  8 + <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  9 + <param-value>.xhtml</param-value>
  10 + </context-param>
  11 + <context-param>
  12 + <param-name>facelets.REFRESH_PERIOD</param-name>
  13 + <param-value>2</param-value>
  14 + </context-param>
  15 + <context-param>
  16 + <param-name>facelets.DEVELOPMENT</param-name>
  17 + <param-value>true</param-value>
  18 + </context-param>
  19 + <context-param>
  20 + <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  21 + <param-value>client</param-value>
  22 + </context-param>
  23 + <context-param>
  24 + <param-name>com.sun.faces.validateXml</param-name>
  25 + <param-value>true</param-value>
  26 + </context-param>
  27 + <context-param>
  28 + <param-name>com.sun.faces.verifyObjects</param-name>
  29 + <param-value>true</param-value>
  30 + </context-param>
  31 + <context-param>
  32 + <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  33 + <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  34 + </context-param>
  35 + <context-param>
  36 + <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
  37 + <param-value>false</param-value>
  38 + </context-param>
  39 + <filter>
  40 + <display-name>Ajax4jsf Filter</display-name>
  41 + <filter-name>ajax4jsf</filter-name>
  42 + <filter-class>org.ajax4jsf.Filter</filter-class>
  43 + </filter>
  44 + <filter-mapping>
  45 + <filter-name>ajax4jsf</filter-name>
  46 + <servlet-name>Faces Servlet</servlet-name>
  47 + <dispatcher>FORWARD</dispatcher>
  48 + <dispatcher>REQUEST</dispatcher>
  49 + <dispatcher>INCLUDE</dispatcher>
  50 + </filter-mapping>
  51 + <servlet>
  52 + <servlet-name>Faces Servlet</servlet-name>
  53 + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  54 + <load-on-startup>1</load-on-startup>
  55 + </servlet>
  56 + <servlet-mapping>
  57 + <servlet-name>Faces Servlet</servlet-name>
  58 + <url-pattern>*.jsf</url-pattern>
  59 + </servlet-mapping>
  60 + <login-config>
  61 + <auth-method>BASIC</auth-method>
  62 + </login-config>
  63 +</web-app>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml"
  4 + xmlns:ui="http://java.sun.com/jsf/facelets"
  5 + xmlns:f="http://java.sun.com/jsf/core"
  6 + xmlns:h="http://java.sun.com/jsf/html"
  7 + xmlns:focus="http://richfaces.org/sandbox/focus"
  8 + xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"
  9 + >
  10 +<head>
  11 + <title>Focus sample</title>
  12 +</head>
  13 +<body>
  14 +<ui:include src="menu.xhtml"/>
  15 +
  16 +<p>Focus should be placed on email:
  17 + <ul>
  18 + <li>username gets default priority 0</li>
  19 + <li>email gets priority -1</li>
  20 + </ul>
  21 +</p>
  22 +
  23 +<h:form>
  24 + <h:panelGrid columns="3">
  25 + <h:outputLabel value="Username" for="username"/>
  26 + <h:inputText value="#{username}" id="username" required="true">
  27 + <focus:focus/>
  28 + </h:inputText>
  29 + <h:message for="username"/>
  30 +
  31 + <h:outputLabel value="Email" for="email"/>
  32 + <h:inputText value="#{email}" id="email" required="true"/>
  33 + <h:message for="email"/>
  34 + </h:panelGrid>
  35 + <h:commandButton value="Submit"/>
  36 + <focus:focus for="email" priority="-1"/>
  37 +</h:form>
  38 +
  39 +<rich:insert src="/focus_1.xhtml" highlight="html"/>
  40 +
  41 +</body>
  42 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml"
  4 + xmlns:ui="http://java.sun.com/jsf/facelets"
  5 + xmlns:f="http://java.sun.com/jsf/core"
  6 + xmlns:h="http://java.sun.com/jsf/html"
  7 + xmlns:focus="http://richfaces.org/sandbox/focus" xmlns:rich="http://richfaces.org/rich"
  8 + >
  9 +<head>
  10 + <title>Focus sample</title>
  11 +</head>
  12 +<body>
  13 +<ui:include src="menu.xhtml"/>
  14 +
  15 +<p>Focus should be placed on first radio :
  16 + <ul>
  17 + <li>username gets priority 9999</li>
  18 + <li>email gets default priority 1</li>
  19 + </ul>
  20 +</p>
  21 +<h:form>
  22 + <h:panelGrid columns="3">
  23 +
  24 + <h:outputLabel value="Username" for="username"/>
  25 + <h:inputText value="#{username}" id="username" required="true">
  26 + <focus:focus priority="9999"/>
  27 + </h:inputText>
  28 + <h:message for="username"/>
  29 +
  30 + <h:outputLabel value="Option" for="option"/>
  31 + <h:selectOneRadio value="#{option}" id="option" required="true">
  32 + <f:selectItem itemLabel="Option 1" itemValue="1"/>
  33 + <f:selectItem itemLabel="Option 2" itemValue="2"/>
  34 + <f:selectItem itemLabel="Option 3" itemValue="3"/>
  35 + <focus:focus suffix=":0"/>
  36 + </h:selectOneRadio>
  37 + <h:message for="option"/>
  38 +
  39 + </h:panelGrid>
  40 + <h:commandButton value="Submit"/>
  41 +</h:form>
  42 +
  43 +<rich:insert src="/focus_2.xhtml" highlight="html"/>
  44 +
  45 +</body>
  46 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml"
  4 + xmlns:ui="http://java.sun.com/jsf/facelets"
  5 + xmlns:f="http://java.sun.com/jsf/core"
  6 + xmlns:h="http://java.sun.com/jsf/html"
  7 + xmlns:focus="http://richfaces.org/sandbox/focus" xmlns:rich="http://richfaces.org/rich"
  8 + >
  9 +<head>
  10 + <title>Focus sample</title>
  11 +</head>
  12 +<body>
  13 +<ui:include src="menu.xhtml"/>
  14 +
  15 +<p>Focus should be placed on username :
  16 + <ul>
  17 + <li>username gets default priority 0</li>
  18 + <li>email gets priority 1</li>
  19 + </ul>
  20 +</p>
  21 +<h:form>
  22 + <h:panelGrid columns="3">
  23 + <h:outputLabel value="Username" for="username"/>
  24 + <h:inputText value="#{username}" id="username" required="true">
  25 + <focus:focus/>
  26 + </h:inputText>
  27 + <h:message for="username"/>
  28 +
  29 + <h:outputLabel value="Email" for="email"/>
  30 + <h:inputText value="#{email}" id="email" required="true"/>
  31 + <h:message for="email"/>
  32 + </h:panelGrid>
  33 + <h:commandButton value="Submit"/>
  34 + <focus:focus for="email"/>
  35 +</h:form>
  36 +
  37 +<rich:insert src="/focus_3.xhtml" highlight="html"/>
  38 +
  39 +</body>
  40 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
  4 + xmlns:f="http://java.sun.com/jsf/core"
  5 + xmlns:h="http://java.sun.com/jsf/html" xmlns:focus="http://richfaces.org/sandbox/focus"
  6 + xmlns:rich="http://richfaces.org/rich">
  7 +<head>
  8 + <title>Focus sample</title>
  9 +</head>
  10 +<body>
  11 +<ui:include src="menu.xhtml"/>
  12 +
  13 +<p>This example shows that focus can be put on non JSF control</p>
  14 +<h:panelGrid columns="3">
  15 + <h:outputLabel value="Non JSF control" for="option"/>
  16 + <input type="radio" id="option_1" name="option"/> 1
  17 + <input type="radio" id="option_2" name="option"/> 2
  18 +</h:panelGrid>
  19 +<focus:focus targetClientId="option_2"/>
  20 +
  21 +<rich:insert src="/focus_4.xhtml" highlight="html"/>
  22 +
  23 +</body>
  24 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml"
  4 + xmlns:ui="http://java.sun.com/jsf/facelets"
  5 + xmlns:f="http://java.sun.com/jsf/core"
  6 + xmlns:h="http://java.sun.com/jsf/html"
  7 + xmlns:focus="http://richfaces.org/sandbox/focus" xmlns:rich="http://richfaces.org/rich"
  8 + >
  9 +<head>
  10 + <title>Focus sample</title>
  11 +</head>
  12 +<body>
  13 +<ui:include src="menu.xhtml"/>
  14 +
  15 +<p>On initial request focus should be placed on username. This is because direct parent of
  16 + focus component is not UIInput.
  17 + In such situation focus is put on first UIInput in parent form.
  18 + Please not that focus component is not direct child of form.
  19 + This sample is to ensure you that UIInput is not searched
  20 + within direct parent of focus component, but within nesting form.
  21 +</p>
  22 +<ul>
  23 + <li>username gets default priority 0</li>
  24 + <li>email gets priority 1</li>
  25 +</ul>
  26 +<p>On form submit, when username is valid and email is invalid, focus
  27 + should be placed on email.
  28 +</p>
  29 +
  30 +<p>On form submit, when all fields are valid, focus
  31 + should be placed on username.
  32 +</p>
  33 +<h:form>
  34 + <h:panelGrid columns="3">
  35 + <h:outputLabel value="Username" for="username"/>
  36 + <h:inputText value="#{username}" id="username" required="true"/>
  37 + <h:message for="username"/>
  38 + </h:panelGrid>
  39 + <h:panelGrid columns="3">
  40 + <h:outputLabel value="Email" for="email"/>
  41 + <h:inputText value="#{email}" id="email" required="true"/>
  42 + <h:message for="email"/>
  43 + <focus:focus/>
  44 + </h:panelGrid>
  45 + <h:commandButton value="Submit"/>
  46 +</h:form>
  47 +
  48 +<rich:insert src="/focus_5.xhtml" highlight="html"/>
  49 +
  50 +</body>
  51 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml"
  4 + xmlns:ui="http://java.sun.com/jsf/facelets"
  5 + xmlns:f="http://java.sun.com/jsf/core"
  6 + xmlns:h="http://java.sun.com/jsf/html"
  7 + xmlns:focus="http://richfaces.org/sandbox/focus" xmlns:rich="http://richfaces.org/rich"
  8 + xmlns:a4j="http://richfaces.org/a4j"
  9 + >
  10 +<head>
  11 + <title>Focus sample</title>
  12 +</head>
  13 +<body>
  14 +<ui:include src="menu.xhtml"/>
  15 +
  16 +<p>
  17 + Focus is placed on control withing modal panel. Modal panel is rendered before it is shown, thus
  18 + javascript that sets focus should not be invoked at that moment.
  19 + To cope with that focus component has "timing" attribute which, when valued to "onJScall"
  20 + allows setting focus later whenever user wishes. When "timing" is set to "onJScall" then "name" attribute
  21 + must be also specified. It is name of JavaScript function that will be generated and can be called by user
  22 + to set focus in any moment.
  23 + In this example we put onshow="focusTheForm();" in modal panel which causes
  24 + focus to be placed after the modal is visible.
  25 + Notice that "name" attribute of focuse component is equal to "focusTheForm".
  26 +</p>
  27 +<h:form>
  28 + <h:commandButton value="Show modal">
  29 + <rich:componentControl for="panel" event="onclick" operation="show" disableDefault="true"/>
  30 + </h:commandButton>
  31 +</h:form>
  32 +<rich:modalPanel id="panel" autosized="true" onshow="focusTheForm();">
  33 + <h:form id="theForm">
  34 + <focus:focus name="focusTheForm" timing="onJScall"/>
  35 + <h:panelGrid columns="3">
  36 + <h:outputLabel value="Username" for="username"/>
  37 + <h:inputText value="#{username}" id="username" required="true"/>
  38 + <h:message for="username"/>
  39 + <h:outputLabel value="Email" for="email"/>
  40 + <h:inputText value="#{email}" id="email" required="true"/>
  41 + <h:message for="email"/>
  42 + </h:panelGrid>
  43 + <a4j:commandButton value="Submit" reRender="theForm" oncomplete="Richfaces.FocusManager.focus();"/>
  44 + <h:commandButton value="Close">
  45 + <rich:componentControl for="panel" event="onclick" operation="hide" disableDefault="true"/>
  46 + </h:commandButton>
  47 + </h:form>
  48 +</rich:modalPanel>
  49 +
  50 +<rich:insert src="/focus_6.xhtml" highlight="html"/>
  51 +
  52 +</body>
  53 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
  4 + xmlns:f="http://java.sun.com/jsf/core"
  5 + xmlns:h="http://java.sun.com/jsf/html" xmlns:focus="http://richfaces.org/sandbox/focus"
  6 + xmlns:rich="http://richfaces.org/rich"
  7 + xmlns:a4j="http://richfaces.org/a4j">
  8 +<head>
  9 + <title>Focus sample</title>
  10 +</head>
  11 +<body>
  12 +<ui:include src="menu.xhtml"/>
  13 +
  14 +<p>
  15 + Some components like h:selectOneRadio render elements that have identifiers matching component's clientId+suffix.
  16 + This might be a pain if we want to have single "focus" component inside form, but be able to focus any type of the invalid
  17 + components.
  18 + That's what focusModifier component is for.
  19 + Some components cause even grater pain cause you cannot nest anything inside (rich:calendar).
  20 + To cope with this put focusModifier inside "focusModifier" facet. </p>
  21 +<h:form>
  22 + <focus:focus/>
  23 + <h:panelGrid columns="3">
  24 + <h:outputLabel value="Option" for="option"/>
  25 + <h:selectOneRadio value="#{option}" id="option" required="true">
  26 + <f:selectItem itemLabel="Option 1" itemValue="1"/>
  27 + <f:selectItem itemLabel="Option 2" itemValue="2"/>
  28 + <f:selectItem itemLabel="Option 3" itemValue="3"/>
  29 + <focus:focusModifier suffix=":2"/>
  30 + </h:selectOneRadio>
  31 + <h:message for="option"/>
  32 +
  33 + <h:outputLabel value="Email" for="email"/>
  34 + <h:inputText value="#{email}" id="email" required="true"/>
  35 + <h:message for="email"/>
  36 + <h:outputLabel value="Date" for="date"/>
  37 + <rich:calendar value="#{date}" id="date" enableManualInput="true" required="true">
  38 + <f:facet name="focusModifier">
  39 + <focus:focusModifier suffix="InputDate"/>
  40 + </f:facet>
  41 + </rich:calendar>
  42 + <h:message for="date"/>
  43 + </h:panelGrid>
  44 + <h:commandButton value="submit"/>
  45 +</h:form>
  46 +
  47 +<rich:insert src="/focus_7.xhtml" highlight="html"/>
  48 +
  49 +</body>
  50 +</html>
... ...
  1 +<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  2 +<html>
  3 +<head></head>
  4 +<body>
  5 +<jsp:forward page="focus_1.jsf"/>
  6 +</body>
  7 +</html>
... ...
  1 +<ui:component xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
  2 + xmlns:h="http://java.sun.com/jsf/html">
  3 + <div>
  4 + <ul>
  5 + <li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/focus_1.jsf">Example 1</h:outputLink></li>
  6 + <li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/focus_2.jsf">Example 2</h:outputLink></li>
  7 + <li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/focus_3.jsf">Example 3</h:outputLink></li>
  8 + <li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/focus_4.jsf">Example 4</h:outputLink></li>
  9 + <li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/focus_5.jsf">Example 5</h:outputLink></li>
  10 + <li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/focus_6.jsf">Example 6</h:outputLink></li>
  11 + <li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/focus_7.jsf">Example 7</h:outputLink></li>
  12 + </ul>
  13 + </div>
  14 +</ui:component>
... ...
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3 + <parent>
  4 + <groupId>org.richfaces.sandbox.bernard</groupId>
  5 + <artifactId>parent</artifactId>
  6 + <version>3.3.4-SNAPSHOT</version>
  7 + <relativePath>../pom.xml</relativePath>
  8 + </parent>
  9 + <modelVersion>4.0.0</modelVersion>
  10 + <groupId>org.richfaces</groupId>
  11 + <artifactId>gmapMarker-sample</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>gmapMarker-sample Maven Webapp</name>
  14 + <build>
  15 + <finalName>${project.artifactId}</finalName>
  16 + </build>
  17 + <dependencies>
  18 + <dependency>
  19 + <groupId>org.richfaces.ui</groupId>
  20 + <artifactId>core</artifactId>
  21 + <version>${project.version}</version>
  22 + </dependency>
  23 + <dependency>
  24 + <groupId>org.richfaces.ui</groupId>
  25 + <artifactId>richfaces-ui</artifactId>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>com.uwyn</groupId>
  29 + <artifactId>jhighlight</artifactId>
  30 + <version>1.0</version>
  31 + </dependency>
  32 + <dependency>
  33 + <groupId>org.richfaces.sandbox.ui</groupId>
  34 + <artifactId>gmapMarker</artifactId>
  35 + <version>${project.version}</version>
  36 + </dependency>
  37 + </dependencies>
  38 +</project>
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  3 + "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  4 +<faces-config>
  5 +
  6 +</faces-config>
  7 +
... ...
  1 +<jboss-deployment-structure>
  2 + <deployment>
  3 + <exclusions>
  4 + <module name="javax.faces.api" slot="main"/>
  5 + <module name="com.sun.jsf-impl" slot="main"/>
  6 + </exclusions>
  7 + <dependencies>
  8 + <module name="org.apache.commons.logging"/>
  9 + <module name="org.apache.commons.collections"/>
  10 + <module name="org.apache.commons.beanutils"/>
  11 + <module name="javax.faces.api" slot="1.2"/>
  12 + <module name="com.sun.jsf-impl" slot="1.2"/>
  13 + </dependencies>
  14 + </deployment>
  15 +</jboss-deployment-structure>
  16 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  5 + <description>Richfaces gmapMarker Sample</description>
  6 + <display-name>gmapMarker-sample</display-name>
  7 + <context-param>
  8 + <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  9 + <param-value>.xhtml</param-value>
  10 + </context-param>
  11 + <context-param>
  12 + <param-name>facelets.REFRESH_PERIOD</param-name>
  13 + <param-value>2</param-value>
  14 + </context-param>
  15 + <context-param>
  16 + <param-name>facelets.DEVELOPMENT</param-name>
  17 + <param-value>true</param-value>
  18 + </context-param>
  19 + <context-param>
  20 + <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  21 + <param-value>client</param-value>
  22 + </context-param>
  23 + <context-param>
  24 + <param-name>com.sun.faces.validateXml</param-name>
  25 + <param-value>true</param-value>
  26 + </context-param>
  27 + <context-param>
  28 + <param-name>com.sun.faces.verifyObjects</param-name>
  29 + <param-value>true</param-value>
  30 + </context-param>
  31 + <context-param>
  32 + <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  33 + <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  34 + </context-param>
  35 + <context-param>
  36 + <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
  37 + <param-value>false</param-value>
  38 + </context-param>
  39 + <filter>
  40 + <display-name>Ajax4jsf Filter</display-name>
  41 + <filter-name>ajax4jsf</filter-name>
  42 + <filter-class>org.ajax4jsf.Filter</filter-class>
  43 + </filter>
  44 + <filter-mapping>
  45 + <filter-name>ajax4jsf</filter-name>
  46 + <servlet-name>Faces Servlet</servlet-name>
  47 + <dispatcher>FORWARD</dispatcher>
  48 + <dispatcher>REQUEST</dispatcher>
  49 + <dispatcher>INCLUDE</dispatcher>
  50 + </filter-mapping>
  51 + <servlet>
  52 + <servlet-name>Faces Servlet</servlet-name>
  53 + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  54 + <load-on-startup>1</load-on-startup>
  55 + </servlet>
  56 + <servlet-mapping>
  57 + <servlet-name>Faces Servlet</servlet-name>
  58 + <url-pattern>*.jsf</url-pattern>
  59 + </servlet-mapping>
  60 + <login-config>
  61 + <auth-method>BASIC</auth-method>
  62 + </login-config>
  63 + <listener>
  64 +
  65 + <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  66 +
  67 + </listener>
  68 +</web-app>
... ...
  1 +<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  2 +<html>
  3 +<head></head>
  4 +<body>
  5 +<jsp:forward page="sample_1.jsf"/>
  6 +</body>
  7 +</html>
... ...
  1 +<ui:component xmlns="http://www.w3.org/1999/xhtml"
  2 + xmlns:ui="http://java.sun.com/jsf/facelets"
  3 + xmlns:f="http://java.sun.com/jsf/core"
  4 + xmlns:h="http://java.sun.com/jsf/html">
  5 + <div>
  6 + <ul>
  7 + <!--<li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/sample_1.jsf">Example 1</h:outputLink></li>-->
  8 + </ul>
  9 + </div>
  10 +</ui:component>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
  4 + xmlns:f="http://java.sun.com/jsf/core"
  5 + xmlns:h="http://java.sun.com/jsf/html"
  6 + xmlns:sandbox="http://richfaces.org/sandbox/gmapMarker"
  7 + xmlns:a4j="http://richfaces.org/a4j"
  8 + xmlns:rich="http://richfaces.org/rich">
  9 +<head>
  10 + <title>gmapMarker sample</title>
  11 + <style type="text/css">
  12 + #calendar {
  13 + float: right;
  14 + width: 200px;
  15 + }
  16 + </style>
  17 +</head>
  18 +
  19 +<body>
  20 +<ui:include src="menu.xhtml"/>
  21 +
  22 +
  23 +<fieldset>
  24 + <legend>Add marker with JavaScript</legend>
  25 + <form action="#">
  26 + Latitude <input type="text" id="lat"/>
  27 + Longitude <input type="text" id="lng"/>
  28 + Title <input type="text" id="title"/>
  29 + Draggable <input type="checkbox" id="draggable"/>
  30 + <input type="button" value="Add marker" onclick="addMarker()"/>
  31 + </form>
  32 + <script type="text/javascript">
  33 + function addMarker() {
  34 + RichFaces.addGmapMarker('gmap',
  35 + document.getElementById('lat').value,
  36 + document.getElementById('lng').value,
  37 + {
  38 + title:document.getElementById('title').value,
  39 + draggable:document.getElementById('draggable').checked
  40 + });
  41 + }
  42 + </script>
  43 +</fieldset>
  44 +<rich:gmap gmapVar="gmap" lat="50" lng="32" zoom="2" style="width:100%"
  45 + gmapKey="ABQIAAAAJRoUgtOKQgPPTRmZNJcFRBQ03jzigXrzGoTeBBI15yVgqSobkRSrWVFeSVl33ncpBGX7XrKdYdUaCg">
  46 + <sandbox:gmapMarker latitude="50" longitude="32" title="Ukraine" autoPan="false" bounceGravity=".5"
  47 + draggable="true" onclick="alert(marker.getTitle()+'('+latlng.lat()+';'+latlng.lng()+')')"
  48 + clickable="true"/>
  49 + <sandbox:gmapMarker latitude="20" longitude="52" title="Saudi Arabia - click me!" draggable="true"
  50 + icon="https://issues.jboss.org/secure/attachment/12326770/richfaces_icon_64px.gif"
  51 + iconWidth="32" iconHeight="32">
  52 + <f:facet name="infoWindow">
  53 + <h:panelGroup>
  54 + <h:outputText value="Gubik"/><br/>
  55 + <h:graphicImage value="http://in.relation.to/service/File/11358" width="300"/>
  56 + </h:panelGroup>
  57 + </f:facet>
  58 + </sandbox:gmapMarker>
  59 +</rich:gmap>
  60 +
  61 +<script type="text/javascript">
  62 + RichFaces.addGmapMarker('gmap', 10.0, 22.0, {title:'Toro'});
  63 +</script>
  64 +
  65 +
  66 +<rich:insert src="/sample_1.xhtml" highlight="html"/>
  67 +
  68 +</body>
  69 +</html>
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4 + <parent>
  5 + <groupId>org.richfaces.sandbox.bernard</groupId>
  6 + <artifactId>parent</artifactId>
  7 + <version>3.3.4-SNAPSHOT</version>
  8 + <relativePath>../pom.xml</relativePath>
  9 + </parent>
  10 + <modelVersion>4.0.0</modelVersion>
  11 + <groupId>org.richfaces.sandbox.ui</groupId>
  12 + <artifactId>imageSelectTool-sample</artifactId>
  13 + <packaging>war</packaging>
  14 + <name>imageSelectTool-sample Maven Webapp</name>
  15 + <build>
  16 + <finalName>${project.artifactId}</finalName>
  17 + </build>
  18 + <dependencies>
  19 + <dependency>
  20 + <groupId>org.richfaces.ui</groupId>
  21 + <artifactId>richfaces-ui</artifactId>
  22 + </dependency>
  23 + <dependency>
  24 + <groupId>org.richfaces.sandbox.ui</groupId>
  25 + <artifactId>imageSelectTool</artifactId>
  26 + <version>${project.version}</version>
  27 + </dependency>
  28 + <dependency>
  29 + <groupId>com.uwyn</groupId>
  30 + <artifactId>jhighlight</artifactId>
  31 + <version>1.0</version>
  32 + </dependency>
  33 + </dependencies>
  34 +</project>
\ No newline at end of file
... ...
  1 +package org.richfaces.sandbox.imageSelectTool;
  2 +
  3 +import java.awt.*;
  4 +
  5 +public class Cropper {
  6 +
  7 + private String srcImage = "images/sample.jpg";
  8 + private Double aspectRatio;
  9 + private String backgroundColor;
  10 + private Double backgroundOpacity;
  11 + private Integer maxHeight;
  12 + private Integer maxWidth;
  13 + private Integer minHeight;
  14 + private Integer minWidth;
  15 + private Rectangle selection;
  16 +
  17 + public String getSrcImage() {
  18 + return srcImage;
  19 + }
  20 +
  21 + public void setSrcImage(String srcImage) {
  22 + this.srcImage = srcImage;
  23 + }
  24 +
  25 + public Double getAspectRatio() {
  26 + return aspectRatio;
  27 + }
  28 +
  29 + public void setAspectRatio(Double aspectRatio) {
  30 + this.aspectRatio = aspectRatio;
  31 + }
  32 +
  33 + public String getBackgroundColor() {
  34 + return backgroundColor;
  35 + }
  36 +
  37 + public void setBackgroundColor(String backgroundColor) {
  38 + this.backgroundColor = backgroundColor;
  39 + }
  40 +
  41 + public Double getBackgroundOpacity() {
  42 + return backgroundOpacity;
  43 + }
  44 +
  45 + public void setBackgroundOpacity(Double backgroundOpacity) {
  46 + this.backgroundOpacity = backgroundOpacity;
  47 + }
  48 +
  49 + public Integer getMaxHeight() {
  50 + return maxHeight;
  51 + }
  52 +
  53 + public void setMaxHeight(Integer maxHeight) {
  54 + this.maxHeight = maxHeight;
  55 + }
  56 +
  57 + public Integer getMaxWidth() {
  58 + return maxWidth;
  59 + }
  60 +
  61 + public void setMaxWidth(Integer maxWidth) {
  62 + this.maxWidth = maxWidth;
  63 + }
  64 +
  65 + public Integer getMinHeight() {
  66 + return minHeight;
  67 + }
  68 +
  69 + public void setMinHeight(Integer minHeight) {
  70 + this.minHeight = minHeight;
  71 + }
  72 +
  73 + public Integer getMinWidth() {
  74 + return minWidth;
  75 + }
  76 +
  77 + public void setMinWidth(Integer minWidth) {
  78 + this.minWidth = minWidth;
  79 + }
  80 +
  81 + public Rectangle getSelection() {
  82 + return selection;
  83 + }
  84 +
  85 + public void setSelection(Rectangle selection) {
  86 + this.selection = selection;
  87 + }
  88 +}
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Context antiJARLocking="true" path="/imageSelectTool-sample"/>
... ...
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  3 + "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  4 +<faces-config>
  5 + <managed-bean>
  6 + <managed-bean-name>cropper</managed-bean-name>
  7 + <managed-bean-class>org.richfaces.sandbox.imageSelectTool.Cropper</managed-bean-class>
  8 + <managed-bean-scope>session</managed-bean-scope>
  9 + </managed-bean>
  10 +</faces-config>
  11 +
... ...
  1 +<jboss-deployment-structure>
  2 + <deployment>
  3 + <exclusions>
  4 + <module name="javax.faces.api" slot="main"/>
  5 + <module name="com.sun.jsf-impl" slot="main"/>
  6 + </exclusions>
  7 + <dependencies>
  8 + <module name="org.apache.commons.logging"/>
  9 + <module name="org.apache.commons.collections"/>
  10 + <module name="org.apache.commons.beanutils"/>
  11 + <module name="javax.faces.api" slot="1.2"/>
  12 + <module name="com.sun.jsf-impl" slot="1.2"/>
  13 + </dependencies>
  14 + </deployment>
  15 +</jboss-deployment-structure>
  16 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3 + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  4 + <description>Richfaces imageSelectTool Sample</description>
  5 + <display-name>imageSelectTool-sample</display-name>
  6 + <context-param>
  7 + <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  8 + <param-value>.xhtml</param-value>
  9 + </context-param>
  10 + <context-param>
  11 + <param-name>facelets.REFRESH_PERIOD</param-name>
  12 + <param-value>2</param-value>
  13 + </context-param>
  14 + <context-param>
  15 + <param-name>facelets.DEVELOPMENT</param-name>
  16 + <param-value>true</param-value>
  17 + </context-param>
  18 + <context-param>
  19 + <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  20 + <param-value>server</param-value>
  21 + </context-param>
  22 + <context-param>
  23 + <param-name>com.sun.faces.validateXml</param-name>
  24 + <param-value>true</param-value>
  25 + </context-param>
  26 + <context-param>
  27 + <param-name>com.sun.faces.verifyObjects</param-name>
  28 + <param-value>false</param-value>
  29 + </context-param>
  30 + <context-param>
  31 + <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  32 + <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  33 + </context-param>
  34 + <context-param>
  35 + <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
  36 + <param-value>false</param-value>
  37 + </context-param>
  38 + <context-param>
  39 + <param-name>org.richfaces.SKIN</param-name>
  40 + <param-value>blueSky</param-value>
  41 + </context-param>
  42 + <context-param>
  43 + <param-name>org.richfaces.CONTROL_SKINNING_LEVEL</param-name>
  44 + <param-value>extended</param-value>
  45 + </context-param>
  46 + <filter>
  47 + <display-name>Ajax4jsf Filter</display-name>
  48 + <filter-name>ajax4jsf</filter-name>
  49 + <filter-class>org.ajax4jsf.Filter</filter-class>
  50 + <init-param>
  51 + <param-name>enable-cache</param-name>
  52 + <param-value>false</param-value>
  53 + </init-param>
  54 + </filter>
  55 + <filter-mapping>
  56 + <filter-name>ajax4jsf</filter-name>
  57 + <servlet-name>Faces Servlet</servlet-name>
  58 + <dispatcher>FORWARD</dispatcher>
  59 + <dispatcher>REQUEST</dispatcher>
  60 + <dispatcher>INCLUDE</dispatcher>
  61 + </filter-mapping>
  62 + <servlet>
  63 + <servlet-name>Faces Servlet</servlet-name>
  64 + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  65 + <load-on-startup>1</load-on-startup>
  66 + </servlet>
  67 + <servlet-mapping>
  68 + <servlet-name>Faces Servlet</servlet-name>
  69 + <url-pattern>*.jsf</url-pattern>
  70 + </servlet-mapping>
  71 + <login-config>
  72 + <auth-method>BASIC</auth-method>
  73 + </login-config>
  74 +</web-app>
... ...
  1 +<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  2 +<html>
  3 +<head></head>
  4 +<body>
  5 +<jsp:forward page="index.jsf"/>
  6 +</body>
  7 +</html>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml"
  4 + xmlns:ui="http://java.sun.com/jsf/facelets"
  5 + xmlns:f="http://java.sun.com/jsf/core"
  6 + xmlns:h="http://java.sun.com/jsf/html"
  7 + xmlns:a4j="http://richfaces.org/a4j"
  8 + xmlns:rich="http://richfaces.org/rich"
  9 + xmlns:imageSelectTool="http://richfaces.org/sandbox/imageSelectTool"
  10 + >
  11 +<head>
  12 + <title>ImageSelectTool sample</title>
  13 + <style type="text/css">
  14 + input.short {
  15 + width: 30px;
  16 + }
  17 + </style>
  18 +</head>
  19 +<body class="rich-container">
  20 +<ui:include src="menu.xhtml"/>
  21 +
  22 +<p>
  23 +
  24 +</p>
  25 +<rich:messages ajaxRendered="true"/>
  26 +<h:panelGrid columns="3">
  27 + <h:panelGroup>
  28 + <h:form>
  29 + <h:panelGrid columns="2">
  30 + <h:outputLabel value="srcImage" for="srcImage"/>
  31 + <h:inputText value="#{cropper.srcImage}" id="srcImage"/>
  32 + <h:outputLabel value="minWidth" for="minWidth"/>
  33 + <h:inputText value="#{cropper.minWidth}" id="minWidth"/>
  34 + <h:outputLabel value="minHeight" for="minHeight"/>
  35 + <h:inputText value="#{cropper.minHeight}" id="minHeight"/>
  36 + <h:outputLabel value="maxWidth" for="maxWidth"/>
  37 + <h:inputText value="#{cropper.maxWidth}" id="maxWidth"/>
  38 + <h:outputLabel value="maxHeight" for="maxHeight"/>
  39 + <h:inputText value="#{cropper.maxHeight}" id="maxHeight"/>
  40 + <h:outputLabel value="backgroundColor" for="backgroundColor"/>
  41 + <h:inputText value="#{cropper.backgroundColor}" id="backgroundColor"/>
  42 + <h:outputLabel value="backgroundOpacity" for="backgroundOpacity"/>
  43 + <h:inputText value="#{cropper.backgroundOpacity}" id="backgroundOpacity"/>
  44 + <h:outputLabel value="aspectRatio" for="aspectRatio"/>
  45 + <h:inputText value="#{cropper.aspectRatio}" id="aspectRatio"/>
  46 + </h:panelGrid>
  47 + <h:commandButton value="Submit"/>
  48 + </h:form>
  49 +
  50 + <div id="coords"/>
  51 + <input type="text" id="x" class="short"/>
  52 + <input type="text" id="y" class="short"/>
  53 + <input type="text" id="width" class="short"/>
  54 + <input type="text" id="height" class="short"/>
  55 + <input type="button" id="setSelection" value="Set selection"/>
  56 + <input type="button" id="animateTo" value="Animate to"/>
  57 +
  58 + <h:form>
  59 +
  60 + </h:form>
  61 + </h:panelGroup>
  62 +
  63 +
  64 + <h:graphicImage value="#{cropper.srcImage}" id="image"/>
  65 +
  66 + <rich:panel id="result">
  67 + #{cropper.selection}
  68 + </rich:panel>
  69 +</h:panelGrid>
  70 +<script type="text/javascript">
  71 + function updateInputs(event) {
  72 + jQuery('#coords').html('selected:' + event.x + ';' + event.y + ';' + event.width + ';' + event.height);
  73 + jQuery('#x').val(event.x);
  74 + jQuery('#y').val(event.y);
  75 + jQuery('#width').val(event.width);
  76 + jQuery('#height').val(event.height);
  77 + }
  78 + jQuery('#setSelection').click(function() {
  79 + selector.setSelection(
  80 + parseInt(jQuery('#x').val()),
  81 + parseInt(jQuery('#y').val()),
  82 + parseInt(jQuery('#width').val()),
  83 + parseInt(jQuery('#height').val())
  84 + );
  85 + });
  86 + jQuery('#animateTo').click(function() {
  87 + selector.animateTo(
  88 + parseInt(jQuery('#x').val()),
  89 + parseInt(jQuery('#y').val()),
  90 + parseInt(jQuery('#width').val()),
  91 + parseInt(jQuery('#height').val())
  92 + );
  93 + });
  94 +</script>
  95 +<h:form>
  96 + <imageSelectTool:imageSelectTool id="selector"
  97 + for="image"
  98 + var="selector"
  99 + value="#{cropper.selection}"
  100 + aspectRatio="#{cropper.aspectRatio}"
  101 + backgroundColor="#{cropper.backgroundColor}"
  102 + backgroundOpacity="#{cropper.backgroundOpacity}"
  103 + maxHeight="#{cropper.maxHeight}"
  104 + maxWidth="#{cropper.maxWidth}"
  105 + minWidth="#{cropper.minWidth}"
  106 + minHeight="#{cropper.minHeight}"
  107 + onchange="updateInputs(event);"
  108 + onselect="updateInputs(event);reRenderResult()"/>
  109 + <a4j:jsFunction name="reRenderResult" reRender="result"/>
  110 + <a4j:commandButton value="ReRender image" reRender="image"/>
  111 + <a4j:commandButton value="ReRender imageSelectTool" reRender="selector"/>
  112 + <a4j:commandButton value="ReRender both" reRender="selector,image"/>
  113 +</h:form>
  114 +<rich:insert src="/index.xhtml" highlight="xhtml" rendered="#{showSource!=false}"/>
  115 +
  116 +</body>
  117 +</html>
... ...
  1 +<ui:component xmlns="http://www.w3.org/1999/xhtml"
  2 + xmlns:ui="http://java.sun.com/jsf/facelets"
  3 + xmlns:f="http://java.sun.com/jsf/core"
  4 + xmlns:h="http://java.sun.com/jsf/html">
  5 + <h:panelGrid columns="3">
  6 + <h:outputLink value="#{facesContext.externalContext.requestContextPath}/index.jsf">Example 1</h:outputLink>
  7 + </h:panelGrid>
  8 +</ui:component>
... ...
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3 + <parent>
  4 + <groupId>org.richfaces.sandbox.bernard</groupId>
  5 + <artifactId>parent</artifactId>
  6 + <version>3.3.4-SNAPSHOT</version>
  7 + <relativePath>../pom.xml</relativePath>
  8 + </parent>
  9 + <modelVersion>4.0.0</modelVersion>
  10 + <groupId>org.richfaces</groupId>
  11 + <artifactId>jQueryPlugin-sample</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>jQueryPlugin-sample Maven Webapp</name>
  14 + <build>
  15 + <finalName>${project.artifactId}</finalName>
  16 + </build>
  17 + <dependencies>
  18 + <dependency>
  19 + <groupId>org.richfaces.ui</groupId>
  20 + <artifactId>core</artifactId>
  21 + <version>${project.version}</version>
  22 + </dependency>
  23 + <dependency>
  24 + <groupId>org.richfaces.ui</groupId>
  25 + <artifactId>richfaces-ui</artifactId>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>com.uwyn</groupId>
  29 + <artifactId>jhighlight</artifactId>
  30 + <version>1.0</version>
  31 + </dependency>
  32 + <dependency>
  33 + <groupId>org.richfaces.sandbox.ui</groupId>
  34 + <artifactId>jQueryPlugin</artifactId>
  35 + <version>${project.version}</version>
  36 + </dependency>
  37 + </dependencies>
  38 +</project>
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<resource-config>
  3 + <resource>
  4 + <name>css/jquery.pnotify.xcss</name>
  5 + <path>css/jquery.pnotify.xcss</path>
  6 + </resource>
  7 +</resource-config>
\ No newline at end of file
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<f:template xmlns:f='http:/jsf.exadel.com/template'
  3 +xmlns:u='http:/jsf.exadel.com/template/util'
  4 +xmlns="http://www.w3.org/1999/xhtml" >
  5 +
  6 + <f:verbatim>
  7 +/* Notice----------------------------------*/
  8 +.rf-ny {
  9 + top: 18px;
  10 + right: 18px;
  11 + position: absolute;
  12 + height: auto;
  13 + /* Ensure that the notices are on top of everything else. */
  14 + z-index: 9999;
  15 +}
  16 + </f:verbatim>
  17 + <u:selector name=".rf-ny-info">
  18 + <u:style name="color" skin="generalTextColor"/>
  19 + </u:selector>
  20 + <f:verbatim>
  21 +.rf-ny-warn {
  22 + color:orange;
  23 +}
  24 +.rf-ny-error {
  25 + color:red;
  26 +}
  27 +.rf-ny-fatal {
  28 + color:red;
  29 + font-weight:bold;
  30 +}
  31 +/* This hides position: fixed from IE6, which doesn't understand it. */
  32 +html > body .rf-ny {
  33 + position: fixed;
  34 +}
  35 + </f:verbatim>
  36 + <u:selector name=".rf-ny .rf-ny-sh">
  37 + <u:style name="margin" value="0"/>
  38 + <u:style name="padding" value="8px"/>
  39 + <u:style name="background-color" skin="headerBackgroundColor"/>
  40 + <u:style name="color" skin="headerTextColor"/>
  41 + <u:style name="opcity" value=".3"/>
  42 + <u:style name="-moz-border-radius" value="8px"/>
  43 + <u:style name="-webkit-border-radius" value="8px"/>
  44 + <u:style name="border-radius" value="8px"/>
  45 + <u:style name="position" value="absolute"/>
  46 + <u:style name="z-index" value="-1"/>
  47 + <u:style name="top" value=".1em"/>
  48 + <u:style name="left" value=".1em"/>
  49 + <u:style name="bottom" value="-.2em"/>
  50 + <u:style name="right" value="-.2em"/>
  51 + </u:selector>
  52 + <u:selector name=".rf-ny-co">
  53 + <u:style name="height" value="100%"/>
  54 + <u:style name="padding" value=".8em"/>
  55 + <u:style name="border-width" value="1px"/>
  56 + <u:style name="border-style" value="solid"/>
  57 + <u:style name="border-color" value="panelBorderColor"/>
  58 + <u:style name="background-color" skin="generalBackgroundColor"/>
  59 + <u:style name="color" skin="panelTextColor"/>
  60 + <u:style name="-moz-border-radius" value="4px"/>
  61 + <u:style name="-webkit-border-radius" value="4px"/>
  62 + <u:style name="border-radius" value="4px"/>
  63 + </u:selector>
  64 + <f:verbatim>
  65 +.rf-ny-co-hover {
  66 + background:red;
  67 +}
  68 +.rf-ny-cl {
  69 + float: right;
  70 + margin-left: .2em;
  71 +}
  72 + </f:verbatim>
  73 + <u:selector name=".rf-ny-cl-ic">
  74 + <u:style name="display" value="block"/>
  75 + <u:style name="width" value="11px"/>
  76 + <u:style name="height" value="11px"/>
  77 + <u:style name="background-image">
  78 + <f:resource f:key="org.richfaces.renderkit.html.images.CancelControlIcon"/>
  79 + </u:style>
  80 + </u:selector>
  81 + <f:verbatim>
  82 +.rf-ny-ti {
  83 + display: block;
  84 + font-size: 1.2em;
  85 + font-weight: bold;
  86 + margin-bottom: .4em;
  87 +}
  88 +.rf-ny-te {
  89 + display: block;
  90 +}
  91 +.rf-ny-ic {
  92 + display: none;
  93 + float: left;
  94 + margin-right: .2em;
  95 + width:32px;
  96 + height:32px;
  97 +}
  98 +/* History Pulldown----------------------------------*/
  99 + </f:verbatim>
  100 + <u:selector name=".rf-ny-hc">
  101 + <u:style name="background-color" skin="headerBackgroundColor"/>
  102 + <u:style name="border-color" skin="headerBackgroundColor"/>
  103 + <u:style name="font-size" skin="headerSizeFont"/>
  104 + <u:style name="color" skin="headerTextColor"/>
  105 + <u:style name="font-family" skin="headerFamilyFont"/>
  106 + <u:style name="background-image">
  107 + <f:resource f:key="org.richfaces.renderkit.html.GradientA"/>
  108 + </u:style>
  109 + <u:style name="font-weight" value="normal"/>
  110 + <u:style name="color" skin="panelTextColor"/>
  111 + <u:style name="-moz-border-radius-bottomleft" value="4px"/>
  112 + <u:style name="-webkit-border-bottom-left-radius" value="4px"/>
  113 + <u:style name="border-bottom-left-radius" value="4px"/>
  114 + <u:style name="-moz-border-radius-bottomright" value="4px"/>
  115 + <u:style name="-webkit-border-bottom-right-radius" value="4px"/>
  116 + <u:style name="border-bottom-right-radius" value="4px"/>
  117 + <u:style name="position" value="absolute"/>
  118 + <u:style name="top" value="0"/>
  119 + <u:style name="right" value="18px"/>
  120 + <u:style name="width" value="70px"/>
  121 + <u:style name="z-index" value="10000"/>
  122 + </u:selector>
  123 + <f:verbatim>
  124 +.rf-ny-hc .rf-ny-hh {
  125 + padding: 2px;
  126 +}
  127 +.rf-ny-hc button {
  128 + cursor: pointer;
  129 + display: block;
  130 + width: 100%;
  131 +}
  132 +.rc-ny-ha {
  133 + -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;
  134 +}
  135 + </f:verbatim>
  136 + <u:selector name=".rf-ny-hc .rf-ny-hp">
  137 + <u:style name="display" value="block"/>
  138 + <u:style name="margin" value="0 auto"/>
  139 + <u:style name="width" value="16px"/>
  140 + <u:style name="height" value="16px"/>
  141 + <u:style name="background-color" skin="panelTextColor"/>
  142 + <u:style name="background-image">
  143 + <f:resource f:key="/org/richfaces/renderkit/html/images/triangleIconDown.png"/>
  144 + </u:style>
  145 + </u:selector>
  146 + <u:selector name=".rc-ny-hl">
  147 + <u:style name="border-color" skin="panelBorderColor"/>
  148 + <u:style name="background-color" skin="generalBackgroundColor"/>
  149 + <u:style name="font-weight" value="normal"/>
  150 + <u:style name="color" skin="panelTextColor"/>
  151 + <u:style name="-moz-border-radius" value="4px"/>
  152 + <u:style name="-webkit-border-radius" value="4px"/>
  153 + <u:style name="border-radius" value="4px"/>
  154 + </u:selector>
  155 + <u:selector name=".rf-ny-info .rf-ny-ic">
  156 + <u:style name="display" value="block"/>
  157 + <u:style name="background-image">
  158 + <f:resource f:key="/org/richfaces/renderkit/html/images/info.png"/>
  159 + </u:style>
  160 + </u:selector>
  161 + <u:selector name=".rf-ny-warn .rf-ny-ic">
  162 + <u:style name="display" value="block"/>
  163 + <u:style name="background-image">
  164 + <f:resource f:key="/org/richfaces/renderkit/html/images/warn.png"/>
  165 + </u:style>
  166 + </u:selector>
  167 + <u:selector name=".rf-ny-error .rf-ny-ic">
  168 + <u:style name="display" value="block"/>
  169 + <u:style name="background-image">
  170 + <f:resource f:key="/org/richfaces/renderkit/html/images/error.png"/>
  171 + </u:style>
  172 + </u:selector>
  173 + <u:selector name=".rf-ny-fatal .rf-ny-ic">
  174 + <u:style name="display" value="block"/>
  175 + <u:style name="background-image">
  176 + <f:resource f:key="/org/richfaces/renderkit/html/images/fatal.png"/>
  177 + </u:style>
  178 + </u:selector>
  179 +</f:template>
\ No newline at end of file
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  3 + "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  4 +<faces-config>
  5 +
  6 +</faces-config>
  7 +
... ...
  1 +<jboss-deployment-structure>
  2 + <deployment>
  3 + <exclusions>
  4 + <module name="javax.faces.api" slot="main"/>
  5 + <module name="com.sun.jsf-impl" slot="main"/>
  6 + </exclusions>
  7 + <dependencies>
  8 + <module name="org.apache.commons.logging"/>
  9 + <module name="org.apache.commons.collections"/>
  10 + <module name="org.apache.commons.beanutils"/>
  11 + <module name="javax.faces.api" slot="1.2"/>
  12 + <module name="com.sun.jsf-impl" slot="1.2"/>
  13 + </dependencies>
  14 + </deployment>
  15 +</jboss-deployment-structure>
  16 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  5 + <description>Richfaces jQueryPlugin Sample</description>
  6 + <display-name>jQueryPlugin-sample</display-name>
  7 + <context-param>
  8 + <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  9 + <param-value>.xhtml</param-value>
  10 + </context-param>
  11 + <context-param>
  12 + <param-name>facelets.REFRESH_PERIOD</param-name>
  13 + <param-value>2</param-value>
  14 + </context-param>
  15 + <context-param>
  16 + <param-name>facelets.DEVELOPMENT</param-name>
  17 + <param-value>true</param-value>
  18 + </context-param>
  19 + <context-param>
  20 + <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  21 + <param-value>client</param-value>
  22 + </context-param>
  23 + <context-param>
  24 + <param-name>com.sun.faces.validateXml</param-name>
  25 + <param-value>true</param-value>
  26 + </context-param>
  27 + <context-param>
  28 + <param-name>com.sun.faces.verifyObjects</param-name>
  29 + <param-value>true</param-value>
  30 + </context-param>
  31 + <context-param>
  32 + <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  33 + <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  34 + </context-param>
  35 + <context-param>
  36 + <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
  37 + <param-value>false</param-value>
  38 + </context-param>
  39 + <filter>
  40 + <display-name>Ajax4jsf Filter</display-name>
  41 + <filter-name>ajax4jsf</filter-name>
  42 + <filter-class>org.ajax4jsf.Filter</filter-class>
  43 + </filter>
  44 + <filter-mapping>
  45 + <filter-name>ajax4jsf</filter-name>
  46 + <servlet-name>Faces Servlet</servlet-name>
  47 + <dispatcher>FORWARD</dispatcher>
  48 + <dispatcher>REQUEST</dispatcher>
  49 + <dispatcher>INCLUDE</dispatcher>
  50 + </filter-mapping>
  51 + <servlet>
  52 + <servlet-name>Faces Servlet</servlet-name>
  53 + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  54 + <load-on-startup>1</load-on-startup>
  55 + </servlet>
  56 + <servlet-mapping>
  57 + <servlet-name>Faces Servlet</servlet-name>
  58 + <url-pattern>*.jsf</url-pattern>
  59 + </servlet-mapping>
  60 + <login-config>
  61 + <auth-method>BASIC</auth-method>
  62 + </login-config>
  63 + <listener>
  64 +
  65 + <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  66 +
  67 + </listener>
  68 +</web-app>
... ...
This diff could not be displayed because it is too large.
  1 +<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  2 +<html>
  3 +<head></head>
  4 +<body>
  5 +<jsp:forward page="sample_1.jsf"/>
  6 +</body>
  7 +</html>
... ...
  1 +/*
  2 + * jQuery Pines Notify (pnotify) Plugin 1.0.0
  3 + *
  4 + * Copyright (c) 2009 Hunter Perrin
  5 + *
  6 + * Licensed (along with all of Pines) under the GNU Affero GPL:
  7 + * http://www.gnu.org/licenses/agpl.html
  8 + */
  9 +
  10 +(function($) {
  11 + var history_handle_top, timer;
  12 + var body;
  13 + var jwindow;
  14 +
  15 + function $14(element, options) {
  16 + var attrFn = {
  17 + val: true,
  18 + css: true,
  19 + html: true,
  20 + text: true,
  21 + data: true,
  22 + width: true,
  23 + height: true,
  24 + offset: true
  25 + };
  26 + var o = jQuery(element);
  27 + for (var key in options) {
  28 + if (jQuery.isFunction(options[key])) {
  29 + o.bind(key, options[key]);
  30 + } else if (key in attrFn) {
  31 + o[key](options[key]);
  32 + } else {
  33 + o.attr(key, options[key]);
  34 + }
  35 + }
  36 + return o;
  37 + }
  38 +
  39 + $.extend({
  40 + pnotify_remove_all: function () {
  41 + var body_data = body.data("pnotify");
  42 + /* POA: Added null-check */
  43 + if (body_data && body_data.length) {
  44 + $.each(body_data, function() {
  45 + if (this.pnotify_remove)
  46 + this.pnotify_remove();
  47 + });
  48 + }
  49 + },
  50 + pnotify_position_all: function () {
  51 + if (timer)
  52 + clearTimeout(timer);
  53 + timer = null;
  54 + var body_data = body.data("pnotify");
  55 + if (!body_data || !body_data.length)
  56 + return;
  57 + $.each(body_data, function() {
  58 + var s = this.opts.pnotify_stack;
  59 + if (!s) return;
  60 + if (!s.nextpos1)
  61 + s.nextpos1 = s.firstpos1;
  62 + if (!s.nextpos2)
  63 + s.nextpos2 = s.firstpos2;
  64 + if (!s.addpos2)
  65 + s.addpos2 = 0;
  66 + if (this.css("display") != "none") {
  67 + var curpos1, curpos2;
  68 + var animate = {};
  69 + // Calculate the current pos1 value.
  70 + var csspos1;
  71 + switch (s.dir1) {
  72 + case "down":
  73 + csspos1 = "top";
  74 + break;
  75 + case "up":
  76 + csspos1 = "bottom";
  77 + break;
  78 + case "left":
  79 + csspos1 = "right";
  80 + break;
  81 + case "right":
  82 + csspos1 = "left";
  83 + break;
  84 + }
  85 + curpos1 = parseInt(this.css(csspos1));
  86 + if (isNaN(curpos1))
  87 + curpos1 = 0;
  88 + // Remember the first pos1, so the first visible notice goes there.
  89 + if (typeof s.firstpos1 == "undefined") {
  90 + s.firstpos1 = curpos1;
  91 + s.nextpos1 = s.firstpos1;
  92 + }
  93 + // Calculate the current pos2 value.
  94 + var csspos2;
  95 + switch (s.dir2) {
  96 + case "down":
  97 + csspos2 = "top";
  98 + break;
  99 + case "up":
  100 + csspos2 = "bottom";
  101 + break;
  102 + case "left":
  103 + csspos2 = "right";
  104 + break;
  105 + case "right":
  106 + csspos2 = "left";
  107 + break;
  108 + }
  109 + curpos2 = parseInt(this.css(csspos2));
  110 + if (isNaN(curpos2))
  111 + curpos2 = 0;
  112 + // Remember the first pos2, so the first visible notice goes there.
  113 + if (typeof s.firstpos2 == "undefined") {
  114 + s.firstpos2 = curpos2;
  115 + s.nextpos2 = s.firstpos2;
  116 + }
  117 + // Check that it's not beyond the viewport edge.
  118 + if ((s.dir1 == "down" && s.nextpos1 + this.height() > jwindow.height()) ||
  119 + (s.dir1 == "up" && s.nextpos1 + this.height() > jwindow.height()) ||
  120 + (s.dir1 == "left" && s.nextpos1 + this.width() > jwindow.width()) ||
  121 + (s.dir1 == "right" && s.nextpos1 + this.width() > jwindow.width())) {
  122 + // If it is, it needs to go back to the first pos1, and over on pos2.
  123 + s.nextpos1 = s.firstpos1;
  124 + s.nextpos2 += s.addpos2 + 10;
  125 + s.addpos2 = 0;
  126 + }
  127 + // Animate if we're moving on dir2.
  128 + if (s.animation && s.nextpos2 < curpos2) {
  129 + switch (s.dir2) {
  130 + case "down":
  131 + animate.top = s.nextpos2 + "px";
  132 + break;
  133 + case "up":
  134 + animate.bottom = s.nextpos2 + "px";
  135 + break;
  136 + case "left":
  137 + animate.right = s.nextpos2 + "px";
  138 + break;
  139 + case "right":
  140 + animate.left = s.nextpos2 + "px";
  141 + break;
  142 + }
  143 + } else
  144 + this.css(csspos2, s.nextpos2 + "px");
  145 + // Keep track of the widest/tallest notice in the column/row, so we can push the next column/row.
  146 + switch (s.dir2) {
  147 + case "down":
  148 + case "up":
  149 + if (this.outerHeight(true) > s.addpos2)
  150 + s.addpos2 = this.height();
  151 + break;
  152 + case "left":
  153 + case "right":
  154 + if (this.outerWidth(true) > s.addpos2)
  155 + s.addpos2 = this.width();
  156 + break;
  157 + }
  158 + // Move the notice on dir1.
  159 + if (s.nextpos1) {
  160 + // Animate if we're moving toward the first pos.
  161 + if (s.animation && (curpos1 > s.nextpos1 || animate.top || animate.bottom || animate.right || animate.left)) {
  162 + switch (s.dir1) {
  163 + case "down":
  164 + animate.top = s.nextpos1 + "px";
  165 + break;
  166 + case "up":
  167 + animate.bottom = s.nextpos1 + "px";
  168 + break;
  169 + case "left":
  170 + animate.right = s.nextpos1 + "px";
  171 + break;
  172 + case "right":
  173 + animate.left = s.nextpos1 + "px";
  174 + break;
  175 + }
  176 + } else
  177 + this.css(csspos1, s.nextpos1 + "px");
  178 + }
  179 + if (animate.top || animate.bottom || animate.right || animate.left)
  180 + this.animate(animate, {duration: 500, queue: false});
  181 + // Calculate the next dir1 position.
  182 + switch (s.dir1) {
  183 + case "down":
  184 + case "up":
  185 + s.nextpos1 += this.height() + 10;
  186 + break;
  187 + case "left":
  188 + case "right":
  189 + s.nextpos1 += this.width() + 10;
  190 + break;
  191 + }
  192 + }
  193 + });
  194 + // Reset the next position data.
  195 + $.each(body_data, function() {
  196 + var s = this.opts.pnotify_stack;
  197 + if (!s) return;
  198 + s.nextpos1 = s.firstpos1;
  199 + s.nextpos2 = s.firstpos2;
  200 + s.addpos2 = 0;
  201 + s.animation = true;
  202 + });
  203 + },
  204 + pnotify: function(options) {
  205 + if (!body)
  206 + body = $("body");
  207 + if (!jwindow)
  208 + jwindow = $(window);
  209 +
  210 + var animating;
  211 +
  212 + // Build main options.
  213 + var opts;
  214 + if (typeof options != "object") {
  215 + opts = $.extend({}, $.pnotify.defaults);
  216 + opts.pnotify_text = options;
  217 + } else {
  218 + opts = $.extend({}, $.pnotify.defaults, options);
  219 + if (opts['pnotify_animation'] instanceof Object) {
  220 + opts['pnotify_animation'] = $.extend({
  221 + effect_in:$.pnotify.defaults.pnotify_animation,
  222 + effect_out:$.pnotify.defaults.pnotify_animation
  223 + }, opts['pnotify_animation']);
  224 + }
  225 + }
  226 +
  227 + if (opts.pnotify_before_init) {
  228 + if (opts.pnotify_before_init(opts) === false)
  229 + return null;
  230 + }
  231 +
  232 + // This keeps track of the last element the mouse was over, so
  233 + // mouseleave, mouseenter, etc can be called.
  234 + var nonblock_last_elem;
  235 + // This is used to pass events through the notice if it is non-blocking.
  236 + var nonblock_pass = function(e, e_name) {
  237 + pnotify.css("display", "none");
  238 + var element_below = document.elementFromPoint(e.clientX, e.clientY);
  239 + pnotify.css("display", "block");
  240 + var jelement_below = $(element_below);
  241 + var cursor_style = jelement_below.css("cursor");
  242 + pnotify.css("cursor", cursor_style != "auto" ? cursor_style : "default");
  243 + // If the element changed, call mouseenter, mouseleave, etc.
  244 + if (!nonblock_last_elem || nonblock_last_elem.get(0) != element_below) {
  245 + if (nonblock_last_elem) {
  246 + dom_event.call(nonblock_last_elem.get(0), "mouseleave", e.originalEvent);
  247 + dom_event.call(nonblock_last_elem.get(0), "mouseout", e.originalEvent);
  248 + }
  249 + dom_event.call(element_below, "mouseenter", e.originalEvent);
  250 + dom_event.call(element_below, "mouseover", e.originalEvent);
  251 + }
  252 + dom_event.call(element_below, e_name, e.originalEvent);
  253 + // Remember the latest element the mouse was over.
  254 + nonblock_last_elem = jelement_below;
  255 + };
  256 +
  257 + // Create our widget.
  258 + // Stop animation, reset the removal timer, and show the close
  259 + // button when the user mouses over.
  260 + var pnotify = $14("<div />", {
  261 + "class": "rf-ny " + opts.pnotify_addclass,
  262 + "css": {"display": "none"},
  263 + "mouseenter": function(e) {
  264 + if (opts.pnotify_nonblock) e.stopPropagation();
  265 + if (opts.pnotify_mouse_reset && animating == "out") {
  266 + // If it's animating out, animate back in really quick.
  267 + pnotify.stop(true);
  268 + pnotify.css("height", "auto").animate({"width": opts.pnotify_width, "opacity": opts.pnotify_nonblock ? opts.pnotify_nonblock_opacity : opts.pnotify_opacity}, "fast");
  269 + } else if (opts.pnotify_nonblock && animating != "out") {
  270 + // If it's non-blocking, animate to the other opacity.
  271 + pnotify.animate({"opacity": opts.pnotify_nonblock_opacity}, "fast");
  272 + }
  273 + if (opts.pnotify_hide && opts.pnotify_mouse_reset) pnotify.pnotify_cancel_remove();
  274 + if (opts.pnotify_closer && !opts.pnotify_nonblock) pnotify.closer.show();
  275 + },
  276 + "mouseleave": function(e) {
  277 + if (opts.pnotify_nonblock) e.stopPropagation();
  278 + nonblock_last_elem = null;
  279 + pnotify.css("cursor", "auto");
  280 + if (opts.pnotify_nonblock && animating != "out")
  281 + pnotify.animate({"opacity": opts.pnotify_opacity}, "fast");
  282 + if (opts.pnotify_hide && opts.pnotify_mouse_reset) pnotify.pnotify_queue_remove();
  283 + pnotify.closer.hide();
  284 + $.pnotify_position_all();
  285 + },
  286 + "mouseover": function(e) {
  287 + if (opts.pnotify_nonblock) e.stopPropagation();
  288 + },
  289 + "mouseout": function(e) {
  290 + if (opts.pnotify_nonblock) e.stopPropagation();
  291 + },
  292 + "mousemove": function(e) {
  293 + if (opts.pnotify_nonblock) {
  294 + e.stopPropagation();
  295 + nonblock_pass(e, "onmousemove");
  296 + }
  297 + },
  298 + "mousedown": function(e) {
  299 + if (opts.pnotify_nonblock) {
  300 + e.stopPropagation();
  301 + e.preventDefault();
  302 + nonblock_pass(e, "onmousedown");
  303 + }
  304 + },
  305 + "mouseup": function(e) {
  306 + if (opts.pnotify_nonblock) {
  307 + e.stopPropagation();
  308 + e.preventDefault();
  309 + nonblock_pass(e, "onmouseup");
  310 + }
  311 + },
  312 + "click": function(e) {
  313 + if (opts.pnotify_nonblock) {
  314 + e.stopPropagation();
  315 + nonblock_pass(e, "onclick");
  316 + }
  317 + },
  318 + "dblclick": function(e) {
  319 + if (opts.pnotify_nonblock) {
  320 + e.stopPropagation();
  321 + nonblock_pass(e, "ondblclick");
  322 + }
  323 + }
  324 + });
  325 + pnotify.opts = opts;
  326 + // Create a drop shadow.
  327 + if (opts.pnotify_shadow && !$.browser.msie)
  328 + pnotify.shadow_container = $14("<div />", {"class": "rf-ny-sh"}).prependTo(pnotify);
  329 + // Create a container for the notice contents.
  330 + pnotify.container = $14("<div />", {"class": "rf-ny-co"})
  331 + .appendTo(pnotify);
  332 +
  333 + pnotify.pnotify_version = "1.0.0";
  334 +
  335 + // This function is for updating the notice.
  336 + pnotify.pnotify = function(options) {
  337 + // Update the notice.
  338 + var old_opts = opts;
  339 + if (typeof options == "string")
  340 + opts.pnotify_text = options;
  341 + else
  342 + opts = $.extend({}, opts, options);
  343 + pnotify.opts = opts;
  344 + // Update the shadow.
  345 + if (opts.pnotify_shadow != old_opts.pnotify_shadow) {
  346 + if (opts.pnotify_shadow && !$.browser.msie)
  347 + pnotify.shadow_container = $14("<div />", {"class": "rf-ny-sh"}).prependTo(pnotify);
  348 + else
  349 + pnotify.children(".rf-ny-sh").remove();
  350 + }
  351 + // Update the additional classes.
  352 + if (opts.pnotify_addclass === false)
  353 + pnotify.removeClass(old_opts.pnotify_addclass);
  354 + else if (opts.pnotify_addclass !== old_opts.pnotify_addclass)
  355 + pnotify.removeClass(old_opts.pnotify_addclass).addClass(opts.pnotify_addclass);
  356 + // Update the title.
  357 + if (opts.pnotify_title === false)
  358 + pnotify.title_container.hide("fast");
  359 + else if (opts.pnotify_title !== old_opts.pnotify_title)
  360 + pnotify.title_container.html(opts.pnotify_title).show(200);
  361 + // Update the text.
  362 + if (opts.pnotify_text === false) {
  363 + pnotify.text_container.hide("fast");
  364 + } else if (opts.pnotify_text !== old_opts.pnotify_text) {
  365 + if (opts.pnotify_insert_brs)
  366 + opts.pnotify_text = opts.pnotify_text.replace(/\n/g, "<br />");
  367 + pnotify.text_container.html(opts.pnotify_text).show(200);
  368 + }
  369 + pnotify.pnotify_history = opts.pnotify_history;
  370 + // Change the notice type.
  371 + if (opts.pnotify_type != old_opts.pnotify_type)
  372 + pnotify.container.toggleClass("rf-ny-co rf-ny-co-hover");
  373 + if ((opts.pnotify_notice_icon != old_opts.pnotify_notice_icon && opts.pnotify_type == "notice") ||
  374 + (opts.pnotify_error_icon != old_opts.pnotify_error_icon && opts.pnotify_type == "error") ||
  375 + (opts.pnotify_type != old_opts.pnotify_type)) {
  376 + // Remove any old icon.
  377 + pnotify.container.find("div.rf-ny-ic").remove();
  378 + // if ((opts.pnotify_error_icon && opts.pnotify_type == "error") || (opts.pnotify_notice_icon)) {
  379 + // Build the new icon.
  380 + $14("<div />", {"class": "rf-ny-ic"})
  381 + .append($14("<span />", {"class": opts.pnotify_type == "error" ? opts.pnotify_error_icon : opts.pnotify_notice_icon}))
  382 + .prependTo(pnotify.container);
  383 + // }
  384 + }
  385 + // Update the width.
  386 + if (opts.pnotify_width !== old_opts.pnotify_width)
  387 + pnotify.animate({width: opts.pnotify_width});
  388 + // Update the minimum height.
  389 + if (opts.pnotify_min_height !== old_opts.pnotify_min_height)
  390 + pnotify.container.animate({minHeight: opts.pnotify_min_height});
  391 + // Update the opacity.
  392 + if (opts.pnotify_opacity !== old_opts.pnotify_opacity)
  393 + pnotify.fadeTo(opts.pnotify_animate_speed, opts.pnotify_opacity);
  394 + if (!opts.pnotify_hide)
  395 + pnotify.pnotify_cancel_remove();
  396 + else if (!old_opts.pnotify_hide)
  397 + pnotify.pnotify_queue_remove();
  398 + pnotify.pnotify_queue_position();
  399 + return pnotify;
  400 + };
  401 +
  402 + // Queue the position function so it doesn't run repeatedly and use
  403 + // up resources.
  404 + pnotify.pnotify_queue_position = function() {
  405 + if (timer)
  406 + clearTimeout(timer);
  407 + timer = setTimeout($.pnotify_position_all, 10);
  408 + };
  409 +
  410 + // Display the notice.
  411 + pnotify.pnotify_display = function() {
  412 + // If the notice is not in the DOM, append it.
  413 + if (!pnotify.parent().length)
  414 + pnotify.appendTo(body);
  415 + // Run callback.
  416 + if (opts.pnotify_before_open) {
  417 + if (opts.pnotify_before_open(pnotify) === false)
  418 + return;
  419 + }
  420 + pnotify.pnotify_queue_position();
  421 + // First show it, then set its opacity, then hide it.
  422 + if (opts.pnotify_animation == "fade" || opts.pnotify_animation.effect_in == "fade") {
  423 + // If it's fading in, it should start at 0.
  424 + pnotify.show().fadeTo(0, 0).hide();
  425 + } else {
  426 + // Or else it should be set to the opacity.
  427 + if (opts.pnotify_opacity != 1)
  428 + pnotify.show().fadeTo(0, opts.pnotify_opacity).hide();
  429 + }
  430 + pnotify.animate_in(function() {
  431 + if (opts.pnotify_after_open)
  432 + opts.pnotify_after_open(pnotify);
  433 +
  434 + pnotify.pnotify_queue_position();
  435 +
  436 + // Now set it to hide.
  437 + if (opts.pnotify_hide)
  438 + pnotify.pnotify_queue_remove();
  439 + });
  440 + };
  441 +
  442 + // Remove the notice.
  443 + pnotify.pnotify_remove = function() {
  444 + if (pnotify.timer) {
  445 + window.clearTimeout(pnotify.timer);
  446 + pnotify.timer = null;
  447 + }
  448 + // Run callback.
  449 + if (opts.pnotify_before_close) {
  450 + if (opts.pnotify_before_close(pnotify) === false)
  451 + return;
  452 + }
  453 + pnotify.animate_out(function() {
  454 + if (opts.pnotify_after_close) {
  455 + if (opts.pnotify_after_close(pnotify) === false)
  456 + return;
  457 + }
  458 + pnotify.pnotify_queue_position();
  459 + // If we're supposed to remove the notice from the DOM, do it.
  460 + if (opts.pnotify_remove) {
  461 + if (opts.pnotify_history) {
  462 + if (pnotify[0].parentNode != null) {
  463 + pnotify[0].parentNode.removeChild(pnotify[0]);
  464 + }
  465 + } else {
  466 + pnotify.remove();
  467 + }
  468 + }
  469 + });
  470 + };
  471 +
  472 + // Animate the notice in.
  473 + pnotify.animate_in = function(callback) {
  474 + // Declare that the notice is animating in. (Or has completed animating in.)
  475 + animating = "in";
  476 + var animation;
  477 + if (typeof opts.pnotify_animation.effect_in != "undefined")
  478 + animation = opts.pnotify_animation.effect_in;
  479 + else
  480 + animation = opts.pnotify_animation;
  481 + if (animation == "none") {
  482 + pnotify.show();
  483 + callback();
  484 + } else if (animation == "show")
  485 + pnotify.show(opts.pnotify_animate_speed, callback);
  486 + else if (animation == "fade")
  487 + pnotify.show().fadeTo(opts.pnotify_animate_speed, opts.pnotify_opacity, callback);
  488 + else if (animation == "slide")
  489 + pnotify.slideDown(opts.pnotify_animate_speed, callback);
  490 + else if (typeof animation == "function")
  491 + animation("in", callback, pnotify);
  492 + else if (pnotify.effect)
  493 + pnotify.effect(animation, {}, opts.pnotify_animate_speed, callback);
  494 + };
  495 +
  496 + // Animate the notice out.
  497 + pnotify.animate_out = function(callback) {
  498 + // Declare that the notice is animating out. (Or has completed animating out.)
  499 + animating = "out";
  500 + var animation;
  501 + if (typeof opts.pnotify_animation.effect_out != "undefined")
  502 + animation = opts.pnotify_animation.effect_out;
  503 + else
  504 + animation = opts.pnotify_animation;
  505 + if (animation == "none") {
  506 + pnotify.hide();
  507 + callback();
  508 + } else if (animation == "show")
  509 + pnotify.hide(opts.pnotify_animate_speed, callback);
  510 + else if (animation == "fade")
  511 + pnotify.fadeOut(opts.pnotify_animate_speed, callback);
  512 + else if (animation == "slide")
  513 + pnotify.slideUp(opts.pnotify_animate_speed, callback);
  514 + else if (typeof animation == "function")
  515 + animation("out", callback, pnotify);
  516 + else if (pnotify.effect)
  517 + pnotify.effect(animation, {}, opts.pnotify_animate_speed, callback);
  518 + };
  519 +
  520 + // Cancel any pending removal timer.
  521 + pnotify.pnotify_cancel_remove = function() {
  522 + if (pnotify.timer)
  523 + window.clearTimeout(pnotify.timer);
  524 + };
  525 +
  526 + // Queue a removal timer.
  527 + pnotify.pnotify_queue_remove = function() {
  528 + // Cancel any current removal timer.
  529 + pnotify.pnotify_cancel_remove();
  530 + pnotify.timer = window.setTimeout(function() {
  531 + pnotify.pnotify_remove();
  532 + }, (isNaN(opts.pnotify_delay) ? 0 : opts.pnotify_delay));
  533 + };
  534 +
  535 + // Provide a button to close the notice.
  536 + pnotify.closer = $14("<div />", {
  537 + "class": "rf-ny-cl",
  538 + "css": {"cursor": "pointer", "display": "none"},
  539 + "click": function() {
  540 + pnotify.pnotify_remove();
  541 + pnotify.closer.hide();
  542 + }
  543 + })
  544 + .append($14("<span />", {"class": "rf-ny-cl-ic"}))
  545 + .appendTo(pnotify.container);
  546 +
  547 + // Add the appropriate icon.
  548 + // if ((opts.pnotify_error_icon && opts.pnotify_type == "error") || (opts.pnotify_notice_icon)) {
  549 + $14("<div />", {"class": "rf-ny-ic"})
  550 + .append($14("<span />", {"class": opts.pnotify_type == "error" ? opts.pnotify_error_icon : opts.pnotify_notice_icon}))
  551 + .appendTo(pnotify.container);
  552 + // }
  553 +
  554 + // Add a title.
  555 + pnotify.title_container = $14("<div />", {
  556 + "class": "rf-ny-tl",
  557 + "html": opts.pnotify_title
  558 + })
  559 + .appendTo(pnotify.container);
  560 + if (opts.pnotify_title === false)
  561 + pnotify.title_container.hide();
  562 +
  563 + // Replace new lines with HTML line breaks.
  564 + if (opts.pnotify_insert_brs && typeof opts.pnotify_text == "string")
  565 + opts.pnotify_text = opts.pnotify_text.replace(/\n/g, "<br />");
  566 + // Add text.
  567 + pnotify.text_container = $14("<div />", {
  568 + "class": "rf-ny-te",
  569 + "html": opts.pnotify_text
  570 + })
  571 + .appendTo(pnotify.container);
  572 + if (opts.pnotify_text === false)
  573 + pnotify.text_container.hide();
  574 +
  575 + // Set width and min height.
  576 + if (typeof opts.pnotify_width == "string")
  577 + pnotify.css("width", opts.pnotify_width);
  578 + if (typeof opts.pnotify_min_height == "string")
  579 + pnotify.container.css("min-height", opts.pnotify_min_height);
  580 +
  581 + // The history variable controls whether the notice gets redisplayed
  582 + // by the history pull down.
  583 + pnotify.pnotify_history = opts.pnotify_history;
  584 +
  585 + // Add the notice to the notice array.
  586 + var body_data = body.data("pnotify");
  587 + if (body_data == null || typeof body_data != "object")
  588 + body_data = [];
  589 + if (opts.pnotify_stack.push == "top")
  590 + body_data = $.merge([pnotify], body_data);
  591 + else
  592 + body_data = $.merge(body_data, [pnotify]);
  593 + body.data("pnotify", body_data);
  594 +
  595 + // Run callback.
  596 + if (opts.pnotify_after_init)
  597 + opts.pnotify_after_init(pnotify);
  598 +
  599 + if (opts.pnotify_history) {
  600 + // If there isn't a history pull down, create one.
  601 + var body_history = body.data("pnotify_history");
  602 + if (typeof body_history == "undefined") {
  603 + body_history = $14("<div />", {
  604 + "class": "rf-ny-hc",
  605 + "mouseleave": function() {
  606 + body_history.animate({top: "-" + history_handle_top + "px"}, {duration: 100, queue: false});
  607 + }
  608 + })
  609 + .append($14("<div />", {"class": "rf-ny-hh", "text": "Redisplay"}))
  610 + .append($14("<button />", {
  611 + "class": "rf-ny-ha",
  612 + "text": "All",
  613 + // "mouseenter": function(){
  614 + // $(this).addClass("ui-state-hover");
  615 + // },
  616 + // "mouseleave": function(){
  617 + // $(this).removeClass("ui-state-hover");
  618 + // },
  619 + "click": function() {
  620 + // Display all notices. (Disregarding non-history notices.)
  621 + $.each(body.data("pnotify"), function() {
  622 + if (this.pnotify_history && this.pnotify_display)
  623 + this.pnotify_display();
  624 + });
  625 + return false;
  626 + }
  627 + }))
  628 + .append($14("<button />", {
  629 + "class": "rf-ny-hl",
  630 + "text": "Last",
  631 + // "mouseenter": function(){
  632 + // $(this).addClass("ui-state-hover");
  633 + // },
  634 + // "mouseleave": function(){
  635 + // $(this).removeClass("ui-state-hover");
  636 + // },
  637 + "click": function() {
  638 + // Look up the last history notice, and display it.
  639 + var i = 1;
  640 + var body_data = body.data("pnotify");
  641 + while (!body_data[body_data.length - i] || !body_data[body_data.length - i].pnotify_history || body_data[body_data.length - i].is(":visible")) {
  642 + if (body_data.length - i === 0)
  643 + return false;
  644 + i++;
  645 + }
  646 + var n = body_data[body_data.length - i];
  647 + if (n.pnotify_display)
  648 + n.pnotify_display();
  649 + return false;
  650 + }
  651 + }))
  652 + .appendTo(body);
  653 +
  654 + // Make a handle so the user can pull down the history pull down.
  655 + var handle = $14("<span />", {
  656 + "class": "rf-ny-hp",
  657 + "mouseenter": function() {
  658 + body_history.animate({top: "0"}, {duration: 100, queue: false});
  659 + }
  660 + })
  661 + .appendTo(body_history);
  662 +
  663 + // Get the top of the handle.
  664 + history_handle_top = handle.offset().top + 2;
  665 + // Hide the history pull down up to the top of the handle.
  666 + body_history.css({top: "-" + history_handle_top + "px"});
  667 + // Save the history pull down.
  668 + body.data("pnotify_history", body_history);
  669 + }
  670 + }
  671 +
  672 + // Mark the stack so it won't animate the new notice.
  673 + opts.pnotify_stack.animation = false;
  674 +
  675 + // Display the notice.
  676 + pnotify.pnotify_display();
  677 +
  678 + return pnotify;
  679 + }
  680 + });
  681 +
  682 + // Some useful regexes.
  683 + var re_on = /^on/;
  684 + var re_mouse_events = /^(dbl)?click$|^mouse(move|down|up|over|out|enter|leave)$|^contextmenu$/;
  685 + var re_ui_events = /^(focus|blur|select|change|reset)$|^key(press|down|up)$/;
  686 + var re_html_events = /^(scroll|resize|(un)?load|abort|error)$/;
  687 + // Fire a DOM event.
  688 + var dom_event = function(e, orig_e) {
  689 + var event_object;
  690 + e = e.toLowerCase();
  691 + if (document.createEvent && this.dispatchEvent) {
  692 + // FireFox, Opera, Safari, Chrome
  693 + e = e.replace(re_on, '');
  694 + if (e.match(re_mouse_events)) {
  695 + // This allows the click event to fire on the notice. There is
  696 + // probably a much better way to do it.
  697 + $(this).offset();
  698 + event_object = document.createEvent("MouseEvents");
  699 + event_object.initMouseEvent(
  700 + e, orig_e.bubbles, orig_e.cancelable, orig_e.view, orig_e.detail,
  701 + orig_e.screenX, orig_e.screenY, orig_e.clientX, orig_e.clientY,
  702 + orig_e.ctrlKey, orig_e.altKey, orig_e.shiftKey, orig_e.metaKey, orig_e.button, orig_e.relatedTarget
  703 + );
  704 + } else if (e.match(re_ui_events)) {
  705 + event_object = document.createEvent("UIEvents");
  706 + event_object.initUIEvent(e, orig_e.bubbles, orig_e.cancelable, orig_e.view, orig_e.detail);
  707 + } else if (e.match(re_html_events)) {
  708 + event_object = document.createEvent("HTMLEvents");
  709 + event_object.initEvent(e, orig_e.bubbles, orig_e.cancelable);
  710 + }
  711 + if (!event_object) return;
  712 + this.dispatchEvent(event_object);
  713 + } else {
  714 + // Internet Explorer
  715 + if (!e.match(re_on)) e = "on" + e;
  716 + event_object = document.createEventObject(orig_e);
  717 + this.fireEvent(e, event_object);
  718 + }
  719 + };
  720 +
  721 + $.pnotify.defaults = {
  722 + // The notice's title.
  723 + pnotify_title: false,
  724 + // The notice's text.
  725 + pnotify_text: false,
  726 + // Additional classes to be added to the notice. (For custom styling.)
  727 + pnotify_addclass: "",
  728 + // Create a non-blocking notice. It lets the user click elements underneath it.
  729 + pnotify_nonblock: false,
  730 + // The opacity of the notice (if it's non-blocking) when the mouse is over it.
  731 + pnotify_nonblock_opacity: .2,
  732 + // Display a pull down menu to redisplay previous notices, and place the notice in the history.
  733 + pnotify_history: true,
  734 + // Width of the notice.
  735 + pnotify_width: "300px",
  736 + // Minimum height of the notice. It will expand to fit content.
  737 + pnotify_min_height: "16px",
  738 + // Type of the notice. "notice" or "error".
  739 + pnotify_type: "notice",
  740 + // The icon class to use if type is notice.
  741 + pnotify_notice_icon: "",
  742 + // The icon class to use if type is error.
  743 + pnotify_error_icon: "",
  744 + // The animation to use when displaying and hiding the notice. "none", "show", "fade", and "slide" are built in to jQuery. Others require jQuery UI. Use an object with effect_in and effect_out to use different effects.
  745 + pnotify_animation: "fade",
  746 + // Speed at which the notice animates in and out. "slow", "def" or "normal", "fast" or number of milliseconds.
  747 + pnotify_animate_speed: "slow",
  748 + // Opacity of the notice.
  749 + pnotify_opacity: 1,
  750 + // Display a drop shadow.
  751 + pnotify_shadow: false,
  752 + // Provide a button for the user to manually close the notice.
  753 + pnotify_closer: true,
  754 + // After a delay, remove the notice.
  755 + pnotify_hide: true,
  756 + // Delay in milliseconds before the notice is removed.
  757 + pnotify_delay: 8000,
  758 + // Reset the hide timer if the mouse moves over the notice.
  759 + pnotify_mouse_reset: true,
  760 + // Remove the notice's elements from the DOM after it is removed.
  761 + pnotify_remove: true,
  762 + // Change new lines to br tags.
  763 + pnotify_insert_brs: true,
  764 + // The stack on which the notices will be placed. Also controls the direction the notices stack.
  765 + pnotify_stack: {"dir1": "down", "dir2": "left", "push": "bottom"}
  766 + };
  767 +})(jQuery);
\ No newline at end of file
... ...
  1 +<ui:component xmlns="http://www.w3.org/1999/xhtml"
  2 + xmlns:ui="http://java.sun.com/jsf/facelets"
  3 + xmlns:f="http://java.sun.com/jsf/core"
  4 + xmlns:h="http://java.sun.com/jsf/html">
  5 + <div>
  6 + <ul>
  7 + <!--<li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/sample_1.jsf">Example 1</h:outputLink></li>-->
  8 + </ul>
  9 + </div>
  10 +</ui:component>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
  4 + xmlns:f="http://java.sun.com/jsf/core"
  5 + xmlns:h="http://java.sun.com/jsf/html" xmlns:sandbox="http://richfaces.org/sandbox/jQueryPlugin"
  6 + xmlns:a4j="http://richfaces.org/a4j"
  7 + xmlns:rich="http://richfaces.org/rich">
  8 +<head>
  9 + <title>jQueryPlugin sample</title>
  10 + <a4j:loadStyle src="resource:///jquery.pnotify.xcss"/>
  11 + <style type="text/css">
  12 + #calendar {
  13 + float: right;
  14 + width: 200px;
  15 + }
  16 + </style>
  17 +</head>
  18 +
  19 +<body>
  20 +<ui:include src="menu.xhtml"/>
  21 +
  22 +<p>
  23 + This sample shows how to load 2 different jQuery plugins </p>
  24 +<ul>
  25 + <li>pnotify</li>
  26 + <li>fullCalendar</li>
  27 +</ul>
  28 +
  29 +<div id="calendar"></div>
  30 +
  31 +<script type="text/javascript">
  32 + jQuery("#calendar").fullCalendar({defaultView: 'month'});
  33 + jQuery.pnotify({pnotify_title:'Hello!',pnotify_text:'I\'m a custom plugin',pnotify_hide:false});
  34 +</script>
  35 +
  36 +<sandbox:jQueryPlugin src="/jquery.pnotify.js"/>
  37 +<sandbox:jQueryPlugin src="/fullcalendar.js"/>
  38 +
  39 +<rich:insert src="/sample_1.xhtml" highlight="html"/>
  40 +
  41 +</body>
  42 +</html>
... ...
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3 + <parent>
  4 + <groupId>org.richfaces.sandbox.bernard</groupId>
  5 + <artifactId>parent</artifactId>
  6 + <version>3.3.4-SNAPSHOT</version>
  7 + <relativePath>../pom.xml</relativePath>
  8 + </parent>
  9 + <modelVersion>4.0.0</modelVersion>
  10 + <groupId>org.richfaces</groupId>
  11 + <artifactId>lightbox-sample</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>lightbox-sample Maven Webapp</name>
  14 + <build>
  15 + <finalName>lightbox-sample</finalName>
  16 + </build>
  17 + <dependencies>
  18 + <dependency>
  19 + <groupId>org.richfaces.ui</groupId>
  20 + <artifactId>core</artifactId>
  21 + <version>${project.version}</version>
  22 + </dependency>
  23 + <dependency>
  24 + <groupId>org.richfaces.ui</groupId>
  25 + <artifactId>richfaces-ui</artifactId>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>com.uwyn</groupId>
  29 + <artifactId>jhighlight</artifactId>
  30 + <version>1.0</version>
  31 + </dependency>
  32 + <dependency>
  33 + <groupId>org.richfaces.sandbox.ui</groupId>
  34 + <artifactId>lightbox</artifactId>
  35 + <version>${project.version}</version>
  36 + </dependency>
  37 + </dependencies>
  38 +</project>
... ...
  1 +package org.richfaces.samples.lightbox;
  2 +
  3 +import java.io.Serializable;
  4 +
  5 +public class ConfigBean implements Serializable {
  6 +
  7 + private String overlayBgColor = "#000";
  8 + private double overlayOpacity = .8;
  9 + private int containerBorderSize = 10;
  10 + private int containerResizeSpeed = 400;
  11 + private boolean fixedNavigation = false;
  12 + private String keyToClose = "c";
  13 + private String keyToNext = "n";
  14 + private String keyToPrev = "p";
  15 + private String txtImage = "Image";
  16 + private String txtOf = "of";
  17 + private String imageBlank;
  18 + private String imageBtnClose;
  19 + private String imageBtnNext;
  20 + private String imageBtnPrev;
  21 + private String imageLoading;
  22 +
  23 + public String getOverlayBgColor() {
  24 + return overlayBgColor;
  25 + }
  26 +
  27 + public void setOverlayBgColor(String overlayBgColor) {
  28 + this.overlayBgColor = overlayBgColor;
  29 + }
  30 +
  31 + public double getOverlayOpacity() {
  32 + return overlayOpacity;
  33 + }
  34 +
  35 + public void setOverlayOpacity(double overlayOpacity) {
  36 + this.overlayOpacity = overlayOpacity;
  37 + }
  38 +
  39 + public int getContainerBorderSize() {
  40 + return containerBorderSize;
  41 + }
  42 +
  43 + public void setContainerBorderSize(int containerBorderSize) {
  44 + this.containerBorderSize = containerBorderSize;
  45 + }
  46 +
  47 + public int getContainerResizeSpeed() {
  48 + return containerResizeSpeed;
  49 + }
  50 +
  51 + public void setContainerResizeSpeed(int containerResizeSpeed) {
  52 + this.containerResizeSpeed = containerResizeSpeed;
  53 + }
  54 +
  55 + public boolean isFixedNavigation() {
  56 + return fixedNavigation;
  57 + }
  58 +
  59 + public void setFixedNavigation(boolean fixedNavigation) {
  60 + this.fixedNavigation = fixedNavigation;
  61 + }
  62 +
  63 + public String getKeyToClose() {
  64 + return keyToClose;
  65 + }
  66 +
  67 + public void setKeyToClose(String keyToClose) {
  68 + this.keyToClose = keyToClose;
  69 + }
  70 +
  71 + public String getKeyToNext() {
  72 + return keyToNext;
  73 + }
  74 +
  75 + public void setKeyToNext(String keyToNext) {
  76 + this.keyToNext = keyToNext;
  77 + }
  78 +
  79 + public String getKeyToPrev() {
  80 + return keyToPrev;
  81 + }
  82 +
  83 + public void setKeyToPrev(String keyToPrev) {
  84 + this.keyToPrev = keyToPrev;
  85 + }
  86 +
  87 + public String getTxtImage() {
  88 + return txtImage;
  89 + }
  90 +
  91 + public void setTxtImage(String txtImage) {
  92 + this.txtImage = txtImage;
  93 + }
  94 +
  95 + public String getTxtOf() {
  96 + return txtOf;
  97 + }
  98 +
  99 + public void setTxtOf(String txtOf) {
  100 + this.txtOf = txtOf;
  101 + }
  102 +
  103 + public void setImageBlank(String imageBlank) {
  104 + this.imageBlank = imageBlank;
  105 + }
  106 +
  107 + public String getImageBlank() {
  108 + return imageBlank;
  109 + }
  110 +
  111 + public void setImageBtnClose(String imageBtnClose) {
  112 + this.imageBtnClose = imageBtnClose;
  113 + }
  114 +
  115 + public String getImageBtnClose() {
  116 + return imageBtnClose;
  117 + }
  118 +
  119 + public void setImageBtnNext(String imageBtnNext) {
  120 + this.imageBtnNext = imageBtnNext;
  121 + }
  122 +
  123 + public String getImageBtnNext() {
  124 + return imageBtnNext;
  125 + }
  126 +
  127 + public void setImageBtnPrev(String imageBtnPrev) {
  128 + this.imageBtnPrev = imageBtnPrev;
  129 + }
  130 +
  131 + public String getImageBtnPrev() {
  132 + return imageBtnPrev;
  133 + }
  134 +
  135 + public void setImageLoading(String imageLoading) {
  136 + this.imageLoading = imageLoading;
  137 + }
  138 +
  139 + public String getImageLoading() {
  140 + return imageLoading;
  141 + }
  142 +}
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  3 + "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  4 +<faces-config>
  5 + <managed-bean>
  6 + <managed-bean-name>config</managed-bean-name>
  7 + <managed-bean-class>org.richfaces.samples.lightbox.ConfigBean</managed-bean-class>
  8 + <managed-bean-scope>session</managed-bean-scope>
  9 + </managed-bean>
  10 +</faces-config>
  11 +
... ...
  1 +<jboss-deployment-structure>
  2 + <deployment>
  3 + <exclusions>
  4 + <module name="javax.faces.api" slot="main"/>
  5 + <module name="com.sun.jsf-impl" slot="main"/>
  6 + </exclusions>
  7 + <dependencies>
  8 + <module name="org.apache.commons.logging"/>
  9 + <module name="org.apache.commons.collections"/>
  10 + <module name="org.apache.commons.beanutils"/>
  11 + <module name="javax.faces.api" slot="1.2"/>
  12 + <module name="com.sun.jsf-impl" slot="1.2"/>
  13 + </dependencies>
  14 + </deployment>
  15 +</jboss-deployment-structure>
  16 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  5 + <description>Richfaces lightbox Sample</description>
  6 + <display-name>lightbox-sample</display-name>
  7 + <context-param>
  8 + <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  9 + <param-value>.xhtml</param-value>
  10 + </context-param>
  11 + <context-param>
  12 + <param-name>facelets.REFRESH_PERIOD</param-name>
  13 + <param-value>2</param-value>
  14 + </context-param>
  15 + <context-param>
  16 + <param-name>facelets.DEVELOPMENT</param-name>
  17 + <param-value>true</param-value>
  18 + </context-param>
  19 + <context-param>
  20 + <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  21 + <param-value>client</param-value>
  22 + </context-param>
  23 + <context-param>
  24 + <param-name>com.sun.faces.validateXml</param-name>
  25 + <param-value>true</param-value>
  26 + </context-param>
  27 + <context-param>
  28 + <param-name>com.sun.faces.verifyObjects</param-name>
  29 + <param-value>true</param-value>
  30 + </context-param>
  31 + <context-param>
  32 + <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  33 + <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  34 + </context-param>
  35 + <context-param>
  36 + <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
  37 + <param-value>false</param-value>
  38 + </context-param>
  39 + <filter>
  40 + <display-name>Ajax4jsf Filter</display-name>
  41 + <filter-name>ajax4jsf</filter-name>
  42 + <filter-class>org.ajax4jsf.Filter</filter-class>
  43 + </filter>
  44 + <filter-mapping>
  45 + <filter-name>ajax4jsf</filter-name>
  46 + <servlet-name>Faces Servlet</servlet-name>
  47 + <dispatcher>FORWARD</dispatcher>
  48 + <dispatcher>REQUEST</dispatcher>
  49 + <dispatcher>INCLUDE</dispatcher>
  50 + </filter-mapping>
  51 + <servlet>
  52 + <servlet-name>Faces Servlet</servlet-name>
  53 + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  54 + <load-on-startup>1</load-on-startup>
  55 + </servlet>
  56 + <servlet-mapping>
  57 + <servlet-name>Faces Servlet</servlet-name>
  58 + <url-pattern>*.jsf</url-pattern>
  59 + </servlet-mapping>
  60 + <login-config>
  61 + <auth-method>BASIC</auth-method>
  62 + </login-config>
  63 + <listener>
  64 +
  65 + <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  66 +
  67 + </listener>
  68 +</web-app>
... ...
  1 +<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  2 +<html>
  3 +<head></head>
  4 +<body>
  5 +<jsp:forward page="sample_1.jsf"/>
  6 +</body>
  7 +</html>
... ...
  1 +<ui:component xmlns="http://www.w3.org/1999/xhtml"
  2 + xmlns:ui="http://java.sun.com/jsf/facelets"
  3 + xmlns:f="http://java.sun.com/jsf/core"
  4 + xmlns:h="http://java.sun.com/jsf/html">
  5 + <div>
  6 + <ul>
  7 + <!--<li><h:outputLink value="#{facesContext.externalContext.requestContextPath}/sample_1.jsf">Example 1</h:outputLink></li>-->
  8 + </ul>
  9 + </div>
  10 +</ui:component>
... ...
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3 +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
  4 + xmlns:f="http://java.sun.com/jsf/core"
  5 + xmlns:h="http://java.sun.com/jsf/html" xmlns:lightbox="http://richfaces.org/sandbox/lightbox"
  6 + xmlns:a4j="http://richfaces.org/a4j"
  7 + xmlns:rich="http://richfaces.org/rich">
  8 +<head>
  9 + <title>Lightbox sample</title>
  10 + <style type="text/css">
  11 + #gallery ul {
  12 + list-style: none outside none;
  13 + }
  14 +
  15 + #gallery ul li {
  16 + display: inline;
  17 + }
  18 +
  19 + #gallery ul img {
  20 + border: 5px solid #3E3E3E;
  21 + border-bottom-width: 20px;
  22 + }
  23 +
  24 + #gallery ul a:hover img {
  25 + border: 5px solid #000;
  26 + border-bottom-width: 20px;
  27 + color: #FFFFFF;
  28 + }
  29 +
  30 + #gallery ul a:hover {
  31 + color: #FFFFFF;
  32 + }
  33 +
  34 + </style>
  35 +</head>
  36 +
  37 +<body>
  38 +<ui:include src="menu.xhtml"/>
  39 +
  40 +<div id="gallery">
  41 + <ul>
  42 + <li>
  43 + <a href="photos/image1.jpg" title="Blue flower">
  44 + <h:graphicImage value="photos/thumb_image1.jpg"/>
  45 + </a>
  46 + </li>
  47 + <li>
  48 + <a href="photos/image2.jpg" title="Red leafs">
  49 + <h:graphicImage value="photos/thumb_image2.jpg"/>
  50 + </a>
  51 + </li>
  52 + <li>
  53 + <a href="photos/image3.jpg" title="Rain drops">
  54 + <h:graphicImage value="photos/thumb_image3.jpg"/>
  55 + </a>
  56 + </li>
  57 + <li>
  58 + <a href="photos/image4.jpg" title="Fresh green">
  59 + <h:graphicImage value="photos/thumb_image4.jpg"/>
  60 + </a>
  61 + </li>
  62 + <li>
  63 + <a href="photos/image5.jpg" title="More fresh green">
  64 + <h:graphicImage value="photos/thumb_image5.jpg"/>
  65 + </a>
  66 + </li>
  67 + </ul>
  68 +</div>
  69 +
  70 +
  71 +<lightbox:lightbox id="lightbox" selector="#gallery a" containerBorderSize="#{config.containerBorderSize}"
  72 + containerResizeSpeed="#{config.containerResizeSpeed}" keyToClose="#{config.keyToClose}"
  73 + keyToNext="#{config.keyToNext}" keyToPrev="#{config.keyToPrev}"
  74 + overlayBgColor="#{config.overlayBgColor}"
  75 + overlayOpacity="#{config.overlayOpacity}" txtImage="#{config.txtImage}" txtOf="#{config.txtOf}"
  76 + imageBlank="#{config.imageBlank}"
  77 + imageBtnClose="#{config.imageBtnClose}"
  78 + imageBtnNext="#{config.imageBtnNext}"
  79 + imageBtnPrev="#{config.imageBtnPrev}"
  80 + imageLoading="#{config.imageLoading}"
  81 + />
  82 +
  83 +
  84 +<h:form id="lightboxForm">
  85 +
  86 +
  87 + <h:panelGrid columns="3">
  88 + <h:outputLabel value="containerBorderSize" for="containerBorderSize"/>
  89 + <h:inputText id="containerBorderSize" value="#{config.containerBorderSize}"/>
  90 + <h:message for="containerBorderSize"/>
  91 +
  92 + <h:outputLabel value="containerResizeSpeed" for="containerResizeSpeed"/>
  93 + <h:inputText id="containerResizeSpeed" value="#{config.containerResizeSpeed}"/>
  94 + <h:message for="containerResizeSpeed"/>
  95 +
  96 + <h:outputLabel value="keyToClose" for="keyToClose"/>
  97 + <h:inputText id="keyToClose" value="#{config.keyToClose}"/>
  98 + <h:message for="keyToClose"/>
  99 +
  100 + <h:outputLabel value="keyToNext" for="keyToNext"/>
  101 + <h:inputText id="keyToNext" value="#{config.keyToNext}"/>
  102 + <h:message for="keyToNext"/>
  103 +
  104 + <h:outputLabel value="" for="keyToPrev"/>
  105 + <h:inputText id="keyToPrev" value="#{config.keyToPrev}"/>
  106 + <h:message for="keyToPrev"/>
  107 +
  108 + <h:outputLabel value="overlayBgColor" for="overlayBgColor"/>
  109 + <h:inputText id="overlayBgColor" value="#{config.overlayBgColor}"/>
  110 + <h:message for="overlayBgColor"/>
  111 +
  112 + <h:outputLabel value="overlayOpacity" for="overlayOpacity"/>
  113 + <h:inputText id="overlayOpacity" value="#{config.overlayOpacity}"/>
  114 + <h:message for="overlayOpacity"/>
  115 +
  116 + <h:outputLabel value="txtImage" for="txtImage"/>
  117 + <h:inputText id="txtImage" value="#{config.txtImage}"/>
  118 + <h:message for="txtImage"/>
  119 +
  120 + <h:outputLabel value="txtOf" for="txtOf"/>
  121 + <h:inputText id="txtOf" value="#{config.txtOf}"/>
  122 + <h:message for="txtOf"/>
  123 +
  124 + <h:outputLabel value="imageBlank" for="imageBlank"/>
  125 + <h:inputText id="imageBlank" value="#{config.imageBlank}"/>
  126 + <h:message for="imageBlank"/>
  127 +
  128 + <h:outputLabel value="imageBtnClose" for="imageBtnClose"/>
  129 + <h:inputText id="imageBtnClose" value="#{config.imageBtnClose}"/>
  130 + <h:message for="imageBtnClose"/>
  131 +
  132 + <h:outputLabel value="imageBtnNext" for="imageBtnNext"/>
  133 + <h:inputText id="imageBtnNext" value="#{config.imageBtnNext}"/>
  134 + <h:message for="imageBtnNext"/>
  135 +
  136 + <h:outputLabel value="imageBtnPrev" for="imageBtnPrev"/>
  137 + <h:inputText id="imageBtnPrev" value="#{config.imageBtnPrev}"/>
  138 + <h:message for="imageBtnPrev"/>
  139 +
  140 + <h:outputLabel value="imageLoading" for="imageLoading"/>
  141 + <h:inputText id="imageLoading" value="#{config.imageLoading}"/>
  142 + <h:message for="imageLoading"/>
  143 +
  144 + <a4j:commandButton value="Submit" reRender="lightbox,lightboxForm"/>
  145 + </h:panelGrid>
  146 +</h:form>
  147 +
  148 +<rich:insert src="/sample_1.xhtml" highlight="html"/>
  149 +
  150 +</body>
  151 +</html>
... ...
  1 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3 + <parent>
  4 + <groupId>org.richfaces.sandbox.bernard</groupId>
  5 + <artifactId>parent</artifactId>
  6 + <version>3.3.4-SNAPSHOT</version>
  7 + <relativePath>../pom.xml</relativePath>
  8 + </parent>
  9 + <modelVersion>4.0.0</modelVersion>
  10 + <groupId>org.richfaces.sandbox.ui</groupId>
  11 + <artifactId>notify-sample</artifactId>
  12 + <packaging>war</packaging>
  13 + <name>notify-sample Maven Webapp</name>
  14 + <build>
  15 + <finalName>${project.artifactId}</finalName>
  16 + </build>
  17 + <dependencies>
  18 + <dependency>
  19 + <groupId>org.richfaces.ui</groupId>
  20 + <artifactId>richfaces-ui</artifactId>
  21 + </dependency>
  22 + <dependency>
  23 + <groupId>org.richfaces.sandbox.ui</groupId>
  24 + <artifactId>notify</artifactId>
  25 + <version>${project.version}</version>
  26 + </dependency>
  27 + <dependency>
  28 + <groupId>com.uwyn</groupId>
  29 + <artifactId>jhighlight</artifactId>
  30 + <version>1.0</version>
  31 + </dependency>
  32 + </dependencies>
  33 +</project>
  34 +
... ...
  1 +package org.richfaces.sandbox.notify;
  2 +
  3 +import javax.faces.application.FacesMessage;
  4 +import javax.faces.context.FacesContext;
  5 +
  6 +public class Greeter {
  7 +
  8 + private String greeting;
  9 + private boolean nonblocking;
  10 + private boolean showDetail;
  11 + private boolean showSummary = true;
  12 + private boolean sticky;
  13 + private boolean showHistory = true;
  14 + private boolean showShadow = true;
  15 + private boolean showCloseButton = true;
  16 + private Integer stayTime = 3000;
  17 + private Integer animationSpeed = 100;
  18 + private Integer interval = 2000;
  19 + private Integer delay = 0;
  20 + private Double nonblockingOpacity = .3;
  21 + private String appearAnimation = "fade";
  22 + private String hideAnimation = "show";
  23 + private String stackDir1 = "down";
  24 + private String stackDir2 = "left";
  25 + private String stackPush = "top";
  26 + private String styleClass;
  27 + private String stackStyleClass;
  28 + private String title = "Sample title";
  29 + private String text = "Sample text, not too short, but not too long.";
  30 +
  31 + public String sayHello() {
  32 + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Hello", greeting));
  33 + return "hello";
  34 + }
  35 +
  36 + public String warnMe() {
  37 + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Stop!", greeting));
  38 + return "warn";
  39 + }
  40 +
  41 + public String sayError() {
  42 + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "This is outrage", greeting));
  43 + return "error";
  44 + }
  45 +
  46 + public String sayFatal() {
  47 + FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Fatality", greeting));
  48 + return "fatal";
  49 + }
  50 +
  51 + public String getGreeting() {
  52 + return greeting;
  53 + }
  54 +
  55 + public void setGreeting(String greeting) {
  56 + this.greeting = greeting;
  57 + }
  58 +
  59 + public boolean isNonblocking() {
  60 + return nonblocking;
  61 + }
  62 +
  63 + public void setNonblocking(boolean nonblocking) {
  64 + this.nonblocking = nonblocking;
  65 + }
  66 +
  67 + public boolean isShowDetail() {
  68 + return showDetail;
  69 + }
  70 +
  71 + public void setShowDetail(boolean showDetail) {
  72 + this.showDetail = showDetail;
  73 + }
  74 +
  75 + public void setShowSummary(boolean showSummary) {
  76 + this.showSummary = showSummary;
  77 + }
  78 +
  79 + public boolean isSticky() {
  80 + return sticky;
  81 + }
  82 +
  83 + public void setSticky(boolean sticky) {
  84 + this.sticky = sticky;
  85 + }
  86 +
  87 + public Integer getStayTime() {
  88 + return stayTime;
  89 + }
  90 +
  91 + public void setStayTime(Integer stayTime) {
  92 + this.stayTime = stayTime;
  93 + }
  94 +
  95 + public boolean isShowSummary() {
  96 + return showSummary;
  97 + }
  98 +
  99 + public String getAppearAnimation() {
  100 + return appearAnimation;
  101 + }
  102 +
  103 + public void setAppearAnimation(String appearAnimation) {
  104 + this.appearAnimation = appearAnimation;
  105 + }
  106 +
  107 + public boolean isShowHistory() {
  108 + return showHistory;
  109 + }
  110 +
  111 + public void setShowHistory(boolean showHistory) {
  112 + this.showHistory = showHistory;
  113 + }
  114 +
  115 + public boolean isShowShadow() {
  116 + return showShadow;
  117 + }
  118 +
  119 + public void setShowShadow(boolean showShadow) {
  120 + this.showShadow = showShadow;
  121 + }
  122 +
  123 + public boolean isShowCloseButton() {
  124 + return showCloseButton;
  125 + }
  126 +
  127 + public void setShowCloseButton(boolean showCloseButton) {
  128 + this.showCloseButton = showCloseButton;
  129 + }
  130 +
  131 + public Double getNonblockingOpacity() {
  132 + return nonblockingOpacity;
  133 + }
  134 +
  135 + public void setNonblockingOpacity(Double nonblockingOpacity) {
  136 + this.nonblockingOpacity = nonblockingOpacity;
  137 + }
  138 +
  139 + public String getStackDir1() {
  140 + return stackDir1;
  141 + }
  142 +
  143 + public void setStackDir1(String stackDir1) {
  144 + this.stackDir1 = stackDir1;
  145 + }
  146 +
  147 + public String getStackDir2() {
  148 + return stackDir2;
  149 + }
  150 +
  151 + public void setStackDir2(String stackDir2) {
  152 + this.stackDir2 = stackDir2;
  153 + }
  154 +
  155 + public String getStackPush() {
  156 + return stackPush;
  157 + }
  158 +
  159 + public void setStackPush(String stackPush) {
  160 + this.stackPush = stackPush;
  161 + }
  162 +
  163 + public String getStyleClass() {
  164 + return styleClass;
  165 + }
  166 +
  167 + public void setStyleClass(String styleClass) {
  168 + this.styleClass = styleClass;
  169 + }
  170 +
  171 + public Integer getAnimationSpeed() {
  172 + return animationSpeed;
  173 + }
  174 +
  175 + public void setAnimationSpeed(Integer animationSpeed) {
  176 + this.animationSpeed = animationSpeed;
  177 + }
  178 +
  179 + public String getHideAnimation() {
  180 + return hideAnimation;
  181 + }
  182 +
  183 + public void setHideAnimation(String hideAnimation) {
  184 + this.hideAnimation = hideAnimation;
  185 + }
  186 +
  187 + /**
  188 + * @return the title
  189 + */
  190 + public String getTitle() {
  191 + return title;
  192 + }
  193 +
  194 + /**
  195 + * @param title the title to set
  196 + */
  197 + public void setTitle(String title) {
  198 + this.title = title;
  199 + }
  200 +
  201 + /**
  202 + * @return the text
  203 + */
  204 + public String getText() {
  205 + return text;
  206 + }
  207 +
  208 + /**
  209 + * @param text the text to set
  210 + */
  211 + public void setText(String text) {
  212 + this.text = text;
  213 + }
  214 +
  215 + public Integer getInterval() {
  216 + return interval;
  217 + }
  218 +
  219 + public void setInterval(Integer interval) {
  220 + this.interval = interval;
  221 + }
  222 +
  223 + public Integer getDelay() {
  224 + return delay;
  225 + }
  226 +
  227 + public void setDelay(Integer delay) {
  228 + this.delay = delay;
  229 + }
  230 +
  231 + public String getStackStyleClass() {
  232 + return stackStyleClass;
  233 + }
  234 +
  235 + public void setStackStyleClass(String stackStyleClass) {
  236 + this.stackStyleClass = stackStyleClass;
  237 + }
  238 +}
... ...
  1 +Manifest-Version: 1.0
  2 +Class-Path:
  3 +
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Context antiJARLocking="true" path="/notify-sample"/>
... ...
Please register or login to post a comment