public AbsPage zKeyboardShortcut(Shortcut shortcut) throws HarnessException { logger.info(myPageName() + " zKeyboardShortcut(" + shortcut + ")"); if (shortcut == null) throw new HarnessException("Shortcut cannot be null"); tracer.trace("Using the keyboard, press the " + shortcut.getKeys() + " keyboard shortcut"); AbsPage page = null; if (shortcut == Shortcut.S_ESCAPE) { // Close the window zKeyDown("27"); return page; } zTypeCharacters(shortcut.getKeys()); return (page); }
/** @return true if action is added and has second stroke */ private boolean addAction(AnAction action, Shortcut sc) { boolean hasSecondStroke = false; Shortcut[] shortcuts = action.getShortcutSet().getShortcuts(); for (Shortcut each : shortcuts) { if (!each.isKeyboard()) continue; if (each.startsWith(sc)) { if (!myContext.getActions().contains(action)) { myContext.getActions().add(action); } if (each instanceof KeyboardShortcut) { hasSecondStroke |= ((KeyboardShortcut) each).getSecondKeyStroke() != null; } } } return hasSecondStroke; }
@Override public void foundShortcut( int u_fromNode, int w_toNode, double existingDirectWeight, EdgeIterator outgoingEdges, int skippedEdge1, int incomingEdgeOrigCount) { // FOUND shortcut // but be sure that it is the only shortcut in the collection // and also in the graph for u->w. If existing AND identical weight => update setProperties. // Hint: shortcuts are always one-way due to distinct level of every node but we don't // know yet the levels so we need to determine the correct direction or if both directions // minor improvement: if (shortcuts.containsKey(sc) // then two shortcuts with the same nodes (u<->n.endNode) exists => check current shortcut // against both Shortcut sc = new Shortcut(u_fromNode, w_toNode, existingDirectWeight); if (shortcuts.containsKey(sc)) { return; } else { Shortcut tmpSc = new Shortcut(w_toNode, u_fromNode, existingDirectWeight); Shortcut tmpRetSc = shortcuts.get(tmpSc); if (tmpRetSc != null) { tmpRetSc.flags = scBothDir; return; } } shortcuts.put(sc, sc); sc.skippedEdge1 = skippedEdge1; sc.skippedEdge2 = outgoingEdges.getEdge(); sc.originalEdges = incomingEdgeOrigCount + getOrigEdgeCount(outgoingEdges.getEdge()); }