/*
* Copyright 2008-2014 by Emeric Vernat
*
* This file is part of Java Melody.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.bull.javamelody;
import java.awt.BorderLayout;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JTable;
import net.bull.javamelody.swing.table.MDefaultTableCellRenderer;
import net.bull.javamelody.swing.table.MTable;
import net.bull.javamelody.swing.table.MTableScrollPane;
import com.lowagie.text.Font;
/**
* Panel des utilisations d'une requĂȘtes.
* @author Emeric Vernat
*/
class CounterRequestUsagesPanel extends CounterRequestAbstractPanel {
private static final long serialVersionUID = 1L;
private final class NameTableCellRenderer extends MDefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
NameTableCellRenderer() {
super();
}
@Override
public Component getTableCellRendererComponent(JTable jtable, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
final MTable<CounterRequest> myTable = getTable();
final CounterRequest counterRequest = myTable.getList().get(
myTable.convertRowIndexToModel(row));
final Counter counter = getCounterByRequestId(counterRequest);
setIcon(getCounterIcon(counter, 0));
return super.getTableCellRendererComponent(jtable, value, isSelected, hasFocus, row,
column);
}
}
CounterRequestUsagesPanel(RemoteCollector remoteCollector, CounterRequest request) {
super(remoteCollector);
final String graphLabel = truncate(getString("Utilisations_de") + ' ' + request.getName(),
50);
setName(graphLabel);
final JLabel label = new JLabel(' ' + getString("Utilisations_de") + ' '
+ request.getName());
label.setBorder(BorderFactory.createEmptyBorder(10, 0, 5, 0));
label.setFont(label.getFont().deriveFont(Font.BOLD));
add(label, BorderLayout.NORTH);
final MTableScrollPane<CounterRequest> scrollPane = createScrollPane();
final List<CounterRequest> requests = new ArrayList<>();
for (final Counter counter : getCounters()) {
for (final CounterRequest counterRequest : counter.getOrderedRequests()) {
if (counterRequest.containsChildRequest(request.getId())) {
requests.add(counterRequest);
}
}
}
getTable().setList(requests);
add(scrollPane, BorderLayout.CENTER);
add(createButtonsPanel(true), BorderLayout.SOUTH);
}
private MTableScrollPane<CounterRequest> createScrollPane() {
final MTable<CounterRequest> table = getTable();
final MTableScrollPane<CounterRequest> tableScrollPane = new MTableScrollPane<>(table);
table.addColumn("name", getString("Requete"));
table.setColumnCellRenderer("name", new NameTableCellRenderer());
return tableScrollPane;
}
private static String truncate(String string, int maxLength) {
return string.substring(0, Math.min(string.length(), maxLength));
}
}