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

📄 datagloveconfigpanel.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        if (currentTracksCB.getItemCount() > 0) {            updateForTrack((String) currentTracksCB.getSelectedItem());        }    }    private void selectColor() {        Color newColor = JColorChooser.showDialog(this,                ElanLocale.getString("TimeSeriesViewer.Config.TrackColor"),                colorButton.getBackground());        colorButton.setBackground(newColor);    }    /**     * Creates a track; gets the data for the row, column and derivative     * from the file reader and initializes a continuous rate track.     * @param row the sample row     * @param col the sample column     * @param derLevel derivative     * @return the track or null     */    private AbstractTSTrack createTrack(int row, int col, int derLevel) {        if (reader == null) {            return null;        }        ContinuousRateTSTrack track = new ContinuousRateTSTrack();        try {            track.setData(reader.readTrack(row, col, derLevel));            track.setSampleRate(reader.getSampleFrequency());            track.setType(TimeSeriesTrack.VALUES_FLOAT_ARRAY);        } catch (IOException ioe) {            LOG.warning("Could not read data for track: " + ioe.getMessage());        }        return track;    }    /**     * Calculates the range (min - max) from the data in the track.     *     * @param track the track     *     * @return the range, min - max value     */    private float[] calculateRange(AbstractTSTrack track) {        float[] range = new float[] { 0, 100 };        if ((track != null) && track.getData() instanceof float[]) {            float[] data = (float[]) track.getData();            float min = Float.MAX_VALUE;            float max = Float.MIN_VALUE;            for (int i = 0; i < data.length; i++) {                if (data[i] < min) {                    min = data[i];                }                if (data[i] > max) {                    max = data[i];                }            }            range[0] = min;            range[1] = max;        }        return range;    }    /**     * Performs checks, creats a track(configuration) and adds it to the     * source (configuration). Sends a notification to listeners.     */    private void doAdd() {        String name = trackNameTF.getText();        int row = 0;        int col = 0;        int derLevel = 0;        float min = 0;        float max = 100;        if (name != null) {            name = name.trim();        }        if (name.length() == 0) {            showWarningMessage(ElanLocale.getString(                    "TimeSeriesViewer.Config.Message.NoName"));            return;        }        TSTrackConfiguration tst;        for (int i = 0; i < tracks.size(); i++) {            tst = (TSTrackConfiguration) tracks.get(i);            if (name.equals(tst.getTrackName())) {                showWarningMessage(ElanLocale.getString(                        "TimeSeriesViewer.Config.Message.NameExists"));                return;            }        }        // create new track        TSTrackConfiguration nextTrack = new TSTrackConfiguration(name);        if (singleCellRB.isSelected()) { //always true for the time being            row = ((Integer) rowSpinner.getValue()).intValue();            col = ((Integer) colSpinner.getValue()).intValue();            SamplePosition spos = new SamplePosition(new int[] { row },                    new int[] { col });            nextTrack.setSamplePos(spos);        }        if (calcRangeRB.isSelected()) {            nextTrack.setProperty(TimeSeriesConstants.AUTO_DETECT_RANGE, "true");        } else {            Object minObj = minTF.getValue();            Object maxObj = maxTF.getValue();            if (minObj instanceof Double) {                min = ((Double) minObj).floatValue();            } else if (minObj instanceof Long) {                min = ((Long) minObj).floatValue();            } else if (minObj instanceof Float) {                min = ((Float) minObj).floatValue();            }            if (maxObj instanceof Double) {                max = ((Double) maxObj).floatValue();            } else if (maxObj instanceof Long) {                max = ((Long) maxObj).floatValue();            } else if (maxObj instanceof Float) {                max = ((Float) maxObj).floatValue();            }            nextTrack.setProperty(TimeSeriesConstants.AUTO_DETECT_RANGE, "false");        }        if (deriv1RB.isSelected()) {            derLevel = 1;        } else if (deriv2RB.isSelected()) {            derLevel = 2;        } else if (deriv3RB.isSelected()) {            derLevel = 3;        }        AbstractTSTrack track = createTrack(row, col, derLevel);        if (track != null) {            track.setColor(colorButton.getBackground());            track.setDerivativeLevel(derLevel);            track.setName(name);            if (calcRangeRB.isSelected()) {                track.setRange(calculateRange(track));            } else {                track.setRange(new float[] { min, max });            }            nextTrack.putObject(name, track);        }        if (trackDescTF.getText() != null) {            track.setDescription(trackDescTF.getText().trim());        }        if (unitTF.getText() != null) {            track.setUnitString(unitTF.getText().trim());        }        config.putObject(name, nextTrack);        tracks.add(nextTrack);        currentTracksCB.addItem(name);        model.addRow(nextTrack);        notifyListeners(new TimeSeriesChangeEvent(nextTrack,                TimeSeriesChangeEvent.ADD, TimeSeriesChangeEvent.TRACK));        updateForTrack(name);    }    /**     * Performs some checks, update the selected track (configuration) and     * notifies listeners.     */    private void doChange() {        if (currentTrack != null) {            boolean changed = false;            AbstractTSTrack track = (AbstractTSTrack) currentTrack.getObject(currentTrack.getTrackName());            String name = trackNameTF.getText();            if (name != null) {                name = name.trim();            }            if (name.length() == 0) {                showWarningMessage(ElanLocale.getString(                        "TimeSeriesViewer.Config.Message.NoName"));                return;            }            if (!name.equals(currentTrack.getTrackName())) {                currentTrack.setTrackName(name);                if (track != null) {                    track.setName(name);                }                changed = true;            }            if (trackDescTF.getText() != null) {                String desc = trackDescTF.getText().trim();                if ((track != null) && !desc.equals(track.getDescription())) {                    track.setDescription(desc);                    changed = true;                }            }            // skip the sample position, can not be changed            if ("true".equals(currentTrack.getProperty(                            TimeSeriesConstants.AUTO_DETECT_RANGE))) {                if (!calcRangeRB.isSelected()) {                    currentTrack.setProperty(TimeSeriesConstants.AUTO_DETECT_RANGE,                        "false");                    changed = true;                }            }            if ((track != null) && (track.getRange() != null)) {                float min = 0;                float max = 100;                Object minObj = minTF.getValue();                Object maxObj = maxTF.getValue();                if (minObj instanceof Double) {                    min = ((Double) minObj).floatValue();                } else if (minObj instanceof Long) {                    min = ((Long) minObj).floatValue();                } else if (minObj instanceof Float) {                    min = ((Float) minObj).floatValue();                }                if (maxObj instanceof Double) {                    max = ((Double) maxObj).floatValue();                } else if (maxObj instanceof Long) {                    max = ((Long) maxObj).floatValue();                } else if (maxObj instanceof Float) {                    max = ((Float) maxObj).floatValue();                }                if ((track.getRange()[0] != min) ||                        (track.getRange()[1] != max)) {                    track.setRange(new float[] { min, max });                    changed = true;                }            }            if (track != null) {                if (unitTF.getText() != null) {                    String units = unitTF.getText().trim();                    if (!units.equals(track.getUnitString())) {                        track.setUnitString(units);                        changed = true;                    }                }                if (track.getColor() != colorButton.getBackground()) {                    track.setColor(colorButton.getBackground());                    changed = true;                }            }            if (changed) {                notifyListeners(new TimeSeriesChangeEvent(currentTrack,                        TimeSeriesChangeEvent.CHANGE,                        TimeSeriesChangeEvent.TRACK));                reextractTracks();                updateForTrack(currentTrack.getTrackName());            }        }    }    /**     * Removes a track from the source configuration, notifies listeners.     */    private void doDelete() {        if (currentTrack != null) {            tracks.remove(currentTrack);            config.removeObject(currentTrack.getTrackName());            reextractTracks();            notifyListeners(new TimeSeriesChangeEvent(currentTrack,                    TimeSeriesChangeEvent.DELETE, TimeSeriesChangeEvent.TRACK));            if (currentTracksCB.getItemCount() > 0) {                updateForTrack((String) currentTracksCB.getItemAt(0));            } else {                updateForTrack(null);            }        }    }    /**     * Creates a warning message dialog with the specified message.     *     * @param message the message     */    private void showWarningMessage(String message) {        JOptionPane.showMessageDialog(this, message,            ElanLocale.getString("Message.Warning"), JOptionPane.WARNING_MESSAGE);    }    /**     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)     *     * @param event action event     */    public void actionPerformed(ActionEvent event) {        if (event.getSource() == changeButton) {            switch (mode) {            case ADD:                doAdd();                break;            case CHANGE:                doChange();                break;            case DELETE:                doDelete();            }        } else if (event.getSource() == colorButton) {            selectColor();        }    }    /**     * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)     */    public void stateChanged(ChangeEvent e) {        if (e.getSource() == tabPane) {            mode = tabPane.getSelectedIndex();            updateForMode();        } else if (e.getSource() == calcRangeRB) {            minTF.setEnabled(false);            minTF.setEditable(false);            maxTF.setEnabled(false);            maxTF.setEditable(false);        } else if (e.getSource() == manRangeRB) {            minTF.setEnabled(true);            minTF.setEditable(true);            maxTF.setEnabled(true);            maxTF.setEditable(true);        } else if (e.getSource() == rowSpinner) {            if (rowSpinner.getValue() instanceof Integer) {                int row = ((Integer) rowSpinner.getValue()).intValue();                colSpinModel.setMaximum(new Integer(DataGloveConstants.COLS_PER_ROW[row] -                        1)); // zero based                colSpinner.setValue(new Integer(0));            }        } else if (e.getSource() == singleCellRB) {            rowSpinner.setEnabled(true);            colSpinner.setEnabled(true);            multiCellButton.setEnabled(false);        } else if (e.getSource() == multiCellRB) {            rowSpinner.setEnabled(false);            colSpinner.setEnabled(false);            multiCellButton.setEnabled(true);        }    }    /**     * ComboBox selection changes.     *     * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)     */    public void itemStateChanged(ItemEvent e) {        if (e.getStateChange() == ItemEvent.SELECTED) {            String trackName = (String) currentTracksCB.getSelectedItem();            updateForTrack(trackName);        }    }    /**     * Update the ui after selection of a tier in the table (except for ADD     * mode).     *     * @param e the list selection event     */    public void valueChanged(ListSelectionEvent e) {        int row = trackTable.getSelectedRow();        if (row > -1) {            int column = model.findColumn(TrackTableModel.NAME);            updateForTrack((String) model.getValueAt(row, column));        }    }}

⌨️ 快捷键说明

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