Revision: 12334
Author:
cagatay...@gmail.com
Date: Tue Feb 24 14:34:58 2015 UTC
Log: Confirm support for Mobile
https://code.google.com/p/primefaces/source/detail?r=12334
Added:
/primefaces/trunk/src/main/java/org/primefaces/mobile/renderkit/ConfirmDialogRenderer.java
Modified:
/primefaces/trunk/src/main/java/org/primefaces/mobile/renderkit/CommandButtonRenderer.java
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/core/core.mobile.js
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/mobile/primefaces-mobile.css
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/mobile/widgets/dialog.js
/primefaces/trunk/src/main/resources-maven-jsf/standard-faces-config.xml
=======================================
--- /dev/null
+++
/primefaces/trunk/src/main/java/org/primefaces/mobile/renderkit/ConfirmDialogRenderer.java
Tue Feb 24 14:34:58 2015 UTC
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2009-2014 PrimeTek.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.primefaces.mobile.renderkit;
+
+import java.io.IOException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import org.primefaces.component.confirmdialog.ConfirmDialog;
+import org.primefaces.component.dialog.Dialog;
+
+public class ConfirmDialogRenderer extends
org.primefaces.component.confirmdialog.ConfirmDialogRenderer {
+
+ @Override
+ protected void encodeMarkup(FacesContext context, ConfirmDialog
dialog) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ String clientId = dialog.getClientId(context);
+ String style = dialog.getStyle();
+ String styleClass = dialog.getStyleClass();
+ styleClass = (styleClass == null) ?
Dialog.MOBILE_CONTAINER_CLASS : Dialog.MOBILE_CONTAINER_CLASS + " " +
styleClass;
+
+ writer.startElement("div", dialog);
+ writer.writeAttribute("id", clientId + "_mask", null);
+ writer.writeAttribute("class", Dialog.MOBILE_MASK_CLASS, null);
+ writer.endElement("div");
+
+ writer.startElement("div", null);
+ writer.writeAttribute("id", clientId, null);
+ writer.writeAttribute("class", styleClass, null);
+ if(style != null) {
+ writer.writeAttribute("style", style, null);
+ }
+
+ writer.startElement("div", null);
+ writer.writeAttribute("class", Dialog.MOBILE_POPUP_CLASS, null);
+
+ encodeHeader(context, dialog);
+ encodeContent(context, dialog);
+
+ writer.endElement("div");
+
+ writer.endElement("div");
+ }
+
+ @Override
+ protected void encodeHeader(FacesContext context, ConfirmDialog
dialog) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ String header = dialog.getHeader();
+ UIComponent headerFacet = dialog.getFacet("header");
+
+ writer.startElement("div", null);
+ writer.writeAttribute("class", Dialog.MOBILE_TITLE_BAR_CLASS,
null);
+
+ //close
+ if(dialog.isClosable()) {
+ writer.startElement("a", null);
+ writer.writeAttribute("href", "#", null);
+ writer.writeAttribute("class", Dialog.MOBILE_CLOSE_ICON_CLASS,
null);
+ writer.endElement("a");
+ }
+
+ //title
+ writer.startElement("h1", null);
+ writer.writeAttribute("class", Dialog.MOBILE_TITLE_CLASS, null);
+ writer.writeAttribute("role", "heading", null);
+
+ if(headerFacet != null)
+ headerFacet.encodeAll(context);
+ else if(header != null)
+ writer.write(header);
+
+ writer.endElement("h1");
+
+ writer.endElement("div");
+ }
+
+ @Override
+ protected void encodeContent(FacesContext context, ConfirmDialog
dialog) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ String messageText = dialog.getMessage();
+ UIComponent messageFacet = dialog.getFacet("message");
+
+ writer.startElement("div", null);
+ writer.writeAttribute("class", "ui-content", null);
+ writer.writeAttribute("role", "main", null);
+
+ writer.startElement("span", null);
+ writer.writeAttribute("class", "ui-title", null);
+
+ if(messageFacet != null)
+ messageFacet.encodeAll(context);
+ else if(messageText != null)
+ writer.writeText(messageText, null);
+
+ writer.endElement("span");
+
+ renderChildren(context, dialog);
+
+ writer.endElement("div");
+ }
+}
=======================================
---
/primefaces/trunk/src/main/java/org/primefaces/mobile/renderkit/CommandButtonRenderer.java
Tue Feb 10 13:03:36 2015 UTC
+++
/primefaces/trunk/src/main/java/org/primefaces/mobile/renderkit/CommandButtonRenderer.java
Tue Feb 24 14:34:58 2015 UTC
@@ -39,8 +39,13 @@
writer.writeAttribute("name", clientId, null);
writer.writeAttribute("class", button.resolveMobileStyleClass(),
null);
- if (onclick != null) {
- writer.writeAttribute("onclick", onclick, "onclick");
+ if(onclick != null) {
+ if(button.requiresConfirmation()) {
+ writer.writeAttribute("data-pfconfirmcommand", onclick,
null);
+ writer.writeAttribute("onclick",
button.getConfirmationScript(), "onclick");
+ }
+ else
+ writer.writeAttribute("onclick", onclick, "onclick");
}
renderPassThruAttributes(context, button, HTML.BUTTON_ATTRS,
HTML.CLICK_EVENT);
=======================================
---
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/core/core.mobile.js
Thu Aug 21 20:12:54 2014 UTC
+++
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/core/core.mobile.js
Tue Feb 24 14:34:58 2015 UTC
@@ -10,6 +10,16 @@
return 'primefaces-mobile.js';
};
+PrimeFaces.confirm = function(msg) {
+ if(PrimeFaces.confirmDialog) {
+ PrimeFaces.confirmSource = (typeof(msg.source) === 'string') ?
$(PrimeFaces.escapeClientId(msg.source)) : $(msg.source);
+ PrimeFaces.confirmDialog.showMessage(msg);
+ }
+ else {
+ PrimeFaces.warn('No global confirmation dialog available.');
+ }
+}
+
PrimeFaces.Mobile = {
navigate: function(to, cfg) {
=======================================
---
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/mobile/primefaces-mobile.css
Fri Nov 14 14:22:17 2014 UTC
+++
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/mobile/primefaces-mobile.css
Tue Feb 24 14:34:58 2015 UTC
@@ -98,3 +98,101 @@
.ui-datalist.ui-datalist-bottombar .ui-listview > li.ui-last-child >
a.ui-btn {
border-radius: 0;
}
+
+/** Messages **/
+.ui-messages-info, .ui-messages-warn, .ui-messages-error, .ui-messages-fatal
{
+ border: 1px solid;
+ margin: 10px 0px;
+ padding:10px 10px 10px 10px;
+}
+
+.ui-message-info, .ui-message-error, .ui-message-warn, .ui-message-fatal {
+ border: 1px solid;;
+ margin: 0px 5px;
+ padding:2px 5px;
+}
+
+.ui-messages-info-icon, .ui-messages-warn-icon, .ui-messages-error-icon, .ui-messages-fatal-icon,
+.ui-message-info-icon, .ui-message-warn-icon, .ui-message-error-icon, .ui-message-fatal-icon
{
+ background: url("#{resource['primefaces:messages/messages.png']}")
no-repeat;
+ display:block;
+ float:left;
+ margin:0;
+ padding:0;
+ position: relative;
+}
+
+.ui-messages-info-icon, .ui-messages-warn-icon, .ui-messages-error-icon, .ui-messages-fatal-icon
{
+ height:24px;
+ width:24px;
+ margin-top:-4px;
+}
+
+.ui-message-info-icon, .ui-message-warn-icon, .ui-message-error-icon, .ui-message-fatal-icon
{
+ height:16px;
+ width:16px;
+}
+
+.ui-messages-info-summary, .ui-messages-warn-summary, .ui-messages-error-summary, .ui-messages-fatal-summary,
+.ui-message-info-summary, .ui-message-warn-summary, .ui-message-error-summary, .ui-message-fatal-summary
{
+ margin-left:10px;
+ font-weight:bold;
+}
+
+.ui-messages-info-detail, .ui-messages-warn-detail, .ui-messages-error-detail, .ui-messages-fatal-detail,
+.ui-message-info-detail, .ui-message-warn-detail, .ui-message-error-detail, .ui-message-fatal-detail
{
+ margin-left:5px;
+}
+
+.ui-messages-info, .ui-message-info {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
+.ui-messages-warn, .ui-message-warn {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #fbeed5;
+}
+
+.ui-messages-error, .ui-message-error {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.ui-messages-fatal, .ui-message-fatal {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.ui-messages ul {
+ margin: 0 25px;
+ padding:0;
+ list-style-type:none;
+}
+
+.ui-messages.ui-messages-noicon ul {
+ margin: 0 25px 0 0;
+}
+
+.ui-message-icon-only {
+ width:16px;
+ height:16px
+}
+
+.ui-messages-info-icon {background-position: 0px -316px;}
+.ui-messages-warn-icon {background-position: 0px -448px;}
+.ui-messages-error-icon {background-position: 0px -52px;}
+.ui-messages-fatal-icon {background-position: 0px -184px;}
+.ui-message-info-icon {background-position: 0px -360px;}
+.ui-message-warn-icon {background-position: 0px -492px;}
+.ui-message-error-icon {background-position: 0px -96px;}
+.ui-message-fatal-icon {background-position: 0px -228px;}
+
+.ui-messages .ui-messages-close {
+ float:right;
+ cursor: pointer;
+}
=======================================
---
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/mobile/widgets/dialog.js
Thu Feb 12 22:37:46 2015 UTC
+++
/primefaces/trunk/src/main/resources/META-INF/resources/primefaces/mobile/widgets/dialog.js
Tue Feb 24 14:34:58 2015 UTC
@@ -44,3 +44,54 @@
this.popupElement.popup('close');
}
});
+
+/**
+ * PrimeFaces Mobile ConfirmDialog Widget
+ */
+PrimeFaces.widget.ConfirmDialog = PrimeFaces.widget.Dialog.extend({
+
+ init: function(cfg) {
+ this._super(cfg);
+
+ this.title = this.header.children('.ui-title');
+ this.message = this.content.children('.ui-title');
+
+ if(this.cfg.global) {
+ PrimeFaces.confirmDialog = this;
+
+
this.content.find('.ui-confirmdialog-yes').on('click.ui-confirmdialog',
function(e) {
+ if(PrimeFaces.confirmSource) {
+ var fn = new
Function('event',PrimeFaces.confirmSource.data('pfconfirmcommand'));
+
+ fn.call(PrimeFaces.confirmSource.get(0),e);
+ PrimeFaces.confirmDialog.hide();
+ PrimeFaces.confirmSource = null;
+ }
+
+ e.preventDefault();
+ });
+
+
this.jq.find('.ui-confirmdialog-no').on('click.ui-confirmdialog',
function(e) {
+ PrimeFaces.confirmDialog.hide();
+ PrimeFaces.confirmSource = null;
+
+ e.preventDefault();
+ });
+ }
+ },
+
+ applyFocus: function() {
+
this.jq.find(':button,:submit').filter(':visible:enabled').eq(0).focus();
+ },
+
+ showMessage: function(msg) {
+ if(msg.header)
+ this.title.text(msg.header);
+
+ if(msg.message)
+ this.message.text(msg.message);
+
+ this.show();
+ }
+
+});
=======================================
---
/primefaces/trunk/src/main/resources-maven-jsf/standard-faces-config.xml
Thu Dec 4 14:13:52 2014 UTC
+++
/primefaces/trunk/src/main/resources-maven-jsf/standard-faces-config.xml
Tue Feb 24 14:34:58 2015 UTC
@@ -388,6 +388,12 @@
<renderer-class>org.primefaces.mobile.renderkit.DialogRenderer</renderer-class>
</renderer>
+ <renderer>
+ <component-family>org.primefaces.component</component-family>
+
<renderer-type>org.primefaces.component.ConfirmDialogRenderer</renderer-type>
+
<renderer-class>org.primefaces.mobile.renderkit.ConfirmDialogRenderer</renderer-class>
+ </renderer>
+
<renderer>
<component-family>org.primefaces.component</component-family>
<renderer-type>org.primefaces.component.TabViewRenderer</renderer-type>