Browse Source

控件树放到下拉框

master
xiaoxia 8 years ago
parent
commit
1b0ed5b2fb
  1. 314
      designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java

314
designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java

@ -1,12 +1,14 @@
package com.fr.design.mainframe;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import com.fr.design.actions.community.NeedAction;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.mainframe.widget.UITreeComboBox;
import com.fr.design.parameter.HierarchyTreePane;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XWParameterLayout;
@ -43,11 +45,13 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree
public static final int NODE_LENGTH = 2;
public static final int PARA = 0;
public static final int BODY = 1;
private ComponentTree componentTree;
private UITreeComboBox treeComboBox;
private JPanel widgetPane = FRGUIPaneFactory.createBorderLayout_L_Pane();
// richer:搜寻树节点的的文本框
private UITextField searchTextField;
private SearchResultPane searchResult;
// private UITextField searchTextField;
// private SearchResultPane searchResult;
public static FormHierarchyTreePane getInstance() {
return HOLDER.singleton;
@ -86,8 +90,8 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree
*/
public void clearDockingView() {
this.componentTree = null;
this.searchTextField = null;
this.searchResult = null;
// this.searchTextField = null;
// this.searchResult = null;
add(new JScrollPane(), BorderLayout.CENTER);
}
@ -103,53 +107,65 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree
return;
}
componentTree = new ComponentTree(formDesigner);
ComponentTreeModel treeModel = (ComponentTreeModel) componentTree.getModel();
XCreator root = (XCreator)treeModel.getRoot();
int childCount = treeModel.getChildCount(root);
//按照节点添加para在下的,但这里需要para节点在上,调整一下位置
if(childCount == NODE_LENGTH){
adjustPosition(treeModel,formDesigner);
adjustPosition(treeModel, formDesigner);
}
widgetPane.setBorder(BorderFactory.createEmptyBorder(3, 2, 3, 0));
add(widgetPane, BorderLayout.NORTH);
if(treeComboBox == null) {
widgetPane.add(new UILabel(Inter.getLocText("FR-Designer-Selected_Widget") + " ",
SwingConstants.HORIZONTAL), BorderLayout.WEST);
treeComboBox = new UITreeComboBox(componentTree);
widgetPane.add(treeComboBox, BorderLayout.CENTER);
add(widgetPane, BorderLayout.CENTER);
}
UIScrollPane scrollPane = new UIScrollPane(componentTree);
scrollPane.setBorder(null);
add(scrollPane, BorderLayout.CENTER);
JPanel searchPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
add(searchPane, BorderLayout.NORTH);
searchPane.add(new UILabel(Inter.getLocText("FR-Designer_Search") + ":",
SwingConstants.HORIZONTAL), BorderLayout.WEST);
searchTextField = new UITextField();
searchPane.add(searchTextField, BorderLayout.CENTER);
searchTextField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
search();
}
@Override
public void removeUpdate(DocumentEvent e) {
search();
}
@Override
public void changedUpdate(DocumentEvent e) {
search();
}
private void search() {
String text = searchTextField.getText();
if (StringUtils.isEmpty(text)) {
removeSearchResult();
} else {
populate(componentTree.search(text));
}
}
});
// UIScrollPane scrollPane = new UIScrollPane(componentTree);
// scrollPane.setBorder(null);
// add(scrollPane, BorderLayout.CENTER);
// JPanel searchPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
// add(searchPane, BorderLayout.NORTH);
// searchPane.add(new UILabel(Inter.getLocText("FR-Designer_Search") + ":",
// SwingConstants.HORIZONTAL), BorderLayout.WEST);
// searchTextField = new UITextField();
// searchPane.add(searchTextField, BorderLayout.CENTER);
// searchTextField.getDocument().addDocumentListener(new DocumentListener() {
// @Override
// public void insertUpdate(DocumentEvent e) {
// search();
// }
//
// @Override
// public void removeUpdate(DocumentEvent e) {
// search();
// }
//
// @Override
// public void changedUpdate(DocumentEvent e) {
// search();
// }
//
// private void search() {
// String text = searchTextField.getText();
// if (StringUtils.isEmpty(text)) {
// removeSearchResult();
// } else {
// populate(componentTree.search(text));
// }
// }
// });
}
/**
* 调整结构树para和body的位置
*
*
* @param treeModel
* @param formDesigner
*/
@ -176,114 +192,114 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree
/**
* 删除搜索结果
*/
public void removeSearchResult() {
componentTree.setSelectionPath(null);
if (searchResult != null) {
this.remove(searchResult);
}
}
public void populate(TreePath[] treepath) {
if (this.searchResult == null) {
searchResult = new SearchResultPane();
}
if (((BorderLayout) getLayout()).getLayoutComponent(BorderLayout.SOUTH) == null) {
add(searchResult, BorderLayout.SOUTH);
}
searchResult.populate(treepath);
}
private class SearchResultPane extends JPanel {
private UILabel resultLabel = new UILabel();
private BackAction backAction = new BackAction();
private ForWardAction forwardAction = new ForWardAction();
private TreePath[] tree;
private int number = 0;
SearchResultPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
JPanel actionJPanel = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane();
addButtonToJPanel(actionJPanel, backAction.createToolBarComponent());
addButtonToJPanel(actionJPanel, forwardAction.createToolBarComponent());
this.add(actionJPanel, BorderLayout.EAST);
this.add(resultLabel, BorderLayout.WEST);
}
private void addButtonToJPanel(JPanel actionLabel,
JComponent toolBarComponent) {
actionLabel.add(toolBarComponent);
if (toolBarComponent instanceof UIButton) {
toolBarComponent.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
}
}
public void populate(TreePath[] search) {
tree = search;
resultLabel.setText(Inter.getLocText("FR-Designer_Total") + ":" + tree.length);
number = 0;
check();
}
public void next() {
if (number < tree.length - 1) {
componentTree.setAndScrollSelectionPath(tree[++number]);
}
check();
}
public void last() {
if (number > 0) {
componentTree.setAndScrollSelectionPath(tree[--number]);
}
check();
}
public void check() {
if (tree.length < 1) {
backAction.setEnabled(false);
forwardAction.setEnabled(false);
} else {
backAction.setEnabled(number > 0);
forwardAction.setEnabled(number < tree.length - 1);
}
}
}
private class BackAction extends UpdateAction {
public BackAction() {
this.setName(Inter.getLocText("Form-Hierarchy_Tree_Last"));
this.setSmallIcon(BaseUtils
.readIcon("com/fr/design/images/m_help/back.png"));
this.setEnabled(false);
}
public void actionPerformed(ActionEvent e) {
searchResult.last();
}
}
private class ForWardAction extends UpdateAction {
public ForWardAction() {
this.setName(Inter.getLocText("Form-Hierarchy_Tree_Next"));
this.setSmallIcon(BaseUtils
.readIcon("com/fr/design/images/m_help/forward.png"));
this.setEnabled(false);
}
public void actionPerformed(ActionEvent e) {
searchResult.next();
}
}
// public void removeSearchResult() {
// componentTree.setSelectionPath(null);
// if (searchResult != null) {
// this.remove(searchResult);
// }
// }
//
// public void populate(TreePath[] treepath) {
// if (this.searchResult == null) {
// searchResult = new SearchResultPane();
// }
// if (((BorderLayout) getLayout()).getLayoutComponent(BorderLayout.SOUTH) == null) {
// add(searchResult, BorderLayout.SOUTH);
// }
// searchResult.populate(treepath);
// }
// private class SearchResultPane extends JPanel {
// private UILabel resultLabel = new UILabel();
// private BackAction backAction = new BackAction();
// private ForWardAction forwardAction = new ForWardAction();
// private TreePath[] tree;
// private int number = 0;
//
// SearchResultPane() {
// this.setLayout(FRGUIPaneFactory.createBorderLayout());
// JPanel actionJPanel = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane();
// addButtonToJPanel(actionJPanel, backAction.createToolBarComponent());
// addButtonToJPanel(actionJPanel, forwardAction.createToolBarComponent());
//
// this.add(actionJPanel, BorderLayout.EAST);
// this.add(resultLabel, BorderLayout.WEST);
// }
//
// private void addButtonToJPanel(JPanel actionLabel,
// JComponent toolBarComponent) {
// actionLabel.add(toolBarComponent);
// if (toolBarComponent instanceof UIButton) {
// toolBarComponent.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
// }
// }
//
// public void populate(TreePath[] search) {
// tree = search;
// resultLabel.setText(Inter.getLocText("FR-Designer_Total") + ":" + tree.length);
// number = 0;
// check();
// }
//
// public void next() {
// if (number < tree.length - 1) {
// componentTree.setAndScrollSelectionPath(tree[++number]);
// }
// check();
// }
//
// public void last() {
// if (number > 0) {
// componentTree.setAndScrollSelectionPath(tree[--number]);
// }
// check();
// }
//
// public void check() {
// if (tree.length < 1) {
// backAction.setEnabled(false);
// forwardAction.setEnabled(false);
// } else {
// backAction.setEnabled(number > 0);
// forwardAction.setEnabled(number < tree.length - 1);
// }
//
// }
//}
// private class BackAction extends UpdateAction {
//
// public BackAction() {
// this.setName(Inter.getLocText("Form-Hierarchy_Tree_Last"));
// this.setSmallIcon(BaseUtils
// .readIcon("com/fr/design/images/m_help/back.png"));
// this.setEnabled(false);
// }
//
// public void actionPerformed(ActionEvent e) {
// searchResult.last();
// }
// }
//
// private class ForWardAction extends UpdateAction {
//
// public ForWardAction() {
// this.setName(Inter.getLocText("Form-Hierarchy_Tree_Next"));
// this.setSmallIcon(BaseUtils
// .readIcon("com/fr/design/images/m_help/forward.png"));
// this.setEnabled(false);
// }
//
// public void actionPerformed(ActionEvent e) {
// searchResult.next();
// }
// }
@Override
/**
* 位置
*
*
* @return 位置
*/
public Location preferredLocation() {

Loading…
Cancel
Save