📄 gentree.java
字号:
/*
* OPIAM Suite
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package opiam.admin.faare.struts.utils;
import opiam.admin.faare.service.services.views.JBTreeNode;
import org.apache.log4j.Logger;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
//DW/2606: replace Date with Calendar
import java.util.GregorianCalendar;
/**
* This class is used to generate an HTML tree for a view.
*
*/
public class GenTree
{
/** Instance of logger. */
private static Logger _logger = Logger.getLogger(GenTree.class);
/** Current instance. */
private static GenTree _instance = new GenTree();
//NOTE: les chemins des images devront se trouver dans un fichier properties
/** Image for expanded node, last son. */
private String menuCornerMinusUri = "../images/menu_corner_minus.gif";
/** Image for unexpanded node, last son. */
private String menuCornerPlusUri = "../images/menu_corner_plus.gif";
/** Image for or expanded node, middle son. */
private String menuTeeMinusUri = "../images/menu_tee_minus.gif";
/** Image for or unexpanded node, middle son. */
private String menuTeePlusUri = "../images/menu_tee_plus.gif";
/** Image for vertical line in tree. */
private String menuBarUri = "../images/menu_bar.gif";
/** Image for space in tree. */
private String menuPixelUri = "../images/menu_pixel.gif";
/** Image for a node with no children, last son. */
private String menuCornerUri = "../images/menu_corner.gif";
/** Image for a node with no children, middle son. */
private String menuTeeUri = "../images/menu_tee.gif";
/** Default CSS tag. */
private String cssClassTag = "";
/** Help label. */
private String expandCollapseLabel = "Expand/Collapse";
/**
* Sets image for expanded node, last son.
*
* @param anUri image URI
*/
public void setMenuCornerMinusUri(String anUri)
{
menuCornerMinusUri = anUri;
}
/**
* Sets image for unexpanded node, last son.
*
* @param anUri image URI
*/
public void setMenuCornerPlusUri(String anUri)
{
menuCornerPlusUri = anUri;
}
/**
* Sets image for or expanded node, middle son.
*
* @param anUri image URI
*/
public void setMenuTeeMinusUri(String anUri)
{
menuTeeMinusUri = anUri;
}
/**
* Sets image for or unexpanded node, middle son.
*
* @param anUri image URI
*/
public void setMenuTeePlusUri(String anUri)
{
menuTeePlusUri = anUri;
}
/**
* Sets image for vertical line in tree.
*
* @param anUri image URI
*/
public void setMenuBarUri(String anUri)
{
menuBarUri = anUri;
}
/**
* Sets image for space in tree.
*
* @param anUri image URI
*/
public void setMenuPixelUri(String anUri)
{
menuPixelUri = anUri;
}
/**
* Sets image for a node with no children, last son.
*
* @param anUri image URI
*/
public void setMenuCornerUri(String anUri)
{
menuCornerUri = anUri;
}
/**
* Sets image for a node with no children, middle son.
*
* @param anUri image URI
*/
public void setMenuTeeUri(String anUri)
{
menuTeeUri = anUri;
}
/**
* Sets expand/collapse help label.
*
* @param aLabel label
*/
public void setExpandCollapseLabel(String aLabel)
{
expandCollapseLabel = aLabel;
}
/**
* Sets CSS class tag.
*
* @param aClassTag class tag
*/
public void setCssClassTag(String aClassTag)
{
cssClassTag = aClassTag;
}
/**
* Generates part of the tree corresponding to given node.
*
* @param node node
* @param nodeId current node identifier
*
* @return HTML code
*/
private StringBuffer processNode(DefaultMutableTreeNode node, String nodeId)
{
StringBuffer result = new StringBuffer();
JBTreeNode data = (JBTreeNode) node.getUserObject();
int level = node.getLevel();
TreeNode[] parents = node.getPath();
result.append("<TR valign='top'><TD nowrap>\n");
result.append("<IMG src='" + menuPixelUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
for (int i = 2; i <= level; i++)
{
if (((DefaultMutableTreeNode) parents[i - 2]).getLastChild() != parents[i -
1])
{
result.append("<IMG src='" + menuBarUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
else
{
result.append("<IMG src='" + menuPixelUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
}
boolean last = true;
boolean hasChildren =
((node.getChildCount() != 0) &&
(data.getState() != JBTreeNode.CLOSE));
boolean empty = (data.getState() == JBTreeNode.NOCHILDREN);
if (!empty && (data.getExpandUrl() != null))
{
result.append("<A href='" + data.getExpandUrl() + "&cc=" +
(new GregorianCalendar()).get(GregorianCalendar.SECOND) + "#a" +
data.getId() + "' onmouseover='window.status=\"" +
expandCollapseLabel +
"\";return true;' onmouseout='window.status=\"\";return true;'>\n");
}
if (node.getParent() != null)
{
last =
(((DefaultMutableTreeNode) node.getParent()).getLastChild() == node) ?
true : false;
}
if (last && hasChildren)
{
result.append("<IMG src='" + menuCornerMinusUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
else if (!last && hasChildren)
{
result.append("<IMG src='" + menuTeeMinusUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
else if (last && !hasChildren && !empty)
{
result.append("<IMG src='" + menuCornerPlusUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
else if (!last && !hasChildren && !empty)
{
result.append("<IMG src='" + menuTeePlusUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
else if (last && !hasChildren && empty)
{
result.append("<IMG src='" + menuCornerUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
else if (!last && !hasChildren && empty)
{
result.append("<IMG src='" + menuTeeUri +
"' align='left' border='0' vspace='0' hspace='0' width='18' height='18'>\n");
}
if (!empty && (data.getExpandUrl() != null))
{
result.append("</A>\n");
}
//Rajout
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -