/*******************************************************************************
* Copyright (c) MOBAC developers
*
* This program 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 2 of the License, or
* (at your option) any later version.
*
* This program 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 mobac.tools;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.HeadlessException;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
public class MapSourceCapabilityGUI extends JFrame {
private final List<MapSourceCapabilityDetector> result;
public MapSourceCapabilityGUI(List<MapSourceCapabilityDetector> result) throws HeadlessException {
super("Map source capabilities");
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.result = result;
JTable table = new JTable(new Model());
table.setDefaultRenderer(Object.class, new Renderer());
add(table.getTableHeader(), BorderLayout.NORTH);
add(table, BorderLayout.CENTER);
pack();
}
private class Model extends AbstractTableModel {
public int getRowCount() {
return result.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
MapSourceCapabilityDetector mscd = result.get(rowIndex);
switch (columnIndex) {
case 0:
return mscd.getZoom();
case 1:
return mscd.iseTagPresent();
case 2:
return mscd.isLastModifiedTimePresent();
case 3:
return mscd.isIfNoneMatchSupported();
case 4:
return mscd.isIfModifiedSinceSupported();
case 5:
return mscd.getContentType();
}
return null;
}
public int getColumnCount() {
return 6;
}
public String getColumnName(int column) {
switch (column) {
case 0:
return "Zoom";
case 1:
return "eTag";
case 2:
return "LastModified";
case 3:
return "IfNoneMatch";
case 4:
return "IfModifiedSince";
case 5:
return "Content type";
}
return null;
}
}
private class Renderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
this.setHorizontalAlignment(JLabel.CENTER);
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if ((value != null) && (value instanceof Boolean) && ((Boolean) value))
c.setBackground(Color.GREEN);
else
c.setBackground(Color.WHITE);
return c;
}
}
}