⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaulttimescalebasedviewer.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     *     * @return the current interval end time     */    public long getIntervalEndTime() {        return intervalEndTime;    }    /**     * Checks whether this viewer is TimeScale connected and changes the     * interval begin time globally or locally.     *     * @param begin the new interval begin time     */    public void setIntervalBeginTime(long begin) {        if (timeScaleConnected) {            setGlobalTimeScaleIntervalBeginTime(begin);            setGlobalTimeScaleIntervalEndTime(intervalEndTime);        } else {            setLocalTimeScaleIntervalBeginTime(begin);        }    }    /**     * Calculates the new interval begin and/or end time.<br>     * There are two special cases taken into account:<br>     *     * <ul>     * <li>     * when the player is playing attempts are made to shift the interval     * <i>n</i> times the interval size to the left or to the right, until the     * new interval contains the new mediatime.     * </li>     * <li>     * when the player is not playing and the new interval begin time coincides     * with the selection begin time, the interval is shifted a certain offset     * away from the image edge. Same thing when the interval end time     * coincides with the selection end time.     * </li>     * </ul>     *     *     * @param mediaTime     */    protected void recalculateInterval(final long mediaTime) {        long newBeginTime = intervalBeginTime;        long newEndTime = intervalEndTime;        if (playerIsPlaying()) {            // we might be in a selection outside the new interval            // shift the interval n * intervalsize to the left or right            if (mediaTime > intervalEndTime) {                newBeginTime = intervalEndTime;                newEndTime = newBeginTime + (int) (intervalWidth * msPerPixel);                while ((newEndTime += (intervalWidth + msPerPixel)) < mediaTime) {                    newBeginTime += (intervalWidth * msPerPixel);                }            } else if (mediaTime < intervalBeginTime) {                newEndTime = intervalBeginTime;                newBeginTime = newEndTime - (int) (intervalWidth * msPerPixel);                while ((newEndTime -= (intervalWidth * msPerPixel)) > mediaTime) {                    newBeginTime -= (intervalWidth * msPerPixel);                }                if (newBeginTime < 0) {                    newBeginTime = 0;                    newEndTime = (long) (intervalWidth * msPerPixel);                }            } else {                // the new time appears to be in the current interval after all                return;            }        } else { //player is not playing            // is the new media time to the left or to the right of the current interval            if (mediaTime < intervalBeginTime) {                newBeginTime = mediaTime - (int) (SCROLL_OFFSET * msPerPixel);                if (newBeginTime < 0) {                    newBeginTime = 0;                }                newEndTime = newBeginTime + (int) (intervalWidth * msPerPixel);            } else if (mediaTime > intervalEndTime) {                newEndTime = mediaTime + (int) (SCROLL_OFFSET * msPerPixel);                newBeginTime = newEndTime - (int) (intervalWidth * msPerPixel);                if (newBeginTime < 0) { // something would be wrong??                    newBeginTime = 0;                    newEndTime = newBeginTime +                        (int) (intervalWidth * msPerPixel);                }            }            if ((newBeginTime == getSelectionBeginTime()) &&                    (newBeginTime > (SCROLL_OFFSET * msPerPixel))) {                newBeginTime -= (SCROLL_OFFSET * msPerPixel);                newEndTime = newBeginTime + (int) (intervalWidth * msPerPixel);            }            if (newEndTime == getSelectionEndTime()) {                newEndTime += (SCROLL_OFFSET * msPerPixel);                newBeginTime = newEndTime - (int) (intervalWidth * msPerPixel);                if (newBeginTime < 0) { // something would be wrong??                    newBeginTime = 0;                    newEndTime = newBeginTime +                        (int) (intervalWidth * msPerPixel);                }            }        }        if (timeScaleConnected) {            //System.out.println("SV new begin time: " + newBeginTime);            //System.out.println("SV new end time: " + newEndTime);            setGlobalTimeScaleIntervalBeginTime(newBeginTime);            setGlobalTimeScaleIntervalEndTime(newEndTime);        } else {            setLocalTimeScaleIntervalBeginTime(newBeginTime);        }    }    /**     * To be implemented by each extending class.     *     * @param begin the interval begintime     */    protected void setLocalTimeScaleIntervalBeginTime(long begin) {    }    /**     * To be implemented by each extending class.     *     * @param step new msPerPixel value     */    protected void setLocalTimeScaleMsPerPixel(float step) {    }    /**     * Checks whether this viewer is TimeScale connected and changes the     * milliseconds per pixel value globally or locally.     *     * @param mspp the new milliseconds per pixel value     */    public void setMsPerPixel(float mspp) {        if (timeScaleConnected) {            setGlobalTimeScaleMsPerPixel((int) mspp);            setGlobalTimeScaleIntervalBeginTime(intervalBeginTime);            setGlobalTimeScaleIntervalEndTime(intervalEndTime);        } else {            setLocalTimeScaleMsPerPixel(mspp);        }    }    /**     * @see mpi.eudico.client.annotator.viewer.AbstractViewer#controllerUpdate(mpi.eudico.client.mediacontrol.ControllerEvent)     */    public void controllerUpdate(ControllerEvent event) {        if (event instanceof TimeEvent || event instanceof StopEvent) {            crossHairTime = getMediaTime();            if (!playerIsPlaying()) {                //if (scroller == null) { to do: drag scrolling                recalculateInterval(crossHairTime);                crossHairPos = xAt(crossHairTime);                repaint();                //} else {                //	recalculateInterval(crossHairTime);                //}            } else {                if ((crossHairTime < intervalBeginTime) ||                        (crossHairTime > intervalEndTime)) {                    recalculateInterval(crossHairTime);                } else {                    // repaint a part of the viewer                    int oldPos = crossHairPos;                    crossHairPos = xAt(crossHairTime);                    int newPos = crossHairPos;                    if (newPos >= oldPos) {                        repaint(oldPos - 2, 0, newPos - oldPos + 4, getHeight());                        //repaint();                    } else {                        repaint(newPos - 2, 0, oldPos - newPos + 4, getHeight());                        //repaint();                    }                }            }        }    }    /**     * Gets the selection begintime and endtime and calculates pixel positions.     *     * @see mpi.eudico.client.annotator.viewer.AbstractViewer#updateSelection()     */    public void updateSelection() {        selectionBeginPos = (int) (getSelectionBeginTime() / msPerPixel);        selectionEndPos = (int) (getSelectionEndTime() / msPerPixel);    }    /**     * @see mpi.eudico.client.annotator.viewer.AbstractViewer#updateActiveAnnotation()     */    public void updateActiveAnnotation() {        // stub		    }    /**     * Update menu item labels; here only the zoom menu is updated.     *     * @see mpi.eudico.client.annotator.viewer.AbstractViewer#updateLocale()     */    public void updateLocale() {        if (popup != null) {            zoomMI.setText(ElanLocale.getString("TimeScaleBasedViewer.Zoom"));            timeScaleConMI.setText(ElanLocale.getString(                    "TimeScaleBasedViewer.Connected"));        }    }    /**     * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)     */    public void componentHidden(ComponentEvent e) {        // stub		    }    /**     * @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent)     */    public void componentMoved(ComponentEvent e) {        //  stub		    }    /**     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)     */    public void componentResized(ComponentEvent e) {        // stub		    }    /**     * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)     */    public void componentShown(ComponentEvent e) {        // stub		    }    /**     * Handle zoom menu events.     *     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)     */    public void actionPerformed(ActionEvent e) {        if (e.getActionCommand().equals("connect")) {            boolean connected = ((JCheckBoxMenuItem) e.getSource()).getState();            setTimeScaleConnected(connected);        } else {            /* the rest are zoom menu items*/            String zoomString = e.getActionCommand();            int zoom = 100;            try {                zoom = Integer.parseInt(zoomString);            } catch (NumberFormatException nfe) {                System.err.println("Error parsing the zoom level");                return;            }            float newMsPerPixel = ((100f / zoom) * 10);            setMsPerPixel(newMsPerPixel);        }    }    /**     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)     */    public void mouseClicked(MouseEvent e) {        if (SwingUtilities.isRightMouseButton(e) || e.isPopupTrigger()) {            return;        }        setMediaTime(timeAt(e.getPoint().x));    }    /**     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)     */    public void mouseEntered(MouseEvent e) {        // stub		    }    /**     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)     */    public void mouseExited(MouseEvent e) {        // stub		    }    /**     * Handles the popmenu positioning.     *     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)     */    public void mousePressed(MouseEvent e) {        Point pp = e.getPoint();        // HS nov 04: e.isPopupTrigger always returns false on my PC...        if (SwingUtilities.isRightMouseButton(e) || e.isPopupTrigger()) {            if (popup == null) {                createPopupMenu();            }            updatePopup(pp);            if ((popup.getWidth() == 0) || (popup.getHeight() == 0)) {                popup.show(this, pp.x, pp.y);            } else {                popup.show(this, pp.x, pp.y);                SwingUtilities.convertPointToScreen(pp, this);                Dimension d = Toolkit.getDefaultToolkit().getScreenSize();                Window w = SwingUtilities.windowForComponent(this);                if ((pp.x + popup.getWidth()) > d.width) {                    pp.x -= popup.getWidth();                }                //this does not account for a desktop taskbar                if ((pp.y + popup.getHeight()) > d.height) {                    pp.y -= popup.getHeight();                }                //keep it in the window then                if ((pp.y + popup.getHeight()) > (w.getLocationOnScreen().y +                        w.getHeight())) {                    pp.y -= popup.getHeight();                }                popup.setLocation(pp);            }            return;        }        if (playerIsPlaying()) {            stopPlayer();        }        dragStartPoint = e.getPoint();        dragStartTime = timeAt(dragStartPoint.x);        if (e.isAltDown() && pointInHorizontalRuler(dragStartPoint.y)) {            dragStartTime = timeAt(dragStartPoint.x);            panMode = true;            setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));        } else {            panMode = false;            /* just to be sure a running scroll thread can be stopped */            //stopScroll();        }    }    /**     * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)     */    public void mouseReleased(MouseEvent e) {        // changing the selection might have changed the intervalBeginTime        if (timeScaleConnected) {            setGlobalTimeScaleIntervalBeginTime(intervalBeginTime);            setGlobalTimeScaleIntervalEndTime(intervalEndTime);        }        if (panMode) {            panMode = false;            setCursor(Cursor.getDefaultCursor());        }    }    /**     * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)     */    public void mouseDragged(MouseEvent e) {        if (SwingUtilities.isRightMouseButton(e)) {            return;        }        dragEndPoint = e.getPoint();        if (panMode) {            int scrolldiff = dragEndPoint.x - dragStartPoint.x;            // some other viewer may have a media offset...            long newTime = intervalBeginTime - (int) (scrolldiff * msPerPixel);            if ((intervalBeginTime < 0) && (newTime < intervalBeginTime)) {                newTime = intervalBeginTime;            }            setIntervalBeginTime(newTime);            dragStartPoint = dragEndPoint;            return;        }        // only the 'normal' drag-selection implemented here        if (timeAt(dragEndPoint.x) > dragStartTime) { //left to right            selectionEndTime = timeAt(dragEndPoint.x);            if (selectionEndTime > getMediaDuration()) {                selectionEndTime = getMediaDuration();            }            selectionBeginTime = dragStartTime;            if (selectionBeginTime < 0) {                selectionBeginTime = 0L;            }            if (selectionEndTime < 0) {                selectionEndTime = 0L;            }            setMediaTime(selectionEndTime);        } else { //right to left            selectionBeginTime = timeAt(dragEndPoint.x);            if (selectionBeginTime > getMediaDuration()) {                selectionBeginTime = getMediaDuration();            }            selectionEndTime = dragStartTime;            if (selectionEndTime > getMediaDuration()) {                selectionEndTime = getMediaDuration();            }            if (selectionBeginTime < 0) {                selectionBeginTime = 0L;            }            if (selectionEndTime < 0) {                selectionEndTime = 0L;            }            setMediaTime(selectionBeginTime);        }        setSelection(selectionBeginTime, selectionEndTime);        updateSelection();        repaint();    }    /**     * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)     */    public void mouseMoved(MouseEvent e) {        // stub    }    /**     * The use of a mousewheel needs Java 1.4!<br>     * Typically scroll vertically.     *     * @param e the event     */    public void mouseWheelMoved(MouseWheelEvent e) {    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -