예제 #1
0
  void startAnimation(final boolean enlarge) {
    staticImage = myController.getStaticImage();
    JPanel staticPanel =
        new JPanel() {
          @Override
          public void paint(Graphics g) {
            super.paint(g);
            if (staticImage != null) {
              Graphics2D g2d = (Graphics2D) g.create();

              g2d.setBackground(
                  new JBColor(new Color(255, 255, 255, 0), new Color(110, 110, 110, 0)));
              g2d.clearRect(0, 0, myController.SHEET_NC_WIDTH, myController.SHEET_NC_HEIGHT);

              g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.95f));

              int multiplyFactor = staticImage.getWidth(null) / myController.SHEET_NC_WIDTH;

              g.drawImage(
                  staticImage,
                  0,
                  0,
                  myController.SHEET_NC_WIDTH,
                  imageHeight,
                  0,
                  staticImage.getHeight(null) - imageHeight * multiplyFactor,
                  staticImage.getWidth(null),
                  staticImage.getHeight(null),
                  null);
            }
          }
        };
    staticPanel.setOpaque(false);
    staticPanel.setSize(myController.SHEET_NC_WIDTH, myController.SHEET_NC_HEIGHT);
    myWindow.setContentPane(staticPanel);

    Animator myAnimator =
        new Animator(
            "Roll Down Sheet Animator", myController.SHEET_NC_HEIGHT, TIME_TO_SHOW_SHEET, false) {
          @Override
          public void paintNow(int frame, int totalFrames, int cycle) {
            setPositionRelativeToParent();
            float percentage = (float) frame / (float) totalFrames;
            imageHeight =
                enlarge
                    ? (int) (((float) myController.SHEET_NC_HEIGHT) * percentage)
                    : (int) (myController.SHEET_NC_HEIGHT - percentage * myController.SHEET_HEIGHT);
            myWindow.repaint();
          }

          @Override
          protected void paintCycleEnd() {
            setPositionRelativeToParent();
            if (enlarge) {
              imageHeight = myController.SHEET_NC_HEIGHT;
              staticImage = null;
              myWindow.setContentPane(myController.getPanel(myWindow));

              myController.requestFocus();
            } else {
              if (restoreFullscreenButton) {
                FullScreenUtilities.setWindowCanFullScreen(myParent, true);
              }
              myWindow.dispose();
            }
          }
        };

    myAnimator.resume();
  }