private static void addElementsInNode(InspectionTreeNode node, List<RefEntity> out) { if (!node.isValid()) return; if (node instanceof RefElementNode) { final RefEntity element = ((RefElementNode) node).getElement(); if (!out.contains(element)) { out.add(0, element); } } if (node instanceof ProblemDescriptionNode) { final RefEntity element = ((ProblemDescriptionNode) node).getElement(); if (!out.contains(element)) { out.add(0, element); } } final Enumeration children = node.children(); while (children.hasMoreElements()) { InspectionTreeNode child = (InspectionTreeNode) children.nextElement(); addElementsInNode(child, out); } }
private static void test(MethodEntry current, List<MethodEntry> set) { Iterator<MethodEntry> it = current.myCalledMethods.iterator(); while (it.hasNext()) { MethodEntry callee = it.next(); if (set.contains(callee)) { callee.myCalledByMethods.remove(current); if (callee.myCalledByMethods.size() == 0) { callee.myRelatedMethod = false; } it.remove(); } else { set.add(callee); test(callee, set); } } }
@Nullable private static List<Locale> extractLocalesFromString(final String rawLocales) { if (rawLocales.isEmpty()) { return Collections.emptyList(); } final String[] splitRawLocales = rawLocales.split(","); final List<Locale> locales = new ArrayList<>(splitRawLocales.length); for (String rawLocale : splitRawLocales) { final Locale locale = PropertiesUtil.getLocale("_" + rawLocale + ".properties"); if (locale == PropertiesUtil.DEFAULT_LOCALE) { return null; } else if (!locales.contains(locale)) { locales.add(locale); } } return locales; }
private void invalidateToSelectWithRefsToParent(DefaultMutableTreeNode actionNode) { if (actionNode != null) { Object readyElement = myUi.getElementFor(actionNode); if (readyElement != null) { Iterator<Object> toSelect = myToSelect.keySet().iterator(); while (toSelect.hasNext()) { Object eachToSelect = toSelect.next(); if (readyElement.equals(myUi.getTreeStructure().getParentElement(eachToSelect))) { List<Object> children = myUi.getLoadedChildrenFor(readyElement); if (!children.contains(eachToSelect)) { toSelect.remove(); if (!myToSelect.containsKey(readyElement) && !myUi.getSelectedElements().contains(eachToSelect)) { addAdjustedSelection(eachToSelect, Conditions.alwaysFalse(), null); } } } } } } }
protected void filter(String filter) { final SearchableOptionsRegistrar optionsRegistrar = SearchableOptionsRegistrar.getInstance(); final Set<String> search = optionsRegistrar.getProcessedWords(filter); final ArrayList<IdeaPluginDescriptor> desc = new ArrayList<IdeaPluginDescriptor>(); final List<IdeaPluginDescriptor> toProcess = toProcess(); for (IdeaPluginDescriptor descriptor : filtered) { if (!toProcess.contains(descriptor)) { toProcess.add(descriptor); } } filtered.clear(); for (IdeaPluginDescriptor descriptor : toProcess) { if (isPluginDescriptorAccepted(descriptor) && PluginManagerMain.isAccepted(filter, search, descriptor)) { desc.add(descriptor); } else { filtered.add(descriptor); } } filter(desc); }
@Nullable private DependencyOnPlugin editPluginDependency( @NotNull JComponent parent, @NotNull final DependencyOnPlugin original) { List<String> pluginIds = new ArrayList<String>(getPluginNameByIdMap().keySet()); if (!original.getPluginId().isEmpty() && !pluginIds.contains(original.getPluginId())) { pluginIds.add(original.getPluginId()); } Collections.sort( pluginIds, new Comparator<String>() { @Override public int compare(String o1, String o2) { return getPluginNameById(o1).compareToIgnoreCase(getPluginNameById(o2)); } }); final ComboBox pluginChooser = new ComboBox(ArrayUtilRt.toStringArray(pluginIds), 250); pluginChooser.setRenderer( new ListCellRendererWrapper<String>() { @Override public void customize( JList list, String value, int index, boolean selected, boolean hasFocus) { setText(getPluginNameById(value)); } }); new ComboboxSpeedSearch(pluginChooser) { @Override protected String getElementText(Object element) { return getPluginNameById((String) element); } }; pluginChooser.setSelectedItem(original.getPluginId()); final JBTextField minVersionField = new JBTextField(StringUtil.notNullize(original.getMinVersion())); final JBTextField maxVersionField = new JBTextField(StringUtil.notNullize(original.getMaxVersion())); final JBTextField channelField = new JBTextField(StringUtil.notNullize(original.getChannel())); minVersionField.getEmptyText().setText("<any>"); minVersionField.setColumns(10); maxVersionField.getEmptyText().setText("<any>"); maxVersionField.setColumns(10); channelField.setColumns(10); JPanel panel = FormBuilder.createFormBuilder() .addLabeledComponent("Plugin:", pluginChooser) .addLabeledComponent("Minimum version:", minVersionField) .addLabeledComponent("Maximum version:", maxVersionField) .addLabeledComponent("Channel:", channelField) .getPanel(); final DialogBuilder dialogBuilder = new DialogBuilder(parent).title("Required Plugin").centerPanel(panel); dialogBuilder.setPreferredFocusComponent(pluginChooser); pluginChooser.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogBuilder.setOkActionEnabled( !StringUtil.isEmpty((String) pluginChooser.getSelectedItem())); } }); if (dialogBuilder.show() == DialogWrapper.OK_EXIT_CODE) { return new DependencyOnPlugin( ((String) pluginChooser.getSelectedItem()), StringUtil.nullize(minVersionField.getText().trim()), StringUtil.nullize(maxVersionField.getText().trim()), StringUtil.nullize(channelField.getText().trim())); } return null; }
/** * Move methods related to this one underneath it (beginning at the index specified.) Do so in * depth-first or breadth-first order, as configured. At each level, do alphabetical, original * order, or call order sorting. * * @param entries list of global (all rule) unmatched items including dependent methods * @param parents contains a list of items to be handled; order is depth or breadth-first. */ private static void moveRelatedItems( List<ClassContentsEntry> entries, List<MethodEntry> parents, RelatedMethodsSettings rms, String topLevelMethodName, String allMethodNames, int level) { allMethodNames = buildAllMethodNamesString(allMethodNames, parents); /** First, identify all dependent methods. Move them to parents in the specified order. */ List<MethodEntry> children = ((MethodEntry) parents.get(parents.size() - 1)).sortedMethods; // if (rms.isDepthFirstOrdering()) // { switch (rms.getOrdering()) { case RelatedMethodsSettings.RETAIN_ORIGINAL_ORDER: { /** * iterate through entries looking for those that are called by method(s) in the set of * parent methods. Add these to the list of children in order seen in entries. */ ListIterator li = entries.listIterator(); while (li.hasNext()) { Object o = li.next(); if (o instanceof RelatableEntry) { MethodEntry me = (MethodEntry) o; for (MethodEntry entry : parents) { if (me.myCalledByMethods.contains(entry)) { children.add(me); li.remove(); break; } } } } } break; case RelatedMethodsSettings.ALPHABETICAL_ORDER: { /** * iterate through entries looking for those that are called by method(s) in the set of * parent methods. Add these to the list of children alphabetically. */ ListIterator li = entries.listIterator(); while (li.hasNext()) { Object o = li.next(); if (o instanceof RelatableEntry) { MethodEntry me = (MethodEntry) o; for (MethodEntry entry : parents) { if (me.myCalledByMethods.contains(entry)) { me.insertAlphabetically(children); li.remove(); break; } } } } } break; case RelatedMethodsSettings.INVOCATION_ORDER: /** * iterate through calling methods, looking for remaining unmatched methods (in 'entries' * list). Add these to the list of children in order of invocation. */ for (MethodEntry me : parents) { for (MethodEntry child : me.myCalledMethods) { if (entries.contains(child)) { children.add(child); entries.remove(child); } } } break; } /** * now children contains all the children of the parents for this level, and all these children * have been removed from "entries". Move these to the rearranged list. Then: If depth-first, * recurse setting the parent list to each of the children in turn. If breadth first, recurse * setting the parent list to all of the children. */ if (children.size() > 0) { if (rms.isDepthFirstOrdering()) { for (MethodEntry entry : children) { if (entry.myCalledMethods.size() == 0) { continue; } List<MethodEntry> parent = new LinkedList<MethodEntry>(); parent.add(entry); moveRelatedItems( entries, parent, rms, topLevelMethodName, allMethodNames + "." + ((PsiMethod) entry.myEnd).getName() + "()", level + 1); } } else { moveRelatedItems( entries, children, rms, topLevelMethodName, allMethodNames + ".Depth " + level, level + 1); } } }
@Override public boolean isMarked(@Nullable ImportedOtpApp importedOtpApp) { return importedOtpApp != null && mySelectedOtpApps.contains(importedOtpApp); }