19 package org.sleuthkit.autopsy.communications;
21 import java.awt.Component;
22 import javax.swing.JPanel;
23 import javax.swing.ListSelectionModel;
24 import javax.swing.SwingUtilities;
25 import javax.swing.table.TableCellRenderer;
26 import org.netbeans.swing.outline.DefaultOutlineModel;
27 import org.netbeans.swing.outline.Outline;
28 import org.openide.explorer.ExplorerManager;
39 private ExplorerManager
em;
48 "device", Bundle.AccountNode_device(),
49 "type", Bundle.AccountNode_accountType(),
50 "count", Bundle.AccountNode_messageCount()
53 outline.setRootVisible(
false);
54 ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(Bundle.AccountNode_accountName());
55 outline.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
56 outline.setColumnSorted(3,
false, 1);
62 em = ExplorerManager.find(
this);
63 em.addPropertyChangeListener(evt -> {
64 if (ExplorerManager.PROP_ROOT_CONTEXT.equals(evt.getPropertyName())) {
65 SwingUtilities.invokeLater(this::setColumnWidths);
66 }
else if (ExplorerManager.PROP_EXPLORED_CONTEXT.equals(evt.getPropertyName())) {
67 SwingUtilities.invokeLater(this::setColumnWidths);
76 final int rows = Math.min(100, outline.getRowCount());
78 for (
int column = 0; column < outline.getModel().getColumnCount(); column++) {
79 int columnWidthLimit = 500;
83 for (
int row = 0; row < rows; row++) {
84 TableCellRenderer renderer = outline.getCellRenderer(row, column);
85 Component comp = outline.prepareRenderer(renderer, row, column);
86 columnWidth = Math.max(comp.getPreferredSize().width, columnWidth);
89 columnWidth += 2 * margin + padding;
90 columnWidth = Math.min(columnWidth, columnWidthLimit);
92 outline.getColumnModel().getColumn(column).setPreferredWidth(columnWidth);
101 @SuppressWarnings(
"unchecked")
107 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
108 this.setLayout(layout);
109 layout.setHorizontalGroup(
110 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
111 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
113 .addComponent(
outlineView, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
116 layout.setVerticalGroup(
117 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
118 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
120 .addComponent(
outlineView, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
org.openide.explorer.view.OutlineView outlineView
static final long serialVersionUID