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

com.jgeppert.struts2.jquery.tree.components.Tree Maven / Gradle / Ivy

There is a newer version: 6.0.0
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 com.jgeppert.struts2.jquery.tree.components;

import com.jgeppert.struts2.jquery.components.AbstractContainer;
import com.opensymphony.xwork2.util.ValueStack;
import org.apache.struts2.util.ContainUtil;
import org.apache.struts2.views.annotations.StrutsTag;
import org.apache.struts2.views.annotations.StrutsTagAttribute;
import org.apache.struts2.views.annotations.StrutsTagSkipInheritance;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 
 * 

* Render a Tree Element *

* * * @author Johannes Geppert */ @StrutsTag(name = "tree", tldTagClass = "com.jgeppert.struts2.jquery.tree.views.jsp.ui.TreeTag", description = "A Tree Element", allowDynamicAttributes = true) public class Tree extends AbstractContainer { public static final String TEMPLATE = "tree"; public static final String TEMPLATE_CLOSE = "tree-close"; public static final String COMPONENT_NAME = Tree.class.getName(); public static final String JQUERYACTION = "tree"; private static final String PARAM_JSTREETHEME = "jstreetheme"; private static final String PARAM_JSTREETHEME_RESPONSIVE = "jstreethemeResponsive"; private static final String PARAM_JSTREETHEME_VARIANT = "jstreethemeVariant"; private static final String PARAM_ANIMATION = "animation"; private static final String PARAM_HTML_TITLES = "htmlTitles"; private static final String PARAM_INITIALLY_OPEN = "initiallyOpen"; private static final String PARAM_RTL = "rtl"; private static final String PARAM_HREF = "href"; private static final String PARAM_ON_CLICK_TOPICS = "onClickTopics"; private static final String PARAM_ROOT_NODE = "rootNode"; private static final String PARAM_CHILD_COLLECTION_PROPERTY = "childCollectionProperty"; private static final String PARAM_NODE_TITLE_PROPERTY = "nodeTitleProperty"; private static final String PARAM_NODE_TYPE_PROPERTY = "nodeTypeProperty"; private static final String PARAM_NODE_ID_PROPERTY = "nodeIdProperty"; private static final String PARAM_NODE_HREF = "nodeHref"; private static final String PARAM_NODE_HREF_PARAM_NAME = "nodeHrefParamName"; private static final String PARAM_NODE_TARGETS = "nodeTargets"; private static final String PARAM_OPEN_ALL_ON_LOAD = "openAllOnLoad"; private static final String PARAM_OPEN_ALL_ON_REFRESH = "openAllOnRefresh"; private static final String PARAM_CONTEXTMENU = "contextmenu"; private static final String PARAM_PLUGINS = "plugins"; private static final String PARAM_TYPES = "types"; private static final String PARAM_SHOW_THEME_DOTS = "showThemeDots"; private static final String PARAM_SHOW_THEME_ICONS = "showThemeIcons"; private static final String PARAM_CHECKBOX = "checkbox"; private static final String PARAM_CHECKBOX_TWO_STATE = "checkboxTwoState"; private static final String PARAM_CHECKBOX_TOOGLE_ALL_TOPICS = "checkboxToogleAllTopics"; private static final String PARAM_CHECKBOX_HIDE_TOPICS = "checkboxHideTopics"; private static final String PARAM_CHECKBOX_SHOW_TOPICS = "checkboxShowTopics"; private static final String PARAM_CHECKBOX_CHECK_ALL_TOPICS = "checkboxCheckAllTopics"; private static final String PARAM_CHECKBOX_UNCHECK_ALL_TOPICS = "checkboxUncheckAllTopics"; private static final String PARAM_SEARCH_TOPIC = "searchTopic"; private static final String PARAM_SEARCH_ELEMENT_ID = "searchElementId"; private static final String PARAM_ON_SEARCH_COMPLETE_TOPICS = "onSearchCompleteTopics"; private static final String PARAM_ON_SEARCH_CLEAR_TOPICS = "onSearchClearTopics"; private static final String PARAM_SEARCH_CLEAR_TOPIC = "searchClearTopic"; private static final String ID_PREFIX_TREE = "tree_"; protected String jstreetheme; protected String jstreethemeVariant; protected String jstreethemeResponsive; protected String htmlTitles; protected String animation; protected String initiallyOpen; protected String rtl; protected String href; protected String onClickTopics; protected String rootNode; protected String childCollectionProperty; protected String nodeTitleProperty; protected String nodeTypeProperty; protected String nodeIdProperty; protected String nodeHref; protected String nodeHrefParamName; protected String nodeTargets; protected String openAllOnLoad; protected String openAllOnRefresh; protected String contextmenu; protected String plugins; protected String types; protected String showThemeDots; protected String showThemeIcons; protected String checkbox; protected String checkboxTwoState; protected String checkboxToogleAllTopics; protected String checkboxHideTopics; protected String checkboxShowTopics; protected String checkboxCheckAllTopics; protected String checkboxUncheckAllTopics; protected String searchTopic; protected String searchClearTopic; protected String searchElementId; protected String onSearchCompleteTopics; protected String onSearchClearTopics; public Tree(ValueStack stack, HttpServletRequest request, HttpServletResponse response) { super(stack, request, response); } @Override public String getDefaultOpenTemplate() { return TEMPLATE; } @Override protected String getDefaultTemplate() { return TEMPLATE_CLOSE; } @Override public void evaluateExtraParams() { super.evaluateExtraParams(); addParameter(PARAM_JQUERY_ACTION, JQUERYACTION); addParameterIfPresent(PARAM_JSTREETHEME, this.jstreetheme); addParameterIfPresent(PARAM_JSTREETHEME_RESPONSIVE, this.jstreethemeResponsive, Boolean.class); addParameterIfPresent(PARAM_JSTREETHEME_VARIANT, this.jstreethemeVariant); addParameterIfPresent(PARAM_ANIMATION, this.animation, Number.class); addParameterIfPresent(PARAM_HTML_TITLES, this.htmlTitles, Boolean.class); addParameterIfPresent(PARAM_INITIALLY_OPEN, this.initiallyOpen); addParameterIfPresent(PARAM_RTL, this.rtl, Boolean.class); addParameterIfPresent(PARAM_HREF, this.href); addParameterIfPresent(PARAM_ON_CLICK_TOPICS, this.onClickTopics); addParameterIfPresent(PARAM_ROOT_NODE, this.rootNode, Object.class); addParameterIfPresent(PARAM_CHILD_COLLECTION_PROPERTY, this.childCollectionProperty); addParameterIfPresent(PARAM_NODE_TITLE_PROPERTY, this.nodeTitleProperty); addParameterIfPresent(PARAM_NODE_TYPE_PROPERTY, this.nodeTypeProperty); addParameterIfPresent(PARAM_NODE_ID_PROPERTY, this.nodeIdProperty); addParameterIfPresent(PARAM_NODE_HREF, this.nodeHref); addParameterIfPresent(PARAM_NODE_HREF_PARAM_NAME, this.nodeHrefParamName); addParameterIfPresent(PARAM_NODE_TARGETS, this.nodeTargets); addParameterIfPresent(PARAM_OPEN_ALL_ON_LOAD, this.openAllOnLoad, Boolean.class); addParameterIfPresent(PARAM_OPEN_ALL_ON_REFRESH, this.openAllOnRefresh, Boolean.class); addParameterIfPresent(PARAM_CONTEXTMENU, this.contextmenu); addParameterIfPresent(PARAM_PLUGINS, this.plugins); addParameterIfPresent(PARAM_TYPES, this.types); addParameterIfPresent(PARAM_SHOW_THEME_DOTS, this.showThemeDots, Boolean.class); addParameterIfPresent(PARAM_SHOW_THEME_ICONS, this.showThemeIcons, Boolean.class); addParameterIfPresent(PARAM_CHECKBOX, this.checkbox, Boolean.class); addParameterIfPresent(PARAM_CHECKBOX_TWO_STATE, this.checkboxTwoState, Boolean.class); addParameterIfPresent(PARAM_CHECKBOX_TOOGLE_ALL_TOPICS, this.checkboxToogleAllTopics); addParameterIfPresent(PARAM_CHECKBOX_HIDE_TOPICS, this.checkboxHideTopics); addParameterIfPresent(PARAM_CHECKBOX_SHOW_TOPICS, this.checkboxShowTopics); addParameterIfPresent(PARAM_CHECKBOX_CHECK_ALL_TOPICS, this.checkboxCheckAllTopics); addParameterIfPresent(PARAM_CHECKBOX_UNCHECK_ALL_TOPICS, this.checkboxUncheckAllTopics); addParameterIfPresent(PARAM_SEARCH_TOPIC, this.searchTopic); addParameterIfPresent(PARAM_SEARCH_ELEMENT_ID, this.searchElementId); addParameterIfPresent(PARAM_ON_SEARCH_COMPLETE_TOPICS, this.onSearchCompleteTopics); addParameterIfPresent(PARAM_ON_SEARCH_CLEAR_TOPICS, this.onSearchClearTopics); addParameterIfPresent(PARAM_SEARCH_CLEAR_TOPIC, this.searchClearTopic); addGeneratedIdParam(ID_PREFIX_TREE); } public boolean contains(Object obj1, Object obj2) { return ContainUtil.contains(obj1, obj2); } @Override @SuppressWarnings("rawtypes") protected Class getValueClassType() { return null; // don't convert nameValue to anything, we need the raw // value } @Override @StrutsTagSkipInheritance public void setTheme(String theme) { super.setTheme(theme); } @Override public String getTheme() { return "jquery"; } @StrutsTagAttribute(description = "jstree theme. default, default-rtl, classic or apple", defaultValue = "theme from jquery ui") public void setJstreetheme(String jstreetheme) { this.jstreetheme = jstreetheme; } @StrutsTagAttribute(description = "jstree theme variant, if your theme support it.") public void setJstreethemeVariant(String jstreethemeVariant) { this.jstreethemeVariant = jstreethemeVariant; } @StrutsTagAttribute(description = "wether to use the responsive version of the theme, if the theme support it", type = "Boolean", defaultValue = "false") public void setJstreethemeResponsive(String jstreethemeResponsive) { this.jstreethemeResponsive = jstreethemeResponsive; } @StrutsTagAttribute(description = "Defines whether titles can contain HTML code.", type = "Boolean", defaultValue = "false") public void setHtmlTitles(String htmlTitles) { this.htmlTitles = htmlTitles; } @StrutsTagAttribute(description = "Defines the duration of open/close animations. 0 means no animation.", type = "Number", defaultValue = "500") public void setAnimation(String animation) { this.animation = animation; } @StrutsTagAttribute(description = "Defines which nodes are to be automatically opened when the tree finishes loading - a list of IDs is expected. eg.: ['id1', 'id2']", defaultValue = "[]") public void setInitiallyOpen(String initiallyOpen) { this.initiallyOpen = initiallyOpen; } @StrutsTagAttribute(description = "Defines whether the tree is in right-to-left mode (also make sure you are using a RTL theme - for example the included default-rtl).", type = "Boolean", defaultValue = "false") public void setRtl(String rtl) { this.rtl = rtl; } @Override @StrutsTagAttribute(description = "Url used to load the list of children nodes for an specific node, whose id will be passed as a parameter named 'nodeId' (empty for root)") public void setHref(String href) { this.href = href; } @StrutsTagAttribute(description = "A comma delimited list of topics that published when the tree item is clicked") public void setOnClickTopics(String onClickTopics) { this.onClickTopics = onClickTopics; } @StrutsTagAttribute(description = "The rootNode property.") public void setRootNode(String rootNode) { this.rootNode = rootNode; } @StrutsTagAttribute(description = "The childCollectionProperty property.") public void setChildCollectionProperty(String childCollectionProperty) { this.childCollectionProperty = childCollectionProperty; } @StrutsTagAttribute(description = "The nodeTitleProperty property.") public void setNodeTitleProperty(String nodeTitleProperty) { this.nodeTitleProperty = nodeTitleProperty; } @StrutsTagAttribute(description = "The nodeIdProperty property.") public void setNodeIdProperty(String nodeIdProperty) { this.nodeIdProperty = nodeIdProperty; } @StrutsTagAttribute(description = "The type property for node. This needs a valid types definition.") public void setNodeTypeProperty(String nodeTypeProperty) { this.nodeTypeProperty = nodeTypeProperty; } @StrutsTagAttribute(description = "The href property for node.") public void setNodeHref(String nodeHref) { this.nodeHref = nodeHref; } @StrutsTagAttribute(description = "The href parameter name for node link.", defaultValue = "id") public void setNodeHrefParamName(String nodeHrefParamName) { this.nodeHrefParamName = nodeHrefParamName; } @StrutsTagAttribute(description = "AJAX targets for node items.") public void setNodeTargets(String nodeTargets) { this.nodeTargets = nodeTargets; } @StrutsTagAttribute(description = "Open all Nodes on load.", type = "Boolean", defaultValue = "false") public void setOpenAllOnLoad(String openAllOnLoad) { this.openAllOnLoad = openAllOnLoad; } @StrutsTagAttribute(description = "Open all Nodes on refresh.", type = "Boolean", defaultValue = "false") public void setOpenAllOnRefresh(String openAllOnRefresh) { this.openAllOnRefresh = openAllOnRefresh; } @StrutsTagAttribute(description = "Expects an JavaScript object or a function, which should return an JavaScript object. e.g. {items: { 'delete' : { 'label': 'Delete Node', 'action': function (obj) { this.delete(obj); } } } }") public void setContextmenu(String contextmenu) { this.contextmenu = contextmenu; } @StrutsTagAttribute(description = "Expects an JavaScript object containing plugin to activate in key and conf object/function in value. e.g. {search: {ajax : {...}, ... } , sort : function(n1,n2){...} }. Warning, settings here can override other plugins config defined in other tag attribute (eg : contextmenu)") public void setPlugins(String plugins) { this.plugins = plugins; } @StrutsTagAttribute(description = "The types enables node types - each node can have a type, and you can define rules on how that type should behave - maximum children count, maximum depth, valid children types, selectable or not, etc.") public void setTypes(String types) { this.types = types; } @StrutsTagAttribute(description = "Whether to show the node icons or not.", type = "Boolean", defaultValue = "true") public void setShowThemeIcons(String showThemeIcons) { this.showThemeIcons = showThemeIcons; } @StrutsTagAttribute(description = "Whether to show the connecting dots or not.", type = "Boolean", defaultValue = "true") public void setShowThemeDots(String showThemeDots) { this.showThemeDots = showThemeDots; } @StrutsTagAttribute(description = "Makes multiselection possible using three-state checkboxes.", type = "Boolean", defaultValue = "false") public void setCheckbox(String checkbox) { this.checkbox = checkbox; } @StrutsTagAttribute(description = "If set to true checkboxes will be two-state only, meaning that you will be able to select parent and children independently and there will be no undetermined state.", type = "Boolean", defaultValue = "false") public void setCheckboxTwoState(String checkboxTwoState) { this.checkboxTwoState = checkboxTwoState; } @StrutsTagAttribute(description = "A comma delimited list of topics to toogle display of checkboxes.") public void setCheckboxToogleAllTopics(String checkboxToogleAllTopics) { this.checkboxToogleAllTopics = checkboxToogleAllTopics; } @StrutsTagAttribute(description = "A comma delimited list of topics to hide checkboxes.") public void setCheckboxHideTopics(String checkboxHideTopics) { this.checkboxHideTopics = checkboxHideTopics; } @StrutsTagAttribute(description = "A comma delimited list of topics to show checkboxes.") public void setCheckboxShowTopics(String checkboxShowTopics) { this.checkboxShowTopics = checkboxShowTopics; } @StrutsTagAttribute(description = "A comma delimited list of topics to check all checkboxes.") public void setCheckboxCheckAllTopics(String checkboxCheckAllTopics) { this.checkboxCheckAllTopics = checkboxCheckAllTopics; } @StrutsTagAttribute(description = "A comma delimited list of topics to uncheck all checkboxes.") public void setCheckboxUncheckAllTopics(String checkboxUncheckAllTopics) { this.checkboxUncheckAllTopics = checkboxUncheckAllTopics; } @StrutsTagAttribute(description = "The topic that will trigger the tree search") public void setSearchTopic(String searchTopic) { this.searchTopic = searchTopic; } @StrutsTagAttribute(description = "The ID of the element that holds the search string") public void setSearchElementId(String searchElementId) { this.searchElementId = searchElementId; } @StrutsTagAttribute(description = "comma separated list of topics published when the tree search is complete") public void setOnSearchCompleteTopics(String onSearchCompleteTopics) { this.onSearchCompleteTopics = onSearchCompleteTopics; } @StrutsTagAttribute(description = "The topic that will trigger the clear of the last tree search") public void setSearchClearTopic(String searchClearTopic) { this.searchClearTopic = searchClearTopic; } @StrutsTagAttribute(description = "comma separated list of topics published when a tree search clear happens") public void setOnSearchClearTopics(String onSearchClearTopics) { this.onSearchClearTopics = onSearchClearTopics; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy