📄 shoeboxmarkerdialog.java
字号:
rec.getParentMarker().equals(markerToChange)) { rec.setParentMarker(newMarker); } } mr.setParentMarker(newParent); mr.setStereoType(newStereoType); mr.setCharset(newCharset); mr.setParticipantMarker(newPartMarker); mr.setExcluded(newExclude); // switch off other markers, if needed if (newPartMarker == true) { mIter = getMarkers().iterator(); while (mIter.hasNext()) { MarkerRecord rec = (MarkerRecord) mIter.next(); if (!rec.getMarker().equals(newMarker)) { rec.setParticipantMarker(false); } } } updateUIForMarker(newMarker); } } private void doDelete() { String markerToDelete = (String) (currentMarkers.getSelectedItem()); MarkerRecord mr = null; Iterator mIter = getMarkers().iterator(); while (mIter.hasNext()) { mr = (MarkerRecord) mIter.next(); if (mr.getMarker().equals(markerToDelete)) { break; } } if (mr != null) { getMarkers().remove(mr); currentMarkers.removeItem(mr.getMarker()); // reset parent markers that refer to mr mIter = getMarkers().iterator(); while (mIter.hasNext()) { MarkerRecord rec = (MarkerRecord) mIter.next(); if ((rec.getParentMarker() != null) && rec.getParentMarker().equals(mr.getMarker())) { rec.setParentMarker(null); } } } if (getMarkers().size() > 0) { updateUIForMarker(((MarkerRecord) getMarkers().get(0)).getMarker()); } } /** * Check for the condition of zero or more than one root markers; this can indicate an * inconsistent set of markers. In special cases, such as original eaf files exported * from ELAN, such situation might not be problematic, but most of the time it will be. * Just warn. */ private void close() { if (getMarkers().size() > 0) { int numRoots = 0; MarkerRecord mr = null; Iterator mIter = getMarkers().iterator(); while (mIter.hasNext()) { mr = (MarkerRecord) mIter.next(); if (mr.getParentMarker() == null) { numRoots++; } } if (numRoots != 1) { JOptionPane.showMessageDialog(this, ElanLocale.getString( "ShoeboxMarkerDialog.Message.RootMarkers"), ElanLocale.getString("Message.Warning"), JOptionPane.WARNING_MESSAGE); } } dispose(); } /** * DOCUMENT ME! */ public void doLoad() { String lastUsedDir = (String) Preferences.get("SbxMarkerDir", null); if (lastUsedDir == null) { lastUsedDir = Constants.ELAN_DATA_DIR; } JFileChooser chooser = new JFileChooser(lastUsedDir); chooser.setDialogTitle(ElanLocale.getString( "ShoeboxMarkerDialog.Title.Select")); chooser.setFileFilter(ElanFileFilter.createFileFilter( ElanFileFilter.SHOEBOX_MKR_TYPE)); chooser.setApproveButtonText(ElanLocale.getString( "ImportDialog.Approve")); chooser.setDialogType(JFileChooser.OPEN_DIALOG); int option = chooser.showDialog(this, null); if (option == JFileChooser.APPROVE_OPTION) { File curDir = chooser.getCurrentDirectory(); if (curDir != null) { Preferences.set("SbxMarkerDir", curDir.getAbsolutePath(), null); } File f = chooser.getSelectedFile(); if (f != null) { String line = null; getMarkers().clear(); currentMarkers.removeAllItems(); try { FileReader filereader = new FileReader(f); BufferedReader br = new BufferedReader(filereader); MarkerRecord newRecord = null; while ((line = br.readLine()) != null) { line = line.trim(); String label = getLabelPart(line); String value = getValuePart(line); if (label.equals("marker")) { newRecord = new MarkerRecord(); if (!value.equals("null")) { newRecord.setMarker(value); } } else if (label.equals("parent")) { if (!value.equals("null")) { newRecord.setParentMarker(value); } } else if (label.equals("stereotype")) { if (!value.equals("null")) { newRecord.setStereoType(value); } } else if (label.equals("charset")) { if (!value.equals("null")) { newRecord.setCharset(value); } } else if (label.equals("exclude")) { if (!value.equals("null")) { if (value.equals("true")) { newRecord.setExcluded(true); } else { newRecord.setExcluded(false); } } } else if (label.equals("participant")) { if (!value.equals("null")) { if (value.equals("true")) { newRecord.setParticipantMarker(true); } else { newRecord.setParticipantMarker(false); } } getMarkers().add(newRecord); currentMarkers.addItem(newRecord.getMarker()); } } } catch (Exception ex) { ex.printStackTrace(); } if (getMarkers().size() > 0) { updateUIForMarker(((MarkerRecord) getMarkers().get(0)).getMarker()); } } } } private String getLabelPart(String theLine) { String label = null; int index = theLine.indexOf(':'); if (index > 0) { label = theLine.substring(0, index); } return label; } private String getValuePart(String theLine) { String value = null; int index = theLine.indexOf(':'); if (index < (theLine.length() - 2)) { value = theLine.substring(index + 1).trim(); } return value; } /** * DOCUMENT ME! */ public void doStore() { String saveDir = (String) Preferences.get("SbxMarkerDir", null); if (saveDir == null) { saveDir = Constants.ELAN_DATA_DIR; } JFileChooser chooser = new JFileChooser(saveDir); chooser.setFileFilter(ElanFileFilter.createFileFilter( ElanFileFilter.SHOEBOX_MKR_TYPE)); int option = chooser.showSaveDialog(frame); if (option == JFileChooser.APPROVE_OPTION) { File curDir = chooser.getCurrentDirectory(); if (curDir != null) { Preferences.set("SbxMarkerDir", curDir.getAbsolutePath(), null); } File saveFile = chooser.getSelectedFile(); String fileName = saveFile.getAbsolutePath(); String lowerFileName = fileName.toLowerCase(); if (!lowerFileName.endsWith("mkr")) { fileName += ".mkr"; } final File newSaveFile = new File(fileName); if (newSaveFile != null) { if (newSaveFile.exists()) { int answer = JOptionPane.showConfirmDialog(null, ElanLocale.getString("Message.Overwrite"), ElanLocale.getString("SaveDialog.Message.Title"), JOptionPane.YES_NO_OPTION); if (answer == JOptionPane.NO_OPTION) { return; } } try { FileOutputStream out = new FileOutputStream(newSaveFile); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( out, "UTF-8")); Iterator markerIter = getMarkers().iterator(); while (markerIter.hasNext()) { writer.write(((MarkerRecord) markerIter.next()).toString()); } writer.close(); } catch (Exception ex) { ex.printStackTrace(); } } } } //listeners public void actionPerformed(ActionEvent event) { if (event.getSource() == addButton) { String markerName = markerTextField.getText(); markerName.replace('\n', ' '); markerName.trim(); if (markerName.startsWith("\\")) { markerName = markerName.substring(1); } if (markerName.length() == 0) { String errorMessage = ElanLocale.getString( "ShoeboxMarkerDialog.Message.MarkerName"); markerTextField.requestFocus(); JOptionPane.showMessageDialog(this, errorMessage, ElanLocale.getString("Message.Error"), JOptionPane.ERROR_MESSAGE); return; } doAdd(markerName); } else if (event.getSource() == deleteButton) { doDelete(); } else if (event.getSource() == changeButton) { doChange(); } else if (event.getSource() == cancelButton) { close(); } else if (event.getSource() == loadButton) { doLoad(); } else if (event.getSource() == storeButton) { doStore(); } } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void itemStateChanged(ItemEvent e) { if ((e.getSource() == currentMarkers) && (e.getStateChange() == ItemEvent.SELECTED)) { String name = (String) currentMarkers.getSelectedItem(); if (name != null) { updateUIForMarker(name); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -