package com.android.preload.actions;
import com.android.preload.DumpData;
import com.android.preload.DumpTableModel;
import com.android.preload.Main;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class ShowDataAction extends AbstractAction {
private DumpTableModel dataTableModel;
public ShowDataAction(DumpTableModel dataTableModel) {
super("Show data");
this.dataTableModel = dataTableModel;
}
@Override
public void actionPerformed(ActionEvent e) {
int selRow = Main.getUI().getSelectedDataTableRow();
if (selRow != -1) {
DumpData data = dataTableModel.getData().get(selRow);
Map<String, Set<String>> inv = data.invertData();
StringBuilder builder = new StringBuilder();
add(builder, "Boot classpath:", inv.get(null));
for (String k : inv.keySet()) {
if (k != null) {
builder.append("==================\n\n");
add(builder, k, inv.get(k));
}
}
JFrame newFrame = new JFrame(data.getPackageName() + " " + data.getDate());
newFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
newFrame.getContentPane().add(new JScrollPane(new JTextArea(builder.toString())),
BorderLayout.CENTER);
newFrame.setSize(800, 600);
newFrame.setLocationRelativeTo(null);
newFrame.setVisible(true);
}
}
private void add(StringBuilder builder, String head, Set<String> set) {
builder.append(head);
builder.append('\n');
addSet(builder, set);
builder.append('\n');
}
private void addSet(StringBuilder builder, Set<String> set) {
if (set == null) {
builder.append(" NONE\n");
return;
}
List<String> sorted = new ArrayList<>(set);
Collections.sort(sorted);
for (String s : sorted) {
builder.append(s);
builder.append('\n');
}
}
}