
com.viaoa.web.OAPopover Maven / Gradle / Ivy
package com.viaoa.web;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.viaoa.hub.*;
import com.viaoa.object.*;
import com.viaoa.template.OATemplate;
import com.viaoa.util.*;
/**
* Advanced toottip that is triggered by onHover, onFocus, or onClick.
* @author vvia
*/
public class OAPopover implements OAJspComponent, OAJspRequirementsInterface {
private static final long serialVersionUID = 1L;
protected Hub hub;
protected String id;
protected OAForm form;
protected String lastAjaxSent;
protected String message;
protected OATemplate templateMessage;
protected String title;
protected OATemplate templateTitle;
protected boolean bOnClick, bOnHover, bOnFocus;
protected String location;
public OAPopover(String id) {
this(id, null);
}
public OAPopover(String id, Hub hub) {
this.id = id;
this.hub = hub;
bOnClick = true;
}
public Hub getHub() {
return hub;
}
public void setOnClick(boolean b) {
this.bOnClick = b;
}
public boolean getOnClick() {
return bOnClick;
}
public void setOnFocus(boolean b) {
this.bOnFocus = b;
}
public boolean getOnFocus() {
return bOnFocus;
}
public void setOnHover(boolean b) {
this.bOnHover = b;
}
public boolean getOnHover() {
return bOnHover;
}
@Override
public boolean isChanged() {
return false;
}
@Override
public String getId() {
return id;
}
@Override
public void reset() {
}
@Override
public void setForm(OAForm form) {
this.form = form;
}
@Override
public OAForm getForm() {
return this.form;
}
@Override
public boolean _beforeFormSubmitted() {
return true;
}
@Override
public boolean _onFormSubmitted(HttpServletRequest req, HttpServletResponse resp, HashMap hmNameValue) {
return false;
}
@Override
public String _onSubmit(String forwardUrl) {
return onSubmit(forwardUrl);
}
@Override
public String onSubmit(String forwardUrl) {
return forwardUrl;
}
@Override
public String _afterFormSubmitted(String forwardUrl) {
return afterFormSubmitted(forwardUrl);
}
@Override
public String afterFormSubmitted(String forwardUrl) {
return forwardUrl;
}
@Override
public String getScript() {
lastAjaxSent = null;
StringBuilder sb = new StringBuilder(1024);
//qqqqqqqqqqqqqq
// http://getbootstrap.com/javascript/#popovers
String s = getAjaxScript(true);
if (s != null) sb.append(s);
String js = sb.toString();
return js;
}
@Override
public String getVerifyScript() {
return null;
}
@Override
public String getAjaxScript() {
return getAjaxScript(false);
}
public String getAjaxScript(boolean bInit) {
StringBuilder sb = new StringBuilder(1024);
String msg = getProcessedMessage();
if (msg == null) msg = "";
msg = OAJspUtil.createJsString(msg, '\'');
String title = getProcessedTitle();
if (title == null) title = "";
title = OAJspUtil.createJsString(title, '\'');
String trigger = "";
if (getOnClick()) trigger = "click";
if (getOnHover()) {
if (trigger.length() > 0) trigger += " ";
trigger = "hover";
}
if (getOnFocus()) {
if (trigger.length() > 0) trigger += " ";
trigger = "focus";
}
String loc = getLocation();
if (OAString.isEmpty(loc)) loc = OAJspDelegate.LOCATION_Top;
sb.append("$('#"+id+"').data('bs.popover').options.content = '"+msg+"';\n");
sb.append("$('#"+id+"').data('bs.popover').options.title = '"+title+"';\n");
sb.append("$('#"+id+"').data('bs.popover').options.placement = '"+loc+"';\n");
sb.append("$('#"+id+"').data('bs.popover').options.trigger = '"+trigger+"';\n");
String js = sb.toString();
if (lastAjaxSent != null && lastAjaxSent.equals(js)) {
js = null;
}
else {
lastAjaxSent = js;
if (bInit) {
// http://getbootstrap.com/javascript/#popovers
js = "$('#"+id+"').popover({content: '"+msg+"', placement: '"+loc+"', title: '"+title+"', trigger: '"+trigger+"'});\n";
}
}
return js;
}
public void setMessage(String msg) {
this.message = msg;
templateMessage = null;
}
public String getMessage() {
return this.message;
}
public String getProcessedMessage() {
if (OAString.isEmpty(message)) return message;
if (templateMessage == null) {
templateMessage = new OATemplate();
templateMessage.setTemplate(getMessage());
}
OAObject obj = null;
if (hub != null) {
Object objx = hub.getAO();
if (objx instanceof OAObject) obj = (OAObject) objx;
}
String s = templateMessage.process(obj, hub, null);
return s;
}
public void setTitle(String title) {
this.title = title;
templateTitle = null;
}
public String getTitle() {
return this.title;
}
public String getProcessedTitle() {
if (OAString.isEmpty(title)) return title;
if (templateTitle == null) {
templateTitle = new OATemplate();
templateTitle.setTemplate(getTitle());
}
OAObject obj = null;
if (hub != null) {
Object objx = hub.getAO();
if (objx instanceof OAObject) obj = (OAObject) objx;
}
String s = templateTitle.process(obj, hub, null);
return s;
}
@Override
public void setEnabled(boolean b) {
}
@Override
public boolean getEnabled() {
return true;
}
@Override
public void setVisible(boolean b) {
}
@Override
public boolean getVisible() {
return true;
}
@Override
public String getForwardUrl() {
return null;
}
/**
* @see OAJspDelegate for locations.
*/
public void setLocation(String loc) {
this.location = loc;
}
public String getLocation() {
return this.location;
}
public String[] getRequiredJsNames() {
ArrayList al = new ArrayList<>();
al.add(OAJspDelegate.JS_jquery);
al.add(OAJspDelegate.JS_bootstrap);
String[] ss = new String[al.size()];
return al.toArray(ss);
}
@Override
public String[] getRequiredCssNames() {
ArrayList al = new ArrayList<>();
al.add(OAJspDelegate.CSS_bootstrap);
String[] ss = new String[al.size()];
return al.toArray(ss);
}
@Override
public String getEditorHtml(OAObject obj) {
return null;
}
@Override
public String getRenderHtml(OAObject obj) {
return null;
}
@Override
public void _beforeOnSubmit() {
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy