123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- package ui.view.holarchy;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Image;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.image.BufferedImage;
- import javax.swing.Icon;
- import javax.swing.ImageIcon;
- import javax.swing.JCheckBoxMenuItem;
- import javax.swing.JMenuItem;
- import javax.swing.JPanel;
- import javax.swing.JPopupMenu;
- import javax.swing.JTree;
- import javax.swing.SwingUtilities;
- import javax.swing.ToolTipManager;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeCellRenderer;
- import javax.swing.tree.TreePath;
- import javax.swing.tree.TreeSelectionModel;
- import classes.Holon;
- import classes.HolonElement;
- import classes.HolonObject;
- import ui.controller.Control;
- import ui.view.outliner.TreeUtils;
- import util.ImageImport;
- public class HolarchyTreePanel extends JPanel {
- private Control control;
- private JTree holonTree;
- private DefaultMutableTreeNode root;
- private HolarchyWindow parentFrame;
-
- public HolarchyTreePanel(HolarchyWindow parentFrame, Control control) {
- this.control = control;
- this.setLayout(new BorderLayout());
- this.parentFrame = parentFrame;
- initilizePanel();
- }
- private void initilizePanel() {
- holonTree = generateTree();
- holonTree.setCellRenderer(new HolonJtreeRenderer());
- holonTree.getSelectionModel().setSelectionMode(
- TreeSelectionModel.SINGLE_TREE_SELECTION);
- ToolTipManager.sharedInstance().registerComponent(holonTree);
- TreeUtils.expand(holonTree);
- holonTree.setRootVisible(true);
- holonTree.setEditable(true);
- this.add(TreeUtils.makePanelFromTree(holonTree));
- }
- private JTree generateTree() {
- root = generateFromHolon(control.getModel().getStateHolon());
- return new JTree(root);
- }
-
- private DefaultMutableTreeNode generateFromHolon(Holon holon) {
- DefaultMutableTreeNode node = new DefaultMutableTreeNode(new HolonInfo(holon));
- for(Holon child : holon.getChildView()) {
- node.add(generateFromHolon(child));
- }
- return node;
- }
-
- private void updateTreeStructure() {
- holonTree.clearSelection();
- root.removeAllChildren();
- Holon holon = control.getModel().getStateHolon();
- for(Holon child : holon.getChildView()) {
- root.add(generateFromHolon(child));
- }
- holonTree.updateUI();
- TreeUtils.expand(holonTree);
- }
-
- interface HolonNode{
- public Icon getIcon();
- public String getToolTip();
- public void SetName(String name);
- }
- static final Icon holonIcon = new ImageIcon(ImageImport.loadImage("/Button_Images/holon_logic.png",16,16));
- static final Icon holonPhysicalIcon = new ImageIcon(ImageImport.loadImage("/Button_Images/holon_physical.png",16,16));
- static final String holonToolTip = "Holon";
- class HolonInfo implements HolonNode{
- private Holon holon;
- HolonInfo(Holon holon){
- this.holon = holon;
- }
- @Override
- public String toString(){
- return holon.name+" "+holon.getUniqueID();
- }
-
- public Holon getElement()
- {
- return holon;
- }
-
- public void AddElement(HolonElement element) {
- if(element.holon != null) {
- element.holon.removeElement(element);
- }
- holon.addElement(element);
- }
- public void AddHolon(Holon holon) {
- holon.removeFromParent();
- this.holon.addChild(holon);
- }
- @Override
- public Icon getIcon() {
- BufferedImage image = new BufferedImage(16, 16, BufferedImage.TYPE_INT_BGR);
- for(int i=0; i<16; i++) {
- for(int j=0; j<16; j++) {
- image.setRGB(i, j, parentFrame.holarchyPanel.coloredHolons.get(this.holon).getRGB());
- }
- }
- return new ImageIcon(image);
- // return holon.isPhysical? holonPhysicalIcon : holonIcon;
- }
- @Override
- public String getToolTip() {
- return holonToolTip;
- }
- @Override
- public void SetName(String name) {
- holon.name = name;
- }
-
- }
-
- //Cell Display
- class HolonJtreeRenderer extends DefaultTreeCellRenderer {
-
- public Component getTreeCellRendererComponent(
- JTree tree,
- Object value,
- boolean isSelected,
- boolean expanded,
- boolean leaf,
- int row,
- boolean hasFocus) {
- super.getTreeCellRendererComponent(tree, value, isSelected, expanded, leaf, row, hasFocus);
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
- HolonNode Node = (HolonNode) node.getUserObject();
- if(row != 0) {
- this.setIcon(Node.getIcon());
- this.setToolTipText(Node.getToolTip());
- }
- return this;
- }
- }
- }
|