📄 viewermanager2.java
字号:
disabledMediaPlayers.addAll(slaveMediaPlayers); slaveMediaPlayers.clear(); } // this must be called from the outside, maybe viewer manager can derive // the signalSourcePlayer implicitly. The sugnal source player is an mpeg // or wav player that renders the audio for the wav data that is used in the signal viewer public void setSignalSourcePlayer(ElanMediaPlayer player) { signalSourcePlayer = player; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public long getSignalViewerOffset() { long offset = 0; if (signalSourcePlayer != null) { offset = signalSourcePlayer.getOffset(); } return offset; } /** * DOCUMENT ME! * * @param player DOCUMENT ME! * @param offset DOCUMENT ME! */ public void setOffset(ElanMediaPlayer player, long offset) { player.setOffset(offset); if ((player == signalSourcePlayer) && (signalViewer != null)) { signalViewer.setOffset(offset); } transcription.setChanged(); } /** * DOCUMENT ME! * * @return the ElanMediaPlayer that is the current master media player. */ public ElanMediaPlayer getMasterMediaPlayer() { return masterMediaPlayer; } /** * Returns the collection of slave mediaplayers. * * @return the collection of slave mediaplayers */ public Vector getSlaveMediaPlayers() { return slaveMediaPlayers; } /** * DOCUMENT ME! * * @return the controlpanel for the master media player */ public ElanMediaPlayerController getMediaPlayerController() { if (mediaPlayerController == null) { mediaPlayerController = new ElanMediaPlayerController(this); PeriodicUpdateController controller = getControllerForPeriod(MEDIA_CONTROL_PANEL_PERIOD); controllers.put(mediaPlayerController, controller); connect(mediaPlayerController); viewers.add(mediaPlayerController); enabledViewers.add(mediaPlayerController); } return mediaPlayerController; } /** * DOCUMENT ME! * * @return */ public MediaPlayerControlSlider getMediaPlayerControlSlider() { if (mediaPlayerControlSlider == null) { mediaPlayerControlSlider = new MediaPlayerControlSlider(); PeriodicUpdateController controller = getControllerForPeriod(MEDIA_CONTROL_PANEL_PERIOD); controllers.put(mediaPlayerControlSlider, controller); connect(mediaPlayerControlSlider); viewers.add(mediaPlayerControlSlider); enabledViewers.add(mediaPlayerControlSlider); } return mediaPlayerControlSlider; } /** * DOCUMENT ME! * * @return */ public AnnotationDensityViewer getAnnotationDensityViewer() { if (annotationDensityViewer == null) { annotationDensityViewer = new AnnotationDensityViewer(transcription); PeriodicUpdateController controller = getControllerForPeriod(MEDIA_CONTROL_PANEL_PERIOD); controllers.put(annotationDensityViewer, controller); connect(annotationDensityViewer); viewers.add(annotationDensityViewer); enabledViewers.add(annotationDensityViewer); } return annotationDensityViewer; } /** * DOCUMENT ME! * * @return */ public TimePanel getTimePanel() { if (timePanel == null) { timePanel = new TimePanel(); PeriodicUpdateController controller = getControllerForPeriod(MEDIA_CONTROL_PANEL_PERIOD); controllers.put(timePanel, controller); connect(timePanel); viewers.add(timePanel); enabledViewers.add(timePanel); } return timePanel; } /** * Creates a Viewer for the specified fully qualified class name. * * @param className the class name * @param controllerPeriod the requested period for controller updates * * @return the viewer */ public Viewer createViewer(String className, long controllerPeriod) { Viewer viewer = null; try { viewer = (Viewer) Class.forName(className).newInstance(); viewer.setViewerManager(this); if (viewer instanceof AbstractViewer) { PeriodicUpdateController controller = getControllerForPeriod(controllerPeriod); controllers.put(viewer, controller); connect((AbstractViewer) viewer); viewers.add(viewer); enabledViewers.add(viewer); } else if (viewer instanceof ControllerListener) { getControllerForPeriod(controllerPeriod).addControllerListener((ControllerListener) viewer); } else { // special case for syntax viewer? /* try { Method method = viewer.getClass().getDeclaredMethod("getControllerListener", null); ControllerListener listener = (ControllerListener) method.invoke(viewer, null); getControllerForPeriod(controllerPeriod).addControllerListener( listener); } catch (Exception e){ System.out.println("Could not connect controller: " + e.getMessage()); } */ } } catch (Exception e) { System.out.println("Could not create viewer: " + className + ": " + e.getMessage()); } return viewer; } /** * Connection method to be used by external objects that want to connect a * listener * * @param listener */ public void connectListener(Object listener) { if (listener instanceof ControllerListener) { getControllerForPeriod(MEDIA_CONTROL_PANEL_PERIOD) .addControllerListener((ControllerListener) listener); } if (listener instanceof SelectionListener) { selection.addSelectionListener((SelectionListener) listener); } if (listener instanceof ActiveAnnotationListener) { activeAnnotation.addActiveAnnotationListener((ActiveAnnotationListener) listener); } if (listener instanceof TimeScaleListener) { timeScale.addTimeScaleListener((TimeScaleListener) listener); } if (listener instanceof ACMEditListener) { try { ((ACMEditableDocument) transcription).addACMEditListener((ACMEditListener) listener); } catch (Exception e) { e.printStackTrace(); } } } /** * Connection method to be used by external objects that want to connect a * listener * * @param listener */ public void disconnectListener(Object listener) { if (listener instanceof ControllerListener) { getControllerForPeriod(MEDIA_CONTROL_PANEL_PERIOD) .removeControllerListener((ControllerListener) listener); } if (listener instanceof SelectionListener) { selection.removeSelectionListener((SelectionListener) listener); } if (listener instanceof ActiveAnnotationListener) { activeAnnotation.removeActiveAnnotationListener((ActiveAnnotationListener) listener); } if (listener instanceof TimeScaleListener) { timeScale.removeTimeScaleListener((TimeScaleListener) listener); } if (listener instanceof ACMEditListener) { try { ((ACMEditableDocument) transcription).removeACMEditListener((ACMEditListener) listener); } catch (Exception e) { e.printStackTrace(); } } } /** * DOCUMENT ME! * * @return the controlpanel for the Transcriptions tiers */ public MultiTierControlPanel getMultiTierControlPanel() { return multiTierControlPanel; } /** * Creates a TimeLineViewer that is connected to the Viewer universe. * * @return the TimeLineViewer for the Transcrption in this ViewerManager */ public TimeLineViewer createTimeLineViewer() { TimeLineViewer viewer = new TimeLineViewer(transcription); PeriodicUpdateController controller = getControllerForPeriod(TIME_LINE_VIEWER_PERIOD); controllers.put(viewer, controller); connect(viewer); viewers.add(viewer); enabledViewers.add(viewer); return viewer; } /** * Creates a TimeLineViewer that is connected to the Viewer universe. * * @return the TimeLineViewer for the Transcrption in this ViewerManager */ public InterlinearViewer createInterlinearViewer() { InterlinearViewer viewer = new InterlinearViewer(transcription); PeriodicUpdateController controller = getControllerForPeriod(INTERLINEAR_VIEWER_PERIOD); controllers.put(viewer, controller); connect(viewer); viewers.add(viewer); enabledViewers.add(viewer); return viewer; } /** * Creates a SignalViewer that is connected to the Viewer universe. * * @param mediaURL String that represents the signal media URL * * @return the SignalViewer for the media URL */ public SignalViewer createSignalViewer(String mediaURL) { // throw exception ? SignalViewer viewer = null; // URL or String problem to be solved, is a problem for rtsp:// // the SignalViewer dows not work with streaming (rtsp://) if (mediaURL.startsWith("rtsp://")) { return viewer; // == null } viewer = new SignalViewer(mediaURL); PeriodicUpdateController controller = getControllerForPeriod(SIGNAL_VIEWER_PERIOD); controllers.put(viewer, controller); connect(viewer); // something to set the offset viewers.add(viewer); enabledViewers.add(viewer); signalViewer = viewer; // a problem when there is more than one signal viewer return viewer; } /** * Creates a GridViewer that is connected to the Viewer universe but not * yet connected to a certain Tier. * * @return the GridViewer */ public GridViewer createGridViewer() { GridViewer viewer = new GridViewer(); connect(viewer); viewers.add(viewer); enabledViewers.add(viewer); return viewer; } /** * Creates a GridViewer that is connected to the Viewer universe but not * yet connected to a certain Tier. * * @return the GridViewer */ public ElanResultViewer createSearchResultViewer() { ElanResultViewer viewer = new ElanResultViewer(); connect(viewer); viewers.add(viewer); enabledViewers.add(viewer); return viewer; } /** * Creates a SubtitleViewer that is connected to the Viewer universe but * not yet connected to a certain Tier. * * @return the SubtitleViewer */ public SubtitleViewer createSubtitleViewer() { SubtitleViewer viewer = new SubtitleViewer(); connect(viewer); viewers.add(viewer); enabledViewers.add(viewer); return viewer; } /** * Creates a TextViewer that is connected to the Viewer universe but not * yet connected to a certain Tier. * * @return the TextViewer */ public TextViewer createTextViewer() { TextViewer viewer = new TextViewer(); connect(viewer); viewers.add(viewer); enabledViewers.add(viewer); return viewer; } /** * Creates a GlassPaneSVGViewer that can be used as an transparent overlay on * lightweight components. Unfinished. * * @return DOCUMENT ME! */ public GlassPaneSVGViewer createSVGViewer() { GlassPaneSVGViewer viewer = new GlassPaneSVGViewer(transcription); PeriodicUpdateController controller = getControllerForPeriod(INTERLINEAR_VIEWER_PERIOD); controllers.put(viewer, controller); connect(viewer); viewers.add(viewer); enabledViewers.add(viewer); return viewer; } /** * A JMF specific GlassPaneSVGViewer solution that uses the JMF plugin mechanism.<br> * The viewer does not need controller updates, it paints on the frames of * the player. This viewer should be created after the mastermediaplayer! * * @return a connected JMFSVGViewer that is connected to a custom * VideoRenderer */ public JMFSVGViewer createJMFSVGViewer() { if ((getMasterMediaPlayer() != null) && getMasterMediaPlayer() instanceof JMFGraphicMediaPlayer) { if (((JMFGraphicMediaPlayer) getMasterMediaPlayer()).getRenderer() != null) { JMFSVGViewer viewer = new JMFSVGViewer(transcription); if (((JMFGraphicMediaPlayer) getMasterMediaPlayer()).connectViewer( viewer)) { connect(viewer); viewers.add(viewer); //?? enabledViewers.add(viewer); //?? } else { viewer = null; } return viewer; } } return null; } /** * Creates a SVGViewer that creates QT SpriteTracks for tiers that have references * to graphic annotations and adds them to the movie. * * @return a connected QTSVGViewer */ public QTSVGViewer createQTSVGViewer() { if ((getMasterMediaPlayer() != null) && getMasterMediaPlayer() instanceof QTMediaPlayer) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -