コード例 #1
0
  @Test
  public void newlineIsTyped() throws Exception {
    model.setCaretLocation(TextLocation.origin);
    new CharTypedEvent(0, '\n').dispatch(panel);

    assertEquals("\nSome Text", model.getText());
  }
コード例 #2
0
  @Test
  public void backspaceIsNotTyped() throws Exception {
    model.setCaretLocation(TextLocation.origin);
    new CharTypedEvent(0, '\b').dispatch(panel);

    assertEquals("Some Text", model.getText());
  }
コード例 #3
0
  @Test
  public void typedCharsWithCommandModifierDoNothing() throws Exception {
    model.setCaretLocation(TextLocation.origin);

    new CharTypedEvent(KeyEvent.COMMAND_MASK, 'A').dispatch(panel);

    assertEquals("Some Text", model.getText());
  }
コード例 #4
0
  @Test
  public void typingACharWillInsertIt() throws Exception {
    model.setCaretLocation(TextLocation.origin);

    new CharTypedEvent(0, 'Z').dispatch(panel);

    assertEquals("ZSome Text", model.getText());
  }
コード例 #5
0
  @Test
  public void changesToModelAreReportedOnFocusLost() throws Exception {
    final MockEventAction action = new MockEventAction();
    panel.getEventHandler().add(ValueChangedEvent.class, action);

    new FocusGainedEvent().dispatch(panel);
    model.insertChar('a');
    assertEquals(true, model.hasChanged());
    new FocusLostEvent().dispatch(panel);

    assertEquals(true, action.invoked);
  }
コード例 #6
0
  @Test
  public void consumedMouseDragEventsDoNothing() throws Exception {
    new MousePressedEvent(0, new Point(0, 0), 1).dispatch(panel);
    new MouseDraggedEvent(0, new Point(25, 5), 1).consumed().dispatch(panel);

    assertEquals(false, model.hasSelection());
  }
コード例 #7
0
  public void processMousePressed(MousePressedEvent e) {
    final Panel panel = e.getRecipient();
    inWordSelectionMode = false;

    TextLocation location = model.getLocationAt(e.getLocation());
    model.startSelection(location);
    model.setCaretLocation(location, XOffsetStrategy.FITTING, YOffsetStrategy.FITTING);
    model.setCaretOn(true);

    handleMultipleClicks(e);

    panel.markAsDirty();
    panel.getStage().getKeyListener().focusOn(panel);

    lastClickTime = System.currentTimeMillis();
  }
コード例 #8
0
  public void processMouseDragged(MouseDraggedEvent e) {
    Point mousePoint = e.getLocation();

    ArrayList<TypedLayout> lines = model.getLines();
    TextLocation tempLocation = model.getLocationAt(mousePoint);

    // TODO MDM - This needs work.  Ideally, the text will scroll smoothly, a pixel at a time,
    // without the mouse moving.  The scoll speed increased as the mouse moves away.
    if (mousePoint.x < 3 && tempLocation.index > 0) tempLocation = tempLocation.moved(lines, -1);
    else if (mousePoint.x > (model.getContainer().getWidth() - 3) && tempLocation.atEnd(lines))
      tempLocation = tempLocation.moved(lines, +1);

    if (inWordSelectionMode) selectWord(tempLocation);
    else model.setCaretLocation(tempLocation, XOffsetStrategy.FITTING, YOffsetStrategy.FITTING);

    e.getRecipient().markAsDirty();
  }
コード例 #9
0
  @Test
  public void typingACharMakesThePanelDirty() throws Exception {
    assertEquals(0, root.dirtyRegions.size());

    model.setCaretLocation(TextLocation.origin);
    new CharTypedEvent(0, 'Z').dispatch(panel);

    assertEquals(1, root.dirtyRegions.size());
    assertEquals(panel.getBounds(), root.dirtyRegions.get(0));
  }
コード例 #10
0
 private void handleMultipleClicks(MousePressedEvent e) {
   if (e.getClickCount() == 2) {
     inWordSelectionMode = true;
     model.setSelectionLocation(model.findWordsLeftEdge(model.getCaretLocation()));
     model.setCaretLocation(model.findWordsRightEdge(model.getCaretLocation()));
   } else if (e.getClickCount() == 3) {
     model.selectAll();
   }
 }
コード例 #11
0
 @Before
 public void setUp() {
   assumeTrue(TestUtil.notHeadless());
   root = new FakeScene();
   panel = new MockTextInputPanel();
   parent = new PropPanel(new FakePropProxy());
   parent.add(panel);
   root.add(parent);
   stage = new MockStage();
   root.setStage(stage);
   model = panel.getModel();
   model.setText("Some Text");
 }