@Override
 public void onKeyDown(KeyDownEvent event) {
   int key = event.getNativeKeyCode();
   if (event.isControlKeyDown()) {
     if (key == KEY_PLUS || key == KEY_MINUS) {
       app.getToolbar().zoomChangeClicked(key == KEY_PLUS ? 1 : -1);
       event.preventDefault();
     }
   } else if (!event.isShiftKeyDown()) {
     boolean handled = true;
     switch (key) {
       case KeyCodes.KEY_UP:
         if (!tryPan(0, -PAN_STEP)) changePage(page - 1, 0, 1);
         break;
       case KeyCodes.KEY_DOWN:
         if (!tryPan(0, PAN_STEP)) changePage(page + 1, 0, -1);
         break;
       case KeyCodes.KEY_LEFT:
         if (!tryPan(-PAN_STEP, 0)) changePage(page - 1, 1, 0);
         break;
       case KeyCodes.KEY_RIGHT:
         if (!tryPan(PAN_STEP, 0)) changePage(page + 1, -1, 0);
         break;
       case KeyCodes.KEY_PAGEUP:
         if (!tryPan(0, -canvas.getCoordinateSpaceHeight() + PAN_STEP))
           changePage(page - 1, 0, 1);
         break;
       case KeyCodes.KEY_PAGEDOWN:
       case KeyCodes.KEY_SPACE:
         if (!tryPan(0, canvas.getCoordinateSpaceHeight() - PAN_STEP))
           changePage(page + 1, 0, -1);
         break;
       case KeyCodes.KEY_HOME:
         changePage(0, -1, -1);
         break;
       case KeyCodes.KEY_END:
         changePage(app.getPageCache().getPageCount() - 1, 1, 1);
         break;
       default:
         handled = false;
     }
     if (handled) event.preventDefault();
   }
 }
  /* (non-Javadoc)
   * @see com.google.gwt.event.dom.client.KeyDownHandler#onKeyDown(com.google.gwt.event.dom.client.KeyDownEvent)
   */
  @Override
  public void onKeyDown(KeyDownEvent event) {
    //		System.out.println(event.getNativeKeyCode());
    int keyCode = event.getNativeKeyCode();
    if (selectedNode != null) {
      short nodeType = selectedNode.getNodeType();
      if (event.isControlKeyDown()) {
        if (keyCode == ClauseConstants.COPY_C) { // COPY
          if ((nodeType != CellTreeNode.MASTER_ROOT_NODE) && (nodeType != CellTreeNode.ROOT_NODE)) {
            popupPanel.hide();
            copy();
          }

        } else if (keyCode == ClauseConstants.PASTE_V) { // PASTE
          boolean canPaste = false;
          popupPanel.hide();
          if (copiedNode != null) {
            switch (selectedNode.getNodeType()) {
              case CellTreeNode.ROOT_NODE:
                if (selectedNode.equals(copiedNode.getParent())) {
                  clauseWorkspaceContextMenu.pasteRootNodeTypeItem();
                  isDirty = true;
                }
                break;
              case CellTreeNode.LOGICAL_OP_NODE:
              case CellTreeNode.FUNCTIONS_NODE:
                if (copiedNode.getNodeType() != CellTreeNode.CLAUSE_NODE) {
                  canPaste = true;
                }
                break;
              case CellTreeNode.TIMING_NODE:
                if ((copiedNode.getNodeType() != CellTreeNode.CLAUSE_NODE)
                    && ((selectedNode.getChilds() == null)
                        || (selectedNode.getChilds().size() < 2))) {
                  canPaste = true;
                }
                break;
              default:
                break;
            }
            if (canPaste) {
              paste();
              isDirty = true;
            }
          }

        } else if (keyCode == ClauseConstants.CUT_X) { // CUT
          popupPanel.hide();
          if ((selectedNode.getNodeType() != CellTreeNode.MASTER_ROOT_NODE)
              && (selectedNode.getNodeType() != CellTreeNode.CLAUSE_NODE)
              && (selectedNode.getNodeType() != CellTreeNode.ROOT_NODE)
              && (selectedNode.getParent().getNodeType() != CellTreeNode.CLAUSE_NODE)) {
            copy();
            removeNode();
            isDirty = true;
          }
        }
      } else if (keyCode == ClauseConstants.DELETE_DELETE) { // DELETE
        popupPanel.hide();
        if (((selectedNode.getNodeType() != CellTreeNode.MASTER_ROOT_NODE)
                && (selectedNode.getNodeType() != CellTreeNode.ROOT_NODE)
                && (selectedNode.getParent().getNodeType() != CellTreeNode.CLAUSE_NODE)
                && (selectedNode.getNodeType() != CellTreeNode.CLAUSE_NODE))
            || ((selectedNode.getNodeType() == CellTreeNode.CLAUSE_NODE)
                && (selectedNode.getParent().getChilds().size() > 1))) {
          removeNode();
          isDirty = true;
        }
      }
    }
    if ((event.isShiftKeyDown()
        && ((keyCode == ClauseConstants.PLUS_FF) || (keyCode == ClauseConstants.PLUS_IE)))) {
      // EXPAND/COLLAPSE (+(Shift +) Expand| - Collapse)
      popupPanel.hide();
      openAllNodes(cellTree.getRootTreeNode());
    } else if ((event.isShiftKeyDown()
        && ((keyCode == ClauseConstants.MINUS_FF) || (keyCode == ClauseConstants.MINUS_IE)))) {
      popupPanel.hide();
      closeNodes(cellTree.getRootTreeNode());
    }
    /*if(event.isControlKeyDown() && event.isAltKeyDown() && keyCode == 83){
    	saveBtn.getElement().focus();
    	saveBtn.click();
    }*/
  }
Ejemplo n.º 3
0
    public void checkCursorKeys(KeyDownEvent e) {

      String text = autoCompleteTextField.getText(); // ?// (String)
      // delegate.getCellEditorValue();

      int keyCode = e.getNativeKeyCode();
      // Application.debug(e+"");
      switch (keyCode) {
        case KeyCodes.KEY_UP:
          if (isSuggesting()) {
            return;
          }
          if (isFormulaBarListener) return;

          // Application.debug("UP");
          stopCellEditing(0, -1, false);
          // ?//e.consume();
          tabReturnCol = -1;
          break;

        case KeyCodes.KEY_TAB:
          if (isFormulaBarListener) return;
          App.debug(" tab");
          // Application.debug("RIGHT");
          // shift-tab moves left
          // tab moves right
          if (tabReturnCol == -1) tabReturnCol = column;
          stopCellEditing(e.isShiftKeyDown() ? -1 : 1, 0, false);
          e.preventDefault();
          break;

        case KeyCodes.KEY_ENTER:
          if (isSuggesting()) {
            return;
          }

          // if incomplete command entered, want to move the cursor to
          // between []
          int bracketsIndex = text.indexOf("[]");
          if (bracketsIndex == -1) {

            if (tabReturnCol != -1) {
              int colOffset = tabReturnCol - column;
              stopCellEditing(colOffset, 1, true);
            } else {

              // TODO: in desktop this works with column, row + 1
              String cellBelowStr = GeoElementSpreadsheet.getSpreadsheetCellName(column, row + 1);
              GeoElement cellBelow = kernel.getConstruction().lookupLabel(cellBelowStr);

              boolean moveDown = cellBelow == null || !cellBelow.isFixed();

              // don't move down to cell below after <Enter> if it's
              // fixed
              stopCellEditing(0, moveDown ? 1 : 0, moveDown);
            }
          } else {
            autoCompleteTextField.setCaretPosition(bracketsIndex + 1);
            // ?//e.consume();
          }

          tabReturnCol = -1;
          break;

        case KeyCodes.KEY_DOWN:
          if (isSuggesting()) {
            return;
          }

          if (isFormulaBarListener) {
            // ?//e.consume();
            return;
          }
          // Application.debug("DOWN");
          stopCellEditing(0, 1, false);
          tabReturnCol = -1;
          break;

        case KeyCodes.KEY_LEFT:
          if (isFormulaBarListener) return;
          // Application.debug("LEFT");
          // Allow left/right keys to exit cell for easier data entry
          if (getCaretPosition() == 0) {
            stopCellEditing(-1, 0, false);
          }
          tabReturnCol = -1;
          break;

        case KeyCodes.KEY_RIGHT:
          if (isFormulaBarListener) return;
          // Application.debug("RIGHT");
          // Allow left/right keys to exit cell for easier data entry
          if (getCaretPosition() == text.length()) {
            stopCellEditing(1, 0, false);
          }

          tabReturnCol = -1;
          break;

        case KeyCodes.KEY_PAGEDOWN:
        case KeyCodes.KEY_PAGEUP:
          e.preventDefault();
          // ?//e.consume();
          tabReturnCol = -1;
          break;

          // An F1 keypress causes the focus to be lost, so we
          // need to set 'editing' to false to prevent the focusLost()
          // method from calling stopCellEditing()
          // ?//case KeyEvent.VK_F1:
          // ?// editing = false;
          // ?// break;

      }
    }