From d1abde47b23153d899b3d39bcb2794acb83c6e68 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Wed, 13 Nov 2019 12:27:39 +0100 Subject: [PATCH] Added possibility to swap column tooltip and title in MPM editor --- .../mograsim/plugin/MainPreferencePage.java | 2 ++ .../plugin/tables/mi/InstructionTable.java | 28 ++++++++++++++----- .../preferences/DefaultPreferences.java | 2 ++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/MainPreferencePage.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/MainPreferencePage.java index f06f5ac0..87e2334b 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/MainPreferencePage.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/MainPreferencePage.java @@ -34,6 +34,8 @@ public class MainPreferencePage extends FieldEditorPreferencePage implements IWo addField(new ComboFieldEditor("net.mograsim.logic.model.button.action", "Mouse button for actions", MOUSE_BUTTONS, parent)); addField(new ComboFieldEditor("net.mograsim.logic.model.button.drag", "Mouse button for dragging", MOUSE_BUTTONS, parent)); addField(new ComboFieldEditor("net.mograsim.logic.model.button.zoom", "Mouse button for zooming", MOUSE_BUTTONS, parent)); + addField(new BooleanFieldEditor("net.mograsim.plugin.core.editors.mpm.descriptionascolumnname", + "Use the MPM column description as table header", parent)); // TODO add other preferences } } \ No newline at end of file diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java index d7c23272..2632f392 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java @@ -28,6 +28,7 @@ import net.mograsim.machine.mi.parameters.ParameterClassification; import net.mograsim.plugin.tables.AddressLabelProvider; import net.mograsim.plugin.tables.DisplaySettings; import net.mograsim.plugin.tables.LazyTableViewer; +import net.mograsim.preferences.Preferences; public class InstructionTable { @@ -98,7 +99,7 @@ public class InstructionTable int size = miDef.size(); columns = new TableViewerColumn[size + 1]; - TableViewerColumn col = createTableViewerColumn("Address"); + TableViewerColumn col = createTableViewerColumn("Address", null); columns[0] = col; col.setLabelProvider(new AddressLabelProvider() { @@ -130,9 +131,22 @@ public class InstructionTable { int startBit = bit - 1; int endBit = bit = bit - classes[i].getExpectedBits(); - String columnTitle = calculateColumnTitle(startBit, endBit); + + String description = miDef.getParameterDescription(i).orElse(null); + String bitString = startBit == endBit ? Integer.toString(startBit) : startBit + "..." + endBit; + String columnTitle, columnTooltip; + if (useDescriptionAsColumnTitle(description)) + { + columnTitle = description; + columnTooltip = bitString; + } else + { + columnTitle = bitString; + columnTooltip = description; + } columnTitles[i] = columnTitle; - col = createTableViewerColumn(columnTitle); + + col = createTableViewerColumn(columnTitle, columnTooltip); columns[i + 1] = col; createEditingAndLabel(col, miDef, i); } @@ -161,9 +175,9 @@ public class InstructionTable viewer.getTable().setVisible(true); } - private static String calculateColumnTitle(int startBit, int endBit) + private static boolean useDescriptionAsColumnTitle(String description) { - return startBit == endBit ? Integer.toString(startBit) : startBit + "..." + endBit; + return description != null && Preferences.current().getBoolean("net.mograsim.plugin.core.editors.mpm.descriptionascolumnname"); } public void bindMicroInstructionMemory(MicroInstructionMemory memory) @@ -209,14 +223,14 @@ public class InstructionTable if (isEditable) col.setEditingSupport(support); col.setLabelProvider(provider); - col.getColumn().setToolTipText(miDef.getParameterDescription(index).orElse("")); } - private TableViewerColumn createTableViewerColumn(String title) + private TableViewerColumn createTableViewerColumn(String title, String toolTip) { TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE); TableColumn column = viewerColumn.getColumn(); column.setText(title); + column.setToolTipText(toolTip); column.setResizable(true); column.setMoveable(false); return viewerColumn; diff --git a/plugins/net.mograsim.preferences/src/net/mograsim/preferences/DefaultPreferences.java b/plugins/net.mograsim.preferences/src/net/mograsim/preferences/DefaultPreferences.java index 0f563dc7..b6180f2b 100644 --- a/plugins/net.mograsim.preferences/src/net/mograsim/preferences/DefaultPreferences.java +++ b/plugins/net.mograsim.preferences/src/net/mograsim/preferences/DefaultPreferences.java @@ -13,6 +13,8 @@ public class DefaultPreferences extends Preferences return true; case "net.mograsim.logic.model.debug.openhlsshell": return false; + case "net.mograsim.plugin.core.editors.mpm.descriptionascolumnname": + return false; default: throw new IllegalArgumentException("Unknown boolean preference name: " + name); } -- 2.17.1