Browse Source

componenttree后面还要修改

master
xiaoxia 8 years ago
parent
commit
0efb563d4c
  1. 182
      designer_form/src/com/fr/design/mainframe/ComponentTree.java

182
designer_form/src/com/fr/design/mainframe/ComponentTree.java

@ -40,7 +40,7 @@ public class ComponentTree extends JTree {
TreePath[] paths = getSelectedTreePath(); TreePath[] paths = getSelectedTreePath();
addTreeSelectionListener(designer); addTreeSelectionListener(designer);
setSelectionPaths(paths); setSelectionPaths(paths);
designer.addDesignerEditListener(new TreeDesignerEditAdapter()); designer.addDesignerEditListener(new TreeDesignerEditAdapter());
this.addMouseListener(new MouseAdapter() { this.addMouseListener(new MouseAdapter() {
@ -68,15 +68,19 @@ public class ComponentTree extends JTree {
setEditable(true); setEditable(true);
} }
public FormDesigner getDesigner() {
return designer;
}
/** /**
* 构造函数 * 构造函数
* *
* @param designer 设计界面组件 * @param designer 设计界面组件
* @param model 构造JTree的model * @param model 构造JTree的model
*/ */
public ComponentTree(FormDesigner designer,ComponentTreeModel model) { public ComponentTree(FormDesigner designer,ComponentTreeModel model) {
this(designer); this(designer);
this.setModel(model); this.setModel(model);
} }
@ -96,17 +100,17 @@ public class ComponentTree extends JTree {
return super.isPathEditable(path); return super.isPathEditable(path);
} }
/** /**
* 将值转换为文本 * 将值转换为文本
* @param value * @param value
* @param selected 是否选中 * @param selected 是否选中
* @param expanded 扩展 * @param expanded 扩展
* @param leaf 是否叶子 * @param leaf 是否叶子
* @param row * @param row
* @param hasFocus 是否焦点 * @param hasFocus 是否焦点
* *
* @return 返回文本 * @return 返回文本
*/ */
@Override @Override
public String convertValueToText(Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { public String convertValueToText(Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
if (value != null && value instanceof XCreator) { if (value != null && value instanceof XCreator) {
@ -115,25 +119,25 @@ public class ComponentTree extends JTree {
return super.convertValueToText(value, selected, expanded, leaf, row, hasFocus); return super.convertValueToText(value, selected, expanded, leaf, row, hasFocus);
} }
} }
public void setAndScrollSelectionPath(TreePath treepath) { public void setAndScrollSelectionPath(TreePath treepath) {
setSelectionPath(treepath); setSelectionPath(treepath);
scrollPathToVisible(treepath); scrollPathToVisible(treepath);
}
private void popupMenu(MouseEvent e) {
TreePath path = this.getSelectionPath();
if (path == null) {
return;
}
Component component = (Component) path.getLastPathComponent();
if (!(component instanceof XCreator)) {
return;
}
ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, (XCreator) component);
JPopupMenu menu = adapter.getContextPopupMenu(e);
menu.show(this, e.getX(), e.getY());
} }
private void popupMenu(MouseEvent e) {
TreePath path = this.getSelectionPath();
if (path == null) {
return;
}
Component component = (Component) path.getLastPathComponent();
if (!(component instanceof XCreator)) {
return;
}
ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, (XCreator) component);
JPopupMenu menu = adapter.getContextPopupMenu(e);
menu.show(this, e.getX(), e.getY());
}
/** /**
* 刷新 * 刷新
@ -145,51 +149,51 @@ public class ComponentTree extends JTree {
public TreePath[] getSelectedTreePath() { public TreePath[] getSelectedTreePath() {
XCreator[] creators = designer.getSelectionModel().getSelection().getSelectedCreators(); XCreator[] creators = designer.getSelectionModel().getSelection().getSelectedCreators();
TreePath[] paths = new TreePath[creators.length]; TreePath[] paths = new TreePath[creators.length];
for (int i = 0; i < paths.length; i++) { for (int i = 0; i < paths.length; i++) {
paths[i] = buildTreePath(creators[i]); paths[i] = buildTreePath(creators[i]);
} }
return paths; return paths;
} }
private class TreeDesignerEditAdapter implements DesignerEditListener { private class TreeDesignerEditAdapter implements DesignerEditListener {
@Override @Override
public void fireCreatorModified(DesignerEvent evt) { public void fireCreatorModified(DesignerEvent evt) {
if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) { if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) {
TreePath[] paths = getSelectedTreePath(); TreePath[] paths = getSelectedTreePath();
if (paths.length == 1) { if (paths.length == 1) {
setAndScrollSelectionPath(paths[0]); setAndScrollSelectionPath(paths[0]);
} else { } else {
setSelectionPaths(paths); setSelectionPaths(paths);
} }
} else if(evt.getCreatorEventID() == DesignerEvent.CREATOR_PASTED) { } else if(evt.getCreatorEventID() == DesignerEvent.CREATOR_PASTED) {
ComponentTree.this.refreshUI(); ComponentTree.this.refreshUI();
TreePath[] paths = getSelectedTreePath(); TreePath[] paths = getSelectedTreePath();
if (paths.length == 1) { if (paths.length == 1) {
setAndScrollSelectionPath(paths[0]); setAndScrollSelectionPath(paths[0]);
} else { } else {
setSelectionPaths(paths); setSelectionPaths(paths);
} }
ComponentTree.this.repaint(); ComponentTree.this.repaint();
} else { } else {
ComponentTree.this.refreshUI(); ComponentTree.this.refreshUI();
ComponentTree.this.repaint(); ComponentTree.this.repaint();
} }
} }
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
return o.getClass() == this.getClass(); return o.getClass() == this.getClass();
} }
} }
/** /**
@ -211,11 +215,11 @@ public class ComponentTree extends JTree {
paths[i] = buildTreePath(searchList.get(i)); paths[i] = buildTreePath(searchList.get(i));
} }
if(paths.length > 0) { if(paths.length > 0) {
setAndScrollSelectionPath(paths[0]); setAndScrollSelectionPath(paths[0]);
} else { } else {
setSelectionPath(); setSelectionPath();
} }
return paths; return paths;
} }
@ -248,7 +252,7 @@ public class ComponentTree extends JTree {
* 触发 * 触发
*/ */
public void fireTreeChanged() { public void fireTreeChanged() {
designer.refreshDesignerUI(); designer.refreshDesignerUI();
} }
/** /**
@ -267,14 +271,14 @@ public class ComponentTree extends JTree {
ArrayList<Component> path = new ArrayList<Component>(); ArrayList<Component> path = new ArrayList<Component>();
Component parent = comp; Component parent = comp;
while (parent != null) { while (parent != null) {
XCreator creator = (XCreator) parent; XCreator creator = (XCreator) parent;
path.add(0, parent); path.add(0, parent);
if (creator != comp ) { if (creator != comp ) {
creator.notShowInComponentTree(path); creator.notShowInComponentTree(path);
} }
parent = parent.getParent(); parent = parent.getParent();
} }
Object[] components = path.toArray(); Object[] components = path.toArray();
return new TreePath(components); return new TreePath(components);
} }

Loading…
Cancel
Save