/**************************************************************************
OmegaT - Computer Assisted Translation (CAT) tool
with fuzzy matching, translation memory, keyword search,
glossaries, and translation leveraging into updated projects.
Copyright (C) 2015 Aaron Madlon-Kay
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.stat;
import java.awt.Font;
import java.io.File;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumn;
import org.omegat.core.Core;
import org.omegat.core.statistics.IStatsConsumer;
import org.omegat.util.Preferences;
import org.omegat.util.gui.DataTableStyling;
import org.omegat.util.gui.OSXIntegration;
import org.omegat.util.gui.TableColumnSizer;
/**
*
* @author Aaron Madlon-Kay
*/
@SuppressWarnings("serial")
public abstract class BaseStatisticsPanel extends JPanel implements IStatsConsumer {
private final StatisticsWindow window;
public BaseStatisticsPanel(StatisticsWindow window) {
this.window = window;
}
@Override
public void showProgress(int percent) {
window.showProgress(percent);
}
@Override
public void finishData() {
window.finishData();
}
@Override
public void setTextData(String data) {
window.setTextData(data);
}
@Override
public void setDataFile(String path) {
File file = new File(path);
OSXIntegration.setProxyIcon(getRootPane(), file.isFile() ? file : null);
}
static class StringArrayTableModel extends AbstractTableModel {
private final String[][] data;
public StringArrayTableModel(String[][] data) {
this.data = data;
}
@Override
public int getRowCount() {
return data == null ? 0 : data.length;
}
@Override
public int getColumnCount() {
return data == null || data.length == 0 ? 0
: data[0] == null ? 0 : data[0].length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
}
}
protected TitledTablePanel generateTableDisplay(String title, String[] headers, String[][] data) {
TitledTablePanel panel = new TitledTablePanel();
DataTableStyling.applyColors(panel.table);
panel.table.setDefaultRenderer(Object.class, DataTableStyling.getNumberCellRenderer());
Font font = panel.table.getFont();
if (Preferences.isPreference(Preferences.PROJECT_FILES_USE_FONT)) {
font = Core.getMainWindow().getApplicationFont();
}
DataTableStyling.applyFont(panel.table, font);
panel.title.setText(title);
panel.table.setModel(new StringArrayTableModel(data));
setTableHeaders(panel.table, headers);
panel.table.getColumnModel().getColumn(0).setCellRenderer(
DataTableStyling.getHeaderTextCellRenderer());
TableColumnSizer.autoSize(panel.table, 0, false);
panel.table.setPreferredScrollableViewportSize(panel.table.getPreferredSize());
return panel;
}
protected static void setTableHeaders(JTable table, String[] headers) {
for (int i = 0; i < headers.length; i++) {
TableColumn col = table.getColumnModel().getColumn(i);
col.setHeaderValue(headers[i]);
}
}
}