import com.intellij.util.IncorrectOperationException;
import com.intellij.util.NullableFunction;
import com.intellij.util.containers.ContainerUtil;
+import com.intellij.util.containers.Convertor;
import com.intellij.util.ui.AbstractTableCellEditor;
import com.intellij.util.ui.ColumnInfo;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil;
import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements.*;
import org.jetbrains.plugins.groovy.debugger.fragments.GroovyCodeFragment;
-import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
-import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement;
import javax.swing.*;
import javax.swing.event.CellEditorListener;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
myBigPanel.setBackground(UIUtil.getFieldForegroundColor());
- final DynamicFilterComponent filter = new DynamicFilterComponent(GroovyBundle.message("dynamic.toolwindow.property.filter"), 10);
- filter.setBackground(UIUtil.getLabelBackground());
-
final JPanel panel = new JPanel(new BorderLayout());
myBigPanel.add(panel, BorderLayout.CENTER);
- panel.add(filter, BorderLayout.NORTH);
myTreeTablePanel = new JPanel(new BorderLayout());
rebuildTreePanel();
myTreeTable = new MyTreeTable(myTreeTableModel);
+ new TreeTableSpeedSearch(myTreeTable, new Convertor<TreePath, String>() {
+ @Override
+ public String convert(TreePath o) {
+ final Object node = o.getLastPathComponent();
+ if (node instanceof DefaultMutableTreeNode) {
+ final Object object = ((DefaultMutableTreeNode)node).getUserObject();
+ if (object instanceof DNamedElement) {
+ return ((DNamedElement)object).getName();
+ }
+ }
+ return "";
+ }
+ });
+
DefaultActionGroup group = new DefaultActionGroup();
group.add(ActionManager.getInstance().getAction(RemoveDynamicAction.GROOVY_DYNAMIC_REMOVE));
PopupHandler.installUnknownPopupHandler(myTreeTable, group, ActionManager.getInstance());
int row,
int column) {
if (value instanceof String) {
- final GrTypeElement typeElement;
try {
- typeElement = GroovyPsiElementFactory.getInstance(myProject).createTypeElement(((String)value));
- if (typeElement != null){
- String shortName = typeElement.getType().getPresentableText();
- return new JLabel(shortName);
- }
+ final PsiType type = JavaPsiFacade.getElementFactory(myProject).createTypeFromText((String)value, null);
+ String shortName = type.getPresentableText();
+ return new JLabel(shortName);
}
catch (IncorrectOperationException e) {
LOG.debug("Type cannot be created", e);
}
try {
- GrTypeElement typeElement = GroovyPsiElementFactory.getInstance(myProject).createTypeElement(newTypeValue);
- if (typeElement != null) {
- String canonical = typeElement.getType().getCanonicalText();
- if (canonical != null) newTypeValue = canonical;
- }
+ final PsiType type = JavaPsiFacade.getElementFactory(myProject).createTypeFromText(newTypeValue, null);
+ String canonical = type.getCanonicalText();
+ if (canonical != null) newTypeValue = canonical;
}
catch (IncorrectOperationException ex) {
//do nothing in case bad string is entered
if (dynamicElement instanceof DPropertyElement) {
DynamicManager.getInstance(myProject).replaceDynamicPropertyType(className, name, (String)oldTypeValue, newTypeValue);
-
- } else if (dynamicElement instanceof DMethodElement) {
+ }
+ else if (dynamicElement instanceof DMethodElement) {
final List<ParamInfo> myPairList = ((DMethodElement)dynamicElement).getPairs();
DynamicManager.getInstance(myProject).replaceDynamicMethodType(className, name, myPairList, (String)oldTypeValue, newTypeValue);
}
removeNamedElement(((DNamedElement)namedElement));
- /*final Object selectionNode = selectionPath.getLastPathComponent();
- if (!(selectionNode instanceof DefaultMutableTreeNode)) return false;
-
- DefaultMutableTreeNode toSelect = (parent.getChildAfter(child) != null || parent.getChildCount() == 1 ?
- ((DefaultMutableTreeNode) selectionNode).getNextNode() :
- ((DefaultMutableTreeNode) selectionNode).getPreviousNode());
-
-// DefaultMutableTreeNode toSelect = toSelect != null ? (DefaultMutableTreeNode) toSelect.getLastPathComponent() : null;
-
- removeFromParent(parent, child);
- if (toSelect != null) {
- setSelectedNode(toSelect, myProject);
- }*/
-
return true;
}
}
}
- class DynamicFilterComponent extends FilterComponent {
-
- public DynamicFilterComponent(@NonNls String propertyName, int historySize) {
- super(propertyName, historySize);
- }
-
- public void filter() {
- DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
- buildTree(rootNode);
-
- String filterText;
- List<DefaultMutableTreeNode> classes = new ArrayList<DefaultMutableTreeNode>();
- List<DefaultMutableTreeNode> dynamicNodes = new ArrayList<DefaultMutableTreeNode>();
-
- if (rootNode.isLeaf()) return;
- DefaultMutableTreeNode classNode = (DefaultMutableTreeNode)rootNode.getFirstChild();
- while (classNode != null) {
-
- if (classNode.isLeaf()) {
- classNode = (DefaultMutableTreeNode)rootNode.getChildAfter(classNode);
- continue;
- }
-
- DefaultMutableTreeNode dynamicNode = (DefaultMutableTreeNode)classNode.getFirstChild();
- while (dynamicNode != null) {
-
- final Object childObject = dynamicNode.getUserObject();
- if (!(childObject instanceof DItemElement)) break;
-
- filterText = getFilter();
- if (filterText == null || filterText.isEmpty()) {
- ((DItemElement)childObject).setHighlightedText("");
-
- dynamicNodes.add(dynamicNode);
- dynamicNode = (DefaultMutableTreeNode)classNode.getChildAfter(dynamicNode);
- continue;
- }
-
- final String name = (((DItemElement)childObject)).getName();
-
- if (name.contains(filterText)) {
- ((DItemElement)childObject).setHighlightedText(filterText);
- dynamicNodes.add(dynamicNode);
- }
-
- dynamicNode = (DefaultMutableTreeNode)classNode.getChildAfter(dynamicNode);
- }
-
- if (!dynamicNodes.isEmpty()) {
- classes.add(classNode);
- }
-
- classNode.removeAllChildren();
-
- for (DefaultMutableTreeNode node : dynamicNodes) {
- classNode.add(node);
- }
-
- dynamicNodes.clear();
-
- classNode = (DefaultMutableTreeNode)rootNode.getChildAfter(classNode);
- }
- rootNode.removeAllChildren();
-
- for (DefaultMutableTreeNode aClass : classes) {
- rootNode.add(aClass);
- }
-
- classes.clear();
-
- rebuildTreeView(rootNode, true);
- myBigPanel.invalidate();
- }
- }
-
public ListTreeTableModelOnColumns getTreeTableModel() {
getToolWindow();
}
if (value instanceof DMethodElement) {
- appendMethodParameters(name, (DMethodElement)value);
- } else if (value instanceof DPropertyElement) {
- setToolTipText(name);
+ appendMethodParameters((DMethodElement)value);
}
}
}
append(name, SimpleTextAttributes.SIMPLE_CELL_ATTRIBUTES);
}
- private void appendMethodParameters(final String name, DMethodElement value) {
+ private void appendMethodParameters(DMethodElement value) {
StringBuilder buffer = new StringBuilder();
buffer.append("(");
buffer.append(")");
append(buffer.toString(), SimpleTextAttributes.SIMPLE_CELL_ATTRIBUTES);
- setToolTipText(name + buffer.toString());
}
private static String[] mapToUnqualified(final String[] argumentsNames) {
final DClassElement classElement = (DClassElement)userObject;
try {
- final GrTypeElement typeElement = GroovyPsiElementFactory.getInstance(myProject).createTypeElement(classElement.getName());
- PsiType type = typeElement.getType();
+ PsiType type = JavaPsiFacade.getElementFactory(myProject).createTypeFromText(classElement.getName(), null);
if (type instanceof PsiPrimitiveType) {
type = ((PsiPrimitiveType)type).getBoxedType(PsiManager.getInstance(myProject), GlobalSearchScope.allScope(myProject));