forked from fanruan/design
yaoh.wu
7 years ago
4 changed files with 0 additions and 180 deletions
@ -1,83 +0,0 @@ |
|||||||
package com.fr.design.remote.ui.tree; |
|
||||||
|
|
||||||
|
|
||||||
import javax.swing.JCheckBox; |
|
||||||
import javax.swing.JPanel; |
|
||||||
import javax.swing.JTree; |
|
||||||
import javax.swing.UIManager; |
|
||||||
import javax.swing.plaf.ColorUIResource; |
|
||||||
import javax.swing.tree.TreeCellRenderer; |
|
||||||
import java.awt.Color; |
|
||||||
import java.awt.Component; |
|
||||||
import java.awt.Dimension; |
|
||||||
|
|
||||||
public class FileAuthorityTreeCellRenderer extends JPanel implements TreeCellRenderer { |
|
||||||
|
|
||||||
|
|
||||||
protected JCheckBox check; |
|
||||||
protected FileAuthorityTreeLabel label; |
|
||||||
|
|
||||||
public FileAuthorityTreeCellRenderer() { |
|
||||||
setLayout(null); |
|
||||||
add(check = new JCheckBox()); |
|
||||||
add(label = new FileAuthorityTreeLabel()); |
|
||||||
check.setBackground(UIManager.getColor("Tree.textBackground")); |
|
||||||
label.setForeground(UIManager.getColor("Tree.textForeground")); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 返回的是一个<code>JPanel</code>对象,该对象中包含一个<code>JCheckBox</code>对象 |
|
||||||
* 和一个<code>JLabel</code>对象。并且根据每个结点是否被选中来决定<code>JCheckBox</code> |
|
||||||
* 是否被选中。 |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
public Component getTreeCellRendererComponent(JTree tree, Object value, |
|
||||||
boolean selected, boolean expanded, boolean leaf, int row, |
|
||||||
boolean hasFocus) { |
|
||||||
String stringValue = tree.convertValueToText(value, selected, expanded, leaf, row, hasFocus); |
|
||||||
setEnabled(tree.isEnabled()); |
|
||||||
check.setSelected(((FileAuthorityTreeNode) value).isSelected()); |
|
||||||
label.setFont(tree.getFont()); |
|
||||||
label.setText(stringValue); |
|
||||||
label.setSelected(selected); |
|
||||||
label.setFocus(hasFocus); |
|
||||||
if (leaf) |
|
||||||
label.setIcon(UIManager.getIcon("Tree.leafIcon")); |
|
||||||
else if (expanded) |
|
||||||
label.setIcon(UIManager.getIcon("Tree.openIcon")); |
|
||||||
else |
|
||||||
label.setIcon(UIManager.getIcon("Tree.closedIcon")); |
|
||||||
|
|
||||||
return this; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public Dimension getPreferredSize() { |
|
||||||
Dimension dCheck = check.getPreferredSize(); |
|
||||||
Dimension dLabel = label.getPreferredSize(); |
|
||||||
return new Dimension(dCheck.width + dLabel.width, dCheck.height < dLabel.height ? dLabel.height : dCheck.height); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void doLayout() { |
|
||||||
Dimension dCheck = check.getPreferredSize(); |
|
||||||
Dimension dLabel = label.getPreferredSize(); |
|
||||||
int yCheck = 0; |
|
||||||
int yLabel = 0; |
|
||||||
if (dCheck.height < dLabel.height) |
|
||||||
yCheck = (dLabel.height - dCheck.height) / 2; |
|
||||||
else |
|
||||||
yLabel = (dCheck.height - dLabel.height) / 2; |
|
||||||
check.setLocation(0, yCheck); |
|
||||||
check.setBounds(0, yCheck, dCheck.width, dCheck.height); |
|
||||||
label.setLocation(dCheck.width, yLabel); |
|
||||||
label.setBounds(dCheck.width, yLabel, dLabel.width, dLabel.height); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void setBackground(Color color) { |
|
||||||
if (color instanceof ColorUIResource) |
|
||||||
color = null; |
|
||||||
super.setBackground(color); |
|
||||||
} |
|
||||||
} |
|
@ -1,69 +0,0 @@ |
|||||||
package com.fr.design.remote.ui.tree; |
|
||||||
|
|
||||||
|
|
||||||
import javax.swing.Icon; |
|
||||||
import javax.swing.JLabel; |
|
||||||
import javax.swing.UIManager; |
|
||||||
import javax.swing.plaf.ColorUIResource; |
|
||||||
import java.awt.Color; |
|
||||||
import java.awt.Dimension; |
|
||||||
import java.awt.Graphics; |
|
||||||
|
|
||||||
public class FileAuthorityTreeLabel extends JLabel { |
|
||||||
private boolean isSelected; |
|
||||||
private boolean hasFocus; |
|
||||||
|
|
||||||
public FileAuthorityTreeLabel() { |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void setBackground(Color color) { |
|
||||||
if (color instanceof ColorUIResource) { |
|
||||||
color = null; |
|
||||||
} |
|
||||||
super.setBackground(color); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void paint(Graphics g) { |
|
||||||
String str; |
|
||||||
if ((str = getText()) != null) { |
|
||||||
if (0 < str.length()) { |
|
||||||
if (isSelected) { |
|
||||||
g.setColor(UIManager.getColor("Tree.selectionBackground")); |
|
||||||
} else { |
|
||||||
g.setColor(UIManager.getColor("Tree.textBackground")); |
|
||||||
} |
|
||||||
Dimension d = getPreferredSize(); |
|
||||||
int imageOffset = 0; |
|
||||||
Icon currentIcon = getIcon(); |
|
||||||
if (currentIcon != null) { |
|
||||||
imageOffset = currentIcon.getIconWidth() + Math.max(0, getIconTextGap() - 1); |
|
||||||
} |
|
||||||
g.fillRect(imageOffset, 0, d.width - 1 - imageOffset, d.height); |
|
||||||
if (hasFocus) { |
|
||||||
g.setColor(UIManager.getColor("Tree.selectionBorderColor")); |
|
||||||
g.drawRect(imageOffset, 0, d.width - 1 - imageOffset, d.height - 1); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
super.paint(g); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public Dimension getPreferredSize() { |
|
||||||
Dimension retDimension = super.getPreferredSize(); |
|
||||||
if (retDimension != null) { |
|
||||||
retDimension = new Dimension(retDimension.width + 3, retDimension.height); |
|
||||||
} |
|
||||||
return retDimension; |
|
||||||
} |
|
||||||
|
|
||||||
public void setSelected(boolean isSelected) { |
|
||||||
this.isSelected = isSelected; |
|
||||||
} |
|
||||||
|
|
||||||
public void setFocus(boolean hasFocus) { |
|
||||||
this.hasFocus = hasFocus; |
|
||||||
} |
|
||||||
} |
|
@ -1,27 +0,0 @@ |
|||||||
package com.fr.design.remote.ui.tree; |
|
||||||
|
|
||||||
|
|
||||||
import javax.swing.JTree; |
|
||||||
import javax.swing.tree.DefaultTreeModel; |
|
||||||
import javax.swing.tree.TreePath; |
|
||||||
import java.awt.event.MouseAdapter; |
|
||||||
import java.awt.event.MouseEvent; |
|
||||||
|
|
||||||
public class FileAuthorityTreeNodeSelectionListener extends MouseAdapter { |
|
||||||
@Override |
|
||||||
public void mouseClicked(MouseEvent event) { |
|
||||||
JTree tree = (JTree) event.getSource(); |
|
||||||
int x = event.getX(); |
|
||||||
int y = event.getY(); |
|
||||||
int row = tree.getRowForLocation(x, y); |
|
||||||
TreePath path = tree.getPathForRow(row); |
|
||||||
if (path != null) { |
|
||||||
FileAuthorityTreeNode node = (FileAuthorityTreeNode) path.getLastPathComponent(); |
|
||||||
if (node != null) { |
|
||||||
boolean isSelected = !node.isSelected(); |
|
||||||
node.setSelected(isSelected); |
|
||||||
((DefaultTreeModel) tree.getModel()).nodeStructureChanged(node); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue