Skip to content
Snippets Groups Projects
Commit 8c6cc548 authored by Daniel Plagge's avatar Daniel Plagge
Browse files

added option to show event parameters

parent ac51a00e
Branches
Tags
No related merge requests found
......@@ -284,6 +284,12 @@
<state class="org.eclipse.jface.commands.ToggleState"
id="de.prob.ui.stateview.duplicateFilterState" />
</command>
<command
id="de.prob.ui.history.toggleShowParameters"
name="Show event parameters">
<state class="org.eclipse.jface.commands.ToggleState"
id="de.prob.ui.history.showParametersState" />
</command>
<command
id="de.prob.ui.show_parameter_dialog"
name="Show Parameter Dialog">
......@@ -608,6 +614,20 @@
</with>
</enabledWhen>
</handler>
<handler
commandId="de.prob.ui.history.toggleShowParameters">
<class
class="de.prob.ui.historyview.ToggleShowParametersHandler">
</class>
<enabledWhen>
<with
variable="de.prob.core.model_loaded">
<equals
value="enabled">
</equals>
</with>
</enabledWhen>
</handler>
<handler
commandId="de.prob.ui.show_parameter_dialog">
<class
......@@ -790,6 +810,15 @@
style="push">
</command>
</menuContribution>
<menuContribution
locationURI="toolbar:de.prob.ui.HistoryView">
<command
commandId="de.prob.ui.history.toggleShowParameters"
icon="icons/filter_ps.gif"
label="Show Parameters"
style="toggle">
</command>
</menuContribution>
<menuContribution
locationURI="toolbar:de.prob.ui.OperationView">
......
package de.prob.ui.historyview;
import java.util.Collection;
import java.util.List;
import de.prob.core.domainobjects.Operation;
......@@ -27,10 +28,16 @@ class HistoryEventLabelProvider extends HistoryLabelProvider {
if (operation != null) {
List<EventStackElement> stack = operation.getEventStack();
if (stack != null) {
result = eventStackPosition < stack.size() ? stack.get(
eventStackPosition).getEventName() : null;
if (eventStackPosition < stack.size()) {
EventStackElement stackElem = stack.get(eventStackPosition);
result = printEventWithParameters(stackElem.getEventName(),
stackElem.getParameters());
} else {
result = eventStackPosition == 0 ? operation.getName() : null;
result = null;
}
} else {
result = eventStackPosition == 0 ? printEventWithParameters(
operation.getName(), operation.getArguments()) : null;
}
} else {
result = eventStackPosition == 0 ? HistoryViewStrings.uninitialisedState
......@@ -39,4 +46,27 @@ class HistoryEventLabelProvider extends HistoryLabelProvider {
return result == null ? "" : result;
}
private String printEventWithParameters(final String name,
final Collection<String> parameters) {
final String result;
if (!showParameters || parameters.isEmpty()) {
result = name;
} else {
StringBuilder sb = new StringBuilder();
sb.append(name);
sb.append('(');
boolean isFirst = true;
for (final String param : parameters) {
if (!isFirst) {
sb.append(',');
}
sb.append(param);
isFirst = false;
}
sb.append(')');
result = sb.toString();
}
return result;
}
}
\ No newline at end of file
......@@ -24,6 +24,8 @@ public abstract class HistoryLabelProvider extends CellLabelProvider {
final Font bold = JFaceResources.getFontRegistry().getBold(
JFaceResources.BANNER_FONT);
protected boolean showParameters;
@Override
public void update(final ViewerCell cell) {
final Object element = cell.getElement();
......@@ -51,4 +53,8 @@ public abstract class HistoryLabelProvider extends CellLabelProvider {
protected Color getForeground(final HistViewItem item) {
return null;
}
public void setShowParameters(final boolean show) {
showParameters = show;
}
}
......@@ -3,6 +3,7 @@
*/
package de.prob.ui.historyview;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.lang.ArrayUtils;
......@@ -54,6 +55,7 @@ public class HistoryView extends StateBasedViewPart {
public static final String VIEW_ID = "de.prob.ui.HistoryView";
private TableViewer tableViewer;
private Collection<HistoryLabelProvider> labelProviders;
@Override
protected Control createStatePartControl(final Composite parent) {
......@@ -164,21 +166,23 @@ public class HistoryView extends StateBasedViewPart {
private void createColumns(final Composite composite) {
final Animator animator = Animator.getAnimator();
MachineDescription machineDescription = animator.getMachineDescription();
MachineDescription machineDescription = animator
.getMachineDescription();
String[] models = new String[0];
if (machineDescription != null) {
models = machineDescription
.getModelNames().toArray(new String[0]);
models = machineDescription.getModelNames().toArray(new String[0]);
ArrayUtils.reverse(models);
}
final TableColumnLayout layout = new TableColumnLayout();
composite.setLayout(layout);
labelProviders = new ArrayList<HistoryLabelProvider>();
if (models.length > 0) {
int pos = 0;
for (final String model : models) {
final boolean isFirst = pos == 0;
createColumn(layout, model, new HistoryEventLabelProvider(pos),
isFirst);
final HistoryEventLabelProvider labelProvider = new HistoryEventLabelProvider(
pos);
createColumn(layout, model, labelProvider, isFirst);
pos++;
}
} else {
......@@ -200,6 +204,7 @@ public class HistoryView extends StateBasedViewPart {
final ColumnWeightData weightData = setMinimumSize ? new ColumnWeightData(
1, 100) : new ColumnWeightData(1);
layout.setColumnData(column, weightData);
labelProviders.add(labelProvider);
}
@Override
......@@ -320,4 +325,19 @@ public class HistoryView extends StateBasedViewPart {
}
}
public void setShowParameters(boolean show) {
if (labelProviders != null) {
for (HistoryLabelProvider provider : labelProviders) {
provider.setShowParameters(show);
}
}
final Runnable runnable = new Runnable() {
@Override
public void run() {
tableViewer.refresh();
}
};
Display.getDefault().asyncExec(runnable);
}
}
/**
*
*/
package de.prob.ui.historyview;
import java.util.Map;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.core.commands.State;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.commands.IElementUpdater;
import org.eclipse.ui.menus.UIElement;
import org.eclipse.ui.services.IServiceLocator;
import de.prob.ui.stateview.StateViewPart;
/**
* @author plagge
*
*/
public class ToggleShowParametersHandler extends AbstractHandler implements
IHandler, IElementUpdater {
private static final String COMMAND_ID = "de.prob.ui.history.toggleShowParameters";
private static final String STATE_ID = "de.prob.ui.history.showParametersState";
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
final State state = event.getCommand().getState(STATE_ID);
if (state != null) {
final boolean newFilterValue = toggleState(state);
setShowParameters(newFilterValue);
} else
throw new ExecutionException("Command state " + STATE_ID
+ " not found");
return null;
}
private boolean toggleState(final State state) {
final Boolean show = (Boolean) state.getValue();
state.setValue(!show);
return !show;
}
private void setShowParameters(final boolean show)
throws ExecutionException {
final IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
final HistoryView view = (HistoryView) page
.findView(HistoryView.VIEW_ID);
if (view != null) {
view.setShowParameters(show);
} else
throw new ExecutionException("View " + StateViewPart.STATE_VIEW_ID
+ " not found");
}
@Override
public void updateElement(UIElement element,
@SuppressWarnings("rawtypes") Map parameters) {
final State state = getCurrentState(element.getServiceLocator());
final Boolean filterSet = (Boolean) state.getValue();
element.setChecked(filterSet);
}
private static State getCurrentState(final IServiceLocator locator) {
final ICommandService service = (ICommandService) locator
.getService(ICommandService.class);
final Command command = service.getCommand(COMMAND_ID);
final State state = command.getState(STATE_ID);
return state;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment