private static Point fixPopupLocation(final Component contents, final int x, final int y) {
      if (!(contents instanceof JToolTip)) return new Point(x, y);

      final PointerInfo info;
      try {
        info = MouseInfo.getPointerInfo();
      } catch (InternalError e) {
        // http://www.jetbrains.net/jira/browse/IDEADEV-21390
        // may happen under Mac OSX 10.5
        return new Point(x, y);
      }
      int deltaY = 0;

      if (info != null) {
        final Point mouse = info.getLocation();
        deltaY = mouse.y - y;
      }

      final Dimension size = contents.getPreferredSize();
      final Rectangle rec = new Rectangle(new Point(x, y), size);
      ScreenUtil.moveRectangleToFitTheScreen(rec);

      if (rec.y < y) {
        rec.y += deltaY;
      }

      return rec.getLocation();
    }
  public static void requestFocus(Project project, final boolean useRobot) {
    JFrame frame = WindowManager.getInstance().getFrame(project);

    // the only reliable way I found to bring it to the top
    boolean aot = frame.isAlwaysOnTop();
    frame.setAlwaysOnTop(true);
    frame.setAlwaysOnTop(aot);

    int frameState = frame.getExtendedState();
    if ((frameState & Frame.ICONIFIED) == Frame.ICONIFIED) {
      // restore the frame if it is minimized
      frame.setExtendedState(frameState ^ Frame.ICONIFIED);
    }
    frame.toFront();
    frame.requestFocus();
    if (useRobot && runningOnWindows7()) {
      try {
        // remember the last location of mouse
        final Point oldMouseLocation = MouseInfo.getPointerInfo().getLocation();

        // simulate a mouse click on title bar of window
        Robot robot = new Robot();
        robot.mouseMove(frame.getX(), frame.getY());
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

        // move mouse to old location
        robot.mouseMove((int) oldMouseLocation.getX(), (int) oldMouseLocation.getY());
      } catch (Exception ex) {
        // just ignore exception, or you can handle it as you want
      } finally {
        frame.setAlwaysOnTop(false);
      }
    }
  }
 @Override
 public void dragGestureRecognized(DragGestureEvent dge) {
   Cursor cursor = null;
   BufferedImage bi = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
   paint(bi.getGraphics());
   ImageMover.start(bi, MouseInfo.getPointerInfo().getLocation());
   String s = "[ANDITEM]";
   if (dge.getDragAction() == DnDConstants.ACTION_COPY) {
     cursor = DragSource.DefaultCopyDrop;
   }
   dge.startDrag(
       cursor, new SimpleDragObject.TransferableSimpleDragObject(new SimpleDragObject(s)));
 }
 protected static void processMagnification(IdeFrame frame, double magnification) {
   Point mouse = MouseInfo.getPointerInfo().getLocation();
   SwingUtilities.convertPointFromScreen(mouse, frame.getComponent());
   Component componentAt =
       SwingUtilities.getDeepestComponentAt(frame.getComponent(), mouse.x, mouse.y);
   if (componentAt != null) {
     Editor editor =
         PlatformDataKeys.EDITOR.getData(DataManager.getInstance().getDataContext(componentAt));
     if (editor != null) {
       double currentSize = editor.getColorsScheme().getEditorFontSize();
       int defaultFontSize =
           EditorColorsManager.getInstance().getGlobalScheme().getEditorFontSize();
       ((EditorEx) editor)
           .setFontSize((int) (Math.max(currentSize + magnification * 3, defaultFontSize)));
     }
   }
 }
  @Override
  public void mouseClicked(MouseEvent e) {

    indexOfLabelPressed = -1;

    for (int i = 0; i < orderLabel.length; i++) {
      if (e.getSource() == orderLabel[i]) {
        indexOfLabelPressed = i;
        PointerInfo a = MouseInfo.getPointerInfo();
        Point b = a.getLocation();
        int x = (int) b.getX();
        int y = (int) b.getY();
        popup.setLocation(x, y);
        popup.setInvoker(popup);
        popup.setVisible(true);
        revalidate();
        repaint();
      }
    }

    if (e.getSource() == topPanelLabel) {
      indexOfLabelPressed = -2;
    }

    if (indexOfLabelPressed == -1) {
      okDiscountButton.setText("Deduct");
      discountPopup.setLocation(700, 220);
      discountPopup.setInvoker(discountPopup);
      discountPopup.setVisible(true);
      itemDiscountPopupLabel.setText(
          "$"
              + finalModifier
              + " off with "
              + menuPanel.df.format((1 - finalPercentModifier) * 100)
              + "%"
              + " discount");
    } else if (indexOfLabelPressed == -2) {
      // TODO
      resetAll();
    }
  }
 public Object run() throws HeadlessException {
   return MouseInfo.getPointerInfo().getLocation();
 }
Exemple #7
0
 @Override
 protected void paintComponent(Graphics graphics) {
   BufferedImage backImage =
       new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
   Graphics2D backGraphics = backImage.createGraphics();
   BufferedImage frontImage =
       new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
   Graphics2D frontGraphics = frontImage.createGraphics();
   BufferedImage particleImage =
       new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
   Graphics2D particleGraphics = particleImage.createGraphics();
   Graphics2D graphics2D = (Graphics2D) graphics;
   graphics.setColor(Color.BLACK);
   graphics.fillRect(0, 0, getWidth(), getHeight());
   graphics2D.translate(-cameraX, -cameraY);
   backGraphics.translate(-cameraX, -cameraY);
   frontGraphics.translate(-cameraX, -cameraY);
   particleGraphics.translate(-cameraX, -cameraY);
   for (int y = cameraY / 64; y < (cameraY / 64) + (getHeight() / 64) + 2; y++) {
     for (int x = cameraX / 64; x < (cameraX / 64) + (getWidth() / 64) + 2; x++) {
       Tile tile = world.getTileAt(x, y);
       if (tile != null) {
         backGraphics.drawImage(
             client.getTextureManager().getTexture("grass"), x * 64, y * 64, null);
         Unit unit = tile.getUnit();
         if (unit != null) {
           if (unit instanceof Dragon) {
             BufferedImage texture;
             if (unit.getDX() > 0) {
               texture =
                   currentDragonFrame == 0
                       ? client.getTextureManager().getTexture("dragon_right_1")
                       : client.getTextureManager().getTexture("dragon_right_2");
             } else if (unit.getDX() < 0) {
               texture =
                   currentDragonFrame == 0
                       ? client.getTextureManager().getTexture("dragon_left_1")
                       : client.getTextureManager().getTexture("dragon_left_2");
             } else if (unit.getDY() > 0) {
               texture =
                   currentDragonFrame == 0
                       ? client.getTextureManager().getTexture("dragon_down_1")
                       : client.getTextureManager().getTexture("dragon_down_2");
             } else if (unit.getDY() < 0) {
               texture =
                   currentDragonFrame == 0
                       ? client.getTextureManager().getTexture("dragon_up_1")
                       : client.getTextureManager().getTexture("dragon_up_2");
             } else {
               texture =
                   currentDragonFrame == 0
                       ? client.getTextureManager().getTexture("dragon_down_1")
                       : client.getTextureManager().getTexture("dragon_down_2");
             }
             frontGraphics.drawImage(
                 texture, (x * 64) + unit.getXOffset(), (y * 64) + unit.getYOffset(), null);
             particleGraphics.setColor(Color.BLACK);
             if (unit.getAttackTarget() != null
                 && ((abs(unit.getAttackTarget().getTile().getX() - unit.getTile().getX()) == 1
                         && unit.getAttackTarget().getTile().getY() == unit.getTile().getY())
                     || (abs(unit.getAttackTarget().getTile().getY() - unit.getTile().getY()) == 1
                         && unit.getAttackTarget().getTile().getX() == unit.getTile().getX()))) {
               int xStart = min(unit.getTile().getX(), unit.getAttackTarget().getTile().getX());
               int xEnd = max(unit.getTile().getX(), unit.getAttackTarget().getTile().getX());
               int yStart = min(unit.getTile().getY(), unit.getAttackTarget().getTile().getY());
               int yEnd = max(unit.getTile().getY(), unit.getAttackTarget().getTile().getY());
               Random random = new Random();
               for (int pX = (xStart * 64) + 28; pX < (xEnd * 64) + 34; pX++) {
                 for (int pY = (yStart * 64) + 28; pY < (yEnd * 64) + 34; pY++) {
                   switch (random.nextInt(3)) {
                     case 0:
                       particleGraphics.setColor(Color.RED);
                       break;
                     case 1:
                       particleGraphics.setColor(Color.ORANGE);
                       break;
                     case 2:
                       particleGraphics.setColor(Color.YELLOW);
                       break;
                   }
                   particleGraphics.fillOval(
                       pX - 3 + random.nextInt(3), pY - 3 + random.nextInt(3), 4, 4);
                 }
               }
             }
           } else if (unit instanceof Wall) {
             TextureManager textureManager = client.getTextureManager();
             BufferedImage texture = textureManager.getTexture("tower");
             int offset = 128;
             Tile upTile = unit.getTile().getAdjacent(0, -1);
             boolean up =
                 upTile != null
                     && upTile.getUnit() != null
                     && upTile.getUnit() instanceof Wall
                     && upTile.getUnit().isComplete();
             Tile downTile = unit.getTile().getAdjacent(0, 1);
             boolean down =
                 downTile != null
                     && downTile.getUnit() != null
                     && downTile.getUnit() instanceof Wall
                     && downTile.getUnit().isComplete();
             Tile leftTile = unit.getTile().getAdjacent(-1, 0);
             boolean left =
                 leftTile != null
                     && leftTile.getUnit() != null
                     && leftTile.getUnit() instanceof Wall
                     && leftTile.getUnit().isComplete();
             Tile rightTile = unit.getTile().getAdjacent(1, 0);
             boolean right =
                 rightTile != null
                     && rightTile.getUnit() != null
                     && rightTile.getUnit() instanceof Wall
                     && rightTile.getUnit().isComplete();
             if (unit.isComplete()) {
               if (up) {
                 if (down) {
                   if (left) {
                     if (right) {
                       texture = textureManager.getTexture("tower_wall_up_down_left_right");
                     } else {
                       texture = textureManager.getTexture("tower_wall_up_down_left");
                     }
                   } else if (right) {
                     texture = textureManager.getTexture("tower_wall_up_down_right");
                   } else {
                     texture = textureManager.getTexture("wall_ver");
                     offset = 64;
                   }
                 } else if (left) {
                   if (right) {
                     texture = textureManager.getTexture("tower_wall_up_left_right");
                   } else {
                     texture = textureManager.getTexture("tower_wall_up_left");
                   }
                 } else if (right) {
                   texture = textureManager.getTexture("tower_wall_up_right");
                 } else {
                   texture = textureManager.getTexture("tower_wall_up");
                 }
               } else if (down) {
                 if (left) {
                   if (right) {
                     texture = textureManager.getTexture("tower_wall_down_left_right");
                   } else {
                     texture = textureManager.getTexture("tower_wall_down_left");
                   }
                 } else if (right) {
                   texture = textureManager.getTexture("tower_wall_down_right");
                 } else {
                   texture = textureManager.getTexture("tower_wall_down");
                 }
               } else if (left) {
                 if (right) {
                   texture = textureManager.getTexture("wall_hor");
                   offset = 64;
                 } else {
                   texture = textureManager.getTexture("tower_wall_left");
                 }
               } else if (right) {
                 texture = textureManager.getTexture("tower_wall_right");
               }
             } else {
               texture = textureManager.getTexture("wall_in_progress");
               offset = 64;
             }
             frontGraphics.drawImage(
                 texture,
                 (x * 64) + unit.getXOffset(),
                 (y * 64) + unit.getYOffset() - offset,
                 null);
           } else if (unit instanceof Flag) {
             BufferedImage texture = null;
             if (currentFlagFrame == 0) texture = client.getTextureManager().getTexture("flag_1");
             else if (currentFlagFrame == 1)
               texture = client.getTextureManager().getTexture("flag_2");
             else if (currentFlagFrame == 2)
               texture = client.getTextureManager().getTexture("flag_3");
             else if (currentFlagFrame == 3)
               texture = client.getTextureManager().getTexture("flag_4");
             if (texture != null) frontGraphics.drawImage(texture, (x * 64), (y * 64) - 64, null);
           }
         }
       }
     }
   }
   int mouseTileX =
       ((cameraX
               - (int) getLocationOnScreen().getX()
               + (int) MouseInfo.getPointerInfo().getLocation().getX())
           / 64);
   int mouseTileY =
       ((cameraY
               - (int) getLocationOnScreen().getY()
               + (int) MouseInfo.getPointerInfo().getLocation().getY())
           / 64);
   Tile mouseTile = getWorld().getTileAt(mouseTileX, mouseTileY);
   if (mouseTile != null) {
     if (mouseTile.getUnit() == null) {
       if (client.getShopPanel().getSelectedItem() == null) {
         backGraphics.setColor(new Color(0F, 1F, 0F, 0.5F));
       } else {
         backGraphics.setColor(new Color(0F, 0F, 1F, 0.5F));
       }
     } else {
       backGraphics.setColor(new Color(1F, 0F, 0F, 0.5F));
     }
     backGraphics.fillRect(mouseTileX * 64, mouseTileY * 64, 64, 64);
     if (mouseTile.getUnit() == null) {
       if (client.getShopPanel().getSelectedItem() == null) {
         backGraphics.setColor(Color.GREEN);
       } else {
         backGraphics.setColor(Color.BLUE);
       }
     } else {
       backGraphics.setColor(Color.RED);
     }
     backGraphics.drawRect(
         ((cameraX
                     - (int) getLocationOnScreen().getX()
                     + (int) MouseInfo.getPointerInfo().getLocation().getX())
                 / 64)
             * 64,
         ((cameraY
                     - (int) getLocationOnScreen().getY()
                     + (int) MouseInfo.getPointerInfo().getLocation().getY())
                 / 64)
             * 64,
         64,
         64);
   }
   graphics2D.translate(cameraX, cameraY);
   backGraphics.translate(cameraX, cameraY);
   frontGraphics.translate(cameraX, cameraY);
   particleGraphics.translate(cameraX, cameraY);
   graphics.drawImage(backImage, 0, 0, null);
   graphics.drawImage(frontImage, 0, 0, null);
   graphics.drawImage(particleImage, 0, 0, null);
   backGraphics.dispose();
   frontGraphics.dispose();
   particleGraphics.dispose();
   backImage.flush();
   frontImage.flush();
   particleImage.flush();
 }