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

📄 extractstep1.java

📁 编辑视频文件
💻 JAVA
字号:
/* * File:     ExtractStep1.java * Project:  MPI Linguistic Application * Date:     02 May 2007 * * Copyright (C) 2001-2007  Max Planck Institute for Psycholinguistics * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package mpi.eudico.client.annotator.timeseries;import mpi.eudico.client.annotator.ElanLocale;import mpi.eudico.client.annotator.commands.Command;import mpi.eudico.client.annotator.commands.ELANCommandFactory;import mpi.eudico.client.annotator.gui.multistep.MultiStepPane;import mpi.eudico.client.annotator.gui.multistep.StepPane;import mpi.eudico.client.annotator.tier.TierTableModel;import mpi.eudico.server.corpora.clomimpl.abstr.TierImpl;import mpi.eudico.server.corpora.clomimpl.abstr.TranscriptionImpl;import mpi.eudico.server.corpora.clomimpl.type.Constraint;import mpi.eudico.server.corpora.clomimpl.type.LinguisticType;import mpi.eudico.server.corpora.clomimpl.type.SymbolicAssociation;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Vector;import javax.swing.DefaultListModel;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.ListSelectionModel;import javax.swing.border.EmptyBorder;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;/** * First step of a wizard to extract certain data from a time series track * based on time intervals (annotations) on a time-alignable tier. The extracted * value for the intervals are stored in ref annotations on a symbolically * associated depending tier. * * @author Han Sloetjes * @version 1.0 March 2006  */public class ExtractStep1 extends StepPane implements ActionListener,    ListSelectionListener {    private TranscriptionImpl transcription;    private JTable sourceTable;    private TierTableModel tierModel;    private JList dependList;    private DefaultListModel depModel;    private JButton newTierButton;    /**     * Creates a new ExtractStep1 instance     *     * @param multiPane the container multistep pane     * @param transcription the transcription to take source and destination tier from     */    public ExtractStep1(MultiStepPane multiPane, TranscriptionImpl transcription) {        super(multiPane);        this.transcription = transcription;        initComponents();    }    /**     * Initialize ui components etc.     */    public void initComponents() {        // setPreferredSize        setLayout(new GridBagLayout());        setBorder(new EmptyBorder(12, 12, 12, 12));        JScrollPane tableScroll;        JScrollPane listScroll;        // Table and List        if (transcription != null) {            Vector allTiers = transcription.getTiers();            Vector alignables = new Vector(allTiers.size());            TierImpl tier;            for (int i = 0; i < allTiers.size(); i++) {                tier = (TierImpl) allTiers.get(i);                if (tier.isTimeAlignable() &&                        (tier.getNumberOfAnnotations() > 0)) {                    alignables.add(tier);                }            }            tierModel = new TierTableModel(alignables,                    new String[] {                        TierTableModel.NAME, TierTableModel.PARENT,                        TierTableModel.TYPE                    });            sourceTable = new JTable(tierModel);        } else {            tierModel = new TierTableModel();            sourceTable = new JTable(tierModel);        }        sourceTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);        tableScroll = new JScrollPane(sourceTable);        depModel = new DefaultListModel();        dependList = new JList(depModel);        dependList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);        listScroll = new JScrollPane(dependList);        Insets insets = new Insets(4, 6, 4, 6);        GridBagConstraints gbc = new GridBagConstraints();        gbc.anchor = GridBagConstraints.NORTHWEST;        gbc.fill = GridBagConstraints.HORIZONTAL;        gbc.insets = insets;        gbc.weightx = 1.0;        add(new JLabel("<html>" +                ElanLocale.getString("TimeSeriesViewer.Extract.SourceTier") +                "</html>"), gbc);        gbc = new GridBagConstraints();        gbc.gridy = 1;        gbc.anchor = GridBagConstraints.NORTHWEST;        gbc.fill = GridBagConstraints.BOTH;        gbc.insets = insets;        gbc.weightx = 1.0;        gbc.weighty = 1.0;        add(tableScroll, gbc);        gbc = new GridBagConstraints();        gbc.gridy = 2;        gbc.anchor = GridBagConstraints.NORTHWEST;        gbc.fill = GridBagConstraints.HORIZONTAL;        gbc.insets = insets;        gbc.weightx = 1.0;        add(new JLabel("<html>" +                ElanLocale.getString("TimeSeriesViewer.Extract.DestTier") +                "</html>"), gbc);        gbc = new GridBagConstraints();        gbc.gridy = 3;        gbc.anchor = GridBagConstraints.NORTHWEST;        gbc.fill = GridBagConstraints.BOTH;        gbc.insets = insets;        gbc.weightx = 1.0;        gbc.weighty = 1.0;        add(listScroll, gbc);        newTierButton = new JButton(ElanLocale.getString(                    "CommandActions.AddTier"));        newTierButton.addActionListener(this);        newTierButton.setEnabled(false);        gbc = new GridBagConstraints();        gbc.gridy = 4;        gbc.anchor = GridBagConstraints.NORTHWEST;        gbc.fill = GridBagConstraints.NONE;        gbc.insets = insets;        add(newTierButton, gbc);        sourceTable.getSelectionModel().addListSelectionListener(this);        dependList.getSelectionModel().addListSelectionListener(this);    }    /**     * Refreshes the list of dependent symbolically associated tiers for the     * selected source tier.     */    private void updateDependentTierList() {        multiPane.setButtonEnabled(MultiStepPane.NEXT_BUTTON, false);        depModel.removeAllElements();        newTierButton.setEnabled(false);        int row = sourceTable.getSelectedRow();        if (row < 0) {            return;        }        String tierName = (String) tierModel.getValueAt(row,                tierModel.findColumn(TierTableModel.NAME));        TierImpl tier = (TierImpl) transcription.getTierWithId(tierName);        if (tier != null) {            Vector deps = tier.getChildTiers();            TierImpl loopTier;            for (int i = 0; i < deps.size(); i++) {                loopTier = (TierImpl) deps.get(i);                if (loopTier.getLinguisticType().getConstraints().getStereoType() == Constraint.SYMBOLIC_ASSOCIATION) {                    depModel.addElement(loopTier.getName());                }            }            if (depModel.getSize() > 0) {                dependList.setSelectedIndex(0);                multiPane.setButtonEnabled(MultiStepPane.NEXT_BUTTON, true);            }            newTierButton.setEnabled(true);        }    }    /**     * If there is a selected tier, prompt for a tier name and create a     * dependent tier of type Symbolic Association. The type can be selected     * from a list or can be created if there is no linguistic type of the     * proper stereotype in the transcription.     */    private void createTier() {        int row = sourceTable.getSelectedRow();        if (row < 0) {            return;        }        String tierName = (String) tierModel.getValueAt(row,                tierModel.findColumn(TierTableModel.NAME));        TierImpl tier = (TierImpl) transcription.getTierWithId(tierName);        if (tier != null) {            // prompt for tier name            String name = JOptionPane.showInputDialog(this,                    ElanLocale.getString("EditTierDialog.Message.TierName"),                    ElanLocale.getString("Menu.Tier.AddNewTier"),                    JOptionPane.QUESTION_MESSAGE);            if ((name == null) || (name.length() == 0)) {                JOptionPane.showMessageDialog(this,                    ElanLocale.getString("EditTierDialog.Message.TierName"),                    ElanLocale.getString("Message.Error"),                    JOptionPane.ERROR_MESSAGE);                return;            }            if (transcription.getTierWithId(name) != null) {                JOptionPane.showMessageDialog(this,                    ElanLocale.getString("EditTierDialog.Message.Exists"),                    ElanLocale.getString("Message.Error"),                    JOptionPane.ERROR_MESSAGE);                return;            }            // prompt for Linguistic Type            Vector types = transcription.getLinguisticTypes();            ArrayList symbList = new ArrayList(types.size());            LinguisticType lt;            for (int i = 0; i < types.size(); i++) {                lt = (LinguisticType) types.get(i);                if ((lt.getConstraints() != null) &&                        (lt.getConstraints().getStereoType() == Constraint.SYMBOLIC_ASSOCIATION)) {                    symbList.add(lt.getLinguisticTypeName());                }            }            if (symbList.size() == 0) {                // prompt for name for symbolic association type                String typeName = JOptionPane.showInputDialog(this,                        ElanLocale.getString("EditTypeDialog.Message.TypeName"),                        ElanLocale.getString("Menu.Type.AddNewType"),                        JOptionPane.QUESTION_MESSAGE);                if ((typeName == null) || (typeName.length() == 0)) {                    JOptionPane.showMessageDialog(this,                        ElanLocale.getString("EditTypeDialog.Message.TypeName"),                        ElanLocale.getString("Message.Error"),                        JOptionPane.ERROR_MESSAGE);                    return;                }                if (transcription.getLinguisticTypeByName(typeName) != null) {                    JOptionPane.showMessageDialog(this,                        ElanLocale.getString("EditTypeDialog.Message.Exists"),                        ElanLocale.getString("Message.Error"),                        JOptionPane.ERROR_MESSAGE);                    return;                }                Command c = ELANCommandFactory.createCommand(transcription,                        ELANCommandFactory.ADD_TYPE);                c.execute(transcription,                    new Object[] {                        typeName, new SymbolicAssociation(), null, Boolean.FALSE,                        Boolean.FALSE                    });                lt = transcription.getLinguisticTypeByName(typeName);                if (lt != null) {                    symbList.add(typeName);                } else {                    return;                }            }            String selTypeName = null;            if (symbList.size() == 1) {                selTypeName = (String) symbList.get(0);            } else {                selTypeName = (String) JOptionPane.showInputDialog(this,                        ElanLocale.getString(                            "TimeSeriesViewer.Extract.SelectType"),                        ElanLocale.getString("EditTypeDialog.ChangeType"),                        JOptionPane.QUESTION_MESSAGE, null, symbList.toArray(),                        symbList.get(0));            }            if (selTypeName != null) {                Command c = ELANCommandFactory.createCommand(transcription,                        ELANCommandFactory.ADD_TIER);                c.execute(transcription,                    new Object[] {                        name, tier, selTypeName, tier.getParticipant(),                        tier.getAnnotator(), tier.getDefaultLocale()                    });                updateDependentTierList();            }        }    }    /**     * Return the title of this step.     *     * @return the title     */    public String getStepTitle() {        return ElanLocale.getString("TimeSeriesViewer.Extract.SelectTiers");    }    /**     * Enable or disable the Next button depending on destination tier selection.     */    public void enterStepBackward() {        if (dependList.getSelectedIndex() < 0) {            multiPane.setButtonEnabled(MultiStepPane.NEXT_BUTTON, false);        } else {            multiPane.setButtonEnabled(MultiStepPane.NEXT_BUTTON, true);        }    }    /**     * Store the names of the selected source and destination tier as step     * properties.     *     * @return true if a source and destination tier have been selected,     * false otherwise     */    public boolean leaveStepForward() {        if ((sourceTable.getSelectedRow() >= 0) &&                (dependList.getSelectedIndex() >= 0)) {            String sourceName = (String) tierModel.getValueAt(sourceTable.getSelectedRow(),                    tierModel.findColumn(TierTableModel.NAME));            multiPane.putStepProperty("SourceTier", sourceName);            String destName = (String) dependList.getSelectedValue();            multiPane.putStepProperty("DestTier", destName);            return true;        } else {            return false;        }    }    /**     * Button action.     *     * @param e the action event     */    public void actionPerformed(ActionEvent e) {        // only the add tier button is there        createTier();    }    /**     * Update ui elements after a change in selected tiers.     *     * @param e the event     */    public void valueChanged(ListSelectionEvent e) {        if (e.getValueIsAdjusting()) {            if (e.getSource() == sourceTable.getSelectionModel()) {                updateDependentTierList();            } else if (e.getSource() == dependList.getSelectionModel()) {                if (dependList.getSelectedIndex() < 0) {                    multiPane.setButtonEnabled(MultiStepPane.NEXT_BUTTON, false);                } else {                    multiPane.setButtonEnabled(MultiStepPane.NEXT_BUTTON, true);                }            }        }    }}

⌨️ 快捷键说明

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