/**
* Copyright (c) 2013 committers of YAKINDU and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* Contributors:
* committers of YAKINDU - initial API and implementation
*
*/
package org.yakindu.sct.simulation.ui.view;
import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
import org.eclipse.jface.viewers.ColumnViewerEditorActivationListener;
import org.eclipse.jface.viewers.ColumnViewerEditorDeactivationEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.yakindu.sct.simulation.ui.view.editing.BooleanEditingSupport;
import org.yakindu.sct.simulation.ui.view.editing.EnumerationEditingSupport;
import org.yakindu.sct.simulation.ui.view.editing.IntegerEditingSupport;
import org.yakindu.sct.simulation.ui.view.editing.MultiEditingSupport;
import org.yakindu.sct.simulation.ui.view.editing.RealEditingSupport;
import org.yakindu.sct.simulation.ui.view.editing.ScopeSlotEditingSupport.ITypeSystemProvider;
import org.yakindu.sct.simulation.ui.view.editing.StringEditingSupport;
/**
*
* @author andreas muelder - Initial contribution and API
*
*/
public class ExecutionContextViewerFactory {
public static TreeViewer createViewer(Composite parent, boolean readOnly, ITypeSystemProvider provider) {
final TreeViewer viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
viewer.getTree().setHeaderVisible(true);
viewer.getTree().setLinesVisible(true);
final ExecutionContextContentProvider contentProvider = new ExecutionContextContentProvider();
viewer.setContentProvider(contentProvider);
viewer.setFilters(new ViewerFilter[] { new TimeEventViewerFilter() });
TreeViewerColumn nameColumn = new TreeViewerColumn(viewer, SWT.DEFAULT);
nameColumn.getColumn().setText("Name");
nameColumn.getColumn().setMoveable(true);
nameColumn.getColumn().setWidth(150);
nameColumn.setLabelProvider(new ExecutionContextLabelProvider(0));
TreeViewerColumn valueColumn = new TreeViewerColumn(viewer, SWT.DEFAULT);
valueColumn.getColumn().setText("Value");
valueColumn.getColumn().setMoveable(true);
valueColumn.getColumn().setWidth(100);
if (!readOnly)
valueColumn.setEditingSupport(new MultiEditingSupport(viewer,
new IntegerEditingSupport(viewer, provider),
new RealEditingSupport(viewer, provider),
new BooleanEditingSupport(viewer, provider),
new StringEditingSupport(viewer, provider),
new EnumerationEditingSupport(viewer, provider)));
valueColumn.setLabelProvider(new ExecutionContextLabelProvider(1));
valueColumn.getViewer().getColumnViewerEditor()
.addEditorActivationListener(new ColumnViewerEditorActivationListener() {
@Override
public void afterEditorDeactivated(ColumnViewerEditorDeactivationEvent event) {
contentProvider.setShouldUpdate(true);
viewer.refresh();
}
@Override
public void afterEditorActivated(ColumnViewerEditorActivationEvent event) {
contentProvider.setShouldUpdate(false);
}
@Override
public void beforeEditorDeactivated(ColumnViewerEditorDeactivationEvent event) {
}
@Override
public void beforeEditorActivated(ColumnViewerEditorActivationEvent event) {
}
});
return viewer;
}
}