/** Look up the first item matching a given template. * Includes not only the instance but other associated information. * @param template the template to check * @return a matching item or <code>null</code> * * @since 1.8 */ public <T> Item<T> lookupItem(Template<T> template) { Result<T> res = lookup(template); Iterator<? extends Item<T>> it = res.allItems().iterator(); return it.hasNext() ? it.next() : null; }
/** * Load a menu sequence from a lookup path. * Any {@link Action} instances are returned as is; * any {@link JSeparator} instances are translated to nulls. * Warnings are logged for any other instances. * @param path a path as given to {@link Lookups#forPath}, generally a layer folder name * @return a list of actions interspersed with null separators * @since org.openide.util 7.14 */ public static List<? extends Action> actionsForPath(String path) { List<Action> actions = new ArrayList<Action>(); for (Lookup.Item<Object> item : Lookups.forPath(path).lookupResult(Object.class).allItems()) { if (Action.class.isAssignableFrom(item.getType())) { Object instance = item.getInstance(); if (instance != null) { actions.add((Action) instance); } } else if (JSeparator.class.isAssignableFrom(item.getType())) { actions.add(null); } else { Logger.getLogger(Utilities.class.getName()).log(Level.WARNING, "Unrecognized object of {0} found in actions path {1}", new Object[] {item.getType(), path}); } } return actions; }
@Override public String toString() { if (tree instanceof Storage) { return "AbstractLookup" + lookup(new Lookup.Template<Object>(Object.class)).allItems(); // NOI18N } else { return super.toString(); } }
private <T> boolean isEnabledOnDataImpl(Lookup.Result<T> result, Class<T> type, ContextSelection selectMode) { switch (selectMode) { case EXACTLY_ONE: Collection<Lookup.Item<T>> instances = new HashSet<Lookup.Item<T>>(result.allItems()); return instances.size() == 1; case ANY: return !result.allItems().isEmpty(); case EACH: { if (result.allItems().isEmpty()) { return false; if (result.allItems().size() != items.allItems().size()) { return false; if (result.allItems().isEmpty()) { return false; if (result.allItems().size() < items.allItems().size()) { return false;
isInReplaceInst.set(this); it = lookupResult(Object.class).allItems().iterator(); pairs = new ArrayList<AbstractLookup.Pair>();
/** Property change listener. */ public void resultChanged(LookupEvent ev) { Lookup.Result<Node> r = result; if (r == null) { return; } chgSFC = true; chgNSFC = true; Collection<? extends Lookup.Item<Node>> items = result.allItems(); boolean updateActivatedNodes = true; if (items.size() == 1) { Lookup.Item<Node> item = items.iterator().next(); if ("none".equals(item.getId()) && (item.getInstance() == null)) { // this is change of selected node to null, // do not update activatedNodes updateActivatedNodes = false; } } if (updateActivatedNodes) { Iterator<? extends Node> it = result.allInstances().iterator(); ArrayList<Reference<Node>> list = new ArrayList<Reference<Node>>(); while (it.hasNext()) { list.add(new WeakReference<Node>(it.next())); } activatedNodes = list.toArray(new Reference[list.size()]); } update(); }
Collection<? extends Lookup.Item<? extends ActionMap>> all = result.allItems(); ActionMap a = all.isEmpty() ? null : all.iterator().next().getInstance();
/** * Load a menu sequence from a lookup path. * Any {@link Action} instances are returned as is; * any {@link JSeparator} instances are translated to nulls. * Warnings are logged for any other instances. * @param path a path as given to {@link Lookups#forPath}, generally a layer folder name * @return a list of actions interspersed with null separators * @since org.openide.util 7.14 */ public static List<? extends Action> actionsForPath(String path) { List<Action> actions = new ArrayList<Action>(); for (Lookup.Item<Object> item : Lookups.forPath(path).lookupResult(Object.class).allItems()) { if (Action.class.isAssignableFrom(item.getType())) { Object instance = item.getInstance(); if (instance != null) { actions.add((Action) instance); } } else if (JSeparator.class.isAssignableFrom(item.getType())) { actions.add(null); } else { Logger.getLogger(Utilities.class.getName()).log(Level.WARNING, "Unrecognized object of {0} found in actions path {1}", new Object[] {item.getType(), path}); } } return actions; }
/** Updates the state of the lookup. * @return true if the lookup really changed */ public boolean updateLookup(Lookup l) { Collection<? extends Item<T>> oldPairs = (delegate != null) ? delegate.allItems() : null; synchronized (this) { if (delegate != null) { delegate.removeLookupListener(this); } delegate = l.lookup(template); if (template.getType().isAssignableFrom(node.getClass()) && delegate.allItems().isEmpty()) { delegate = l.lookup(wackohacko(template.getId(), template.getInstance())); } delegate.addLookupListener(this); } if (oldPairs == null) { // nobody knows about a change return false; } Collection<? extends Item<T>> newPairs = delegate.allItems(); return !oldPairs.equals(newPairs); }
static void enhancedQueryMode(Lookup lookup, Class<?> clazz) { Object type = QUERY_MODE.get(); if (type != clazz) { return; } Collection<? extends Lookup.Item<?>> items = lookup.lookupResult(clazz).allItems(); if (items.size() == 0) { return; } AbstractLookup.Pair[] arr = new AbstractLookup.Pair[items.size()]; Iterator<? extends Lookup.Item> it = items.iterator(); for (int i = 0; i < arr.length; i++) { arr[i] = new PairWrap(it.next()); } QUERY_MODE.set(arr); }
@Override public void resultChanged(LookupEvent ev) { if (ev.getSource() == nodes) { Collection<? extends Item<Provider>> arr = nodes.allItems(); if (arr.size() == 1 && arr.iterator().next().getInstance() == null) { return; } initValues(); return; } final LookupEvent mev = new LookupEvent(this); for (LookupListener ll : listeners) { ll.resultChanged(mev); } }
public Lookup init(boolean init) { boolean doInit = false; synchronized (INIT_LOCK) { if (init && (result == null)) { result = lookup.lookup(TEMPL_COOKIE); assert result != null : "Null lookup result from " + lookup + " in " + Node.this; result.addLookupListener(this); doInit = true; } } if (doInit) { result.allItems(); } return lookup; }
@Override public Collection<? extends Item<T>> allItems() { return checkResult().allItems(); }
@Override public Collection<? extends Item<T>> allItems() { Collection<? extends Item<T>> res = delegate.allItems(); synchronized (this) { if (!res.isEmpty()) { allItems = res; } return allItems; } }
public LSet(Lookup.Result<T> context, Class<T> type) { this.result = context; this.result.addLookupListener(this); // activate listener this.result.allItems(); }
private Collection computeSingleResult(int i) { Collection one = null; switch (indexToCache) { case 0: if (!callBeforeLookup && arr[i] instanceof WaitableResult<?>) { WaitableResult<?> wr = (WaitableResult<?>) arr[i]; one = wr.allInstances(callBeforeLookup); } else { one = arr[i].allInstances(); } break; case 1: one = arr[i].allClasses(); break; case 2: if (!callBeforeLookup && arr[i] instanceof WaitableResult<?>) { WaitableResult<?> wr = (WaitableResult<?>) arr[i]; one = wr.allItems(callBeforeLookup); } else { one = arr[i].allItems(); } break; default: assert false : "Wrong index: " + indexToCache; } return one; }
public Collection<? extends Item<T>> allItems() { return checkResult().allItems(); }
@Override public Collection<? extends Item<T>> allItems() { return openCol(result.allItems(), 2); } @Override
@Override public String toString() { if (tree instanceof Storage) { return "AbstractLookup" + lookup(new Lookup.Template<Object>(Object.class)).allItems(); // NOI18N } else { return super.toString(); } }