All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aperteworkflow.help.impl.HelpUtility Maven / Gradle / Ivy

There is a newer version: 3.2-RC1
Show newest version
package org.aperteworkflow.help.impl;

import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.vaadin.jonatan.contexthelp.ContextHelp;
import org.vaadin.jonatan.contexthelp.Placement;

import pl.net.bluesoft.rnd.processtool.ProcessToolContext;
import pl.net.bluesoft.rnd.processtool.dict.ProcessDictionaryRegistry;
import pl.net.bluesoft.rnd.processtool.model.UserData;
import pl.net.bluesoft.rnd.processtool.model.dict.ProcessDictionary;
import pl.net.bluesoft.rnd.processtool.model.dict.ProcessDictionaryItem;
import pl.net.bluesoft.rnd.util.i18n.I18NSource;

import com.vaadin.Application;
import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.themes.BaseTheme;

/**
 * Created by IntelliJ IDEA. User: mwysocki_bls Date: 8/29/11 Time: 12:33 PM To
 * change this template use File | Settings | File Templates.
 * 
 * @author mpawlak
 */
public class HelpUtility {
	public static Component helpIcon(final Application application, final I18NSource i18NSource, ContextHelp contextHelp, String dictionary, String key,
			Boolean showDebugKey, Component optionalComponent, Placement popupPlacement) {
		ProcessToolContext ctx = ProcessToolContext.Util.getThreadProcessToolContext();
		ProcessDictionaryRegistry processDictionaryRegistry = ctx.getProcessDictionaryRegistry();
		ProcessDictionary dict = processDictionaryRegistry.getSpecificOrDefaultGlobalDictionary("db", dictionary, i18NSource.getLocale().toString());

		return helpIcon(dict, application, i18NSource, contextHelp, key, showDebugKey, optionalComponent, popupPlacement);
	}

	public static Button helpIcon(final ProcessDictionary dict, final Application application, final I18NSource i18NSource, final ContextHelp contextHelp,
			final String key, Boolean showDebugKey, final Component optionalComponent, Placement popupPlacement) {
		String message = getMessageFromDictionary(dict, i18NSource, key, canUserEditDictionaries(application), showDebugKey);

		if (popupPlacement == null) {
			popupPlacement = Placement.RIGHT;
		}

		final Button icon = helpIconButton(application);
		icon.setWidth(20, Sizeable.UNITS_PIXELS);
		icon.setHeight(20, Sizeable.UNITS_PIXELS);
		if (optionalComponent != null) {
			contextHelp.addHelpForComponent(optionalComponent, message, popupPlacement);
		} else {
			contextHelp.addHelpForComponent(icon, message, popupPlacement);
		}

		icon.addListener(new Button.ClickListener() {
			@Override
			public void buttonClick(Button.ClickEvent event) {

				if (optionalComponent != null) {
					contextHelp.showHelpFor(optionalComponent);
					// showHelpFor(dict, application, i18NSource, contextHelp,
					// key, optionalComponent, Placement.RIGHT);
				} else {
					contextHelp.showHelpFor(icon);
				}
				// displayHelpNotification(application, i18NSource, message);
			}
		});

		return icon;
	}

	private static String getMessageFromDictionary(ProcessDictionary dict, I18NSource i18NSource, String key, boolean showEditButton, boolean showDebugKey) 
	{
		ProcessDictionaryItem dictItem = dict.lookup(key);
		
		StringBuilder messageBuilder = new StringBuilder();
		
		messageBuilder.append("
"); if(dictItem == null) messageBuilder.append(i18NSource.getMessage("help.empty").replaceAll("\\{0\\}", key)); else messageBuilder.append(dictItem.getValueForCurrentDate().getValue()); messageBuilder.append("
"); /* Add edit icon */ if(showEditButton) { String processDefinitionName = dict.getProcessDefinition() == null ? null : dict.getProcessDefinition().getBpmDefinitionKey(); String dictionaryId = dict.getDictionaryId(); String languageCode = i18NSource.getLocale().toString(); String dictionaryItemKey = key; String dictionaryItemValue = dictItem == null ? "" : dictItem.getValueForCurrentDate().getValue().toString(); String escapedValue = StringEscapeUtils.escapeHtml4(dictionaryItemValue); messageBuilder.append("
"); messageBuilder.append(""); } if (showDebugKey) { messageBuilder.append("

"); messageBuilder.append(i18NSource.getMessage("help.dictionary")); messageBuilder.append(": "); messageBuilder.append(dict.getDictionaryName()); messageBuilder.append("
"); messageBuilder.append(i18NSource.getMessage("help.key")); messageBuilder.append(": "); messageBuilder.append(key); messageBuilder.append(""); } return messageBuilder.toString(); } private static Button helpIconButton(Application application) { Button b = new Button(); b.addStyleName(BaseTheme.BUTTON_LINK); b.addStyleName("help_button"); b.setWidth(12, Sizeable.UNITS_PIXELS); b.setHeight(12, Sizeable.UNITS_PIXELS); b.setImmediate(true); return b; } public static void showHelpFor(ProcessDictionary dict, Application application, I18NSource i18NSource, ContextHelp contextHelp, String key, Boolean showDebugKey, Component component, Placement placement) { if (placement == null) placement = Placement.RIGHT; String message = getMessageFromDictionary(dict, i18NSource, key, canUserEditDictionaries(application), showDebugKey); contextHelp.addHelpForComponent(component, message, placement); // map.put("hidden", "true"); // contextHelp.changeVariables(null, map); contextHelp.showHelpFor(component); // map.put("hidden", Boolean.FALSE); // contextHelp.changeVariables(null, map); } private static boolean canUserEditDictionaries(Application application) { UserData user = (UserData)application.getUser(); boolean canEdit = user.getRoleNames().contains("CHANGE_HELP_TOOLTIPS"); return canEdit; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy