package com.smartgwt.sample.showcase.client.data; import java.util.List; import java.util.ArrayList; import com.google.gwt.safehtml.shared.SafeHtml; import com.smartgwt.client.widgets.tree.TreeNode; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcaseConfiguration; public class ExplorerTreeNode extends TreeNode { public ExplorerTreeNode(SafeHtml name, String nodeID, String parentNodeID, String icon, PanelFactory factory, boolean enabled, String idSuffix) { this(name.asString(), nodeID, parentNodeID, icon, factory, enabled, true, idSuffix, null); } public ExplorerTreeNode(String name, String nodeID, String parentNodeID, String icon, PanelFactory factory, boolean enabled, String idSuffix) { this(name, nodeID, parentNodeID, icon, factory, enabled, true, idSuffix, null); } public ExplorerTreeNode(String name, String nodeID, String parentNodeID, String icon, PanelFactory factory, boolean enabled, String idSuffix, String version) { this(name, nodeID, parentNodeID, icon, factory, enabled, true, idSuffix, version); } public ExplorerTreeNode(String name, String nodeID, String parentNodeID, String icon, PanelFactory factory, boolean enabled, boolean testEnabled, String idSuffix, String version) { setName(name.replaceAll("<.*?>", "")); setHTML(enabled ? name : "<span style='color:808080'>" + name + "</span>"); setNodeID ( nodeID.replace("-", "_") + idSuffix); setParentNodeID(parentNodeID.replace("-", "_") + idSuffix); setThumbnail("thumbnails/" + nodeID.replace("-", "_") + ".gif"); setIcon(icon); setVersion(version); setFactory(factory); if (!testEnabled) setTestDisabled(); if (ShowcaseConfiguration.getSingleton().isOpenForTesting() && null != factory) { String className = factory.getClass().getName().replaceFirst("\\$.*$",""); setSampleClassName(className); } if(nodeID.equals("featured-category") || nodeID.equals("new-category")) { setIsOpen(true); } } // create a copy of the provided node with "_new" added to the ID public ExplorerTreeNode(ExplorerTreeNode originalNode, String idSuffix) { setNodeID (originalNode.getNodeID("_new" + idSuffix, idSuffix)); setName (originalNode.getName()); setHTML (originalNode.getHTML()); setThumbnail (originalNode.getThumbnail()); setIcon (originalNode.getIcon()); setVersion (originalNode.getVersion()); setFactory (originalNode.getFactory()); setSampleClassName(originalNode.getSampleClassName()); setIsOpen (originalNode.getIsOpen()); if (originalNode.getTestDisabled()) setTestDisabled(); } public void setSampleClassName(String name) { setAttribute("sampleClassName",name); } public String getSampleClassName() { return getAttribute("sampleClassName"); } public void setVersion(String version) { setAttribute("version",version); } public String getVersion() { return getAttribute("version"); } public void setFactory(PanelFactory factory) { setAttribute("factory", factory); } public PanelFactory getFactory() { return (PanelFactory) getAttributeAsObject("factory"); } public void setNodeID(String value) { setAttribute("nodeID", value); } public String getNodeID() { return getAttribute("nodeID"); } public String getNodeID(String newSuffix, String oldSuffix) { String nodeID = getAttribute("nodeID"); return nodeID.substring(0, nodeID.length() - oldSuffix.length()) + newSuffix; } public void setParentNodeID(String value) { setAttribute("parentNodeID", value); } public String getParentNodeID() { return getAttribute("parentNodeID"); } public void setName(String name) { setAttribute("nodeTitle", name); } public String getName() { return getAttributeAsString("nodeTitle"); } public void setHTML(String html) { setAttribute("nodeHTML", html); } public String getHTML() { return getAttributeAsString("nodeHTML"); } public void setIcon(String icon) { setAttribute("icon", icon); } public String getIcon() { return getAttributeAsString("icon"); } public void setThumbnail(String thumbnail) { setAttribute("thumbnail", thumbnail); } public String getThumbnail() { return getAttributeAsString("thumbnail"); } public void setIsOpen(boolean isOpen) { setAttribute("isOpen", isOpen); } public Boolean getIsOpen() { return getAttributeAsBoolean("isOpen"); } public void setIconSrc(String iconSrc) { setAttribute("iconSrc", iconSrc); } public String getIconSrc() { return getAttributeAsString("iconSrc"); } public void setTestDisabled() { setAttribute("testDisabled", true); } public Boolean getTestDisabled() { return getAttributeAsBoolean("testDisabled"); } // Java doesn't allow downcasting of arrays (e.g. from TreeNode[] to ExplorerTreeNode[]) public static ExplorerTreeNode[] arrayOfExplorerTreeNode(TreeNode[] data) { ExplorerTreeNode[] convertedData = new ExplorerTreeNode[data.length]; for (int i = 0; i < data.length; i++) convertedData[i] = (ExplorerTreeNode) data[i]; return convertedData; } public static List<ExplorerTreeNode> listOfExplorerTreeNode(TreeNode[] data) { List<ExplorerTreeNode> convertedData = new ArrayList<ExplorerTreeNode>(); for (int i = 0; i < data.length; i++) convertedData.add((ExplorerTreeNode) data[i]); return convertedData; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ExplorerTreeNode that = (ExplorerTreeNode) o; if (!getName().equals(that.getName())) return false; return true; } @Override public int hashCode() { return getName().hashCode(); } }