/**************************************************************************
OmegaT - Computer Assisted Translation (CAT) tool
with fuzzy matching, translation memory, keyword search,
glossaries, and translation leveraging into updated projects.
Copyright (C) 2015 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 org.omegat.core.Core;
/**
* Show conflict dialog.
*
* @author Alex Buloichik (alex73mail@gmail.com)
*/
public class ConflictDialogController {
private static final int MAX_CODEPOINTS = 100;
private volatile String result;
public String show(String baseText, String remoteText, String localText) {
final ConflictDialog dialog = new ConflictDialog(Core.getMainWindow().getApplicationFrame(), true);
dialog.textLeft.setText(prepareText(baseText));
dialog.textCenter.setText(prepareText(localText));
dialog.textRight.setText(prepareText(remoteText));
dialog.btnMine.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
result = localText;
dialog.dispose();
}
});
dialog.btnTheirs.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
result = remoteText;
dialog.dispose();
}
});
dialog.setLocationRelativeTo(Core.getMainWindow().getApplicationFrame());
dialog.pack();
dialog.setVisible(true);
return result;
}
private static String prepareText(String text) {
if (text == null) {
return String.valueOf(text);
} else if (text.codePointCount(0, text.length()) > MAX_CODEPOINTS) {
return text.substring(0, text.offsetByCodePoints(0, MAX_CODEPOINTS)) + "...";
} else {
return text;
}
}
}