/*
* Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org
* Use is subject to license terms. See license.txt.
*/
package org.beanfabrics.swing.customizer.path;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.UIManager;
import org.beanfabrics.Path;
import org.beanfabrics.meta.PathNode;
import org.beanfabrics.model.AbstractPM;
import org.beanfabrics.model.IconTextPM;
import org.beanfabrics.model.PMManager;
import org.beanfabrics.model.TextPM;
/**
* The {@link PathNodePM} is a presentation model presenting a
* {@link PathNode}.
*
* @author Michael Karneim
*/
public class PathNodePM extends AbstractPM {
private static URL LEAF_ICON_URL = PathNodePM.class.getResource("/org/beanfabrics/model/model16x16.gif");
IconTextPM name = new IconTextPM();
TextPM pathString = new TextPM();
TextPM type = new TextPM();
private PathNode pathNode;
private Path pathObj;
public PathNodePM() {
PMManager.setup(this);
name.setEditable(false);
pathString.setEditable(false);
type.setEditable(false);
}
public PathNode getData() {
return pathNode;
}
public void setData(PathNode aPathNode) {
this.pathNode = aPathNode;
this.pathObj = this.pathNode.getPath();
name.setText(aPathNode.getName());
pathString.setText(Path.getPathString(pathObj));
name.setDescription(pathString.getText());
String classname = this.pathNode.getTypeInfo().getName();
type.setText(getBasename(classname));
type.setDescription(classname);
if (aPathNode.hasChildren()) {
this.name.setIcon(UIManager.getIcon("Tree.closedIcon"));
} else {
this.name.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().getImage(LEAF_ICON_URL)));
}
}
private static String getBasename(String classname) {
int idx = classname.lastIndexOf('$');
if (idx == -1) {
idx = classname.lastIndexOf('.');
}
if (idx == -1) {
return classname;
} else {
return classname.substring(idx + 1);
}
}
}