use of org.whole.lang.ui.editparts.ITextualEntityPart in project whole by wholeplatform.
the class TextualDragTracker method handleButtonDown.
@Override
protected boolean handleButtonDown(int button) {
ITextualEntityPart textualEntityPart = getTextualEntityPart();
if (button != 1 || textualEntityPart == null) {
beginPart = endPart = null;
start = end = 0;
setState(STATE_INVALID);
return handleInvalidInput();
} else {
beginPart = endPart = textualEntityPart;
CaretUpdater.sheduleSyncUpdate(getCurrentViewer(), beginPart.getModelEntity(), getLocation(), true);
start = textualEntityPart.getCaretPosition();
return stateTransition(STATE_INITIAL, STATE_SELECT);
}
}
use of org.whole.lang.ui.editparts.ITextualEntityPart in project whole by wholeplatform.
the class TextualDragTracker method handleTripleClick.
protected boolean handleTripleClick(int button) {
ITextualEntityPart textualEntityPart = getTextualEntityPart();
if (button == 1 && textualEntityPart != null) {
IGEFEditorKit editorkit = (IGEFEditorKit) textualEntityPart.getModelEntity().wGetEditorKit();
EditPoint editPoint = new EditPoint(textualEntityPart, textualEntityPart.getCaretPosition());
IKeyHandler keyHandler = editorkit.getKeyHandler();
IWholeSelection selection = keyHandler.calculateTripleClickSelection(editPoint);
performSelectionUpdate(selection, true);
return true;
}
return false;
}
use of org.whole.lang.ui.editparts.ITextualEntityPart in project whole by wholeplatform.
the class ActivateToolAction method run.
@Override
public void run() {
ESelectionService selectionService = getContext().get(ESelectionService.class);
IBindingManager bm = (IBindingManager) selectionService.getSelection();
IEntityPartViewer viewer = (IEntityPartViewer) bm.wGetValue("viewer");
boolean clearCaret = Tools.TEXTUAL != tool && Tools.TEXTUAL.isActive(viewer);
if (tool.ensureActive(viewer) && clearCaret) {
IEntity focusEntity = bm.wGet("focusEntity");
IEntityPart focusPart = viewer.getEditPartRegistry().get(focusEntity);
if (focusPart instanceof ITextualEntityPart) {
ITextualEntityPart textualPart = (ITextualEntityPart) focusPart;
textualPart.setCaretVisible(false);
viewer.setSelection(new StructuredSelection(textualPart));
}
}
}
use of org.whole.lang.ui.editparts.ITextualEntityPart in project whole by wholeplatform.
the class E4NavigationKeyHandler method navigateView.
public boolean navigateView(KeyEvent event, int direction) {
EditPoint focusPoint = getEditPoint();
IGEFEditorKit editorKit = (IGEFEditorKit) focusPoint.focus.getModelEntity().wGetEditorKit();
IKeyHandler keyHandler = editorKit.getKeyHandler();
// FIXME workaround for a bug in navigation actions
if (focusPoint.focus instanceof ITextualEntityPart) {
ITextualEntityPart part = (ITextualEntityPart) focusPoint.focus;
int start = part.getSelectionStart();
int end = part.getSelectionEnd();
if (start != -1 && end != -1) {
CaretUpdater.sheduleSyncUpdate(part.getViewer(), part.getModelTextEntity(), direction == PositionConstants.WEST ? start : end, true);
return true;
} else {
CaretUpdater.sheduleSyncUpdate(part.getViewer(), part.getModelTextEntity(), part.getCaretPosition(), true);
}
}
editPoint = keyHandler.findNeighbour(this, focusPoint, direction);
if (editPoint == null)
return navigateNextSibling(event, direction);
navigateTo(editPoint.focus, event);
return true;
}
use of org.whole.lang.ui.editparts.ITextualEntityPart in project whole by wholeplatform.
the class E4NavigationKeyHandler method navigateNextSibling.
/**
* Traverses to the closest EditPart in the given list that is also in the given direction.
*
* @param event the KeyEvent for the keys that were pressed to trigger this traversal
* @param direction PositionConstants.* indicating the direction in which to traverse
*/
boolean navigateNextSibling(KeyEvent event, int direction, List<?> list) {
IEntityPart epStart = getFocusEntityPart();
if (epStart instanceof ITextualEntityPart) {
ITextualEntityPart textualEntityPart = (ITextualEntityPart) epStart;
ITextualFigure textualFigure = textualEntityPart.getTextualFigure();
String text = textualFigure.getText();
int line = CaretUtils.getLineFromPosition(text, textualEntityPart.getCaretPosition());
int lines = CaretUtils.getCaretLines(text);
if ((direction == PositionConstants.WEST && textualEntityPart.getCaretPosition() > 0) || (direction == PositionConstants.EAST && textualEntityPart.getCaretPosition() < textualEntityPart.getCaretPositions())) {
int position = textualEntityPart.getCaretPosition() + (direction == PositionConstants.WEST ? -1 : 1);
CaretUpdater.sheduleSyncUpdate(getViewer(), textualEntityPart.getModelEntity(), position, true);
return true;
} else if ((direction == PositionConstants.NORTH && line > 0) || (direction == PositionConstants.SOUTH && line < lines)) {
int dy = FigureUtilities.getFontMetrics(textualFigure.getFont()).getHeight() * (direction == PositionConstants.NORTH ? -1 : 1);
Point location = textualFigure.getCaretBounds().getCenter().translate(0, dy);
CaretUpdater.sheduleSyncUpdate(getViewer(), textualEntityPart.getModelEntity(), location, true);
textualEntityPart.updateCaret(location);
return true;
}
}
if (!(epStart instanceof IGraphicalEntityPart))
return false;
IFigure figure = ((IGraphicalEntityPart) epStart).getFigure();
Point pStart = getNavigationPoint(figure);
figure.translateToAbsolute(pStart);
// parent.findSibling(pStart, direction, epStart);
EditPart next = findSibling(list, pStart, direction, epStart);
while (next == null) {
if (!(epStart.getParent() instanceof IGraphicalEntityPart))
return false;
epStart = (IGraphicalEntityPart) epStart.getParent();
if (epStart == getViewer().getContents() || epStart.getParent() == getViewer().getContents() || epStart.getParent() == null)
return false;
list = epStart.getParent().getChildren();
next = findSibling(list, pStart, direction, epStart);
}
// next = next.enter(pStart, direction, epStart);1+2
navigateTo(next, event);
return true;
}
Aggregations