timeseriesviewer.java
来自「编辑视频文件」· Java 代码 · 共 1,387 行 · 第 1/3 页
JAVA
1,387 行
ymin = ymax - panel.getHeight(); if ((ymax >= y) && (ymin <= y)) { return panel; } ymax -= panel.getHeight(); } return null; } /** * Change the height of the trackpanels depending on the auto fit * vertically flag. */ private void adjustPanelHeight() { int numPan = trackPanels.size(); if (numPan > 0) { TSTrackPanelImpl panel; if (autoFitVertical) { trackPanelHeight = (getHeight() - rulerHeight) / numPan; } else { trackPanelHeight = DEF_PANEL_HEIGHT; } for (int i = 0; i < trackPanels.size(); i++) { panel = (TSTrackPanelImpl) trackPanels.get(i); panel.setHeight(trackPanelHeight); } } else { if (autoFitVertical) { trackPanelHeight = getHeight(); } } } /** * Create a wizard to extract data from a track to a tier, based on * annotation intervals of a parent tier. */ private void extractTrackData() { // shows a modal dialog new ExtractDataMultiStep(transcription, trackManager); } /** * @see mpi.eudico.client.annotator.viewer.AbstractViewer#controllerUpdate(mpi.eudico.client.mediacontrol.ControllerEvent) */ public void controllerUpdate(ControllerEvent event) { super.controllerUpdate(event); } /** * @see mpi.eudico.client.annotator.viewer.AbstractViewer#updateSelection() */ public void updateSelection() { selectionBeginPos = xAt(getSelectionBeginTime()); if (selectionBeginPos < vertRulerWidth) { selectionBeginPos = vertRulerWidth; } selectionEndPos = xAt(getSelectionEndTime()); if (selectionEndPos < selectionBeginPos) { selectionEndPos = selectionBeginPos; } repaint(); } /** * @see mpi.eudico.client.annotator.viewer.AbstractViewer#updateLocale() */ public void updateLocale() { super.updateLocale(); if (popup != null) { fitVerticalMI.setText(ElanLocale.getString( "TimeSeriesViewer.TrackPanel.FitVertically")); addPanelMI.setText(ElanLocale.getString( "TimeSeriesViewer.TrackPanel.AddPanel")); removePanelMI.setText(ElanLocale.getString( "TimeSeriesViewer.TrackPanel.RemovePanel")); trPanelMenu.setText(ElanLocale.getString( "TimeSeriesViewer.TrackPanel")); setRangeMenu.setText(ElanLocale.getString( "TimeSeriesViewer.TrackPanel.SetRange")); addTrackMenu.setText(ElanLocale.getString( "TimeSeriesViewer.Track.Add")); removeTrackMenu.setText(ElanLocale.getString( "TimeSeriesViewer.Track.Remove")); extractDataMI.setText(ElanLocale.getString( "TimeSeriesViewer.Extract")); configureTrMI.setText(ElanLocale.getString( "TimeSeriesViewer.Tracks.Configure")); // $sidgrid addAllTrackMI.setText(ElanLocale.getString( "TimeSeriesViewer.Track.Addall")); removeAllTrackMI.setText(ElanLocale.getString( "TimeSeriesViewer.Track.Removeall")); // end $sidgrid } } /** * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent) */ public void componentResized(ComponentEvent e) { TSTrackPanelImpl panel; intervalWidth = getWidth() - vertRulerWidth - defBarWidth; for (int i = 0; i < trackPanels.size(); i++) { panel = (TSTrackPanelImpl) trackPanels.get(i); panel.setWidth(getWidth() - defBarWidth); } adjustPanelHeight(); paintBuffer(); scrollBar.setBounds(getWidth() - defBarWidth, 0, defBarWidth, getHeight()); scrollBar.revalidate(); updateScrollBar(); } /** * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent) */ public void componentShown(ComponentEvent e) { paintBuffer(); scrollBar.setBounds(getWidth() - defBarWidth, 0, defBarWidth, getHeight()); scrollBar.revalidate(); updateScrollBar(); } /** * Handle scrolling of the viewer image. * * @param e the event */ public void adjustmentValueChanged(AdjustmentEvent e) { int value = e.getValue(); setVerticalScrollOffset(value); } /** * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ public void actionPerformed(ActionEvent e) { if (e.getSource() == fitVerticalMI) { autoFitVertical = fitVerticalMI.isSelected(); adjustPanelHeight(); paintBuffer(); updateScrollBar(); return; } if (e.getSource() == addPanelMI) { addEmptyTrackPanel(); return; } if (e.getSource() == removePanelMI) { if (selTrackPanel != null) { removeTSTrackPanel(selTrackPanel); } return; } if (e.getSource() == configureTrMI) { if (trackManager != null) { trackManager.configureTracks(this); } return; } if (e.getSource() == extractDataMI) { extractTrackData(); return; } //$sidgrid if (e.getSource() == addAllTrackMI) { if (selTrackPanel != null) { ArrayList tracks = trackManager.getRegisteredTracks(); AbstractTSTrack tr; for (int i = 0; i < tracks.size(); i++) { tr = (AbstractTSTrack) tracks.get(i); if (selTrackPanel.getTrack(tr.getName()) == null) { selTrackPanel.addTrack(tr); selTrackPanel.getRuler().setRange(tr.getRange()); selTrackPanel.getRuler().setUnitString(tr.getUnitString()); } } paintBuffer(); } return; } if (e.getSource() == removeAllTrackMI) { if (selTrackPanel != null) { List tracks = selTrackPanel.getTracks(); for (int i = 0; i < tracks.size(); i++) { selTrackPanel.removeTrack((AbstractTSTrack) tracks.get(i)); } paintBuffer(); } return; } if (e.getSource() == addPanelForEachTrackMI) { clearPanel(); ArrayList trs = trackManager.getRegisteredTracks(); int totPanels = 0; if (trackPanels.isEmpty()) { totPanels = trs.size(); } // else // totPanels=trs.size()-trackPanels.size(); /*( for (int i = 0; i < totPanels; i++) { addEmptyTrackPanel(); }*/ for (int i = 0; i < totPanels; i++) { addEmptyTrackPanel(); AbstractTSTrack tra = (AbstractTSTrack) trs.get(i); TSTrackPanelImpl tsp = (TSTrackPanelImpl) trackPanels.get(i); if ((tra != null) && !tsp.getTracks().contains(tra)) { tsp.addTrack(tra); tsp.getRuler().setRange(tra.getRange()); tsp.getRuler().setUnitString(tra.getUnitString()); selTrackPanel = tsp; paintBuffer(); } } return; } if (e.getSource() == removeAllPanelsMI) { clearPanel(); return; } // end $sidgrid String command = e.getActionCommand(); if ((command != null) && (command.indexOf(ADD_PR) > -1)) { // add Track String trackName = command.substring(4); if ((trackManager != null) && (selTrackPanel != null)) { AbstractTSTrack tr = trackManager.getTrack(trackName); if (tr != null) { selTrackPanel.addTrack(tr); selTrackPanel.getRuler().setRange(tr.getRange()); selTrackPanel.getRuler().setUnitString(tr.getUnitString()); paintBuffer(); } } return; } else if ((command != null) && (command.indexOf(REM_PR) > -1)) { // remove track String trackName = command.substring(4); if (selTrackPanel != null) { List tracks = selTrackPanel.getTracks(); AbstractTSTrack tr; for (int i = 0; i < tracks.size(); i++) { tr = (AbstractTSTrack) tracks.get(i); if (trackName.equals(tr.getName())) { selTrackPanel.removeTrack(tr); paintBuffer(); } } } return; } else if ((command != null) && (command.indexOf(RANGE) > -1)) { // setRange and unit string String trackName = command.substring(4); if (selTrackPanel != null) { List tracks = selTrackPanel.getTracks(); AbstractTSTrack tr; for (int i = 0; i < tracks.size(); i++) { tr = (AbstractTSTrack) tracks.get(i); if (trackName.equals(tr.getName())) { selTrackPanel.getRuler().setRange(tr.getRange()); selTrackPanel.getRuler().setUnitString(tr.getUnitString()); paintBuffer(); } } } return; } // if we get here the super implementation (zoom) will be called super.actionPerformed(e); } /** * The use of a mousewheel needs Java 1.4!<br> * The scroll amount of the mousewheel is the height of a tier. * * @param e the event */ public void mouseWheelMoved(MouseWheelEvent e) { if (e.getUnitsToScroll() > 0) { scrollBar.setValue(scrollBar.getValue() + 25); } else { scrollBar.setValue(scrollBar.getValue() - 25); } } //#################################################################################### // testing private void testTrack() { //String fileName = "D:\\MPI\\ELAN docs\\dataglove\\onno.log"; String fileName = System.getProperty("user.dir") + File.separator + "glove.log"; mpi.eudico.client.annotator.timeseries.glove.DataGloveFileReader reader = new mpi.eudico.client.annotator.timeseries.glove.DataGloveFileReader(fileName); try { int sampleRate = reader.detectSampleFrequency(); float[] data = (float[]) reader.readTrack(10, 5); mpi.eudico.client.annotator.timeseries.ContinuousRateTSTrack track = new mpi.eudico.client.annotator.timeseries.ContinuousRateTSTrack(); track.setType(mpi.eudico.client.annotator.timeseries.TimeSeriesTrack.VALUES_FLOAT_ARRAY); track.setRange(new float[] { -180, 180 }); track.setColor(new Color(128, 0, 128)); track.setSampleRate(sampleRate); track.setData(data); float[] data2 = (float[]) reader.readTrack(14, 5); mpi.eudico.client.annotator.timeseries.ContinuousRateTSTrack track2 = new mpi.eudico.client.annotator.timeseries.ContinuousRateTSTrack(); track2.setType(mpi.eudico.client.annotator.timeseries.TimeSeriesTrack.VALUES_FLOAT_ARRAY); track2.setRange(new float[] { -180, 180 }); track2.setColor(new Color(0, 128, 0)); track2.setSampleRate(sampleRate); track2.setData(data2); if (trackPanels.size() > 0) { TSTrackPanelImpl tsp = (TSTrackPanelImpl) trackPanels.get(0); tsp.getRuler().setRange(track.getRange()); tsp.addTrack(track); tsp.addTrack(track2); } } catch (IOException ioe) { System.out.println("Read error: " + ioe.getMessage()); } } /** * Notification of changes in tracks and / or track sources (files). * Especially change and delete events should be handled here. * * @param event Dthe event */ public void timeSeriesChanged(TimeSeriesChangeEvent event) { if (event.getEditSourceType() == TimeSeriesChangeEvent.TRACK) { if (event.getSource() instanceof TSTrackConfiguration || event.getSource() instanceof AbstractTSTrack) { AbstractTSTrack tr = null; if (event.getSource() instanceof TSTrackConfiguration) { TSTrackConfiguration trc = (TSTrackConfiguration) event.getSource(); tr = (AbstractTSTrack) trc.getObject(trc.getTrackName()); } else { tr = (AbstractTSTrack) event.getSource(); } AbstractTSTrack tr2; // find the panel TSTrackPanelImpl pan; for (int i = 0; i < trackPanels.size(); i++) { pan = (TSTrackPanelImpl) trackPanels.get(i); List tracks = pan.getTracks(); for (int j = 0; j < tracks.size(); j++) { tr2 = (AbstractTSTrack) tracks.get(j); if (tr2 == tr) { if (event.getEditType() == TimeSeriesChangeEvent.CHANGE) { // make it the active track ?? pan.getRuler().setUnitString(tr.getUnitString()); pan.getRuler().setRange(tr2.getRange()); paintBuffer(); break; } else if (event.getEditType() == TimeSeriesChangeEvent.DELETE) { // check boolean active = false; if ((pan.getRuler().getRange()[0] == tr.getRange()[0]) && (pan.getRuler().getRange()[1] == tr.getRange()[1]) && ((pan.getRuler().getUnitString() != null) && pan.getRuler().getUnitString().equals(tr.getUnitString()))) { // assume it is the active track active = true; } pan.removeTrack(tr2); if (active && (pan.getTracks().size() > 0)) { pan.getRuler().setRange(((AbstractTSTrack) tracks.get( 0)).getRange()); pan.getRuler().setUnitString(((AbstractTSTrack) tracks.get( 0)).getUnitString()); } paintBuffer(); break; } } } } } } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?