
com.yiwowang.intellij.finding.SearchComponent Maven / Gradle / Ivy
The newest version!
package com.yiwowang.intellij.finding;
import com.yiwowang.intellij.finding.base.bean.Component;
import com.yiwowang.intellij.finding.menu.ContextMenu;
import com.yiwowang.intellij.finding.wrap.DocumentListenerWrap;
import org.apache.commons.lang.StringUtils;
import javax.swing.event.DocumentEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
public class SearchComponent {
public static final int TYPE_DEP_ALL = 0;
public static final int TYPE_DEP_FIRST = 1;
public static final int TYPE_DEP_CODE = 2;
protected SearchForm form;
private List list;
public SearchComponent(SearchForm form) {
this.form = form;
initComponents();
setData(form.context.projectFinding.getComponents());
}
private void initComponents() {
form.componentInput.getDocument().addDocumentListener(new DocumentListenerWrap() {
@Override
public void onChange(DocumentEvent e) {
search();
}
});
form.dependentChk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setData(list);
}
});
form.componentTree.addMouseListener(new ContextMenu(form.componentTree));
}
private void search() {
String input = StringUtils.deleteWhitespace(form.componentInput.getText());
if (!StringUtils.isEmpty(input)) {
List list = form.context.projectFinding
.searchComponent(input, true, -1);
setData(list);
} else {
setData(form.context.projectFinding.getComponents());
}
}
private void setData(List list) {
if (list == null) {
this.list = new ArrayList<>();
} else {
this.list = list;
}
DefaultMutableTreeNode top;
if (form.dependentChk.isSelected()) {
top = getDependentNode(list);
} else {
top = getDependencyNode(list);
}
form.componentTree.setModel(new DefaultTreeModel(top, false));
}
private DefaultMutableTreeNode getDependencyNode(List list) {
DefaultMutableTreeNode top = new DefaultMutableTreeNode("");
for (Component component : list) {
String componentName = component.name;
Collection refComponents = getRefComponents(component);
DefaultMutableTreeNode componentNode = new DefaultMutableTreeNode(componentName);
top.add(componentNode);
for (String ref : refComponents) {
if (!StringUtils.equals(ref, componentName)) {
componentNode.add(new DefaultMutableTreeNode(ref));
}
}
}
top.setUserObject("result size:" + top.getChildCount());
return top;
}
private DefaultMutableTreeNode getDependentNode(List list) {
DefaultMutableTreeNode top = new DefaultMutableTreeNode("");
for (Component component : list) {
String componentName = component.name;
DefaultMutableTreeNode componentNode = new DefaultMutableTreeNode(componentName);
top.add(componentNode);
for (Component component2 : this.list) {
if (StringUtils.equals(component2.name, componentName)) {
continue;
}
Collection refComponents = getRefComponents(component2);
if (refComponents.contains(componentName)) {
componentNode.add(new DefaultMutableTreeNode(component2.name));
}
}
}
top.setUserObject("result size:" + top.getChildCount());
return top;
}
private int getDepType() {
if (form.depAllRbtn.isSelected()) {
return TYPE_DEP_ALL;
} else if (form.depFirstRbtn.isSelected()) {
return TYPE_DEP_FIRST;
} else if (form.depCodeRbtn.isSelected()) {
return TYPE_DEP_CODE;
}
return -1;
}
private Collection getRefComponents(Component component) {
Collection refComponents = new HashSet<>();
switch (getDepType()) {
case TYPE_DEP_ALL:
if (component.depRefFull != null) {
refComponents.addAll(component.depRefFull);
}
break;
case TYPE_DEP_FIRST:
if (component.depRef != null) {
for (Component ref : component.depRef) {
refComponents.add(ref.name);
}
}
break;
case TYPE_DEP_CODE:
if (component.codeRef != null) {
for (Component ref : component.codeRef) {
refComponents.add(ref.name);
}
}
break;
}
return refComponents;
}
public void refreshData() {
search();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy