private void addAllSubsInFile( CompletionParameters parameters, CompletionResultSet resultSet, boolean limitResults) { ArrayList<Package> packageList = ModulesContainer.getPackageListFromFile( parameters.getOriginalFile().getVirtualFile().getCanonicalPath()); for (int i = 0; i < packageList.size(); i++) { ArrayList<Sub> subs = packageList.get(i).getAllSubs(); int amount = (false) ? Math.min(AUTO_POPUP_SUBS_ITEMS_LIMIT, subs.size()) : subs.size(); // get all results only if users press ctrl+space for (int j = 0; j < amount; j++) { addCachedSub(resultSet, subs.get(j)); } ArrayList<ImportedSub> importedSubs = packageList.get(i).getImportedSubs(); amount = (false) ? Math.min(AUTO_POPUP_SUBS_ITEMS_LIMIT, importedSubs.size()) : importedSubs.size(); // get all results only if users press ctrl+space for (int j = 0; j < amount; j++) { ArrayList<Package> packages = ModulesContainer.getPackageList( importedSubs.get(j).getContainingPackage()); // TODO: handle more than 1 package if (packages.size() > 0) { Sub sub = packages.get(0).getSubByName(importedSubs.get(j).getImportSub()); if (sub != null) { addCachedSub(resultSet, sub); } } } } }
public boolean fillInCommonPrefix(boolean explicitlyInvoked) { if (explicitlyInvoked) { setFocusDegree(FocusDegree.FOCUSED); } if (explicitlyInvoked && myCalculating) return false; if (!explicitlyInvoked && mySelectionTouched) return false; ListModel listModel = getListModel(); if (listModel.getSize() <= 1) return false; if (listModel.getSize() == 0) return false; final LookupElement firstItem = (LookupElement) listModel.getElementAt(0); if (listModel.getSize() == 1 && firstItem instanceof EmptyLookupItem) return false; final PrefixMatcher firstItemMatcher = itemMatcher(firstItem); final String oldPrefix = firstItemMatcher.getPrefix(); final String presentPrefix = oldPrefix + getAdditionalPrefix(); String commonPrefix = getCaseCorrectedLookupString(firstItem); for (int i = 1; i < listModel.getSize(); i++) { LookupElement item = (LookupElement) listModel.getElementAt(i); if (item instanceof EmptyLookupItem) return false; if (!oldPrefix.equals(itemMatcher(item).getPrefix())) return false; final String lookupString = getCaseCorrectedLookupString(item); final int length = Math.min(commonPrefix.length(), lookupString.length()); if (length < commonPrefix.length()) { commonPrefix = commonPrefix.substring(0, length); } for (int j = 0; j < length; j++) { if (commonPrefix.charAt(j) != lookupString.charAt(j)) { commonPrefix = lookupString.substring(0, j); break; } } if (commonPrefix.length() == 0 || commonPrefix.length() < presentPrefix.length()) { return false; } } if (commonPrefix.equals(presentPrefix)) { return false; } for (int i = 0; i < listModel.getSize(); i++) { LookupElement item = (LookupElement) listModel.getElementAt(i); if (!itemMatcher(item).cloneWithPrefix(commonPrefix).prefixMatches(item)) { return false; } } myOffsets.setInitialPrefix(presentPrefix, explicitlyInvoked); replacePrefix(presentPrefix, commonPrefix); return true; }
private void addAllSubsInPackage( CompletionResultSet resultSet, PerlElement packageName, boolean withArguments, boolean limitResults) { ArrayList<Package> packageList = ModulesContainer.getPackageList(packageName.getText()); if (Utils.verbose) { Utils.print("Detected Package:" + packageName); } for (int i = 0; i < packageList.size(); i++) { Package packageObj = packageList.get(i); ArrayList<Sub> subs = packageObj.getAllSubs(); int amount = (false) ? Math.min(AUTO_POPUP_SUBS_ITEMS_LIMIT, subs.size()) : subs.size(); // get all results only if users press ctrl+space for (int j = 0; j < amount; j++) { if (withArguments) { addCachedSub(resultSet, subs.get(j)); } else { addCachedSubNoArgs(resultSet, subs.get(j)); } } } }
private void updateLookupWidth(LookupElement item, LookupElementPresentation presentation) { final Font customFont = myCellRenderer.getFontAbleToDisplay(presentation); if (customFont != null) { myCustomFonts.put(item, customFont); } int maxWidth = myCellRenderer.updateMaximumWidth(presentation, item); myLookupTextWidth = Math.max(maxWidth, myLookupTextWidth); }
private void updateListHeight(ListModel model) { myList.setFixedCellHeight( myCellRenderer .getListCellRendererComponent(myList, model.getElementAt(0), 0, false, false) .getPreferredSize() .height); myList.setVisibleRowCount( Math.min(model.getSize(), UISettings.getInstance().MAX_LOOKUP_LIST_HEIGHT)); }
private static HashSet<String> findAllVariables( ASTNode[] children, HashSet<String> resultSet, IElementType type, boolean limitResults) { int amount = (false) ? Math.min(AUTO_POPUP_VARS_ITEMS_LIMIT, children.length) : children.length; // get all results only if users press ctrl+space for (int i = 0; i < amount; i++) { ASTNode astNode = children[i].findChildByType(type); if (astNode != null) { resultSet.add(astNode.getText()); } else if (children[i].getChildren(null) != null) { findAllVariables(children[i].getChildren(null), resultSet, type, false); } } return resultSet; }