Moderator: JIDE Support
/*
* @(#)FilterPanel.java 6/24/2009
*
* Copyright 2002 - 2009 JIDE Software Inc. All rights reserved.
*
*/
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.LinkedHashSet;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import com.jidesoft.dialog.ButtonPanel;
import com.jidesoft.swing.*;
import com.jidesoft.tree.QuickTreeFilterField;
import com.jidesoft.tree.TreeUtils;
import com.jidesoft.tree.FilterableTreeModel;
/**
* @author Krishna_Hotha
* @date 21 may 2009
* <p/>
* Class is used to Filter the information to be displayed In a tree
*/
public class FilterPanel extends JFrame {
/**
* @param args
*/
private CheckBoxTree _tree;
private static FilterPanel theInstance = null;
private QuickTreeFilterField filterData = new QuickTreeFilterField();
private LinkedHashSet<Object> selectedPaths = new LinkedHashSet<Object>();
public static FilterPanel getInstance() {
if (theInstance == null) {
theInstance = new FilterPanel();
}
return theInstance;
}
private FilterPanel() {
// TODO Auto-generated constructor stub
// EscapeButtonAction.trap((JComponent) this.getContentPane(), new EscapeButtonAction(this));
this.setSize(new Dimension(400, 400));
}
public JPanel getDemoPanel() {
//JTabbedPane jpane=new JTabbedPane("Graphic");
JPanel childPanel = new JPanel(new BorderLayout(2, 2));
JPanel masterPanel = new JPanel(new BorderLayout(6, 6));
//here it will compute and display the data for tree
_tree = displayTree();
masterPanel.add(getSearchPanel(), BorderLayout.BEFORE_FIRST_LINE);
masterPanel.add(getTreePanel());
masterPanel.add(getButtonPanel(), BorderLayout.PAGE_END);
childPanel.add(new JPanel(), BorderLayout.BEFORE_LINE_BEGINS);
childPanel.add(masterPanel, BorderLayout.CENTER);
childPanel.add(new JPanel(), BorderLayout.AFTER_LINE_ENDS);
childPanel.add(new JPanel(), BorderLayout.PAGE_END);
// masterPanel.add(new JPanel());
return childPanel;
}
public JPanel getSearchPanel() {
JPanel quickSearchPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
quickSearchPanel.setBorder(new JideTitledBorder(new PartialEtchedBorder(PartialEtchedBorder.LOWERED, PartialSide.NORTH), "Find", JideTitledBorder.LEADING, JideTitledBorder.ABOVE_TOP));
filterData = new QuickTreeFilterField(_tree.getModel());
filterData.setHideEmptyParentNode(true);
quickSearchPanel.add(filterData);
_tree = new CheckBoxTree(filterData.getDisplayTreeModel()) {
@Override
protected CheckBoxTreeSelectionModel createCheckBoxTreeSelectionModel(TreeModel model) {
return new CheckBoxTreeSelectionModel(model) {
@Override
public void addSelectionPaths(TreePath[] paths) {
boolean old = isDigIn();
if (_tree.getModel() instanceof FilterableTreeModel) {
setDigIn(false);
}
super.addSelectionPaths(paths);
if (_tree.getModel() instanceof FilterableTreeModel) {
setDigIn(old);
}
}
@Override
public boolean isPartiallySelected(TreePath path) {
boolean result = super.isPartiallySelected(path);
if (!result && super.isPathSelected(path) && _tree.getModel() instanceof FilterableTreeModel && ((DefaultMutableTreeNode) path.getLastPathComponent()).getChildCount() > 0) {
if (((FilterableTreeModel) _tree.getModel()).getFilters() != null) {
result = true;
}
}
return result;
}
@Override
public boolean isPathSelected(TreePath path, boolean digIn) {
if (path == null) {
return false;
}
if (!digIn)
return super.isPathSelected(path);
TreePath parent = path;
while (parent != null && !super.isPathSelected(parent)) {
parent = parent.getParentPath();
}
if (parent != null) {
if (parent == path && _tree.getModel() instanceof FilterableTreeModel && ((DefaultMutableTreeNode) parent.getLastPathComponent()).getChildCount() > 0) {
return false;
}
else {
return true;
}
}
if (getModel() == null) {
return true;
}
Object node = path.getLastPathComponent();
if (getModel().getChildCount(node) == 0) {
return false;
}
// find out if all children are selected
boolean allChildrenSelected = true;
for (int i = 0; i < getModel().getChildCount(node); i++) {
Object childNode = getModel().getChild(node, i);
if (!isPathSelected(path.pathByAddingChild(childNode), true)) {
allChildrenSelected = false;
break;
}
}
// if all children are selected, let's select the parent path only
if (_tree.isCheckBoxVisible(path) && allChildrenSelected && !(_tree.getModel() instanceof FilterableTreeModel)) {
addSelectionPaths(new TreePath[]{path});
}
return allChildrenSelected;
}
};
}
};
_tree.setRootVisible(false);
_tree.setShowsRootHandles(true);
filterData.setTree(_tree);
SearchableUtils.installSearchable(_tree);
TreeUtils.expandAll(_tree, true);
return quickSearchPanel;
}
public JPanel getTreePanel() {
JPanel treePanel = new JPanel(new BorderLayout(2, 2));
treePanel.setBorder(BorderFactory.createCompoundBorder(
new JideTitledBorder(new PartialEtchedBorder(
PartialEtchedBorder.LOWERED, PartialSide.NORTH),
"Value Lever Information", JideTitledBorder.LEADING,
JideTitledBorder.ABOVE_TOP), BorderFactory
.createEmptyBorder(0, 0, 0, 0)));
treePanel.add(new JScrollPane(_tree));
return treePanel;
}
public JPanel getButtonPanel() {
JPanel _buttonPanel = new ButtonPanel();
JButton okButton = new JButton("Ok");
_buttonPanel.add(okButton, ButtonPanel.OTHER_BUTTON);
JButton cancelButton = new JButton("Cancel");
_buttonPanel.add(cancelButton, ButtonPanel.OTHER_BUTTON);
return _buttonPanel;
}
//code is used to display a tree
public CheckBoxTree displayTree() {
DefaultTreeModel treeModel = null;
DefaultMutableTreeNode root = new DefaultMutableTreeNode("VRM90");
for (int i = 0; i < 3; i++) {
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Child1");
for (int j = 0; j < 5; j++) {
DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode("subChild" + j);
child1.add(treeNode);
}
root.add(child1);
}
treeModel = new DefaultTreeModel(root);
if (treeModel != null)
_tree = new CheckBoxTree(treeModel);
_tree.setRootVisible(false);
TreeUtils.expandAll(_tree, true);
return _tree;
}
/*
May 25, 2009
TODO// TODO Auto-generated method stub
*/
//static int count=0;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
}
catch (Exception e) {
e.printStackTrace();
}
FilterPanel fi = FilterPanel.getInstance();
fi.setTitle("VRM Filter Panel");
fi.setResizable(false);
fi.add(fi.getDemoPanel());
fi.setSize(new Dimension(400, 400));
fi.setVisible(true);
}
public LinkedHashSet<Object> getSelectedPaths() {
return selectedPaths;
}
public void setSelectedPaths(LinkedHashSet<Object> selectedPaths) {
this.selectedPaths = selectedPaths;
}
}
if (parent == path && _tree.getModel() instanceof FilterableTreeModel && ((DefaultMutableTreeNode) parent.getLastPathComponent()).getChildCount() > 0) {
if (parent == path && _tree.getModel() instanceof FilterableTreeModel && ((DefaultMutableTreeNode) parent.getLastPathComponent()).getChildCount() > 0 && ((FilterableTreeModel) _tree.getModel()).getFilters().length > 0) {
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedHashSet;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import com.jidesoft.dialog.ButtonPanel;
import com.jidesoft.swing.*;
import com.jidesoft.tree.FilterableCheckBoxTreeSelectionModel;
import com.jidesoft.tree.QuickTreeFilterField;
import com.jidesoft.tree.TreeUtils;
import com.jidesoft.tree.FilterableTreeModel;
/**
* @author Krishna_Hotha
* @date 21 may 2009
* <p/>
* Class is used to Filter the information to be displayed In a tree
*/
public class FilterTree extends JFrame {
/**
* @param args
*/
private CheckBoxTree _tree;
private static FilterTree theInstance = null;
private QuickTreeFilterField filterData = new QuickTreeFilterField();
private LinkedHashSet<Object> selectedPaths = new LinkedHashSet<Object>();
public static FilterTree getInstance() {
if (theInstance == null) {
theInstance = new FilterTree();
}
return theInstance;
}
public FilterTree() {
// TODO Auto-generated constructor stub
// EscapeButtonAction.trap((JComponent) this.getContentPane(), new EscapeButtonAction(this));
this.setSize(new Dimension(400, 400));
}
public JPanel getDemoPanel() {
//JTabbedPane jpane=new JTabbedPane("Graphic");
JPanel childPanel = new JPanel(new BorderLayout(2, 2));
JPanel masterPanel = new JPanel(new BorderLayout(6, 6));
//here it will compute and display the data for tree
masterPanel.add(getSearchPanel(displayTree()), BorderLayout.BEFORE_FIRST_LINE);
masterPanel.add(getTreePanel());
masterPanel.add(getButtonPanel(), BorderLayout.PAGE_END);
childPanel.add(new JPanel(), BorderLayout.BEFORE_LINE_BEGINS);
childPanel.add(masterPanel, BorderLayout.CENTER);
childPanel.add(new JPanel(), BorderLayout.AFTER_LINE_ENDS);
childPanel.add(new JPanel(), BorderLayout.PAGE_END);
// masterPanel.add(new JPanel());
return childPanel;
}
public JPanel getSearchPanel(DefaultTreeModel dfdm) {
JPanel quickSearchPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
quickSearchPanel.setBorder(new JideTitledBorder(new PartialEtchedBorder(PartialEtchedBorder.LOWERED, PartialSide.NORTH), "Find", JideTitledBorder.LEADING, JideTitledBorder.ABOVE_TOP));
filterData = new QuickTreeFilterField(dfdm);
filterData.setHideEmptyParentNode(true);
quickSearchPanel.add(filterData);
_tree = new CheckBoxTree(filterData.getDisplayTreeModel()) {
@Override
protected CheckBoxTreeSelectionModel createCheckBoxTreeSelectionModel(TreeModel model) {
return new FilterableCheckBoxTreeSelectionModel(model) ;
}
};
_tree.setRootVisible(false);
_tree.setShowsRootHandles(true);
filterData.setTree(_tree);
SearchableUtils.installSearchable(_tree);
TreeUtils.expandAll(_tree, true);
return quickSearchPanel;
}
public JPanel getTreePanel() {
JPanel treePanel = new JPanel(new BorderLayout(2, 2));
treePanel.setBorder(BorderFactory.createCompoundBorder(
new JideTitledBorder(new PartialEtchedBorder(
PartialEtchedBorder.LOWERED, PartialSide.NORTH),
"Value Lever Information", JideTitledBorder.LEADING,
JideTitledBorder.ABOVE_TOP), BorderFactory
.createEmptyBorder(0, 0, 0, 0)));
treePanel.add(new JScrollPane(_tree));
return treePanel;
}
public JPanel getButtonPanel() {
JPanel _buttonPanel = new ButtonPanel();
JButton okButton = new JButton("Ok");
_buttonPanel.add(okButton, ButtonPanel.OTHER_BUTTON);
okButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
DefaultTreeModel dpdm=(DefaultTreeModel)filterData.getTreeModel();
if (_tree.getSelectionPath() != null) {
TreePath treePath = _tree.getSelectionPath();
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath.getLastPathComponent();
dpdm.insertNodeInto(new DefaultMutableTreeNode("he"), node, 0);
}
//dpdm.nodeChanged( new DefaultMutableTreeNode(dpdm.getRoot().toString()));
/*_tree.setModel(dpdm);
_tree.updateUI();*/
}
});
JButton cancelButton = new JButton("Cancel");
_buttonPanel.add(cancelButton, ButtonPanel.OTHER_BUTTON);
return _buttonPanel;
}
//code is used to display a tree
public DefaultTreeModel displayTree() {
DefaultTreeModel treeModel = null;
DefaultMutableTreeNode root = new DefaultMutableTreeNode("VRM90");
for (int i = 0; i < 3; i++) {
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Child1");
for (int j = 0; j < 5; j++) {
DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode("subChild" + j);
child1.add(treeNode);
}
root.add(child1);
}
treeModel = new DefaultTreeModel(root);
return treeModel;
}
/*
May 25, 2009
TODO// TODO Auto-generated method stub
*/
//static int count=0;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
}
catch (Exception e) {
e.printStackTrace();
}
FilterTree fi = FilterTree.getInstance();
fi.setTitle("VRM Filter Panel");
fi.setResizable(false);
fi.add(fi.getDemoPanel());
fi.setSize(new Dimension(400, 400));
fi.setVisible(true);
}
public LinkedHashSet<Object> getSelectedPaths() {
return selectedPaths;
}
public void setSelectedPaths(LinkedHashSet<Object> selectedPaths) {
this.selectedPaths = selectedPaths;
}
}
_tree = new CheckBoxTree(filterData.getDisplayTreeModel()) {
@Override
protected CheckBoxTreeSelectionModel createCheckBoxTreeSelectionModel(TreeModel model) {
return new FilterableCheckBoxTreeSelectionModel(model) {
@Override
protected boolean areSiblingsSelected(TreePath path) {
return path.getParentPath() != null && super.areSiblingsSelected(path);
}
};
}
};
Return to JIDE Common Layer Open Source Project Discussion (Community Driven)
Users browsing this forum: Bing [Bot] and 6 guests