@Override public void map(String combo, TextEditAction action) { x.map(combo, action); }
@Override public void mapConditional(String conditionId, Supplier<Boolean> condition, char typedChar, TextEditAction action) { x.mapConditional(conditionId, condition, typedChar, action); } });
private Optional<TypedCharTrigger> findTrigger(char typedChar) { return applicableTriggers() .filter(t->t instanceof TypedCharTrigger) .map(t->(TypedCharTrigger)t) .filter(t->t.character == typedChar) .findFirst(); }
m.map("Meta+Left", DefaultTextEditActions.LINE_START); //$NON-NLS-1$ m.map("Meta+Right", DefaultTextEditActions.LINE_END); //$NON-NLS-1$ m.map("Meta+Up", DefaultTextEditActions.TEXT_START); //$NON-NLS-1$ m.map("Meta+Down", DefaultTextEditActions.TEXT_END); //$NON-NLS-1$ m.map("Alt+Right", DefaultTextEditActions.WORD_NEXT); //$NON-NLS-1$ m.map("Alt+Left", DefaultTextEditActions.WORD_PREVIOUS); //$NON-NLS-1$ m.map("Page Down", DefaultTextEditActions.TEXT_PAGE_DOWN); //$NON-NLS-1$ m.map("Page Up", DefaultTextEditActions.TEXT_PAGE_UP); //$NON-NLS-1$ m.map("Meta+Shift+Left", DefaultTextEditActions.SELECT_LINE_START); //$NON-NLS-1$ m.map("Meta+Shift+Right", DefaultTextEditActions.SELECT_LINE_END); //$NON-NLS-1$ m.map("Meta+Shift+Up", DefaultTextEditActions.SELECT_TEXT_START); //$NON-NLS-1$ m.map("Meta+Shift+Down", DefaultTextEditActions.SELECT_TEXT_END); //$NON-NLS-1$ m.map("Alt+Shift+Right", DefaultTextEditActions.SELECT_WORD_NEXT); //$NON-NLS-1$ m.map("Alt+Shift+Left", DefaultTextEditActions.SELECT_WORD_PREVIOUS); //$NON-NLS-1$ m.map("Shift+Page Down", DefaultTextEditActions.SELECT_TEXT_PAGE_DOWN); //$NON-NLS-1$ m.map("Shift+Page Up", DefaultTextEditActions.SELECT_TEXT_PAGE_UP); //$NON-NLS-1$ m.map("Alt+Delete", DefaultTextEditActions.DELETE_WORD_NEXT); //$NON-NLS-1$ m.map("Alt+Backspace", DefaultTextEditActions.DELETE_WORD_PREVIOUS); //$NON-NLS-1$ m.map("Meta+D", DefaultTextEditActions.DELETE_LINE); //$NON-NLS-1$ m.map("Meta+C", DefaultTextEditActions.COPY); //$NON-NLS-1$ m.map("Meta+V", DefaultTextEditActions.PASTE); //$NON-NLS-1$ m.map("Meta+X", DefaultTextEditActions.CUT); //$NON-NLS-1$ m.map("Meta+A", DefaultTextEditActions.SELECT_ALL); //$NON-NLS-1$
public Optional<TextEditAction> get(char typedChar) { if (this.overrideProperty.get() != null) { Optional<TextEditAction> overridden = this.overrideProperty.get().get(typedChar); if (overridden.isPresent()) { return overridden; } } return findTrigger(typedChar).map(t->this.mapping.get(t)); }
@Override public TriggerActionMapping getOverrideMapping() { if (behaviorContributor != null) { TriggerActionMapping x = new TriggerActionMapping(); behaviorContributor.initializeMapping(new MappingRegistry() { @Override public void map(String combo, TextEditAction action) { x.map(combo, action); } @Override public void map(char typedChar, TextEditAction action) { x.map(typedChar, action); } @Override public void mapConditional(String conditionId, Supplier<Boolean> condition, String combo, TextEditAction action) { x.mapConditional(conditionId, condition, combo, action); } @Override public void mapConditional(String conditionId, Supplier<Boolean> condition, char typedChar, TextEditAction action) { x.mapConditional(conditionId, condition, typedChar, action); } }); x.subscribe((e, c)->behaviorContributor.handle(e)); return x; } return super.getOverrideMapping(); }
/** * Create a new behavior * * @param styledText * the styled text control */ public StyledTextBehavior(StyledTextArea styledText) { this.styledText = styledText; this.positionUpdaterTop.setCycleCount(Animation.INDEFINITE); this.positionUpdaterBottom.setCycleCount(Animation.INDEFINITE); styledText.addEventHandler(KeyEvent.KEY_PRESSED, this::onKeyPressed); styledText.addEventHandler(KeyEvent.KEY_TYPED, this::onKeyTyped); styledText.addEventHandler(MouseEvent.MOUSE_PRESSED, this::onMousePressed); styledText.addEventHandler(TextPositionEvent.TEXT_POSITION_MOVED, this::onTextPositionMoved); this.keyTriggerMapping.subscribe(this::defaultHandle); initKeymapping(this.keyTriggerMapping); styledText.addEventHandler(TextPositionEvent.TEXT_POSITION_PRESSED, this::onTextPositionPressed); styledText.addEventHandler(TextPositionEvent.TEXT_POSITION_CLICKED, this::onTextPositionClicked); styledText.addEventHandler(TextPositionEvent.TEXT_POSITION_RELEASED, this::onTextPositionReleased); styledText.addEventHandler(TextPositionEvent.TEXT_POSITION_DRAGGED, this::onTextPositionDragged); styledText.addEventHandler(TextPositionEvent.TEXT_POSITION_DRAG_DETECTED, this::onTextPositionDragDetected); this.keyTriggerMapping.overrideProperty().bind(styledText.overrideActionMappingProperty()); }
private void onKeyTyped(KeyEvent event) { if (getControl().getEditable()) { String character = event.getCharacter(); if (character.length() == 0) { return; } // check the modifiers // - OS-X: ALT+L ==> @ // - win32/linux: ALTGR+Q ==> @ if (event.isControlDown() || event.isAltDown() || (Util.isMacOS() && event.isMetaDown())) { if (!((event.isControlDown() || Util.isMacOS()) && event.isAltDown())) return; } if (character.charAt(0) > 31 // No ascii control chars && character.charAt(0) != 127 // no delete key && !event.isMetaDown()) { getControl().insert(character); // check for typed char action if( this.keyTriggerMapping.exists(character.charAt(0)) ) { getControl().fireEvent(UndoHintEvent.createBeginCompoundChangeEvent()); try { this.keyTriggerMapping.triggerAction(character.charAt(0), new Context(getControl())); } finally { getControl().fireEvent(UndoHintEvent.createEndCompoundChangeEvent()); } } } } }
private boolean handle(TextEditAction action, Context context) { if (this.overrideProperty.get() != null) { boolean result = this.overrideProperty.get().handle(action, context); if (result) { return true; } } return handleInternal(action, context); } }
public boolean exists(KeyEvent event) { return get(event).isPresent(); }
public boolean triggerAction(TextEditAction action, Context context) { return handle(action, context); }
public Optional<TextEditAction> get(KeyCombination combo) { if (this.overrideProperty.get() != null) { Optional<TextEditAction> overridden = this.overrideProperty.get().get(combo); if (overridden.isPresent()) { return overridden; } } return findTrigger(combo).map(t->this.mapping.get(t)); }
private void onKeyPressed(KeyEvent event) { if( this.keyTriggerMapping.exists(event) ) { getControl().fireEvent(UndoHintEvent.createBeginCompoundChangeEvent()); try { boolean handled = this.keyTriggerMapping.triggerAction(event, new Context(getControl())); if (handled) { event.consume();
public boolean exists(char c) { return get(c).isPresent(); }
public Optional<TextEditAction> get(KeyEvent event) { if (this.overrideProperty.get() != null) { Optional<TextEditAction> overridden = this.overrideProperty.get().get(event); if (overridden.isPresent()) { return overridden; } } return findTrigger(event).map(t->this.mapping.get(t)); }
@Override public void mapConditional(String conditionId, Supplier<Boolean> condition, String combo, TextEditAction action) { x.mapConditional(conditionId, condition, combo, action); }
@Override public void map(char typedChar, TextEditAction action) { x.map(typedChar, action); }