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

📄 syncmanager.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        // the current master gets the master time label that is alive        // the others get a static label that shows their offset        if (player == playerInFocus) {            playPanel.add(viewerManager.getTimePanel(), gbc);        } else {            JLabel offsetLabel = new JLabel();            offsetLabel.setText(TimeFormatter.toString(player.getOffset()));            playPanel.add(offsetLabel, gbc);        }        gbc.gridx = 0;        gbc.gridy = 0;        gbc.anchor = GridBagConstraints.CENTER;        panel.add(playPanel, gbc);        gbc.gridx = 0;        gbc.gridy = 1;        gbc.anchor = GridBagConstraints.CENTER;        JLabel fileLabel = new JLabel();        fileLabel.setFont(Constants.SMALLFONT);        if (player.getMediaDescriptor() != null) {            fileLabel.setText(FileUtility.fileNameFromPath(                    player.getMediaDescriptor().mediaURL));        } else {            fileLabel.setText("-");        }        panel.add(fileLabel, gbc);        gbc.gridx = 0;        gbc.gridy = 2;        gbc.anchor = GridBagConstraints.CENTER;        if (player instanceof MultiSourcePlayer) {            JComboBox box = new JComboBox();            String[] sources = ((MultiSourcePlayer) player).getDescriptorStrings();            for (int i = 0; i < sources.length; i++) {                box.addItem(sources[i]);                if (i == 0) {                    fileLabel.setText(sources[i]);                }            }            box.addItemListener(this);            panel.add(box, gbc);        }        return panel;    }    /**     * Returns whether or not the media players currently are connected     * to the controlles.     *     * @return the connected state     */    public boolean connectedPlayers() {        return connected;    }    /**     * Update the offset for the current player in focus     */    private void setOffset() {        if (playerInFocus != null) {            viewerManager.setOffset(playerInFocus, playerInFocus.getMediaTime());        }    }    /**     * only keep the relative offsets     *     */    private void setRelativeOffsets() {        //   	if (relative) {        //   		return;        //   	}        // find smallest offset        minOffset = Long.MAX_VALUE;        Enumeration en = playerForName.elements();        while (en.hasMoreElements()) {            ElanMediaPlayer player = (ElanMediaPlayer) en.nextElement();            if (player.getOffset() < minOffset) {                minOffset = player.getOffset();            }        }        // correct all offsets        en = playerForName.elements();        while (en.hasMoreElements()) {            ElanMediaPlayer player = (ElanMediaPlayer) en.nextElement();            long offset = player.getOffset();            viewerManager.setOffset(player, offset - minOffset);            //    		player.setOffset(offset - minOffset);        }        // keep the image as it is        viewerManager.getMasterMediaPlayer().setMediaTime(minOffset);        relative = true;    }    /**     * Use absolute offsets     *     */    private void setAbsoluteOffsets() {        //	   	if (!relative) {        //	   		return;        //	   	}        // correct all offsets        Enumeration en = playerForName.elements();        while (en.hasMoreElements()) {            ElanMediaPlayer player = (ElanMediaPlayer) en.nextElement();            long offset = player.getOffset();            // why should the minOffset be added here?            viewerManager.setOffset(player, offset /*+ minOffset*/);            //	   		player.setOffset(offset + minOffset);        }        // keep the image as it is        viewerManager.getMasterMediaPlayer().setMediaTime(0);        relative = false;    }    /**     * Connects all players.     */    public void reconnect() {        setOffset();        playerInFocus = null;        if (layoutManager.getMasterMediaPlayer() != null) {            viewerManager.setMasterMediaPlayer(layoutManager.getMasterMediaPlayer());            viewerManager.enableDisabledMediaPlayers();        }        connected = true;        allPlayersRB.removeItemListener(this);        allPlayersRB.setSelected(true);        allPlayersRB.addItemListener(this);    }    /**     * Sets the player that has the focus, i.e. the player of which the offset     * can be manipulated with the player control buttons.     * @param elanPlayer the focussed player     */    private void setFocussedPlayer(ElanMediaPlayer elanPlayer) {        if (elanPlayer == null) {            return;        }        setOffset();        playerInFocus = elanPlayer;        viewerManager.setMasterMediaPlayer(playerInFocus);        viewerManager.disableSlaveMediaPlayers();        long offset = playerInFocus.getOffset();        playerInFocus.setOffset(0);        playerInFocus.setMediaTime(offset);        connected = false;        layoutManager.doLayout();    }    /**     * Sets the source for a MultiSourcePlayer, the offset for that player     * and ui elements of the player labelpanel.     *     * @param sourceComponent the source selection ComboBox connected to the player     */    private void updateMultiPlayer(JComboBox sourceComponent) {        Iterator playIt = labelForPlayer.keySet().iterator();        Object playerObj = null;        JPanel panel = null;labelloop:         while (playIt.hasNext()) {            playerObj = playIt.next();            panel = (JPanel) labelForPlayer.get(playerObj);            Component[] comps = panel.getComponents();            for (int i = 0; i < comps.length; i++) {                if (comps[i] == sourceComponent) {                    break labelloop;                }            }            panel = null;            playerObj = null;        }        if ((panel != null) && playerObj instanceof MultiSourcePlayer) {            MultiSourcePlayer player = (MultiSourcePlayer) playerObj;            String source = (String) sourceComponent.getSelectedItem();            if (source != null) {                // this sets the offset of the player                player.setCurrentSource(source);                layoutManager.doLayout();            }        }    }    /**     * Handles the action events     *     * @param event the action event     */    public void actionPerformed(ActionEvent event) {        if (event.getSource() == applyButton) {            // this will cause an item event on the "all players radio button"             allPlayersRB.setSelected(true);        }    }    /**     * Handling of changes in radio buttons selection states.     *     * @param e the item selection event     */    public void itemStateChanged(ItemEvent e) {        // ignore deselect events        if (e.getStateChange() == ItemEvent.SELECTED) {            if (e.getSource() instanceof JComboBox) {                updateMultiPlayer((JComboBox) e.getSource());            } else if (e.getSource() == absOffsetRB) {                relative = false;                if (!allPlayersRB.isSelected()) {                    allPlayersRB.setSelected(true);                } else {                    setAbsoluteOffsets();                }            } else if (e.getSource() == relOffsetRB) {                relative = true;                if (!allPlayersRB.isSelected()) {                    allPlayersRB.setEnabled(true);                } else {                    setRelativeOffsets();                }            } else if (e.getSource() == allPlayersRB) {                reconnect();                if (relative) {                    setRelativeOffsets();                } else {                    setAbsoluteOffsets();                }                layoutManager.doLayout();            } else {                // it is a player's radio button                if (playerButtons.containsValue(e.getSource())) {                    Enumeration en = playerButtons.keys();                    Object player;                    while (en.hasMoreElements()) {                        player = en.nextElement();                        if (playerButtons.get(player) == e.getSource()) {                            setFocussedPlayer((ElanMediaPlayer) player);                            break;                        }                    }                }            }        }    }    /**     * Update the labels, border titles and button texts.     * Called by the ElanLayoutManager.     */    public void updateLocale() {        offsetPanel.setBorder(new TitledBorder(ElanLocale.getString(                    "SyncMode.Label.Offset")));        absOffsetRB.setText(ElanLocale.getString("SyncMode.Label.Absolute"));        relOffsetRB.setText(ElanLocale.getString("SyncMode.Label.Relative"));        applyButton.setText(ElanLocale.getString("SyncMode.Button.Apply"));        playerPanel.setBorder(new TitledBorder(ElanLocale.getString(                    "SyncMode.Label.Player")));        allPlayersRB.setText(ElanLocale.getString("SyncMode.Label.AllPlayers"));        //update player radiobuttons and player labels        Enumeration en = nameForPlayer.keys();        Object player;        JRadioButton b;        JPanel p;        JLabel l;        while (en.hasMoreElements()) {            player = en.nextElement();            b = (JRadioButton) playerButtons.get(player);            b.setText(ElanLocale.getString("SyncMode.Label.Player") + " " +                nameForPlayer.get(player));            p = (JPanel) labelForPlayer.get(player);            try {                l = (JLabel) p.getComponent(0);                String name = ElanLocale.getString("SyncMode.Label.Player") +                    " " + (String) nameForPlayer.get(player) + " " +                    ElanLocale.getString("SyncMode.Label.Offset") + ": ";                l.setText(name);            } catch (Exception e) {                // just catch any exception, NullPointer, ArrayIndexOutOfBounds or                // ClassCast            }        }    }}

⌨️ 快捷键说明

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