/************************************************************************** OmegaT - Computer Assisted Translation (CAT) tool with fuzzy matching, translation memory, keyword search, glossaries, and translation leveraging into updated projects. Copyright (C) 2014 Alex Buloichik 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.gui.dialogs; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import org.omegat.core.Core; import org.omegat.util.OStrings; import org.omegat.util.gui.StaticUIUtils; /** * @author Alex Buloichik (alex73mail@gmail.com) */ public class FilenamePatternsEditorController { static List<String> data, result; public static List<String> show(List<String> excludes) { result = null; data = new ArrayList<String>(excludes); final FilenamePatternsEditor dialog = new FilenamePatternsEditor(Core.getMainWindow() .getApplicationFrame(), true); @SuppressWarnings("serial") final AbstractTableModel model = new AbstractTableModel() { public int getColumnCount() { return 1; } public String getColumnName(int column) { return OStrings.getString("FILENAMEPATTERNS_MASK"); } public int getRowCount() { return data.size(); } public Object getValueAt(int row, int col) { return data.get(row); } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { data.set(rowIndex, aValue.toString()); } public boolean isCellEditable(int row, int col) { return true; } }; dialog.table.setModel(model); dialog.btnOk.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { result = data; dialog.dispose(); } }); dialog.btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dialog.dispose(); } }); dialog.btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { data.add(""); model.fireTableDataChanged(); dialog.table.changeSelection(data.size() - 1, 0, false, false); dialog.table.editCellAt(data.size() - 1, 0); dialog.table.transferFocus(); } }); dialog.btnRemove.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (dialog.table.getSelectedRow() >= 0 && dialog.table.getSelectedRow() < data.size()) { data.remove(dialog.table.getSelectedRow()); } model.fireTableDataChanged(); } }); ListSelectionListener listener = e -> dialog.btnRemove.setEnabled(dialog.table.getSelectedRow() != -1); dialog.table.getSelectionModel().addListSelectionListener(listener); listener.valueChanged(null); dialog.setLocationRelativeTo(Core.getMainWindow().getApplicationFrame()); StaticUIUtils.setEscapeClosable(dialog); dialog.getRootPane().setDefaultButton(dialog.btnOk); dialog.setVisible(true); return result; } }