< prev index next >
application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/common/DataPageToolkit.java
Print this page
@@ -36,10 +36,11 @@
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -143,10 +144,11 @@
import org.openjdk.jmc.ui.charts.XYChart;
import org.openjdk.jmc.ui.charts.XYDataRenderer;
import org.openjdk.jmc.ui.charts.XYQuantities;
import org.openjdk.jmc.ui.column.ColumnMenusFactory;
import org.openjdk.jmc.ui.column.TableSettings;
+import org.openjdk.jmc.ui.column.TableSettings.ColumnSettings;
import org.openjdk.jmc.ui.handlers.ActionToolkit;
import org.openjdk.jmc.ui.handlers.MCContextMenuManager;
import org.openjdk.jmc.ui.misc.ChartCanvas;
import org.openjdk.jmc.ui.misc.CompositeToolkit;
import org.openjdk.jmc.ui.misc.DisplayToolkit;
@@ -174,21 +176,28 @@
: ITEM_COLOR.getColor(item);
}
};
}
- private static Map<String, Color> fieldColorMap = new HashMap<>();
+ private static final Map<String, Color> FIELD_COLOR_MAP = new HashMap<>();
+ private static final Map<String, Integer> DEFAULT_COLUMNS_ORDER;
static {
// FIXME: Create FieldAppearance class, similar to TypeAppearence?
- fieldColorMap.put(JdkAttributes.MACHINE_TOTAL.getIdentifier(), new Color(255, 128, 0));
- fieldColorMap.put(JdkAttributes.JVM_SYSTEM.getIdentifier(), new Color(128, 128, 128));
- fieldColorMap.put(JdkAttributes.JVM_USER.getIdentifier(), new Color(0, 0, 255));
- fieldColorMap.put(JdkAttributes.JVM_TOTAL.getIdentifier(), new Color(64, 64, 191));
+ FIELD_COLOR_MAP.put(JdkAttributes.MACHINE_TOTAL.getIdentifier(), new Color(255, 128, 0));
+ FIELD_COLOR_MAP.put(JdkAttributes.JVM_SYSTEM.getIdentifier(), new Color(128, 128, 128));
+ FIELD_COLOR_MAP.put(JdkAttributes.JVM_USER.getIdentifier(), new Color(0, 0, 255));
+ FIELD_COLOR_MAP.put(JdkAttributes.JVM_TOTAL.getIdentifier(), new Color(64, 64, 191));
// FIXME: Handle ColorProvider and combined events
+ Map<String, Integer> columnsOrderMap = new HashMap<>();
+ columnsOrderMap.put(createColumnId(JfrAttributes.START_TIME), 1);
+ columnsOrderMap.put(createColumnId(JfrAttributes.DURATION), 2);
+ columnsOrderMap.put(createColumnId(JfrAttributes.END_TIME), 3);
+ columnsOrderMap.put(createColumnId(JfrAttributes.EVENT_THREAD), 4);
+ DEFAULT_COLUMNS_ORDER = Collections.unmodifiableMap(columnsOrderMap);
}
public static final Color ALLOCATION_COLOR = new Color(64, 144, 230);
public static final String FORM_TOOLBAR_PAGE_RESULTS = "pageResults"; //$NON-NLS-1$
@@ -196,17 +205,45 @@
public static final String FORM_TOOLBAR_PAGE_NAV = "pageNav"; //$NON-NLS-1$
public static final String RESULT_ACTION_ID = "resultAction"; //$NON-NLS-1$
public static Color getFieldColor(String fieldId) {
- return fieldColorMap.getOrDefault(fieldId, ColorToolkit.getDistinguishableColor(fieldId));
+ return FIELD_COLOR_MAP.getOrDefault(fieldId, ColorToolkit.getDistinguishableColor(fieldId));
}
public static Color getFieldColor(IAttribute<?> attribute) {
return getFieldColor(attribute.getIdentifier());
}
+ public static TableSettings createTableSettingsByOrderByAndColumnsWithDefaultOrdering(
+ final String orderBy, final Collection<ColumnSettings> columns) {
+ final Stream<ColumnSettings> defaultOrderColumns = columns.stream()
+ .filter(c -> DEFAULT_COLUMNS_ORDER.containsKey(c.getId())).filter(c -> !c.isHidden())
+ .sorted((c1, c2) -> Integer.compare(DEFAULT_COLUMNS_ORDER.get(c1.getId()),
+ DEFAULT_COLUMNS_ORDER.get(c2.getId())));
+ final Stream<ColumnSettings> naturalOrderColumns = columns.stream()
+ .filter(c -> !DEFAULT_COLUMNS_ORDER.containsKey(c.getId()))
+ .sorted((c1, c2) -> String.CASE_INSENSITIVE_ORDER.compare(c1.getId(), c2.getId()));
+ final List<ColumnSettings> resultColumns = Stream.concat(defaultOrderColumns, naturalOrderColumns)
+ .collect(Collectors.toList());
+ return new TableSettings(orderBy, resultColumns);
+ }
+
+ public static TableSettings createTableSettingsByAllAndVisibleColumns(
+ final Collection<String> allColumns, final Collection<String> visibleColumns) {
+ final List<ColumnSettings> defaultListCols = new ArrayList<>();
+ for (String columnId : allColumns) {
+ defaultListCols.add(new ColumnSettings(columnId, !visibleColumns.contains(columnId), null, null));
+ }
+ return createTableSettingsByOrderByAndColumnsWithDefaultOrdering(null, defaultListCols);
+ }
+
+ private static String createColumnId(IAttribute<?> attr) {
+ return new StringBuilder().append(attr.getIdentifier()).append(":")
+ .append(attr.getContentType().getIdentifier()).toString();
+ }
+
public static IAction createAttributeCheckAction(IAttribute<?> attribute, Consumer<Boolean> onChange) {
return createCheckAction(attribute.getName(), attribute.getDescription(), attribute.getIdentifier(),
getFieldColor(attribute), onChange);
}
< prev index next >