/**************************************************************************
OmegaT - Computer Assisted Translation (CAT) tool
with fuzzy matching, translation memory, keyword search,
glossaries, and translation leveraging into updated projects.
Copyright (C) 2000-2006 Keith Godfrey and Maxym Mykhalchuk
2009 Didier Briel
2014 Didier Briel
Home page: http://www.omegat.org/
Support center: http://groups.yahoo.com/group/OmegaT/
This file is part of OmegaT.
OmegaT 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 3 of the License, or
(at your option) any later version.
OmegaT 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, see <http://www.gnu.org/licenses/>.
**************************************************************************/
package org.omegat.filters2.text;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.AbstractAction;
import org.omegat.util.OStrings;
import org.omegat.util.gui.StaticUIUtils;
/**
* Modal dialog to edit Text filter options.
*
* @author Maxym Mykhalchuk
* @author Didier Briel
*/
@SuppressWarnings("serial")
public class TextOptionsDialog extends javax.swing.JDialog {
/** A return status code - returned if Cancel button has been pressed */
public static final int RET_CANCEL = 0;
/** A return status code - returned if OK button has been pressed */
public static final int RET_OK = 1;
private Map<String, String> options;
/**
* Set the value and availability of maxLineLengthSpinner depending on the value of lineLengthSpinner
*/
private void checkLineLengthValue() {
try {
if (Integer.parseInt(lineLengthSpinner.getValue().toString()) <= 0) {
lineLengthSpinner.setValue(0);
maxLineLengthSpinner.setValue(0);
maxLineLengthSpinner.setEnabled(false);
} else if (Integer.parseInt(lineLengthSpinner.getValue().toString()) > 0) {
maxLineLengthSpinner.setEnabled(true);
}
if (Integer.parseInt(maxLineLengthSpinner.getValue().toString()) < Integer
.parseInt(lineLengthSpinner.getValue().toString())) {
maxLineLengthSpinner.setValue(Integer.parseInt(lineLengthSpinner.getValue().toString()));
}
} catch (Exception e) {
// Eat exception silently
}
}
/**
* Creates new form TextOptionsDialog
*/
public TextOptionsDialog(Window parent, Map<String, String> options) {
super(parent);
setModal(true);
this.options = new TreeMap<String, String>(options);
initComponents();
String segmentOn = options.get(TextFilter.OPTION_SEGMENT_ON);
if (TextFilter.SEGMENT_BREAKS.equals(segmentOn)) {
breaksRB.setSelected(true);
} else if (TextFilter.SEGMENT_NEVER.equals(segmentOn)) {
neverRB.setSelected(true);
} else {
emptyLinesRB.setSelected(true);
}
try {
lineLengthSpinner.setValue(Integer.parseInt(options.get(TextFilter.OPTION_LINE_LENGTH)));
} catch (Exception e) {
lineLengthSpinner.setValue(0);
}
try {
maxLineLengthSpinner.setValue(Integer.parseInt(options.get(TextFilter.OPTION_MAX_LINE_LENGTH)));
} catch (Exception e) {
maxLineLengthSpinner.setValue(0);
}
checkLineLengthValue();
StaticUIUtils.setEscapeAction(this, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
doClose(RET_CANCEL);
}
});
setLocationRelativeTo(parent);
}
/** @return the return status of this dialog - one of RET_OK or RET_CANCEL */
public int getReturnStatus() {
return returnStatus;
}
/** Returns updated options. */
public Map<String, String> getOptions() {
return options;
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
buttonGroup1 = new javax.swing.ButtonGroup();
buttonPanel = new javax.swing.JPanel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
breaksRB = new javax.swing.JRadioButton();
emptyLinesRB = new javax.swing.JRadioButton();
neverRB = new javax.swing.JRadioButton();
jLabel2 = new javax.swing.JLabel();
lineLengthLabel = new javax.swing.JLabel();
lineLengthSpinner = new javax.swing.JSpinner();
maxLineLengthLabel = new javax.swing.JLabel();
maxLineLengthSpinner = new javax.swing.JSpinner();
setTitle(OStrings.getString("TEXTFILTER_OPTIONS_DIALOG_TITLE")); // NOI18N
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
closeDialog(evt);
}
});
buttonPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
org.openide.awt.Mnemonics.setLocalizedText(okButton, OStrings.getString("BUTTON_OK")); // NOI18N
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
buttonPanel.add(okButton);
org.openide.awt.Mnemonics.setLocalizedText(cancelButton, OStrings.getString("BUTTON_CANCEL")); // NOI18N
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
buttonPanel.add(cancelButton);
getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH);
jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(3, 3, 3, 3));
jPanel1.setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, OStrings.getString("TEXTFILTER_OPTIONS_DIALOG_DESCRIPTION")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel1.add(jLabel1, gridBagConstraints);
buttonGroup1.add(breaksRB);
org.openide.awt.Mnemonics.setLocalizedText(breaksRB, OStrings.getString("TEXTFILTER_OPTION_SEGMENT_ON_LINE_BREAKS")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel1.add(breaksRB, gridBagConstraints);
buttonGroup1.add(emptyLinesRB);
emptyLinesRB.setSelected(true);
org.openide.awt.Mnemonics.setLocalizedText(emptyLinesRB, OStrings.getString("TEXTFILTER_OPTION_SEGMENT_ON_EMPTY_LINES")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel1.add(emptyLinesRB, gridBagConstraints);
buttonGroup1.add(neverRB);
org.openide.awt.Mnemonics.setLocalizedText(neverRB, OStrings.getString("TEXTFILTER_OPTION_NEVER_SEGMENT")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel1.add(neverRB, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, OStrings.getString("TEXT_FILTER_LINE_LENGTH_DESCRIPTION")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(6, 4, 0, 4);
jPanel1.add(jLabel2, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(lineLengthLabel, OStrings.getString("TEXT_FILTER_LINE_LENGTH")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 16, 4, 4);
jPanel1.add(lineLengthLabel, gridBagConstraints);
lineLengthSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
lineLengthSpinnerStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 6;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 50;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(lineLengthSpinner, gridBagConstraints);
org.openide.awt.Mnemonics.setLocalizedText(maxLineLengthLabel, OStrings.getString("TEXT_FILTER_MAX_LINE_LENGTH")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 7;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 16, 4, 4);
jPanel1.add(maxLineLengthLabel, gridBagConstraints);
maxLineLengthSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
maxLineLengthSpinnerStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 7;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 50;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
jPanel1.add(maxLineLengthSpinner, gridBagConstraints);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
private void lineLengthSpinnerStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_lineLengthSpinnerStateChanged
checkLineLengthValue();
}//GEN-LAST:event_lineLengthSpinnerStateChanged
private void maxLineLengthSpinnerStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_maxLineLengthSpinnerStateChanged
checkLineLengthValue();
}//GEN-LAST:event_maxLineLengthSpinnerStateChanged
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_okButtonActionPerformed
String segmentOn;
if (breaksRB.isSelected()) {
segmentOn = TextFilter.SEGMENT_BREAKS;
} else if (neverRB.isSelected()) {
segmentOn = TextFilter.SEGMENT_NEVER;
} else {
segmentOn = TextFilter.SEGMENT_EMPTYLINES;
}
options.put(TextFilter.OPTION_SEGMENT_ON, segmentOn);
options.put(TextFilter.OPTION_LINE_LENGTH, lineLengthSpinner.getValue().toString());
options.put(TextFilter.OPTION_MAX_LINE_LENGTH, maxLineLengthSpinner.getValue().toString());
doClose(RET_OK);
}// GEN-LAST:event_okButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cancelButtonActionPerformed
doClose(RET_CANCEL);
}// GEN-LAST:event_cancelButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_closeDialog
doClose(RET_CANCEL);
}// GEN-LAST:event_closeDialog
private void doClose(int retStatus) {
returnStatus = retStatus;
setVisible(false);
dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton breaksRB;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JPanel buttonPanel;
private javax.swing.JButton cancelButton;
private javax.swing.JRadioButton emptyLinesRB;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel lineLengthLabel;
private javax.swing.JSpinner lineLengthSpinner;
private javax.swing.JLabel maxLineLengthLabel;
private javax.swing.JSpinner maxLineLengthSpinner;
private javax.swing.JRadioButton neverRB;
private javax.swing.JButton okButton;
// End of variables declaration//GEN-END:variables
private int returnStatus = RET_CANCEL;
}