001: package org.osbl.client.wings.form;
002:
003: import org.wings.*;
004: import org.wings.event.SMouseListener;
005: import org.wings.event.SMouseEvent;
006: import org.wings.border.SLineBorder;
007: import org.osbl.client.wings.shell.Environment;
008: import org.osbl.client.action.ObjectAction;
009: import org.osbl.client.action.ObjectActionEvent;
010:
011: import javax.swing.tree.*;
012: import java.awt.*;
013: import java.util.*;
014: import java.util.List;
015:
016: /**
017: * Created by IntelliJ IDEA.
018: * User: hengels
019: * Date: Feb 13, 2007
020: * Time: 11:49:26 AM
021: * To change this template use File | Settings | File Templates.
022: */
023: public abstract class GenericObjectTreeList extends STree implements
024: ObjectList {
025: protected DelegateEnvironment environment = new DelegateEnvironment();
026: Object current;
027: private SScrollPane scrollPane;
028:
029: public Environment getEnvironment() {
030: getComponent();
031: return environment;
032: }
033:
034: public SComponent getComponent() {
035: if (scrollPane == null) {
036: scrollPane = new SScrollPane(this );
037: scrollPane.setPreferredSize(SDimension.FULLAREA);
038: scrollPane.setMode(SScrollPane.MODE_COMPLETE);
039: scrollPane.setBackground(Color.WHITE);
040: scrollPane.setBorder(new SLineBorder(new Color(187, 187,
041: 187), 1));
042: }
043: return scrollPane;
044: }
045:
046: public Class getType() {
047: return String.class;
048: }
049:
050: public GenericObjectTreeModel getModel() {
051: return (GenericObjectTreeModel) super .getModel();
052: }
053:
054: public Object getCurrent() {
055: return current;
056: }
057:
058: public void setCurrent(Object current) {
059: this .current = current;
060: GenericObjectTreeNode node = (GenericObjectTreeNode) current;
061: TreePath path = node != null ? pathForNode(node) : null;
062: if (path != null && path.getParentPath() != null)
063: expandRow(path.getParentPath());
064: setSelectionPath(path);
065: }
066:
067: private TreePath pathForNode(GenericObjectTreeNode node) {
068: java.util.List<GenericObjectTreeNode> list = new ArrayList<GenericObjectTreeNode>();
069: do {
070: list.add(node);
071: node = node.getParent();
072: } while (node != null);
073: Collections.reverse(list);
074: return new TreePath(list.toArray());
075: }
076:
077: public boolean hasNext() {
078: return false;
079: }
080:
081: public void next() {
082: }
083:
084: public boolean hasPrevious() {
085: return false;
086: }
087:
088: public void previous() {
089: }
090:
091: public void setSelectionMode(int selectionMode) {
092: switch (selectionMode) {
093: case SINGLE_SELECTION:
094: getSelectionModel().setSelectionMode(
095: TreeSelectionModel.SINGLE_TREE_SELECTION);
096: break;
097: case MULTIPLE_SELECTION:
098: getSelectionModel().setSelectionMode(
099: TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
100: break;
101: }
102: }
103:
104: public void setSelectedObject(Object object) {
105: }
106:
107: public Object getSelectedObject() {
108: return null;
109: }
110:
111: public void setSelectedObjects(List objects) {
112: }
113:
114: public List getSelectedObjects() {
115: return null;
116: }
117:
118: public void setLinkAction(String name, final ObjectAction linkAction) {
119: addMouseListener(new SMouseListener() {
120: public void mouseClicked(SMouseEvent e) {
121: int row = getRowForLocation(e.getPoint());
122: TreePath path = getPathForRow(row);
123: GenericObjectTreeNode node = (GenericObjectTreeNode) path
124: .getLastPathComponent();
125: linkAction.actionPerformed(new ObjectActionEvent(
126: GenericObjectTreeList.this, node));
127: e.consume();
128: }
129: });
130: }
131: }
|